IP Fridge Έλα έμππλν ςπγείν κε δπλαηφηεηεο ζχλδεζεο ζην δηαδίθηπν.

Σχετικά έγγραφα
ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Η αξρή ζύλδεζεο Client-Server

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Κεθάλαιο 1. Ενόηηηα 2 Πλάνο Μάρκεηινγκ. Εξγαιεία Μάξθεηηλγθ. Dr. Andrea Grimm Dr. Astin Malschinger

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Οδηγίες τρήζης για λειηοσργία μεηαθοράς καναλιών ζε υηθιακό δέκηη OST-7060 HD

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Constructors and Destructors in C++

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Οργάνωση και Δομή Παρουσιάσεων

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)


1 Είζοδορ ζηο Σύζηημα ΣΔΕΔ ή BPMS

ύζηεκα Ωξνκέηξεζεο Πξνζσπηθνύ (Έθδνζε 2) ΤΠΗΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΩΝ ΤΣΗΜΑΣΩΝ

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

Σημεία Ασύπματηρ Ππόσβασηρ (Hot-Spots)

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Ανάπτυξη Ελληνικής τεχνολογίας μηχανών ηλεκτροπαραγωγής ORC

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

Εγκατάσταση του πακέτου XAMPP. Β Τεχνική Σχολή Λεμεςοφ Σχολική χρονιά Άριςτοσ Παςιάσ

Ηλεκηπονικά Απσεία και Διεπαθέρ

Αντισταθμιστική ανάλυση

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής

Τηλζφωνο: Ε-mail: Ώρες διδασκαλίας: 16:00 19:15 μμ

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

Άσκηση 1 - Μοπυοποίηση Κειμένου

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

ISO/IEC 27001:2005 Certificate No: IS Aegate Ltd 2011 All rights reserved

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

4) Να γξάςεηε δηαδηθαζία (πξόγξακκα) ζηε Logo κε όλνκα θύθινο πνπ ζα ζρεδηάδεη έλα θύθιν. Λύζε Γηα θύθινο ζηθ επαλάιαβε 360 [κπ 1 δε 1] ηέινο

Πως να δημιουργήσετε ένα Cross-Over καλώδιο

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

Ανάπηςξη Δθαπμογών ζε Ππογπαμμαηιζηικό Πεπιβάλλον

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Διπλωματική Εργασία. ηος θοιηηηή ηος Τμήμαηορ Ηλεκηπολόγων Μησανικών και Τεσνολογίαρ Υπολογιζηών ηηρ Πολςηεσνικήρ Σσολήρ ηος Πανεπιζηημίος Παηπών

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

ΥΡΙΣΟΤΓΔΝΝΙΑΣΙΚΔ ΚΑΣΑΚΔΤΔ

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

HYUNDAI. Η δηαγλσζηηθή θίζζα ησλ Hyundai έρεη 12 επαθέο θαη ηνπνζεηείηαη ζηνλ ρώξν ηνπ θηλεηήξα

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

1 η Εργαζηηριακή Άζκηζη Ειζαγωγή

Άζθεζε 2ε ΤΣΗΜΑΣΑ ΔΛΔΓΥΟΤ ΑΝΟΙΚΣΟΤ ΒΡΟΥΟΤ ΚΑΙ MATLAB

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

ΕΡΓΑΣΗΡΙΟ THIN CLIENTS ΜΕ UBUNTU LINUX ΚΑΙ WINDOWS XP

ηδάζθσλ: εµήηξεο Εετλαιηπνύξ

Δξγαιεία Καηαζθεπέο 1 Σάμε Δ Δ.Κ.Φ.Δ. ΥΑΝΗΩΝ ΠΡΩΣΟΒΑΘΜΗΑ ΔΚΠΑΗΓΔΤΖ. ΔΝΟΣΖΣΑ 2 ε : ΤΛΗΚΑ ΩΜΑΣΑ ΔΡΓΑΛΔΗΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Ογθνκεηξηθό δνρείν

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Κάλνληαο θιηθ κε ην πνληίθη ζηνλ ινγαξηαζκό πνπ ζέινπκε θιείλεη ην παξάζπξν πνπ κόιηο είρε αλνίμεη. Παηώληαο Παξνπζίαζε (βειάθη Νν 3) παξνπζηάδνληαη

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

ΕΜΠΟΡΙΚΑ ΣΙΜΟΛΟΓΙΑ ΣΗ ΧΑΜΗΛΗ ΣΑΗ

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

Transcript:

ΣΔΗ ΚΑΒΑΛΑ ΣΜΗΜΑ ΒΙΟΜΗΥΑΝΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ IP Fridge Έλα έμππλν ςπγείν κε δπλαηφηεηεο ζχλδεζεο ζην δηαδίθηπν. Τπφ ΜΖΣΡΟΤΖ ΒΑΗΛΔΗΟ ΝΑΚΑ ΒΑΗΛΔΗΟ Δπίβιεςε Γπ. ΚΑΡΑΜΠΑΣΕΑΚΖ ΓΖΜΖΣΡΗΟ Καβάλα 2010

Η επγαζία αςηή είναι αθιεπωμένη ζηοςρ γονείρ μαρ.

Δςσαπιζηίερ Αξρηθά ζα ζέιακε λα επραξηζηήζνπκε ηνλ επηβιέπνληα θαζεγεηή καο θ. Γ. Καξακπαηδάθε γηα ηελ θαζνδήγεζε θαη ππνζηήξημε ηνπ θαηά ηε δηάξθεηα ηεο εξγαζίαο καο. Η δηπισκαηηθή απηή απνηειεί κηα γλσξηκία κε ηνλ θφζκν ηνπ πιηθνχ θαη ινγηζκηθνχ ησλ Η/Τ θαη εηδηθφηεξα κε ηελ ηερλνινγία ηνπ RFID. Ο θαζεγεηήο καο θαηάθεξε λα καο δψζεη φια εθείλα ηα εθφδηα πνπ καο βνήζεζαλ λα θαηαλνήζνπκε ζεκαληηθέο παξακέηξνπο ηεο ηερλνινγίαο θαη λα γλσξίζνπκε ηα βαζηθά εξγαιεία ηεο. Δπίζεο, επραξηζηνχκε ηα κέιε ηεο εμεηαζηηθήο επηηξνπήο ηεο παξνχζαο πηπρηαθήο εξγαζίαο θ. Καζ. Γ. Πνγαξίδε θαη θ. Καζ.. Παπαδάθε γηα ηελ αλάγλσζε ηνπ θεηκέλνπ θαη γηα ηε δπλαηφηεηα πνπ καο έδσζαλ λα αζρνιεζνχκε θαη λα γλσξίζνπκε θαηλνχξηεο ηερλνινγίεο. Σέινο, ζα ζέιακε λα επραξηζηήζνπκε ηηο νηθνγέλεηέο καο γηα ηελ ππνζηήξημε πνπ καο επέδεημαλ. Δπίζεο, επραξηζηνχκε φινπο ηνπο θίινπο καο, γηα ηε ζπκπαξάζηαζε θαη ηελ, έζησ θαη δηαδηθηπαθή θάπνηεο θνξέο, παξέα ηνπο φιν απηφ ηνλ θαηξφ, ηνλ Θαλάζε πνπ καο αλέρηεθε ηφζεο εξγαηνψξεο, θαη πξνζσπηθά ηε ηεθαλία γηα ηελ ππνζηήξημε θαη ηελ ππνκνλή ηεο.

ΠΔΡΗΛΖΦΖ Με ηα γνξγά βήκαηα πνπ θηλείηαη ε ηερλνινγία, πνιιέο απφ ηηο επαγγεικαηηθέο, θαη φρη κφλν, ζπζθεπέο, ηείλνπλ λα ζπλδεζνχλ ζην δηαδίθηπν. Απηφ ηί καο εμππεξεηεί; Καη αξράο, πνιχ ζεκαληηθφ είλαη, πσο κε ηνλ ηξφπν απηφ έρνπκε ηνλ απνκαθξπζκέλν έιεγρν ησλ ζπζθεπψλ απηψλ κε ρξήζε ηνπ δηαδηθηχνπ. Έηζη, πνιχ απιά, θαηεπζπλφκελνη πξνο ην ζπίηη, «ξσηάκε» ην ςπγείν αλ έρεη φια ηα αγαζά πνπ ρξεηαδφκαζηε, «εηδνπνηνχκε» ην ζεξκνζίθσλα, ην ζχζηεκα ζέξκαλζεο, βιέπνπκε ηε θαηάζηαζε ηνπ πιπληεξίνπ, θαη «ξσηάκε» ηελ ειεθηξηθή θνπδίλα θαη ηελ ηνζηηέξα εάλ ηα παηδηά έρνπλ ήδε θάεη. Σν απνηέιεζκα είλαη φηη γπξίδνπκε ζην ζπίηη, ζην νπνίν επηθξαηεί ζεξκνθξαζία 24 o C βαζκψλ θειζίνπ, ην λεξφ ζην κπάλην είλαη ήδε δεζηφ, ην πιπληήξην δνπιεχεη, θαη έρνπκε θέξεη θαη θαγεηφ ζηα παηδηά, κηαο θαη, πξνθαλψο, βαξέζεθαλ λα καγεηξέςνπλ ζήκεξα. Γηα λα κελ ζαο πνιπινγψ, ππάξρνπλ πάξα πνιιά ππνζπζηήκαηα ηνπ ζπζηήκαηνο «έμππλν ζπίηη». Δκείο αζρνιεζήθακε κε ηελ θαηαζθεπή ηνπ «έμππλνπ ςπγείνπ». Μία νινθιεξσκέλε ιχζε απνηεινχκελε απφ ζπζθεπή ειέγρνπ θαη ινγηζκηθφ ειέγρνπ θαη δηαρείξηζεο. Σν ζχζηεκα καο είλαη ηθαλφ γηα νηθηαθή, αιιά θαη επαγγεικαηηθή ρξήζε. Πεξηέρεη ειεγρφκελν ζχζηεκα πξφζβαζεο, δπλαηφηεηα απηφκαησλ παξαγγειηψλ, εηδνπνίεζε πξηλ ηε ιήμε ησλ πξντφλησλ, φπσο επίζεο θαη θαηά ηελ είζνδν θαη ηελ έμνδν πξντφλησλ, έιεγρν ζεξκνθξαζίαο εζσηεξηθνχ ρψξνπ θαη πεξηβάιινληνο θαη επίζεο κε ηε ρξήζε ηεο εθαξκνγήο δηαρείξηζεο κπνξνχκε λα πιεξνθνξεζνχκε κε δηάθνξα ζηαηηζηηθά ζρεηηθά κε ηα πξντφληα θαη ηε ζπλνιηθή ρξήζε ηνπ ζπζηήκαηνο. ΛΔΞΔΗ ΚΛΔΗΓΗΑ NFC RFID, Πιαηθφξκα.ΝΔΣ, Δλζσκαησκέλν ζχζηεκα, Linux, Mifare, Fox Board G20, Debian, WPF, 1-Wire, GPIO, MySQL, LinQ, C++, C#, ASP.NET, NFC Δηηθέηεο, Έμππλεο θάξηεο, Mail Server, SMTP, Oled, Python, ARM9, EXT4, FAT16

ABSTRACT With the rapid progress of technology, lots of the professional and home devices tend to connect on line. What is all that about? At first, it s very important that in that way we can have the remote control of those devices. Indeed, so simple, while driving home, we ask the fridge for its contents, we notify the water heater, the heating system, we get the status of the washing machine, and we ask the toaster and the oven if the kids have already eaten. The result is that when we reach home, we have 24 o C degrees in the living room, the water in the bathroom is already warm, the washing machine is powered on and we also brought food for the children because they were so lazy to cook for dinner. Not to rattle along, there are so many subsystems of the Smart Home. We designed and implemented the subsystem known as IP Fridge. A complete solution consisted of a control device and software for administration and management. Our system is capable for home and also professional usage. It includes controllable identification system, capabilities of automatic product orders and automatic notifications of products that are going to expire. The expiration control is taking place also when a product enters or exits the system. Finally, when using the administrative application we can have temperature reports and several statistics regarding the products and the overall system s usage. KEYWORDS NFC RFID,.ΝΔΣ Framework, Embedded System, Linux, Mifare, Fox Board G20, Debian, WPF, 1-Wire, GPIO, MySQL, LinQ, C++, C#, ASP.NET, NFC Tags, Smart Cards, Mail Server, SMTP, Oled, Python, ARM9, EXT4, FAT16

ΠΕΡΙΕΧΟΜΕΝΑ ΠΡΟΛΟΓΟ... 10 ΚΔΦΑΛΑΗΟ 1 ΠΛΑΣΦΟΡΜΑ ΝΔΧΝ ΣΔΥΝΟΛΟΓΗΧΝ... 11 1.1 ΔΝΩΜΑΣΩΜΔΝΗ ΤΚΔΤΗ G20... 11 1.1.1 Φαπακηηπιζηικά Υλικού... 11 1.1.2 Λειηοςπγικό Σύζηημα... 12 1.2 ΣΔΥΝΟΛΟΓΙΑ NFC RFID... 12 1.2.1 Διζαγυγή... 12 1.2.2 Δθαπμογέρ... 13 1.2.3 Αναγνώζηερ... 13 1.2.4 Δηικέηερ και έξςπνερ κάπηερ... 14 1.2.5 Mifare 1K NFC RFID Chip... 14 1.3 ΠΔΡΙΦΔΡΔΙΑΚΑ ΤΣΗΜΑΣΑ... 16 1.3.1 Αιζθηηήπαρ θεπμοκπαζίαρ 1-Wire... 16 1.3.2 Οθόνη πποβολήρ oled... 16 1.3.3 GPIO (General Purpose I / O)... 17 1.4 ΔΡΓΑΛΔΙΑ ΚΑΙ ΣΔΥΝΟΛΟΓΙΔ ΛΟΓΙΜΙΚΟΤ... 18 1.4.1 Γιακομιζηήρ Βάζηρ Γεδομένυν... 18 1.4.2 Γλώζζα ππογπαμμαηιζμού C#... 18 1.4.3.NET Framework... 19 1.4.4 Τεσνολογίερ Desktop... 20 1.4.5 Τεσνολογίερ Web... 21 1.4.6 Τεσνολογία Linq... 24 ΚΔΦΑΛΑΗΟ 2 ΟΛΟΚΛΖΡΧΜΔΝΟ ΤΣΖΜΑ IP-FRIDGE... 27 2.1 ΛΔΙΣΟΤΡΓΙΚΟΣΗΣΑ ΤΣΗΜΑΣΟ... 27 2.1.1 Σενάπιο Λειηοςπγίαρ / Πεπιπηώζειρ σπήζηρ... 27 2.2 ΑΡΥΙΣΔΚΣΟΝΙΚΗ ΤΣΗΜΑΣΟ... 28 2.2.1 Απσιηεκηονική ζσεδίαζη ςλικού... 28 2.2.2 Απσιηεκηονική ζσεδίαζη λογιζμικού... 29 2.3 ΤΛΙΚΟ IP FRIDGE... 30 2.3.1 Σςνδεζμολογία ζςζκεςών 1-Wire... 30 2.3.2 Σςνδεζμολογία ζςζκεςών ειζόδος-εξόδος... 31 2.3.3 Σςνδεζμολογία Οθόνηρ oled... 32 2.3.4 Κύκλυμα ελέγσος μαγνηηικήρ κλειδαπιάρ... 33 2.4 ΛΟΓΙΜΙΚΟ IP FRIDGE... 34 2.4.1 Βάζη δεδομένυν... 34 2.4.2 Δνζυμαηυμένο ζύζηημα... 36 2.4.3 Δθαπμογή κενηπικού ελέγσος... 39 2.4.4 Υπηπεζία αποζηολήρ Email... 43 2.4.5 Δθαπμογή παποςζίαζηρ και ζηαηιζηικών... 44 2.5 ΔΦΑΡΜΟΓΔ ΚΑΙ ΜΔΛΛΟΝΣΙΚΔ ΔΠΔΚΣΑΔΙ... 51 ΠΑΡΑΡΣΖΜΑ Α ΖΛΔΚΣΡΟΝΗΚΟ-ΖΛΔΚΣΡΟΛΟΓΗΚΟ ΥΔΓΗΟ... 52 ΠΑΡΑΡΣΖΜΑ Β ΔΝΧΜΑΣΧΜΔΝΟ ΤΣΖΜΑ... 53 ΒΗΒΛΗΟΓΡΑΦΗΑ... 55

0 ΠΡΟΛΟΓΟ ηελ εξγαζία απηή πινπνηήζεθε έλα έμππλν ςπγείν κε δπλαηφηεηεο δηαζχλδεζεο ζην δηαδίθηπν. Η ζπγθεθξηκέλε εθαξκνγή δίλεη ζην ρξήζηε ηε δπλαηφηεηα λα παξαθνινπζεί κέζσ δηαδηθηχνπ ην ςπγείν ηνπ (ζεξκνθξαζία) θαη κε ρξήζε ηεο ηερλνινγίαο RFID, λα ειέγρεη ηελ πξφζβαζε ησλ ρξεζηψλ θαη ηελ θαηάζηαζε/δηαζεζηκφηεηα ησλ αγαζψλ. Σν ζχζηεκα απνηειεί αλαβάζκηζε παιαηφηεξνπ κνληέινπ, δηαζέηεη θηιηθφ ζχζηεκα δηαρείξηζεο απφ απφζηαζε, ηα δεδνκέλα απνζεθεχνληαη ζε βάζε δεδνκέλσλ θαη ζην ςπγείν ε δηαρείξηζε γίλεηαη κε ηελ ηερλνινγία RFID ελψ ηα απνηειέζκαηα ζα παξνπζηάδνληαη ζε κηα νζφλε oled. Δθαξκνγέο κπνξεί λα έρεη ζε νηθηαθά ςπγεία, κίλη κπαξ μελνδνρείσλ θαη ζε ςπγεία πνπ απνζεθεχνπλ ηαηξηθά αλαιψζηκα. Η πινπνίεζε έγηλε ζε έλα FOX Board G20 (Single Board Computer) πνπ δηαζέηεη έλαλ κηθξνεπεμεξγαζηή ηεο Atmel ARM9 CPU ζηα 400MHz κε 64MByte RAM, ηξέρεη ελζσκαησκέλν Linux (debarm) θαη δηαζέηεη πιεζψξα πεξηθεξεηαθψλ (1-wire, usb, Ethernet, PWM, i2c). Έγηλε ρξήζε δχν αλαγλσζηψλ RFID θαη πιήζνο εηηθεηψλ RFID. Σν ινγηζκηθφ αλαπηχρζεθε ζε γιψζζα C++, python (γηα ην ελζσκαησκέλν ζχζηεκα) θαη ε πιαηθφξκα.net γηα ηελ θνλζφια απνκαθξπζκέλεο δηαρείξηζεο. Σν θείκελν απαξηίδεηαη απφ ηα παξαθάησ θεθάιαηα. ην πξψην θεθάιαην εηζάγνπκε ηηο λέεο ηερλνινγίεο πνπ ρξεζηκνπνηήζακε γηα λα πινπνηήζνπκε ην νινθιεξσκέλν ζχζηεκα IP Fridge. Πην ζπγθεθξηκέλα, απνηειείηαη απφ ηερλνινγίεο πιηθνχ θαη ινγηζκηθνχ φπσο πεξηγξαθή ησλ δπλαηνηήησλ ηνπ G20, ησλ πεξηθεξεηαθψλ, θαη ηεο πιαηθφξκαο ηνπ ινγηζκηθνχ πνπ ρξεζηκνπνηήζεθε. Σν δεχηεξν θεθάιαην απνηειείηαη απφ ηελ πεξηγξαθή ηεο πινπνίεζεο ηνπ ζπζηήκαηνο. Δδψ βιέπνπκε ηηο ηερληθέο ηεο πινπνίεζεο πνπ απνηειείηαη απφ ηε ζπλδεζκνινγία ησλ πεξηθεξεηαθψλ, ηα ειεθηξνληθά θπθιψκαηα πνπ ζρεδηάζηεθαλ, ηε βάζε δεδνκέλσλ, ην πξνγξακκαηηζκφ ηνπ ελζσκαησκέλνπ ζπζηήκαηνο, θαζψο θαη ιεπηνκέξεηεο γηα ηηο εθαξκνγέο δηαρείξηζεο θαη παξνπζίαζεο.

1 ΚΔΦΑΛΑΗΟ 1 ΠΛΑΣΦΟΡΜΑ ΝΔΧΝ ΣΔΥΝΟΛΟΓΗΧΝ 1.1 ΔΝΧΜΑΣΧΜΔΝΖ ΤΚΔΤΖ G20 1.1.1 Υαπακηηπιζηικά Τλικού Σν FOX board G20 είλαη έλαο ειεθηξνληθφο ππνινγηζηήο κνλήο πιαθέηαο (single board computer), ν νπνίνο είλαη εμνπιηζκέλνο κε ηνλ επεμεξγαζηή AT91SAM9G20 ηεο ATMEL. Ο επεμεξγαζηήο ηνπ είλαη αξρηηεθηνληθήο ARM9, θαη ε ηαρχηεηα ηνπ εζσηεξηθνχ ξνινγηνχ είλαη 400MHz. Έρεη 8MB ζηελ flash κλήκε, 6MB SDRAM θαη δπλαηφηεηα λα θηινμελήζεη microsd θάξηα κε ρσξεηηθφηεηα κέρξη θαη 16GB. Η θαηαλάισζε ζε θαηάζηαζε ιεηηνπξγίαο θηάλεη κέρξη ηα 80mW κε φια ηα πεξηθεξεηαθά ελεξγνπνηεκέλα, πξάγκα πνπ ηνλ θάλεη λα μερσξίδεη απφ ηνπο ππφινηπνπο επεμεξγαζηέο ηεο νηθνγελείαο. Υαπακηηπιζηικά ηος Fox G20: 2 USB 2.0 host port (12Mbits) 1 Ethernet MAC 10/100 1 USB device port (12Mbits) 1 debug serial port (3.3Volt) 5 serial port (3.3Volt) RTC (Real Time Clock) 27 GPIO lines (General Purpose I/O) 4 A/D lines I 2 C SPI (Serial Peripheral Interface Bus) Fox G20 Board Σεσνολογία ARM Η ηερλνινγία ARM (Advanced RISC Machine) επεμεξγαζηψλ είλαη έλαο 32-bit ππνινγηζηήο κε αξρηηεθηνληθή RISC κε πξφηππα ISA πνπ έρεη αλαπηπρηεί απφ ηελ ARM Holdings. Οη ARM επεμεξγαζηέο έρνπλ κεγάιε πνηθηιία απφ ππξήλεο φπσο: ARM1, ARM2, ARM3, ARM6, ARM7, ARM7TDMI, StrongARM, ARM8, ARM9, ARM10, ARM11, XScale, Cortex απφ 4 κέρξη θαη 740 MIPS (million instructions per second) κε ηαρχηεηα απφ 8 κέρξη ηα 665MHz. Ο επεμεξγαζηήο ηνπ FOX board G20, δειαδή ν AT91SAM9G20, έρεη ππξήλα ARM926EJ-S Thumb ηεο νηθνγέλεηαο ARM9E θαη αξρηηεθηνληθή έθδνζε ARM v5tej κε ηερλνινγίεο DSP, debugger έμνδν θαη Jazelle γηα Java επηηάρπλζε. Ο ππξήλαο απηφο ρξεζηκνπνηείηαη ζε πάξα πνιιέο εθαξκνγέο φπσο ηνπο επεμεξγαζηέο ησλ θηλεηψλ

12 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ ηειεθψλσλ HTC, Sony Ericsson, NOKIA, Siemens-Beng, LG θαζψο θαη ζε παηρληδνκεραλέο φπσο Nintendo DS, Nintendo Wii, αιιά θαη ζε notepad θαη εμσηεξηθνχο ζθιεξνχο δίζθνπο ηεο Western Digital, ηεο Seagate, ζηα router ηεο D-Link θαη ζε πνιιέο άιιεο εθαξκνγέο. 1.1.2 Λειηοςπγικό ύζηημα Σν FOX Board G20 ιεηηνπξγεί κε πεξηβάιινλ Linux, θαη κπνξεί λα ζπλεξγαζηεί κε πιήζνο δηαλνκψλ. ηε δηθή καο πεξίπησζε ρξεζηκνπνηήζακε κία απφ ηηο δεκνθηιέζηεξεο δηαλνκέο, ηε ιεγφκελε Debian. Υξεζηκνπνηνχκε ηελ έθδνζε Lenny SID κε ηελ 2.6.32 έθδνζε ηνπ linux kernel, θαζψο θαη αληηθαηαζηήζακε θάπνηα παθέηα ινγηζκηθνχ απφ ηε λεφηεξε έθδνζε πνπ είλαη δηαζέζηκα γηα testing. Σν γεγνλφο απηφ ελλνείηαη πσο δελ είλαη δεζκεπηηθφ. Δπίζεο, ην FOXG20 ζα κπνξνχζε λα ιεηηνπξγήζεη κε δηαλνκέο φπσο: Gentoo, OpenWRT, OpenEmbedded Picotux θ.α. Οη εθδφζεηο απηέο παξέρνπλ πιήξεο ππνζηήξημε ζε κηα ηεξάζηηα γθάκα δεκνθηιψλ γισζζψλ πξνγξακκαηηζκνχ φπσο C/C++, Python, Perl, Java, Tcl. Δπίζεο ππάξρνπλ θαη δηαλνκέο φπσο ε Xenomai, ε νπνία είλαη δηαλνκή πξαγκαηηθνχ ρξφλνπ θαη ζπλεξγάδεηαη κε ηνλ ππξήλα ηνπ linux. Η θάξηα κλήκεο ρσξηζκέλε ζε δχν δηακεξίζκαηα. Σν πξψην είλαη δηακνξθσκέλν ζε FAT16, θαη έρεη ρσξεηηθφηεηα 40Mb. ην δηακέξηζκα απηφ είλαη απνζεθεπκέλν ην αξρείν εθθίλεζεο (boot image). Σν δεχηεξν δηακέξηζκα απνηειείηαη απφ ηνλ ππφινηπν θελφ ρψξν ηεο θάξηαο, πνπ ζηε δηθή καο ηελ πεξίπησζε είλαη 1.8Gb, κηαο θαη ρξεζηκνπνηήζακε θάξηα ρσξεηηθφηεηαο 2Gb, θαη είλαη δηακνξθσκέλν ζε EXT4. Σν δηακέξηζκα απηφ απνηειεί ην ζχζηεκα αξρείσλ ηνπ ιεηηνπξγηθνχ. 1.2 ΣΔΥΝΟΛΟΓΗΑ NFC RFID 1.2.1 Διζαγυγή Σν NFC (Near Field Communication) είλαη κία αζχξκαηε, πςειήο ζπρλφηεηαο ηερλνινγία επηθνηλσληψλ κηθξήο εκβέιεηαο, ε νπνία παξέρεη ηε δπλαηφηεηα αληαιιαγήο δεδνκέλσλ κεηαμχ ζπζθεπψλ ζε απφζηαζε πεξίπνπ 10 εθαηνζηψλ. Η ηερλνινγία απηή έρεη εμειηρζεί απφ ην ζπλδπαζκφ ππαξρφλησλ αλέπαθσλ ηερλνινγηψλ αλαγλψξηζεο θαη δηαζχλδεζεο. Πξντφληα κε ελζσκαησκέλν NFC απινχζηεπζαλ δξακαηηθά ηνλ ηξφπν πνπ νη ζπζθεπέο επηθνηλσλνχλ κεηαμχ ηνπο, βνήζεζαλ ζηελ ηαρχηεηα ησλ ζπλαιιαγψλ, ζηελ παξαιαβή θαη δηακνηξαζκφ πιεξνθνξηψλ θαη αθφκα επεηεχρζεζαλ γξήγνξεο θαη αζθαιήο ρξεκαηηθέο πιεξσκέο.

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 13 1.2.2 Δθαπμογέρ Σερλνινγίεο NFC ρξεζηκνπνηνχληαη φιν θαη πεξηζζφηεξν ζηελ θαζεκεξηλφηεηά καο. Αξρηθά κηα επαλαζηαηηθή κέζνδνο πιεξσκήο ησλ εηζηηεξίσλ ησλ ζπγθνηλσληψλ έθαλε ηελ εκθάληζή ηεο ζηελ πφιε ηνπ Λνλδίλνπ ελ νλφκαηη Oyster Card. Με απηφ ηνλ ηξφπν δε ρξεηάδνληαη ρξεκαηηθέο ζπλαιιαγέο παξά κφλν θαηά ηε θφξησζε ηεο NFC smartcard. Σν ίδην ζχζηεκα εηζηηεξίσλ ζπγθνηλσληψλ ήδε έρεη αξρίζεη λα εθαξκφδεηαη θαη ζε άιιεο ρψξεο. Δπίζεο, ζε θάπνηα κνπζεία, ππάξρεη ειεθηξνληθφο μελαγφο πνπ ρξεζηκνπνηεί ηελ ηερλνινγία NFC RFID. ηα αμηνζέαηα ηνπ κνπζείνπ ππάξρνπλ NFC εηηθέηεο. Πιεζηάδνληαο ην NFC θηλεηφ ηειέθσλν ζηελ εηηθέηα, ην ηειέθσλν ιακβάλεη πιεξνθνξίεο θαη δηάθνξα πνιπκέζα ζρεηηθά κε ην ζπγθεθξηκέλν αμηνζέαην. Ήδε ζηελ Ιαπσλία έρνπλ μεθηλήζεη νη ηξαπεδηθέο ζπλαιιαγέο κέζσ NFC. Με απηφ ηνλ ηξφπν ζέινπλ λα θαηαξγήζνπλ ηηο πηζησηηθέο θάξηεο. Οη ζπλαιιαγέο απηέο γίλνληαη θαη κέζσ NFC θηλεηψλ. Απηή ηελ ζηηγκή ζηελ αγνξά ππάξρνπλ πνιιά θαη δηάθνξα κνληέια NFC θηλεηψλ ηειεθψλσλ. Άιιε εθαξκνγή είλαη ηα έμππλα πφζηεξ. Γηα παξάδεηγκα βξίζθεζαη ζε έλα super market θαη ππάξρεη ζε κηα εηηθέηα πξνζθνξά ηεο εκέξαο. Σν κφλν πνπ ρξεηάδεηαη γηα λα απνθηήζνπκε ηελ πξνζθνξά είλαη λα πιεζηάζνπκε ηελ NFC ζπζθεπή καο ζηελ εηηθέηα. Σα RFID Οινθιεξσκέλα (NFC Chips) ππάξρνπλ θαη ζηα βηνκεηξηθά δηαβαηήξηα, θαζψο θαη ζηα επξσπατθά δηπιψκαηα νδήγεζεο. Σα νινθιεξσκέλα απηά πεξηέρνπλ θσδηθνπνηεκέλεο πιεξνθνξίεο φπσο νλνκαηεπψλπκν, εκεξνκελία γέλλεζεο, δαρηπιηθά απνηππψκαηα (ζηελ πεξίπησζε ηνπ δηαβαηεξίνπ). Δλδέρεηαη λα ελζσκαησζνχλ θαη ζηηο ηαπηφηεηεο, πξάγκα πνπ έρεη μεθηλήζεη ήδε ε Γεξκαληθή θπβέξλεζε. Δπίζεο, κπνξνχκε λα δνχκε ηελ ηερλνινγία NFC ζε: Παξθφκεηξα, Απηφκαηνπο πσιεηέο, Πφξηεο γξαθείσλ, ζπηηηψλ θαη γθαξάδ, Πξνζσπηθνχο ππνινγηζηέο, πζθεπαζία πξντφλησλ. 1.2.3 Αναγνώζηερ Οη αλαγλψζηεο NFC RFID ιεηηνπξγνχλ ζηα 13,56 MHz θαη έρνπλ εκβέιεηα πεξίπνπ 10 εθαηνζηά. Λεηηνπξγνχλ κε επαγσγηθή ζχδεπμε θαη δηακνηξάδνπλ ελέξγεηα θαη πιεξνθνξίεο κε ηηο παζεηηθέο NFC RFID εηηθέηεο. Η επηθνηλσλία ησλ δεδνκέλσλ κεηξηέηαη ζε Kilobits per second (kbps) θαη θηάλεη ηα 424kbps.

14 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ ην ζχζηεκα καο ρξεζηκνπνηήζακε ηνπο ACR122U θαη ACR122T NFC Readers, νη νπνίνη έρνπλ δηαζχλδεζε USB θαη είλαη ζπκβαηνί κε ηα ISO/IEC, ETSI θαη ECMA standards. 1. ACR 122U 2. ACR 122T 1.2.4 Δηικέηερ και έξςπνερ κάπηερ Τπάξρνπλ 4 ηχπνη εηηθεηψλ NFC RFID: Tag Type 1: Δίλαη βαζηζκέλνο ζην ISO-14443A standard. Απηέο νη εηηθέηεο είλαη επαλεγγξάςηκεο θαη νη ρξήζηεο κπνξνχλ λα ηηο ξπζκίζνπλ θαη λα γίλνπλ read-only. Η δηαζέζηκε κλήκε είλαη 96 bytes θαη είλαη ηθαλή λα απνζεθεχζεη έλα URL ή θάπνηα άιιε κηθξή πιεξνθνξία. Παξ φια απηά, ε κλήκε είλαη επεθηάζηκε κέρξη θαη 2 Kbytes. Η ηαρχηεηα επηθνηλσλίαο είλαη 106 Kbit/s. Ωο απνηέιεζκα ηεο απιφηεηαο απηνχ ηνπ ηχπνπ εηηθέηαο είλαη ην ρακειφ θφζηνο, πξάγκα πνπ ην θάλεη ηθαλφ γηα πνιιέο εθαξκνγέο NFC. Tag Type 2: Απηφο ν ηχπνο είλαη επίζεο βαζηζκέλνο επίζεο ζην ISO-14443. Απηέο νη εηηθέηεο είλαη επαλεγγξάςηκεο θαη νη ρξήζηεο κπνξνχλ λα ηηο ξπζκίζνπλ ζαλ read only. Σν βαζηθφ κέγεζνο ηεο κλήκεο ηεο εηηθέηαο είλαη 48 bytes αιιά παξ φια απηά κπνξεί λα επεθηαζεί κέρξη ηα 2 Kbyte. Καη πάιη ε ηαρχηεηα επηθνηλσλίαο είλαη 106 Kbit/s. Tag Type 3: Ο ηχπνο 3 ησλ NFC εηηθεηψλ είλαη βαζηζκέλνο ζην ζχζηεκα Sony Felica. Απηή ηε ζηηγκή έρεη κλήκε κεγέζνπο 2 Kbyte θαη ε ηαρχηεηα επηθνηλσληψλ είλαη 212 Kbit/s. Δπνκέλσο, απηή ε NFC εηηθέηα είλαη πεξηζζφηεξν εθαξκφζηκε ζε πεξίπινθεο εθαξκνγέο, αιιά παξ φια απηά ην θφζηνο ηεο θάζε εηηθέηαο είλαη πςειφηεξν. Tag Type 4: Ο ηχπνο 4 ησλ NFC εηηθεηψλ είλαη πην ζπκβαηφο κε ηα ISO-14443A θαη ISO-14443B standards. Απηέο νη εηηθέηεο είλαη πξν-ξπζκηζκέλεο απφ ηνλ θαηαζθεπαζηή θαη κπνξνχλ λα είλαη είηε επαλεγγξάςηκεο, είηε read only. Η ρσξεηηθφηεηα ηεο κλήκεο κπνξεί λα θηάζεη κέρξη θαη ηα 32 Kbytes θαη ε ηαρχηεηα επηθνηλσλίαο είλαη κεηαμχ 106 θαη 424 Kbit/s. 1.2.5 Mifare 1K NFC RFID Chip ην ζχζηεκά καο ρξεζηκνπνηήζακε εηηθέηεο θαη έμππλεο θάξηεο ηχπνπ 1 κε ελζσκαησκέλν chip Mifare 1K απφ ηελ NXP Semiconductors. Σν chip απηφ

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 15 ρξεζηκνπνηείηαη θπξίσο ζε εθαξκνγέο εηζηηεξίσλ ζπγθνηλσληψλ, γηα έιεγρν πξφζβαζεο, θαη γηα πξνζσπνπνίεζε. Έρεη ζχζηεκα anti-collision, ην νπνίν επηηξέπεη ηελ ιεηηνπξγία φηαλ πεξηζζφηεξεο απφ κία θάξηεο ππάξρνπλ ηαπηφρξνλα ζην ίδην ζεκείν. Ο αιγφξηζκνο απηφο επηιέγεη θάζε θάξηα μερσξηζηά θαη ειέγρεη φηη ε εθηέιεζε ηεο ζπλαιιαγήο ηεο επηιεγκέλεο θάξηαο νινθιεξψλεηαη ζσζηά ρσξίο λα θαηαζηξέςεη ηα δεδνκέλα εμ αηηίαο ησλ άιισλ θαξηψλ ζηελ πεξηνρή. Αζθάλεια Ακνηβαίν ηξηπιφ έιεγρν ηαπηφηεηαο. Ξερσξηζηφο ζπλδπαζκφο 2 θιεηδηψλ αλά εθαξκνγή, ππνζηήξημε πνιιψλ εθαξκνγψλ κε ηεξαξρία θιεηδηψλ. Μνλαδηθφ ζεηξηαθφ αξηζκφ γηα θάζε ζπζθεπή. Μνήμη ΔΔPROM 1 Kbyte, νξγαλσκέλν ζε 16 sectors, κε 4 block ησλ 16 bytes ζηνλ θαζέλα. Οξηζκφο δηθαησκάησλ απφ ρξήζηε γηα θάζε block κλήκεο. Αληνρή 10 ρξφλσλ. Αληνρή εγγξαθψλ 100.000 θχθινη. Οη ιεηηνπξγίεο κλήκεο πνπ είλαη δηαζέζηκεο είλαη: Αλάγλσζε block, Δγγξαθή block, Μείσζε πεξηερνκέλσλ block Αχμεζε πεξηερνκέλσλ block Δπαλαθνξά, Μεηαθνξά.

16 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 1.3 ΠΔΡΗΦΔΡΔΗΑΚΑ ΤΣΖΜΑΣΑ 1.3.1 Αιζθηηήπαρ θεπμοκπαζίαρ 1-Wire Η Σερλνινγία 1-Wire είλαη κηα ζπζθεπή πνπ έρεη κηα ιεσθφξν επηθνηλσλία θαη έρεη ζρεδηαζηηθή απφ ηελ Dallas Semiconductor Corp. (Maxim). Παξέρεη ρακειή ηαρχηεηα δεδνκέλσλ θαη ηνλ έιεγρν κηαο ή θαη παξαπάλσ ζπζθεπψλ ζε κηα γξακκή. Σν 1-Wire είλαη παξφκνην κε ην I 2 C αιιά κε ρακειφηεξεο ηαρχηεηεο δεδνκέλσλ θαη κεγαιχηεξε εκβέιεηα. Έλα δίθηπν πνιιψλ ζπζθεπψλ 1-Wire ζε αθνινπζία νλνκάδεηαη MicroLan. ε θάζε MicroLan, ππάξρεη πάληα έλα θχξην 1-Wire (master) ην νπνίν κπνξεί λα είλαη έλα PC ή έλαο κηθξνειεγθηήο. Αιζθηηήπιο θεπμοκπαζίαρ DS18B20 Σν ds18b20 είλαη ηεο maxim IC είλαη ςεθηαθφ αηζζεηήξην ζεξκνθξαζίαο (CMOS). Μεηαδίδεη ζεξκνθξαζίεο ζε βαζκνχο θειζίνπ C o κε 9-12bit αθξίβεηαο. Σν εχξνο ηνπ είλαη -55 o C κε 125 o C κε αθξίβεηα +/- 0.5 o C. Κάζε αηζζεηήξην έρεη έλα κνλαδηθφ 64bit αχμσλ αξηζκφ ραξαγκέλν ζε απηφ. Υαπακηηπιζηικά: Μνλαδηθή δηεπαθή 1-Wire πνπ απαηηεί κφλν έλαλ αθξνδέθηε - ζχξα (pin) γηα ηελ επηθνηλσλία. Κάζε ζπζθεπή έρεη κηα κνλαδηθή 64bit θσδηθφ ζεηξάο απνζεθεχνληαο κέζα ζε κηα ROM. Μπνξεί λα ηξνθνδνηείηαη απφ ηε γξακκή δεδνκέλσλ. Λεηηνπξγεί απφ 3.0V σο 5.5V. Μεηξά γηα ζεξκνθξαζίεο απφ -55 C έσο +125 o C. +/- 0.5 o C αθξίβεηα γηα -10 C έσο +85 o C. Μεηαηξέπεη ζεξκνθξαζία ζε 12-bit ςεθηνιέμε ζε 750ms (κέγηζην). Αλαδήηεζε ζπλαγεξκνχ, εληνπίδεη ηηο δηεπζχλζεηο ησλ ζπζθεπψλ πνπ έρνπλ ρακειή πξνγξακκαηηζκέλε ζεξκνθξαζία. Σν θαιψδην κεηαθνξάο κεηαμχ ησλ αηζζεηεξίσλ θαη ηνπ θχξηνπ 1-Wire (master) κπνξεί λα είλαη 6 κέηξα. 1.3.2 Οθόνη πποβολήρ oled Η Organic Light emitting Diode (oled) είλαη κηα δίνδνο εθπνκπήο θσηφο. Απηφ ην ζηξψκα ηνπ νξγαληθνχ πιηθνχ εκηαγσγψλ είλαη ηνπνζεηεκέλε κεηαμχ δπν ειεθηξφδησλ. Σνπιάρηζηνλ έλα απφ ηα ειεθηξφδηα είλαη δηαθαλήο. Η μoled-160-g1 ηεο 4D-SYSTEMS είλαη κηα ζπκπαγέο θαη νηθνλνκηθψο απνδνηηθή κνλάδα νζφλεο ρξεζηκνπνηψληαο ηελ ηειεπηαία ηερλνινγία αηρκήο Passive Matrix OLED (PMOLED) ηερλνινγία κε ελζσκαησκέλν GOLDELOX-GFX2 επεμεξγαζηήο γξαθηθψλ πνπ πεξηέρεη ιεηηνπξγηθφηεηα stand-alone. Σα ηζρπξά γξαθηθά, θείκελα, εηθφλεο (*.bmp, *.jpg), θηλνχκελα ζρέδηα (*.gif, *.avi, *.wmv) θαη ακέηξεηεο άιιεο ιεηηνπξγίεο ρξηζκέλεο ζην εζσηεξηθφ ηνπ επεμεξγαζηή GOLDELOX-GFX2.

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 17 ηνλ επεμεξγαζηή απηφλ κπνξεί λα γξαθηεί θψδηθαο ζε 4DGL (4D Graphics Language) αιιά θαη λα ζηείινπκε ζεηξηαθά εληνιέο ζε δεθαεμαδηθή κνξθή. Η 4DGL είλαη κηα γιψζζα πςεινχ επηπέδνπ θαη ε ζχληαμε ηεο είλαη παξφκνηα κε γιψζζεο φπσο ε BASIC, C θαη Pascal. Η κνλάδα ηεο νζφλεο δηαζέηεη I/O φπσο αλαινγηθή είζνδν, θνπκπηά ειέγρνπ (button), joystick, κεγάθσλν θαη ζπζθεπέο 1-Wire. Υαξαθηεξηζηηθά ηεο κoled-160-g1: Υακεινχ θφζηνπο OLED νζφλε. 1.7 ζηα 160 x 128 αλάιπζε, 68K ρξψκαηα, Passive Matrix OLED. Δπθξίλεηα 100 cd/m2. Έρεη ζρεδφλ 180 ν γσλία ζέαζεο. 2 x GPIO παξερφκελεο είζνδνη-έμνδνη. Έρεη 10Kbytes κλήκε flash γηα ηελ απνζήθεπζε ηνπ θψδηθα ρξήζηε θαη 510 bytes κλήκεο RAM γηα ηηο κεηαβιεηέο ρξήζηε. εηξηαθή δηαζχλδεζε κε TTL auto-baud (300 έσο 256K baud). On-board θάξηα κλήκεο micro-sd γηα ηελ απνζήθεπζε ησλ εηθφλσλ, θηλνχκελα ζρέδηα, ερεηηθά δήγκαηα θιπ. Ο επεμεξγαζηήο GOLDELOX- GFX2 είλαη έλα ελζσκαησκέλν πξνζαξκνζκέλν ειεγθηή γξαθηθψλ ζρεδηαζκέλα γηα λα επηθνηλσλνχλ κε πνιιέο δεκνθηιήο OLED θαη LCD νζφλεο. Αλήθεη ζε κηα νηθνγέλεηα επεμεξγαζηψλ κε βειηηζηνπνηεκέλν ππξήλα εηθνληθήο κεραλήο, ην E.V.E (Extensible Virtual Engine) πνπ έρεη δεκηνπξγεζεί απφ ηελ 4D-SYSTEMS. Όζν πεξηζζφηεξα εηθνλνζηνηρεία είλαη θσηεηλά ηφζν πην κεγάιε θαηαλάισζε έρεη. Ο θαιχηεξνο ηξφπνο γηα ηε ρξήζε ηεο νζφλε είλαη λα έρεη πάληα καχξν θφλην ζε φια ηα αληηθείκελα πνπ εκθαλίδεη γηα λα κε δεκηνπξγήζεη θακέλα εηθνλνζηνηρεία (pixel). 1.3.3 GPIO (General Purpose I / O) General Purpose Input/Output (GPIO). Δίζνδνο/Έμνδνο γεληθνχ ζθνπνχ είλαη κηα δηαζχλδεζε πνπ δηαζέηνπλ θάπνηεο ζπζθεπέο. Έλαο κηθξνεπεμεξγαζηήο ή κηθξνειεγθηή κπνξεί λα έρεη έλα ή πεξηζζφηεξα GPIO ζπλδέζεηο γηα δηαζχλδεζε κε εμσηεξηθέο ζπζθεπέο θαη ηα πεξηθεξεηαθά. Απηέο κπνξεί λα ιεηηνπξγνχλ σο εηζξνέο, λα δηαβάζεη ςεθηαθά ζήκαηα πνπ πξνέξρνληαη απφ άιια κέξε ηνπ θπθιψκαηνο ή ηελ παξαγσγή ή γηα ηνλ έιεγρν ζεκάησλ ή κε άιιεο ζπζθεπέο. Σα GPIOs ζπρλά νξγαλψλνληαη ζε νκάδεο, ζπλήζσο 8 αθίδεο είλαη κηα πφξηα GPIO. Πνπ έρνπλ ζπλήζσο αηνκηθά GPIO δηακνξθψζηκν είηε σο εηζξνέο ή εθξνέο.

18 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 1.4 ΔΡΓΑΛΔΗΑ ΚΑΗ ΣΔΥΝΟΛΟΓΗΔ ΛΟΓΗΜΗΚΟΤ 1.4.1 Γιακομιζηήρ Βάζηρ Γεδομένυν Ο δηαθνκηζηήο βάζεο δεδνκέλσλ πνπ ρξεζηκνπνηήζακε είλαη ν MySQL Server 5.1. O Δμπνεξεηεηήο MySQL είλαη έλα ζχζηεκα δηαρείξηζεο ζρεζηαθψλ βάζεσλ δεδνκέλσλ (RDBMS) ν νπνίνο δηακνηξάδεη πξφζβαζε ζε πνιιαπινχο ρξήζηεο (multiuser) ζε έλαλ αξηζκφ βάζεσλ δεδνκέλσλ. Δίλαη ινγηζκηθφ αλνηρηνχ θψδηθα (open source) θάησ απφ ηνπο φξνπο ηνπ GNU (General Public License) θαη είλαη πινπνηεκέλν ζε C θαη C++. Λεηηνπξγεί ζε δηάθνξεο πιαηθφξκεο θαη πιεζψξα ιεηηνπξγηθψλ ζπζηεκάησλ φπσο Microsoft Windows, Linux, BSD, Mac OS θ.α. Υξεζηκνπνηείηαη ζε πάξα πνιιέο εθαξκνγέο αλνηρηνχ θψδηθα φπσο phpbb, WordPress, Drupal, θαζψο θαη ζε πξντφληα φπσο Wikipedia, Google θαη Facebook. Γηα ην ζρεδηαζκφ ηεο βάζεο ρξεζηκνπνηήζεθε ην εξγαιείν MySQL Workbench 5.1 OSS θαη γηα ηε δηαρείξηζε ηεο ρξεζηκνπνηήζεθαλ ην MySQL Query Browser θαη MySQL Administrator ηα νπνία είλαη κέξνο ηνπ ίδηνπ παθέηνπ. Δπίζεο ρξεηαζηήθακε ηνλ MySQL.NET Connector ν νπνίνο είλαη ν νδεγφο γηα ηε δηαζχλδεζε ηεο βάζεο δεδνκέλσλ MySQL κε εθαξκνγέο.neσ. Όια απηά ηα εξγαιεία θαη νη νδεγνί είλαη δσξεάλ θαη κπνξείηε λα ηα θαηεβάζεηε απφ ηελ ζειίδα ηεο MySQL ζηε δηεχζπλζε [Ι-1]. 1.4.2 Γλώζζα ππογπαμμαηιζμού C# ε απηή ηελ ελφηεηα ζα κηιήζνπκε γηα ηα πιενλεθηήκαηα απηήο ηεο γιψζζαο πξνγξακκαηηζκνχ, θαζψο θαη ζα ηε ζπγθξίλνπκε κε ηε γιψζζα πξνγξακκαηηζκνχ πνπ καο απαζρνινχζε κέρξη ηψξα ζηα θνηηεηηθά καο ζξαλία. Αςηόμαηη διασείπιζη μνήμηρ Γξάθνληαο θψδηθα ζε C++ πξέπεη λα έρνπκε ηελ πξνζνρή καο ηηο κεηαβιεηέο, ηα αληηθείκελα, θαη γεληθφηεξα ζηε ρξήζε ηεο κλήκεο. Αληίζεηα, ζηελ C#, δε ρξεηάδεηαη λα αλεζπρνχκε γη απηφ γηα ην ιφγν ηνπ φηη φια απηά ηα ζέκαηα ξπζκίδνληαη απηφκαηα. Δξαιπέζειρ Υξεζηκνπνηψληαο επηζηξεθφκελνπο θσδηθνχο είλαη «θάξκα κε bugs» πνπ πεξηκέλεη λα βγεη ζηελ επηθάλεηα. ηνλ θφζκν ηεο C++, κεξηθέο ζπλαξηήζεηο επηζηξέθνπλ αληηθείκελα ηχπνπ HRESULT, κεξηθέο επηζηξέθνπλ bool, θάπνηεο άιιεο επηζηξέθνπλ αξηζκνχο θηι. Με απηφ ηνλ ηξφπν ιεηηνπξγίαο πξέπεη λα έρνπκε γηα θάζε ζπλάξηεζε δηαθνξεηηθή δηαρείξηζε εμαηξέζεσλ αλαιφγσο ηνλ επηζηξεθφκελν ηχπν. ηελ C# είλαη πην απιά ηα πξάγκαηα. Γε ρξεηάδεηαη θακία ελέξγεηα γηα λα απνθηήζνπκε ην κήλπκα ιάζνπο. Αθνινπζεί έλα παξάδεηγκα: C++ code: CString name; name = RTN_ERROR_IF_FAILED(employee.FetchName(name));

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 19 C# code: string name = employee.fetchname(); Βιβλιοθήκερ ηελ C++ ν κέζνο πξνγξακκαηηζηήο ρξεζηκνπνηεί ηνπιάρηζηνλ 6 βηβιηνζήθεο, φιεο απφ ηηο νπνίεο είλαη γξακκέλεο απφ δηαθνξεηηθέο νκάδεο, κε δηαθνξεηηθέο θηινζνθίεο ζην πσο ρξεζηκνπνηνχληαη, πσο είλαη νξγαλσκέλεο, πσο δηαρεηξίδνληαη ηα ιάζε θηι. Μεξηθέο είλαη βηβιηνζήθεο C, άιιεο C++ πνπ είλαη αξθεηά απιέο, θαη κεξηθέο απφ απηέο θάλνπλ βαξηά ρξήζε ησλ πξνηχπσλ ή θαη άιιεο δπλαηφηεηεο ηεο C++. Η κεγαιχηεξε βειηίσζε ζηελ C# είλαη ν ζπλδπαζκφο ηεο κε ηελ πιαηθφξκα.νδσ (βι. 1.4.3), πνπ καο παξέρεη βηβιηνζήθεο ίδηαο δνκήο, νη νπνίεο θαιχπηνπλ ηα πάληα απφ Win32, θαη επίζεο είλαη πνιχ πην εχθνιε ζηε ρξήζε απφ νπνηαδήπνηε ελαιιαθηηθή ηεο C++. Μονηέλο Μεηαγλώηηιζηρ Η C++ θιεξνλφκεζε ην κνληέιν κεηαγιψηηηζεο απφ ηελ C, ην νπνίν έρεη ζρεδηαζηεί πνιχ θαηξφ πξηλ, κε απνηέιεζκα λα έρνπλ αιιάμεη ηα πξνγξάκκαηα θαη ν ηξφπνο γξαθήο ηνπο. Απηή ηε ζηηγκή, παξ φια απηά, μερσξηζηέο κεηαγισηηίζεηο αξρείσλ, μερσξηζηά header θαη source αξρεία, ηείλνπλ λα θαζπζηεξνχλ ηε δηαδηθαζία απηή. ηελ C# έρνπκε πνιχ γξεγνξφηεξε κεηαγιψηηηζε θαη ζχλδεζε βηβιηνζεθψλ (linking). Δναλλακηική άποτη Σν ζπκπέξαζκα απφ φια απηά είλαη φηη ε C# ηαηξηάδεη ζε αξθεηέο πεξηπηψζεηο. Τπάξρνπλ φκσο θαη πεξηπηψζεηο πνπ ε C++ ηαηξηάδεη απφιπηα κε απηέο. Σν πνηά γιψζζα ζα ρξεζηκνπνηήζνπκε εμαξηάηαη ζηνλ ηχπν ηεο εθαξκνγήο θαη ηνπ θψδηθα πνπ γξάθνπκε. Γηα παξάδεηγκα, φηαλ θηηάρλνπκε εθαξκνγέο ρξεζηψλ ή θαη δηαδηθηπαθέο εθαξκνγέο, ε C# είλαη ε ζίγνπξε επηινγή καο, ελψ φηαλ θαηεβαίλνπκε ζε ρακειφηεξν επίπεδν ε επηινγή είλαη επίζεο θαζαξή ζε C++. ηελ C++ έρνπκε ηνλ απφιπην έιεγρν ηεο κλήκεο, γξεγνξφηεξε εθθίλεζε ησλ εθαξκνγψλ, δηφηη ζηελ πεξίπησζε ηεο C# ην CLR (βι. παξαθάησ) επηβξαδχλεη ηην ππώηη εθθίλεζε ηεο εθαξκνγήο, είλαη νηθνλνκηθφηεξε ζην ζέκα κλήκεο, θαη ζαθψο απαηηεί ιηγφηεξεο εμαξηήζεηο θαηά ηελ εγθαηάζηαζε. 1.4.3.NET Framework Σν.ΝΔΣ Framework είλαη κία πιαηθφξκα ινγηζκηθνχ ηεο Microsoft ε νπνία κπνξεί λα εγθαηαζηαζεί ζε ειεθηξνληθνχο ππνινγηζηέο νη νπνίνη ιεηηνπξγνχλ κε Windows ζαλ πξσηεχνλ ιεηηνπξγηθφ ζχζηεκα. Πεξηέρεη κία πνιχ κεγάιε βηβιηνζήθε απφ πξνγξακκαηηζηηθέο ιχζεηο θαη ζπλαξηήζεηο γηα γλσζηά πξνβιήκαηα ζηνλ πξνγξακκαηηζκφ εθαξκνγψλ θαη έλαλ εηθνληθφ ππνινγηζηή πνπ δηαρεηξίδεηαη ηηο εμαηξέζεηο ηνλ πξνγξακκάησλ πνπ είλαη γξακκέλα γηα απηή ηελ πιαηθφξκα.

20 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ Η βηβιηνζήθε.net είλαη δηαζέζηκε ζε φιεο ηηο γιψζζεο πξνγξακκαηηζκνχ πνπ πεξηιακβάλεη ε ζπγθεθξηκέλε πιαηθφξκα (Visual Basic, Visual C++, C#, J#, ASP, WPF, Silverlight). Η βηβιηνζήθε απηή καο εμνπιίδεη κε έλα κεγάινπ εχξνπο παθέην πνπ πεξηέρεη: Γιεπαθέρ σπήζηη (user interface), Ππόζβαζη δεδομένυν (data access), Σςνδεζιμόηηηα βάζηρ δεδομένυν (database connectivity), Κπςπηογπαθία (cryptography), Ανάπηςξη διαδικηςακών εθαπμογών (web application development), Απιθμηηικούρ αλγόπιθμοςρ (numeric algorithms), Δπικοινυνία δικηύυν (network communications). Σα πξνγξάκκαηα πνπ είλαη γξακκέλα γηα ηελ πιαηθφξκα.νδσ εθηεινχληαη ζε έλα πεξηβάιινλ ινγηζκηθνχ πνπ δηαρεηξίδεηαη ηηο runtime απαηηήζεηο ηνπ πξνγξάκκαηνο. Δπίζεο, κέξνο ηεο πιαηθφξκαο, απηφ ην runtime πεξηβάιινλ είλαη γλσζηφ σο Common Language Runtime (CLR). Σν CLR δεκηνπξγεί ηελ χπαξμε ελφο εηθνληθνχ ππνινγηζηή γηα ηελ εθαξκνγή (application virtual machine), έηζη ν πξνγξακκαηηζηήο δε ρξεηάδεηαη λα ιάβεη ππ φςηλ ηηο δπλαηφηεηεο ηνπ ζπγθεθξηκέλνπ CPU πνπ ζα εθηειέζεη ην πξφγξακκα. Γηα παξάδεηγκα κπνξνχκε λα έρνπκε έλαλ ππνινγηζηή πιαηθφξκαο x86_64 (64bit CPU), θαη λα εθηειέζνπκε ηελ εθαξκνγή καο ζαλ ζε x86 32bit CPU. To CLR καο πξνζθέξεη επίζεο θαη άιιεο ζεκαληηθέο ππεξεζίεο φπσο αζθάιεηα, δηαρείξηζε κλήκεο θαη εμαηξέζεσλ. Η βηβιηνζήθε θιάζεσλ θαη ην CLR καδί ζρεκαηίδνπλ ηελ πιαηθφξκα.νδσ. Η πιαηθφξκα.net πξννξίδεηαη λα ρξεζηκνπνηεζεί απφ ηηο πεξηζζφηεξεο λέεο εθαξκνγέο πνπ δεκηνπξγνχληαη γηα ηελ πιαηθφξκα ησλ Windows. Γηα λα ππάξρεη ε δπλαηφηεηα αλάπηπμεο εθαξκνγήο ρξεηάδεηαη λα είλαη εγθαηεζηεκέλν ζηνλ ππνινγηζηή καο ην SDK for Windows 7 and.net framework 4 (ή λεφηεξν) ή ην Visual Studio 2010 (ή λεφηεξν). Η έθδνζε 3.0 ηεο πιαηθφξκαο.νδσ πεξηέρεηαη ζηα ιεηηνπξγηθά ζπζηήκαηα Windows Server 2008 θαη ζηα Windows Vista θαζψο ε έθδνζε 3.5 πεξηέρεηαη ζηα Windows 7 θαη κπνξεί λα εγθαηαζηαζεί ζηα Windows XP θαη ζηα Windows Server 2003. Η ηειεπηαία έθδνζε ηεο πιαηθφξκαο είλαη ε 4.0 ε νπνία θπθινθφξεζε ζηηο 12 Απξηιίνπ 2010, θαη είλαη ελζσκαησκέλε ζην Visual Studio 2010. Γηα ηε δηθή καο πινπνίεζε ρξεζηκνπνηήζακε ην Visual Studio 2010 ην νπνίν καο παξέρεηαη δσξεάλ ζε ζπλεξγαζία ηεο ISIC International Student Identity Card θαη ηεο Microsoft. 1.4.4 Σεσνολογίερ Desktop ηελ πινπνίεζή καο ρξεζηκνπνηήζεθαλ θαη ηερλνινγίεο Desktop ιφγσ ηεο αλάγθεο χπαξμεο Desktop εθαξκνγήο. Υξεζηκνπνηήζακε ηελ ηερλνινγία WPF Windows Presentation Foundation, κέξνο ηεο νηθνγέλεηαο ηεο πιαηθφξκαο.νδσ.

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 21 Windows Presentation Foundation Αλαπηχρζεθε απφ ηελ Microsoft θαη είλαη έλα γξαθηθφ ππνζχζηεκα γηα ηελ απφδνζε ησλ δηεπαθψλ ησλ ρξεζηψλ (user interfaces) ζε εθαξκνγέο Windows. Η ηερλνινγία WPF, πξνεγνπκέλσο γλσζηή σο Avalon, είρε αξρηθά θπθινθνξήζεη ζαλ κέξνο ηνπ.net Framework 3.0. Αληί λα ρξεζηκνπνηεί ην παιηφ ζχζηεκα GDI (Graphics Device Interface), ε WPF ρξεζηκνπνηεί ην DirectX ζαλ ζχζηεκα δηαρείξηζεο πνιπκέζσλ. Παξέρεη έλα ζπλεπήο (consistent) πξνγξακκαηηζηηθφ κνληέιν γηα ηε δεκηνπξγία εθαξκνγψλ θαη θαζαξφ δηαρσξηζκφ κεηαμχ ηεο δηεπαθήο ρξήζηε θαη ηελ ινγηθή ηνπ πξνγξάκκαηνο. Υξεζηκνπνηεί XML-oriented κνληέια αληηθεηκέλσλ φπσο απηά πνπ πινπνηνχληαη ζηα XUL θαη SVG. H WPF ρξεζηκνπνηεί XAML, έλα παξάγσγν ηεο XML, γηα λα νξίζεη θαη λα ζπζρεηίζεη δηάθνξα αληηθείκελα ηνπ γξαθηθνχ πεξηβάιινληνο ηνπ ρξήζηε (θνπκπηά, θφξκεο, θιπ). Οη εθαξκνγέο πνπ είλαη ρηηζκέλεο ζε WPF κπνξνχλ λα ιεηηνπξγήζνπλ ζαλ standalone πξνγξάκκαηα ή λα ελζσκαησζνχλ ζαλ αληηθείκελα ζε δηαδηθηπαθέο εθαξκνγέο (ηερλνινγία Silverlight). ηνρεχεη λα ελνπνηήζεη ζπρλά αληηθείκελα πεξηβάιινληνο ρξήζηε, φπσο απφδνζε αληηθεηκέλσλ 2D/3D, animation, vector graphics θ.α. Απηά ηα αληηθείκελα κπνξνχλ έθηνηε λα ζπζρεηηζηνχλ θαη λα ζπλεξγαζηνχλ κεηαμχ δηάθνξσλ ζπκβάλησλ, αιιειεπηδξάζεηο ηνπ ρξήζηε θαη ζπλδέζεηο δεδνκέλσλ (data bindings). Οη runtime βηβιηνζήθεο ηεο WPF πεξηέρνληαη ζε φιεο ηηο εθδφζεηο ησλ Windows κεηά ηα Windows Vista θαη ηα Windows Server 2008 θαζψο θαη νη ρξήζηεο ησλ Windows XP θαη Server 2003 κπνξνχλ πξναηξεηηθά λα ηηο εγθαηαζηήζνπλ. 1.4.5 Σεσνολογίερ Web Λφγσ ηεο αλάγθεο χπαξμεο εθαξκνγήο δηαρείξηζεο ηνπ ζπζηήκαηνο καο, πινπνηήζακε κηα δηαδηθηπαθή εθαξκνγή (web application) ρξεζηκνπνηψληαο ηελ ηερλνινγία ASP.NET, πνπ είλαη κέινο ηεο νηθνγελείαο ηεο πιαηθφξκαο.net. H ASP.NET είλαη κία πιαηθφξκα δηαδηθηπαθψλ εθαξκνγψλ ε νπνία πινπνηείηαη απφ ηελ Microsoft, θαη δίλεη ηε δπλαηφηεηα ζηνπο πξνγξακκαηηζηέο λα δεκηνπξγνχλ δπλακηθέο ηζηνζειίδεο, δηαδηθηπαθέο εθαξκνγέο θαη δηαδηθηπαθέο ππεξεζίεο (web services). Αξρηθά θπθινθφξεζε ηνλ Ιαλνπάξην ηνπ 2002 καδί κε ηελ πξψηε έθδνζε ηεο πιαηθφξκαο.net, θαη είλαη ν αλάδνρνο ηεο ηερλνινγίαο ASP (Active Server Pages). Υξεζηκνπνηεί επίζεο ην CLR πνπ είλαη βαζηθφ ραξαθηεξηζηηθφ ησλ ηερλνινγηψλ.net, δίλνληαο ηε δπλαηφηεηα ζηνπο πξνγξακκαηηζηέο λα γπάθοςν ASP.NET ρξεζηκνπνηψληαο νπνηαδήπνηε απφ ηηο.νδσ ζπκβαηέο γιψζζεο πξνγξακκαηηζκνχ. Οη ζειίδεο.νδσ, γλσζηέο σο Web Forms (δηαδηθηπαθέο θφξκεο), είλαη ην θχξην ζηνηρείν γηα ηε δεκηνπξγία εθαξκνγψλ. Πεξηέρνληαη ζε αξρεία κε θαηάιεμε.aspx, θαη πεξηέρνπλ ζπλήζσο ζηαηηθφ (Υ)HTML, φπσο επίζεο θαη server-side Web Controls θαη User Controls φπνπ ν πξνγξακκαηηζηήο ηνπνζεηνχλ φιν ην ζηαηηθφ θαη δπλακηθφ πεξηερφκελν γηα ηελ ηζηνζειίδα. Πξφζζεηα, δπλακηθφο θψδηθαο ν νπνίνο «ηξέρεη» ζην δηαθνκηζηή πνπ θηινμελεί ηελ εθαξκνγή (web server) κπνξεί λα θηινμελεζεί ζην ίδην

22 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ αξρείν, ην νπνίν γεγνλφο είλαη παξφκνην κε άιιεο δηαδηθηπαθέο ηερλνινγίεο φπσο PHP, JSP θαη ASP, αιιά απηή ε πξαθηηθή απνζαξξχλεηαη δηφηη απαηηεί πεξηζζφηεξεο «θιήζεηο» θαηά ηελ απφδνζε ηεο ζειίδαο. Μονηέλο Code-behind Η Microsoft ζπληζηεί ην δπλακηθφ θψδηθα ρξεζηκνπνηψληαο ην κνληέιν codebehind, ην νπνίν ηνπνζεηεί ηνλ θψδηθα ζε μερσξηζηφ αξρείν ή ζε έλα εηδηθά ζρεδηαζκέλν script tag. Σέηνηνπ είδνπο αξρεία ζπλήζσο έρνπλ νλφκαηα φπσο MyPage.aspx.cs ή MyPage.aspx.vb θαζψο ην φλνκα ηεο ζειίδαο είλαη MyPage.aspx. Γειαδή έρνπλ ην ίδην φλνκα κε ηελ ζειίδα θαη επηπιένλ ηελ θαηάιεμε εμαξηψκελε ηεο γιψζζαο πξνγξακκαηηζκνχ πνπ πεξηέρνπλ (.cs γηα C#,.vb γηα Visual Basic). H πξαθηηθή απηή γίλεηαη απηφκαηα ζην Visual Studio θαη ζηα δηάθνξα ππνπξντφληα ηνπ. Υξεζηκνπνηψληαο απηφ ηνλ ηξφπν πξνγξακκαηηζκνχ, ν πξνγξακκαηηζηήο γξάθεη ηνλ θψδηθα πνπ αληαπνθξίλεηαη ζε δηαθνξεηηθά ζπκβάληα, φπσο φηη ε ζειίδα θνξηψζεθε, ή φηη έγηλε θιηθ ζε θάπνην αληηθείκελν, δειαδή eventdriven πξνγξακκαηηζκφ θαη φρη δηαδηθαζηηθφ ν νπνίνο εθηειείηε θαηά ηε θφξησζε ηεο ζειίδαο. Παπάδειγμα σπήζηρ μονηέλος code-behind <%@ Page Title= Welcome to my page! Language= C# AutoEventWireup= true CodeBehind= MyPage.aspx.cs Inherits= MyWebSite.MyPage %> Κώδικαρ ζηο απσείο MyPage.aspx. using System; namespace MyWebSite { public partial class MyPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { TextBox1.Text = Hello World! ; } } } Κώδικαρ ζηο απσείο MyPage.aspx.cs. ε απηή ηελ πεξίπησζε, ε κέζνδνο Page_Load() θαιείηαη θάζε θνξά πνπ ε ζειίδα.aspx δεηείηαη. Ο πξνγξακκαηηζηήο εθαξκφδεη δηάθνξνπο event handlers ζε δηάθνξα ζηάδηα ηεο εθηέιεζεο ηεο δηεξγαζίαο ηεο ζειίδαο.

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 23 State Management Διασείπιζη καηάζηαζηρ Οη εθαξκνγέο ASP.NET θηινμελνχληαη απφ έλαλ δηαδηθηπαθφ δηαθνκηζηή (web server) ρξεζηκνπνηψληαο ην πξσηφθνιιν HTTP. Ώο γλσζηφ, ην πξσηφθνιιν απηφ δελ απνζεθεχεη ηελ θαηάζηαζε ηεο εθαξκνγήο. Δάλ ε εθαξκνγή ρξεζηκνπνηεί αιιειεπίδξαζε πξέπεη κε θάπνην ηξφπν λα δεκηνπξγήζνπκε θάπνηνλ δηαρεηξηζηή θαηάζηαζεο γηα λα κπνξέζνπκε λα «θξαηήζνπκε» ηελ θαηάζηαζε ησλ γηα παξάδεηγκα textboxes, forms, θαη γεληθφηεξα ηηο ηηκέο φισλ ησλ user controls πνπ έρνπκε εηζάγεη θάπνηα δεδνκέλα. Η ASP.NET καο εθνδηάδεη κε δηάθνξεο ζπλαξηήζεηο δηαρείξηζεο θαηάζηαζεο. Όπσο θαη ζε άιιεο γιψζζεο δηαδηθηπαθνχ πξνγξακκαηηζκνχ, έηζη θαη ζηελ ASP.NΔΣ ππάξρνπλ κεηαβιεηέο SESSION. Οη κεηαβιεηέο απηέο είλαη δηαζέζηκεο θαζ φιε ηε δηάξθεηα ρξήζεο ηεο εθαξκνγήο απφ ζπγθεθξηκέλν ρξήζηε. Δίλαη δειαδή έλαο ηξφπνο λα δηαρεηξηζηνχκε ην State Management. Απνζεθεχνληαη ζην δηαθνκηζηή, θαη ν ρξήζηεο αλαγλσξίδεηαη απφ έλα κνλαδηθφ αιθαξηζκεηηθφ πνπ είλαη απνζεθεπκέλν ηνπηθά ζηνλ ππνινγηζηή ηνπ. Δπίζεο, ζηελ ASP.NΔΣ, έρνπκε θαη άιινπο ηξφπνπο λα δηαρεηξηδφκαζηε θάπνηεο, αο πνχκε, global κεηαβιεηέο. Μεηαβληηέρ View State Απηέο νη κεηαβιεηέο ιεηηνπξγνχλ φπσο νη Session, απιψο κε ηε δηαθνξά φηη ηζρχνπλ κφλν γηα κία ζπγθεθξηκέλε ζειίδα θαη φρη γηα φιε ηελ εθαξκνγή. Δίλαη ρξήζηκεο γηαηί δεζκεχνπλ ιηγφηεξνπο πφξνπο απφ φηη νη Session θαη ηηο ρξεζηκνπνηνχκε ζε πεξηπηψζεηο φπνπ νη ηηκέο πνπ ζέινπκε λα απνζεθεχζνπκε καο είλαη ρξήζηκεο κφλν γηα ηελ ζπγθεθξηκέλε θφξκα. Server-side Caching Η ASP.NET καο εμνπιίδεη θαη κε έλα άιιν είδνο απνζεθεπηηθνχ ρψξνπ. Μαο πξνζθέξεη έλα ρψξν ζην δηαθνκηζηή (Cache), ζηνλ νπνίν κπνξνχκε λα απνζεθεχζνπκε δηάθνξα αληηθείκελα. Σα αληηθείκελα απηά απνζεθεχνληαη γηα έλα ζπγθεθξηκέλν ρξφλν θαη απηφκαηα δηαγξάθνληαη φηαλ ην ρξνληθφ φξην πεξάζεη. Partial Rendering Εν μέπη απόδοζη ζελίδαρ Έλα ζεκαληηθφ ζεκείν ζηελ ASP.NET είλαη ε ελ κέξε απφδνζε ηεο ζειίδαο. ηηο πεξηζζφηεξεο γιψζζεο δηαδηθηπαθνχ πξνγξακκαηηζκνχ, φηαλ ζέινπκε λα πάξνπκε ηα απνηειέζκαηα θάπνησλ πξάμεσλ, πξέπεη λα ζηείινπκε ηα δεδνκέλα πίζσ ζην δηαθνκηζηή, θαη λα καο ζηείιεη πίζσ ολόκληπη ηη ζελίδα, καδί κε ηα απνηειέζκαηα. ηελ ASP.NET, ζπλδπάδνληαο ην ViewState ηεο εθαξκνγήο θαζψο θαη θάπνην asp control (ζπγθεθξηκέλα ρξεζηκνπνηνχκε ην UpdatePanel Control), έρνπκε ηε δπλαηφηεηα λα δεηήζνπκε απφ ην δηαθνκηζηή κφλν ζπγθεθξηκέλν θνκκάηη ηεο ηζηνζειίδαο πνπ δηαλχνπκε. Με απηφ ηνλ ηξφπν εμνηθνλνκνχκε πφξνπο ηνπ δηθηχνπ θαζψο ν φγθνο ησλ δεδνκέλσλ πνπ καο ζηέιλεη ν δηαθνκηζηήο ζε θάζε Postback, φπσο νλνκάδεηαη, είλαη πνιχ κηθξφηεξνο. Απόδοζη Η ASP.NET ππεξηεξεί ζε απφδνζε ζπγθξηηηθά κε άιιεο ηερλνινγίεο webscripting (φπσο επίζεο θαη ηεο Classic ASP). Καηά ηελ εθηέιεζε ηνπ πξνγξάκκαηνο ζην

24 ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ δηαθνκηζηή, κεηαθξάδεηαη ν θψδηθαο θαη κεηαηξέπεηαη ζε έλα ή πεξηζζφηεξα αξρεία DLL. Απηή ε δηαδηθαζία ζπκβαίλεη απηφκαηα θαη κφλν φηαλ θνξηψλεηαη ε ζειίδα γηα πξψηε θνξά. Οη πφξνη ηεο εθαξκνγήο θνξηψλνληαη ζε έλαλ δηαθνκηζηή Internet Information Services (IIS), θαη έπεηηα εθηειείηε ην πξφγξακκα ρσξίο ηελ αλάγθε ηεο επαλακεηαγιψηηηζεο. 1.4.6 Σεσνολογία Linq H Linq είλαη κία ζπληζηψζα ηεο πιαηθφξκαο.νδσ θαη καο δίλεη ηε δπλαηφηεηα λα εθηεινχκε queries γηα λα θηιηξάξνπκε θαη λα νκαδνπνηνχκε ζπιινγέο αληηθεηκέλσλ. Καζψο ε αιιειεπίδξαζε κε ηε βάζε δεδνκέλσλ είλαη ρξνλνβφξα θαη θαηαλαιψλεη αξθεηνχο απφ ηνπο πφξνπο ηνπο ζπζηήκαηνο, κε ηελ Linq έρνπκε ηε δπλαηφηεηα λα εθηειέζνπκε εξσηήκαηα θαη επζείαλ ζε κηα ζπιινγή αληηθεηκέλσλ. Αξθεί λα θνξηψζνπκε απφ ηε βάζε δεδνκέλσλ φια ηα αληηθείκελα πνπ ζέινπκε ζε κία ζπιινγή αληηθεηκέλσλ, θαη κε ηε ρξήζε ηεο Linq λα ηα δηαρεηξηζηνχκε. Δίλαη πνιχ ζεκαληηθή απφ ζέκα απφδνζεο. Αθνινπζνχλ κεξηθά παξαδείγκαηα. Παπάδειγμα select public void Linq1() { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lownums = from n in numbers where n < 5 select n; } Console.WriteLine( Numbers < 5: ); foreach (var x in lownums) { Console.WriteLine(x); } Result: Numbers < 5 4 1 3 2 0 Δπίζεο, ππάξρνπλ ζπλαξηήζεηο φπσο sum(), count(), max(), min(), average() θ.α. Παπάδειγμα count public void DisctinctCountLinQ() { int[] factorsof300 = { 2, 2, 3, 5, 5 }; int uniquefactors = factorsof300.distinct().count();

ΚΔΦ.1 ΠΛΑΣΦΟΡΜΑ ΝΔΩΝ ΣΔΥΝΟΛΟΓΙΩΝ 25 Console.WriteLine( There are {0} unique factors of 300., uniquefactors); } Result: There are 3 unique factors of 300. Παπάδειγμα σπήζηρ average ζςνδςαζμόρ με group by public void Linq91() { List<Product> products = GetProductList(); var categories = from p in products group p by p.category into g select new { Category = g.key, AveragePrice = g.average(p => p.unitprice) }; } ObjectDumper.Write(categories); Result: Category=Beverages Category=Condiments Category=Produce Category=Meat/Poultry Category=Seafood Category=Dairy Products Category=Confections Category=Grains/Cereals AveragePrice=37.9791 AveragePrice=23.0625 AveragePrice=32.3700 AveragePrice=54.0066 AveragePrice=20.6825 AveragePrice=28.7300 AveragePrice=25.1600 AveragePrice=20.2500 Πεξηζζφηεξα παξαδείγκαηα Linq: [Ι-2]

2 ΚΔΦΑΛΑΗΟ 2 ΟΛΟΚΛΖΡΧΜΔΝΟ ΤΣΖΜΑ IP-FRIDGE 2.1 ΛΔΗΣΟΤΡΓΗΚΟΣΖΣΑ ΤΣΖΜΑΣΟ 2.1.1 ενάπιο Λειηοςπγίαρ / Πεπιπηώζειρ σπήζηρ Σν ζχζηεκα απηφ, καο παξέρεη ηε δπλαηφηεηα πξφζβαζεο ζε έλα δηαδηθηπαθφ ςπγείν βάζε δηθαησκάησλ. Γειαδή, ν ζπγθεθξηκέλνο ρξήζηεο ζα έρεη πξφζβαζε ζπγθεθξηκέλε κέξα, θαη ζπγθεθξηκέλε ψξα. Κάζε ρξήζε ηνπ ζπζηήκαηνο απνηειεί κηα εγγξαθή ζηε βάζε δεδνκέλσλ καδί κε δηάθνξα ραξαθηεξηζηηθά φπσο ηελ ψξα πνπ μεθίλεζε λα ρξεζηκνπνηεί, θαη ηελ ψξα πνπ ζηακάηεζε λα ρξεζηκνπνηεί ην ζχζηεκα. Η αλαγλψξηζε γίλεηαη κέζσ έμππλσλ θαξηψλ θαη γεληθά νηηδήπνηε αληηθείκελν πνπ θέξεη RFID νινθιεξσκέλν. Αθνχ γίλεη ε αλαγλψξηζε θαη δνζεί πξφζβαζε απφ ην ζχζηεκα, ν ρξήζηεο έρεη ην δηθαίσκα λα εηζάγεη ή λα εμάγεη πξντφληα απφ ην ζχζηεκα. Απηέο φιεο νη «θηλήζεηο» θαηαγξάθνληαη επίζεο ζηε βάζε δεδνκέλσλ. Κάζε πξντφλ θέξεη θαη απηφ κία απηνθφιιεηε εηηθέηα κε ην ίδην chip, ην νπνίν αληηζηνηρεί ζε πιεξνθνξίεο φπσο, είδνο πξντφληνο, εκεξνκελία παξαγσγήο θαη εκεξνκελία ιήμεσο. Κάζε πξντφλ είλαη κνλαδηθφ, αληίζεηα κε ηελ ηερλνινγία barcode, ζηελ νπνία θάζε ηχπνο πξντφληνο έρεη ηα ίδηα ραξαθηεξηζηηθά. Θα ζεκεηψζσ επίζεο φηη γηα ηελ εηζαγσγή ή ηελ εμαγσγή θάπνηνπ πξντφληνο δελ είλαη απαξαίηεηε θακία άιιε ελέξγεηα παξά κφλν λα πιεζηάζεη ε εηηθέηα ζηα 10 εθαηνζηά απφ ηνλ αλαγλψζηε έηζη ψζηε λα κπνξέζεη λα ηε δηαβάζεη. Καηά ηελ αλάγλσζε γίλεηαη έιεγρνο ηεο εκεξνκελίαο ιήμεσο, θαη ιακβάλνπκε ηελ θαηάιιειε εηδνπνίεζε. Δπίζεο, ππάξρεη ε δπλαηφηεηα απηφκαηεο παξαγγειίαο θαη ελεκέξσζεο ιήμεο γηα θάζε πξντφλ. Η θαηαρψξεζε ησλ ρξεζηψλ θαη ησλ δηθαησκάησλ ηνπο ζην ζχζηεκα γίλεηαη κε ηε ρξήζε κηαο Desktop εθαξκνγήο. ηελ εθαξκνγή απηή θαηαρσξνχληαη θάπνηα πξνζσπηθά ζηνηρεία ηνπ ρξήζηε θαζψο θαη ηα δηθαηψκαηά ηνπ ζην ζχζηεκα θαη αληηζηνηρίδεηαη ζε απηφλ έλαο κνλαδηθφο θσδηθφο θαη κηα RFID εηηθέηα. Παξφκνηα δηαδηθαζία ππάξρεη θαη γηα ηα πξντφληα. Τπάξρνπλ 2 θαξηέιεο γηα απηή ηελ θαηεγνξία. ηε πξψηε θαηαρσξνχκε πιεξνθνξίεο γηα ηνπο ηχπνπο ησλ πξντφλησλ, θαη ζηε δεχηεξε γίλεηαη νπζηαζηηθά ε εγγξαθή ελφο πξντφληνο ζην ζχζηεκα. Δθεί, επηιέγεηαη ν ηχπνο ηνπ πξντφληνο, ε εκεξνκελία παξαγσγήο, ε εκεξνκελία ιήμεσο, θαη αληηζηνηρίδεηαη κε έλα RFID εηηθέηα. Δπίζεο ππάξρνπλ θάπνηεο έμηξα ιεηηνπξγίεο, φπσο αιιαγή θσδηθνχ πξφζβαζεο θαη παξαιήπηε email. Σν ζχζηεκα καο πεξηιακβάλεη επίζεο θαη κία δηαδηθηπαθή εθαξκνγή. ηελ εθαξκνγή απηή, έρνληαο ηελ θαηάιιειε πξφζβαζε, κπνξνχκε λα ελεκεξσζνχκε κε

28 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE δηάθνξα ζηαηηζηηθά ηνπ ζπζηήκαηνο φπσο ιίζηα ρξεζηψλ θαη πξντφλησλ, δηάξθεηα ρξήζεο, ζεξκνθξαζία, εκεξήζηα ρξήζε ζπζηήκαηνο θ.α. 2.2 ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΤΣΖΜΑΣΟ 2.2.1 Απσιηεκηονική ζσεδίαζη ςλικού Σν Αξρηηεθηνληθφ ζρέδην ηνπ ελζσκαησκέλνπ ζπζηήκαηνο IP-FRIDGE. Η θαξδηά ηνπ είλαη ην FOX Board G20 πνπ επηθνηλσλεί κε φια ηα πεξηθεξηθά. Η oled νζφλε επηθνηλσλεί ζεηξηαθά κε ακθίδξνκε επηθνηλσλία. Ο NFC RFID Reader επηθνηλσλεί επίζεο ακθίδξνκα κέζσ δηαζχλδεζεο USB. Tα αηζζεηήξηα ds18b20 επηθνηλσλνχλ κε ρξήζε ηεο ηερλνινγίαο 1-Wire ην έλα κεηά ην άιιν θαη έρνπλ ακθίδξνκε επηθνηλσλία. Γηα εηζφδνπο έρνπκε ην button θαη ην καγνηηικό αιζθηηήπα θαη γηα εμφδνπο έρνπκε buzzer, διπλό led θαη ην κησανιζμό ηηρ πόπηαρ. Απσιηεκηονικό Σσέδιο Σςζηήμαηορ

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 29 2.2.2 Απσιηεκηονική ζσεδίαζη λογιζμικού Δδψ βιέπνπκε ηελ ηνπνινγία ηνπ δηθηχνπ ηεο εθαξκνγήο. Η θαξδηά ηνπ ζπζηήκαηνο είλαη ε βάζε δεδνκέλσλ. Η επηθνηλσλία κέζσ απηήο, ηνπ Web server, Mail service, θαη ηεο Desktop εθαξκνγήο δηαρείξηζεο γίλεηαη κέζσ ελφο ελδηάκεζνπ επηπέδνπ πνπ είλαη ππεχζπλν γηα ηελ αληηζηνίρηζε εγγξαθψλ βάζεο δεδνκέλσλ ζε αληηθείκελα.net. Η ζπζθεπή G20 ζπλδέεηαη απνκαθξπζκέλα θαη επζείαλ ζηε βάζε δεδνκέλσλ. Όιε ε επηθνηλσλία γίλεηαη απνκαθξπζκέλα, κέζσ ηνπ δηαδηθηχνπ. Τοπολογία δικηύος Δθαπμογήρ

30 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 2.3 ΤΛΗΚΟ IP FRIDGE 2.3.1 ςνδεζμολογία ζςζκεςών 1-Wire Τποθοδόηηζη ηος DS18b20 Σν αηζζεηήξην κπνξεί λα ηξνθνδνηεζεί κε δπν ηξφπνπο. Ο έλαο είλαη παξαζηηηθά πνπ ζεκαίλεη φηη κφλν δπν θαιψδηα πξέπεη λα πάλε ζην ηζηπ. Γηα λα επηηεπρζεί απηφ ρξεζηκνπνηεί έλαλ ππθλσηή 800pF γηα ηελ απνζήθεπζε ηζρχο κεηαμχ ηεο ηάζεο θαη ησλ δεδνκέλσλ. Ο άιινο είλαη ν θιαζηθφο πνπ απαηηνχληαη 3 θαιψδηα: ην ηάζεο, ηεο γείσζεο θαη ηνπ 1-Wire (ιεσθφξνο δεδνκέλσλ). Δπίζεο ρξεηάδεηαη κηα αληίζηαζε 4,7kΩ νπσζδήπνηε κεηαμχ ηάζεο θαη δεδνκέλσλ. Σν ξεχκα ζπλήζσο είλαη πνιχ κηθξφ, άιια κπνξεί λα πάεη κέρξη θαη ηα 1.5mA. Όηαλ θάλεη κηα αλαγσγή ηεο ζεξκνθξαζίαο ε γξαθή ζηελ EEPROM. Διεςθςνζιοδόηηζη ηος DS18B20 Πάλσ ζηε γξακκή ηνπ 1-Wire κπνξνχλ λα ζπλδεζνχλ κηα πνηθηιία απφ πνιιέο ζπζθεπέο 1-Wire γηα απηφλ ην ιφγν ε θάζε νηθνγέλεηα 1-Wire έρεη έλα δείγκα θψδηθα πνπ δηαζθαιίδεη φηη ζα θάλνπλ ζσζηή αλαγλψξηζε ηηο θάζε ζπζθεπήο. Σν DS18b20 έρεη ζαλ θσδηθφ αλάγλσζεο (family ID) 0x10 θαη γηα ηα λεψηεξα 0x28. Δλψ γηα ηα παξαζηηηθά DS1822 ζέιεη λα εμαθξηβψζεη 0x22. Πιελ απφ ηελ απνζηνιή κηαο εληνιήο ζε κηα ζπζθεπή ζθιάβν, ε θχξηα ζπζθεπή (master) πξέπεη πξψηα λα επηιέμεη ηνλ θσδηθφ ηεο ROM ηεο ζπζθεπήο. Απηφ γίλεηε γηα ηελ απνθπγή ζπγθξνχζεσλ. Ανάγνωζη ηηρ θεπμοκπαζίαρ από Debian console: Η αλάγλσζε 1-Wire αηζζεηεξίσλ απφ ην ιεηηνπξγηθφ γίλεηαη ζε 10 δεπηεξφιεπηα κε ην πνπ ηνπνζεηεζεί έλα λέν αηζζεηήξην. Σν θάζε αηζζεηήξην απνζεθεχεηαη ζην κνλνπάηη (path) /sys/bus/w1/devices/w1 bus master πνπ δεκηνπξγείηαη ζην ζχζηεκα αξρείσλ. Debarm:~# cd /sys/bus/w1/devices/w1 bus master debarm:/sys/bus/w1/devices/w1 bus master# ls 28-0000028f6667 w1_master_add w1_master_remove 28-0000028fa89c w1_master_attempts w1_master_search Σα δπν 28-00000####### είλαη νη θσδηθνί αλάγλσζεο, o DS18B20 έρεη familyid 0x28. Debarm:/sys/bus/w1/devices/w1 bus master# cat 28-0000028f6667/w1_slave 49 01 4b 46 7f ff 07 10 f6 : crc=f6 YES 49 01 4b 46 7f ff 07 10 f6 t=20562

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 31 2.3.2 ςνδεζμολογία ζςζκεςών ειζόδος-εξόδος GPIO FOX G20 board Pin number Kernel ID Pin number Kernel ID Pin number Kernel ID J7.3 82 J7.10 65 J6.20 94 J7.4 83 J7.35 60 J6.24 38 J7.5 80 J7.36 59 J6.25 39 J7.6 81 J7.37 58 J6.26 41 J7.7 66 J7.38 57 J6.36 42 J7.8 67 J6.17 85 J6.37 54 J7.9 64 J6.18 84 J6.38 43 J6.19 95 Δικ. 1 Γιαθέζιμερ γπαμμέρ GPIO Είζοδοι (Inputs): button, magnetic sensor Γηα λα δηαβάζνπκε έλαλ εμσηεξηθφ ελεξγνπνηεηή ρξεζηκνπνηνχκε γιψζζα Python. Έλα παξάδεηγκα input: #!/usr/bin/python import time import fox print Pressing button print Type ctrl-c to exit led = fox.pin( J7.3, low ) button = fox.pin( J7.5, in ) while True: if button.getvalue()==0; led.on() else: led.off() Έξοδοι (Output): led, buzzer Γηα λα ελεξγνπνηήζνπκε κηα έμνδν ρξεζηκνπνηνχκε γιψζζα Python. Έλα παξάδεηγκα output: #!/usr/bin/python import time mport fox print Blinking led print Type ctrl-c to exit led = fox.pin( J7.3, low )

32 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE while True: time.sleep(1) led.on() time.sleep(1) led.off() 2.3.3 ςνδεζμολογία Οθόνηρ oled Η νζφλε κoled-160-g1 ζπλδέεηαη ζεηξηαθά κε ην G20 ζηελ ttys3 ζεηξηαθή ηνπ FOX G20. Η δηαρείξηζε ηεο νζφλεο γίλεηαη ζηέιλνληαο ζεηξηαθά κηα αθνινπζία απφ δεθαεμαδηθά bytes. Oζφλε κoled-160-g1 εηξηαθή ζπλδεζκνινγία κε FOX Board Ππωηόκολλο ενηολών Ο GOLDELOX-SGC είλαη κηα ζπζθεπή ζθιάβνο (slave) θαη φιε ηελ επηθνηλσλία ζα πξέπεη λα δηαρεηξίδεηαη απφ ην G20. Όηαλ κηα αθνινπζία εληνιψλ απνζηέιιεηαη ζηε ζπζθεπή ηφηε πξέπεη πάληα λα επηζηέθεηαη κηα απάληεζε φηη φια πήγαλ θαιά. Αλ φια πήγαλ θαιά κε ηελ απνζηνιή ησλ bytes ηφηε ε ζπζθεπή ζα απαληήζεη κε έλα byte ACK (06hex), αλ έρεη γίλεη θάηη ιάζνο έλα NAK (15hex). Μοπθή ζειπιακών δεδομένυν: 8Bits, No Parity, 1 Stop Bit. Παξάδεηγκα απνζηνιείο εκθάληζεο θεηκέλνπ string ζε Python..... ser.write("s%c%c%c%c%c%s%c" % (int(x),int(y),1,0xff,0xff,s,0x00)) # -x y η θέζη ηοσ 1 οσ γράμμαηος ηοσ string s(max 256 characters). # 3 ο byte ηο μέγεθος ηων γραμμάηων. # 4 ο και 5 ο byte ηο τρώμα. # 7 ο ηο string πρέπει πάνηα να ηελειώνει με 00hex. rtc = ser.read(1) # περίμενε απάντηση ser.close() # κλείσε την σειριακή.

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 33 2.3.4 Κύκλυμα ελέγσος μαγνηηικήρ κλειδαπιάρ Γηα ηελ νδήγεζε ηεο θιεηδαξηάο έρεη έλα optocoupler, ην TIL111 θαη γηα λα ηελ ελίζρπζε ηνπ ξεχκαηνο έλα ηξαλδίζηνξ NPN ην BD139. Σν optocoupler ρξεζηκνπνηείηαη γηα λα δηαρσξίζνπκε ην θχθισκα ηζρχνο απφ ην θχθισκα ηνπ G20 γηα αζθάιεηα θαη απνθπγή αληηζηξφθσλ ξεπκάησλ. Σν optocoupler έρεη έλα led θαη έλα θσηνηξαλζηζηνξ ζε έλα νινθιεξσκέλν θχθισκα γηα ηελ απνθπγή εμσηεξηθψλ πεγψλ θσηφο. Αλάινγα κε ηε θσηεηλφηεηα ηνπ led αλνίγεη ν ειεθηξνληθφο δηαθφπηεο (ηξαλδίζηνξ) θαη εληζρχεηαη ην ξεχκα ζηε βάζε ηνπ ηξαλδίζηνξ. Ο έιεγρνο ηεο έγηλε κε γιψζζα Python ζαλ ην παξάδεηγκα GPIO output. Κύκλυμα μαγνηηικήρ κλειδαπιάρ

34 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 2.4 ΛΟΓΗΜΗΚΟ IP FRIDGE 2.4.1 Βάζη δεδομένυν Η βάζε δεδνκέλσλ έρεη ζρεδηαζηεί ζην MySQL Workbench θαη θηινμελείηαη ζε MySQL Server 5.1. Δίλαη ζηελ 3 ε θαλνληθή κνξθή θαη ε αλάθηεζε δεδνκέλσλ ησλ πηλάθσλ είλαη εθηθηή κέζσ joins. Σσεδιάγπαμμα Βάζηρ Γεδομένυν Η πεξηνρή administration (γαιάδηα πεξηνρή), πεξηέρεη πιεξνθνξίεο ζρεηηθά κε ηε δηαρείξηζε ηνπ ζπζηήκαηνο. ηνλ πίλαθα administration είλαη θαηαγεγξακκέλνη νη θσδηθνί ρξήζεο ησλ εθαξκνγψλ νη νπνίνη είλαη θσδηθνπνηεκέλνη κε ηνλ αιγφξηζκν SHA1, νη δηεπζχλζεηο email ησλ παξαιεπηψλ ησλ εηδνπνηήζεσλ θαζψο θαη ε επηζπκεηή ψξα απνζηνιήο ησλ κελπκάησλ. ηνπο πίλαθεο error_log απνζεθεχνληαη νη απνηπρίεο ηνπ ζπζηήκαηνο νη νπνίεο νκαδνπνηνχληαη κε βάζε ηηο εγγξαθέο ηνπ error_code. ηνλ πίλαθα mail_log απνζεθεχνληαη νη ελέξγεηεο ηεο ππεξεζίαο απνζηνιήο email.

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 35 Η πεξηνρή temperature (πνξηνθαιί πεξηνρή), πεξηέρεη πιεξνθνξίεο ζρεηηθά κε ηα αηζζεηήξηα ζεξκνθξαζίαο. ηνλ πίλαθα t_sensor είλαη απνζεθεπκέλεο νη πιεξνθνξίεο θαη νη θσδηθνί ησλ αηζζεηεξίσλ ζεξκνθξαζίαο 1-Wire. ηνλ πίλαθα temp_log απνζεθεχνληαη νη κεηξήζεηο ησλ αηζζεηεξίσλ θαζψο θαη ε ψξα πνπ ιήθζεθε ε κέηξεζε. Η πεξηνρή user (πξάζηλε πεξηνρή), πεξηέρεη πιεξνθνξίεο ησλ ρξεζηψλ ζρεηηθά κε ηε ρξήζε ηνπ ζπζηήκαηνο θαη ησλ δηθαησκάησλ ηνπο. Ο πίλαθαο user πεξηέρεη ηα ζηνηρεία ησλ ρξεζηψλ θαη ησλ θσδηθφ ηνπ RFID chip πνπ ηνπο αληηζηνηρεί. Ο πίλαθαο user_access πεξηέρεη ηηο ζπλζήθεο πξφζβαζεο ηα ησλ ρξεζηψλ ζην ζχζηεκα. Κάζε ρξήζηεο έρεη θαη κία εγγξαθή ζηνλ πίλαθα (ζρέζε 1:1). ηνλ πίλαθα user_log πεξηέρνληαη πιεξνθνξίεο ρξήζεο ηνπ ζπζηήκαηνο, φπσο θσδηθφο ρξήζεο, ψξα έλαξμεο ρξήζεο, θαη ψξα ιήμεο ρξήζεο. Η πεξηνρή product (θίηξηλε πεξηνρή), πεξηέρεη πιεξνθνξίεο ησλ πξντφλησλ. Ο πίλαθαο p_category πεξηέρεη πιεξνθνξίεο ζρεηηθά ησλ δηαθνξεηηθψλ θαηεγνξηψλ ησλ πξντφλησλ, φπσο φλνκα θαηεγνξίαο, εηθφλα, πεξηγξαθή, θαηάζηαζε ππεξεζίαο απηφκαησλ παξαγγειηψλ θαη εηδνπνίεζε ιήμεσο. Ο πίλαθαο product πεξηέρεη πιεξνθνξίεο ησλ πξντφλησλ, φπσο θσδηθφο chip πξντφληνο, εκεξνκελία παξαγσγήο, εκεξνκελία ιήμεσο, θαη αληηζηνηρίδεηαη κε ηνλ πίλαθα p_category κε ζπζρέηηζε 1:Ν. Ο πίλαθαο product_log πεξηέρεη εγγξαθέο κε πιεξνθνξίεο φπσο πνην πξντφλ εηζήιζε ή εμήιζε ζην ζχζηεκα, πνηνο ρξήζηεο δηέπξαμε απηή ηελ ελέξγεηα θαη ηελ ψξα πνπ πξαγκαηνπνηήζεθε. Κάζε εγγξαθή ησλ πηλάθσλ πεξηέρεη κνλαδηθφ θχξην θιεηδί κε αχμνπζα αξίζκεζε, θαη νη ζπζρεηίζεηο γίλνληαη κε ηε ρξήζε μέλσλ θιεηδηψλ πνπ θάλνπλ εθηθηή ηελ αλάθηεζε δεδνκέλσλ ρσξίο λα επαλαιακβάλνληαη νη ίδηεο πιεξνθνξίεο ζηνπο πίλαθεο ηεο βάζεο. Αθνινπζνχλ κεξηθά ελδεηθηηθά παξαδείγκαηα ρξήζεο. Παπαδείγμαηα: Πεξηνρή ρξήζηε (πξάζηλε πεξηνρή): Γιάβαζε από ηο user_log ηην ώπα ηηρ ηελεςηαίαρ ειζόδος ηος σπήζηη «Φ», και ηη διάπκεια σπήζηρ ηος ζςζηήμαηορ. Γιάβαζε από ηον πίνακα user ηα ζηοισεία ηος σπήζηη «Φ» και ποιερ ημέπερ ηηρ εβδομάδορ έσει ππόζβαζη ζηο ζύζηημα. Γιάβαζε ποιορ σπήζηηρ έσει σπηζιμοποιήζει ηελεςηαίορ ηο ζύζηημα. Πεξηνρή πξντφληνο (θίηξηλε πεξηνρή): Γιάβαζε από ηο product_log ηη ζςσνόηηηα σπήζηρ ηυν πποφόνηυν ηύπος «Φ». Γιάβαζε από ηον πίνακα product πόζα πποφόνηα ηύπος «Φ» έσοςν εγγπαθεί ζηο ζύζηημα. Γιάβαζε ηην ημεπομηνία λήξευρ, ηην ημεπομηνία παπαγυγήρ και ηον ηύπο ηος πποφόνηορ πος ανηιζηοισεί ζηον κυδικό πποφόνηορ «Φ».

36 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE Πεξηνρή κεηξήζεσλ ζεξκνθξαζίαο (πνξηνθαιί πεξηνρή): Γιάβαζε και επέζηπετε ποια αιζθηηήπια είναι ζςνδεμένα ζηο ζύζηημα. Γιάβαζε ηιρ μεηπήζειρ ηος αιζθηηηπίος «Φ» για ηην «21/7/2010». Πεξηνρή δηαρείξηζεο (γαιάδηα πεξηνρή): Γιάβαζε ηα μηνύμαηα αποηςσίαρ ζςζηήμαηορ πος ανηιζηοισούν ζε αδςναμία μέηπηζηρ θεπμοκπαζίαρ. Γιάβαζε ηα μηνύμαηα ηηρ ςπηπεζίαρ email για ηην «21/7/1020». Καηά ηελ αλάπηπμε ηνπ ζπζηήκαηνο θαη ηεο ρξήζε ηεο βάζεο καο θάλεθαλ πνιχ ρξήζηκεο νη ζπλαξηήζεηο ηεο MySQL φπσο count(), min(), max(), θαη δηάθνξεο ζπλαξηήζεηο ηεο νηθνγελείαο date θαη string. 2.4.2 Δνζυμαηυμένο ζύζηημα Καηά ηελ πινπνίεζε ηνπ ελζσκαησκέλνπ ζπζηήκαηνο δνπιέςακε ζε In-board Development πάλσ ζηηο γιψζζεο C++ θαη python. Μέηπηζη θεπμοκπαζίαρ Η κέηξεζε ηεο ζεξκνθξαζίαο γίλεηαη θάζε κία ψξα εθηειψληαο έλα script ην νπνίν είλαη γξακκέλν ζηε γιψζζα python. Σν πξφγξακκα απηφ δηαβάδεη απφ ηε βάζε δεδνκέλσλ ηνπο θσδηθνχο ησλ αηζζεηεξίσλ, θαη ηνπο ρξεζηκνπνηεί γηα λα αλαθηήζεη ηε ζεξκνθξαζία απηψλ ηε ζπγθεθξηκέλε ζηηγκή. Οη ηηκέο απηέο απνζεθεχνληαη ζηε βάζε δεδνκέλσλ. ε πεξίπησζε αδπλακίαο αλάθηεζεο ηεο ζεξκνθξαζίαο, εηζάγεηαη ην θαηάιιειν κήλπκα απνηπρίαο ζηνλ πίλαθα error_log. Γηα ην ρξνλνπξνγξακκαηηζκφ ηεο ιεηηνπξγίαο ρξεζηκνπνηήζακε ηελ ππεξεζία Cron. Η ππεξεζία απηή ρξεζηκνπνηεί έλαλ πίλαθα πνπ ιέγεηαη Crontab (CRON TABle), γηα λα πξνγξακκαηίδεη δηάθνξα ζπκβάληα λα ηξέρνπλ ζε δηάθνξεο ρξνληθέο ζηηγκέο. Έλα αξρείν crontab πεξηέρεη 5 πεδία γηα λα θαζνξίδεηαη ε εκέξα θαη ε ψξα πνπ ζα εθηειεζηεί ε εληνιή. Παξάδεηγκα ρξήζεο ηνπ crontab: * * * * * ενηολή ποσ θα εκηελεζηεί - - - - - +----- ημέρα ηης εβδομάδος (0-6) (Κσριακή=0) +------- μήνας (1-12) +--------- ημέρα ηοσ μήνα (1-31) +----------- ώρα (0-23) +------------- λεπηό (0-59) ηε δηθή καο πεξίπησζε ε εγγξαθή ηνπ πίλαθα έρεη ηελ εμήο κνξθή: 0 * * * * /home/t13/1wire/tlogger.py Γειαδή ε κέηξεζε ηεο ζεξκνθξαζίαο γίλεηαη θάζε ψξα αθξηβψο. Γηα λα επεμεξγαζηνχκε ηνλ πίλαθα ηνπ Cron ρξεζηκνπνηνχκε ηελ εληνιή crontab e.

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 37 Python scripts για ηη διασείπιζη ηηρ οθόνηρ Γεκηνπξγήζακε θάπνηα scripts κε ηα νπνία δηαρεηξηδφκαζηε ηηο ιεηηνπξγίεο ηεο νζφλεο. Οη εληνιέο ηεο νζφλεο είλαη ζε κνξθή HEX θαη ηηο ζηέιλνπκε κέζσ ηεο ζεηξηαθήο ζχξαο. Σα script πνπ ρξεζηκνπνηνχκε: clear.py: Καζαξίδεη ηα πεξηερφκελα ηεο νζφλεο. show_image.py: Γέρεηαη ζαλ φξηζκα ηνλ αξηζκφ ηεο εηθφλαο θαζψο θαη έλα θείκελν πνπ απνηειεί ηνλ ππφηηηιν ηεο εηθφλαο. Πσ../show_image.py x 2 s Coke show_string.py: Γέρεηαη ζαλ φξηζκα θάπνην θείκελν, θαη ην εκθαλίδεη θαηάιιεια δηακνξθσκέλν ζηελ νζφλε. Πσ../show_string.py s Hello World Σα scripts απηά ηα θαινχκε κε ρξήζε C++ κέζα απφ ην θχξην πξφγξακκα. Κύπιο ενζυμαηυμένο ππόγπαμμα Σν θχξην πξφγξακκα είλαη γξακκέλν ζηε γιψζζα C++. Έλα απφ ηα βαζηθά ζεκεία απηνχ είλαη ε ζπλάξηεζε αλάγλσζεο ησλ NFC εηηθεηψλ. Υξεζηκνπνηήζακε ηε βηβιηνζήθε PCSC-Lite, αθνινπζψληαο ηηο ηειεπηαίεο πξνδηαγξαθέο ηνπ PC/SC (Personal Computer / Smart Card) θαη CCID απφ ην PC/SC Workgroup. Γηα λα επηθνηλσλήζνπκε κε ην chip ζηέιλνπκε ηηο ιεγφκελεο APDU (Application Protocol Data Unit) εληνιέο. Η δνκή ηνπ APDU νξίδεηαη απφ ην ISO/IEC 7816-4. Έηζη, δεκηνπξγήζακε ηελ ζπλάξηεζε ExecuteAPDU(), ε νπνία δέρεηαη ζαλ φξηζκα έλαλ πίλαθα απφ byte πνπ πεξηέρνπλ ηελ εληνιή θαη καο επηζηξέθεη ηελ απφθξηζε ηνπ αλαγλψζηε ζε κνξθή string. Δάλ ηα 2 ηειεπηαία bytes ηεο απάληεζεο είλαη «90 00», ηφηε ε ελέξγεηα ήηαλ επηηπρήο. Γηαθνξεηηθά καο επηζηξέθεηαη κήλπκα ιάζνπο «63 00». Η ζπλάξηεζε GetCardID() ρξεζηκνπνηεί ηελ πξναλαθεξζείζα γηα λα ζηείιεη ην command πνπ επηζηξέθεη ην κνλαδηθφ δεθαεμαδηθφ αξηζκφ ID ηνπ chip. Μεηά ηελ εθθίλεζε ηεο εθαξκνγήο αθνινπζεί ε αξρηθνπνίεζε ησλ ζπζθεπψλ εηζφδνπ/εμφδνπ θαη ν έιεγρνο δηθηχνπ. Ο έιεγρνο απηφο γίλεηαη κε ηε ζπλάξηεζε CheckNetwork(), ε νπνία πνιχ απιά πξνζπαζεί λα αλνίμεη κία ζχλδεζε κε ηελ απνκαθξπζκέλε βάζε δεδνκέλσλ ξσηψληαο ηελ εκεξνκελία. Αλ ε πξνζπάζεηα είλαη αλεπηηπρήο, ρξεζηκνπνηείηαη ε εληνιή goto, ε νπνία καο πεγαίλεη αθξηβψο πάλσ απφ ηνλ έιεγρν κε ζθνπφ λα επαλαιεθζεί. Γηαθνξεηηθά, ζέηεη ηελ εκεξνκελία, πνπ κφιηο πιεξνθνξήζεθε απφ ηε βάζε, ζην ζχζηεκα θαη ζπλερίδεηαη θαλνληθά ε εθηέιεζε ηνπ πξνγξάκκαηνο. ηε ζπλέρεηα, θαζψο ν αλαγλψζηεο δηαβάδεη απφ ηελ είζνδφ ηνπ, εάλ επηζηξαθεί ηηκή πνπ πεξηέρεη ην «90 00», εθηειεί έλα εξψηεκα ζηε βάζε δεδνκέλσλ ξσηψληαο εάλ ππάξρεη ρξήζηεο κε απηφλ ηνλ θσδηθφ θαη αλ έρεη δηθαίσκα λα ρξεζηκνπνηήζεη ην ζχζηεκα απηή ηε δεδνκέλε ζηηγκή. Όιε απηή ε δηαδηθαζία εθηειείηαη κε ηελ ζπλάξηεζε UserLogin(). Δάλ ε ζπλάξηεζε καο επηζηξέςεη κία κε-κεδεληθή ηηκή, απηφ ζεκαίλεη φηη ππάξρεη ζην ζχζηεκα ρξήζηεο κε απηά ηα θξηηήξηα, κε απνηέιεζκα λα μεθιεηδψζεη ε πφξηα θαη λα αξρίζεη λα εθηειείηαη κία άιιε ζπλάξηεζε, ε ScanProducts(). ε απηφ ην ζεκείν, ζα δεκηνπξγεζεί κία εγγξαθή ζηε βάζε δεδνκέλσλ πνπ ζα θαηαρσξεί ηνλ ζπγθεθξηκέλν ρξήζηε θαη ηελ ψξα εηζφδνπ ηνπ. Δδψ, φζν ε

38 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE πφξηα είλαη αλνηρηή, ρξεζηκνπνηνχκε θαη πάιη ηελ GetCardID(), ε νπνία καο επηζηξέθεη, απηή ηε θνξά, ην κνλαδηθφ αλαγλσξηζηηθφ ηνπ πξντφληνο. Ακέζσο κεηά, εθηειείηαη έλα εξψηεκα ζηε βάζε δεδνκέλσλ, έηζη ψζηε λα πιεξνθνξεζνχκε εάλ ην πξντφλ είλαη εγγεγξακκέλν ζην ζχζηεκα καο, θαη αλ λαη, πιεξνθνξίεο φπσο ηχπνο, εκεξνκελία ιήμεσο, εκεξνκελία παξαγσγήο θαη εηθφλα. Δάλ ην πξντφλ έρεη ιήμεη ιακβάλνπκε νπηηθφ-ερεηηθή εηδνπνίεζε. Γηαθνξεηηθά, ην πξντφλ εηζάγεηαη ή εμάγεηαη ζην ζχζηεκα καο. Δδψ, ζέισ λα ηνλίζσ, φηη δελ είλαη απαξαίηεηε θάπνηα ελέξγεηα πνπ ζα πεη ζην ζχζηεκα εάλ ην πξντφλ είλαη γηα εηζαγσγή ή γηα εμαγσγή. Σν ζχζηεκα «θαηαιαβαίλεη» πνηα ελέξγεηα επξφθεηην λα ζπκβεί, δηαβάδνληαο ηνλ πίλαθα product_log ηεο βάζεο δεδνκέλσλ. Κιείλνληαο ηελ πφξηα ην ζχζηεκα θαιεί ηελ ζπλάξηεζε UserLogout(), ε νπνία θέξλεη ην ζχζηεκα ζηηο αξρηθέο ζπλζήθεο, θαη ελεκεξψλεη ηελ εγγξαθή ζηε βάζε, φηη ν ρξήζηεο «Υ» ζηακάηεζε λα ρξεζηκνπνηεί ην ζχζηεκα ηε ζπγθεθξηκέλε ρξνληθή ζηηγκή. Γιάγπαμμα Ροήρ ςζηήμαηορ Γιάγπαμμα ποήρ ζςζηήμαηορ

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 39 2.4.3 Δθαπμογή κενηπικού ελέγσος Η εθαξκνγή απηή ζρεδηάζηεθε γηα ηελ θχξηα δηαρείξηζε ησλ ρξεζηψλ θαη ησλ πξντφλησλ, θαζψο θαη θάπνηεο ξπζκίζεηο δηαρείξηζεο ηνπ ζπζηήκαηνο. Όπσο αλαθέξζεθε πξνεγνπκέλσο ε εθαξκνγή έρεη ζρεδηαζηεί θαη πινπνηεζεί ζε WPF, C#.NET. Η δηαζχλδεζε ηνπ ρξήζηε απνηειείηαη απφ δχν θφξκεο. Login Form, Main Form. Η πξψηε θφξκα εκθαλίδεηαη θαηά ην άλνηγκα ηεο εθαξκνγήο, θαη καο δεηάεη ηνλ θσδηθφ ηεο εθαξκνγήο. Ο θσδηθφο απηφο, είλαη απνζεθεπκέλνο ζηε βάζε ρξεζηκνπνηψληαο ηνλ αιγφξηζκν θξππηνγξάθεζεο SHA1(). ε πεξίπησζε πνπ δνζεί ν ζσζηφο θσδηθφο, ε πξψηε θφξκα θιείλεη, θαη κεηαθεξφκαζηε ζηε δεχηεξε. Η δεχηεξε θφξκα, απνηειείηαη απφ έλαλ TabContainer, ν νπνίνο πεξηέρεη 4 TabPanels. Main Form Tab Panels Users, Product Categories, Products, Administration. Tab Panel 1 - Users Σν πξψην Tab Panel πεξηέρεη ηε ιίζηα ρξεζηψλ πνπ είλαη εγγεγξακκέλνη ζην ζχζηεκα, ηα πξνζσπηθά ζηνηρεία ηνπο θαη ηα δηθαηψκαηα ηνπο, θαζψο ππάξρεη θαη ε δπλαηφηεηα επεμεξγαζίαο, εηζαγσγήο θαη δηαγξαθήο. 1. Users Tab Panel

40 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE Πεπιγπαθή πεπιοσών 1. Λίζηα ρξεζηψλ. Δδψ εκθαλίδνληαη φινη νη εγγεγξακκέλνη ρξήζηεο. 2. Πεξηνρή πιεξνθνξηψλ ρξήζηε. Δδψ εκθαλίδνληαη νη πιεξνθνξίεο ηνπ εθάζηνηε επηιεγκέλνπ ρξήζηε. 3. Πεξηνρή ξχζκηζεο δηθαησκάησλ. 3.1 Δπηιέγνπκε απηφ ην checkbox εάλ ν ρξήζηεο έρεη πεξηνξηζκέλε πξφζβαζε. 3.2 Δδψ επηιέγνπκε ην ρξνληθφ δηάζηεκα πξφζβαζεο. 3.3 ε απηφ ην ζεκείν επηιέγνπκε ηηο εκέξεο ηεο εβδνκάδνο πνπ ν ζπγθεθξηκέλνο ρξήζηεο ζα έρεη πξφζβαζε. Δπίζεο, θαηά ηελ επεμεξγαζία θαη ηελ εηζαγσγή, έρνπκε ζηε δηάζεζε καο ιεηηνπξγίεο φπσο Undo (αλαίξεζε) θαη Save Changes (απνζήθεπζε αιιαγψλ). ε θάζε απφ ηηο δχν πεξηπηψζεηο ππάξρεη κήλπκα επηβεβαίσζεο. Η αλάγλσζε ηνπ θσδηθνχ ηεο θάξηαο γίλεηαη κέζσ APDU ζπλαξηήζεσλ θαη απαηηεί ηελ χπαξμε NFC RFID αλαγλψζηε ζπλδεκέλν ζην ζχζηεκα καο. Tab Panel 2 Product Categories Σν δεχηεξν Tab Panel πεξηέρεη πιεξνθνξίεο ησλ ηχπσλ πξντφλησλ. Κάπνηεο απφ απηέο είλαη ην φλνκα ηεο θαηεγνξίαο, ε πεξηγξαθή θαη ε εηθφλα. Δπίζεο εδψ ππάξρνπλ νη ξπζκίζεηο ησλ απηφκαησλ παξαγγειηψλ, θαη ηεο εηδνπνίεζεο ιήμεσο. ηελ πξψηε πεξίπησζε εηζάγνπκε ηελ πνζφηεηα ηνπ ζπγθεθξηκέλνπ ηχπνπ πξντφληνο, θαη ζηε δεχηεξε ην πφζεο κέξεο πξηλ ηε ιήμε ζα ιακβάλνπκε ηελ εηδνπνίεζε. Τπάξρεη δπλαηφηεηα εηζαγσγήο θαη επεμεξγαζίαο. 2. Product Categories Tab Panel

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 41 Πεπιγπαθή πεπιοσών 1. Λίζηα ηχπσλ πξντφλησλ. Δδψ εκθαλίδνληαη φιεο νη θαηεγνξίεο πξντφλησλ. 2. Πιεξνθνξίεο θαηεγνξίαο πξντφληνο. Όλνκα, Πεξηγξαθή. 3. Πεξηνρή ξπζκίζεσλ θαηεγνξίαο. 3.1 Δλεξγνπνίεζε απηφκαησλ παξαγγειηψλ. 3.2 Δηζαγσγή ειάρηζηεο πνζφηεηαο παξαγγειηψλ. 3.3 Δλεξγνπνίεζε εηδνπνίεζεο ιήμεο πξντφληνο. 3.4 Δηζαγσγή αξηζκνχ εκεξψλ πνπ ζα γίλεη έιεγρνο εκεξνκελίαο ιήμεσο ηνπ πξντφληνο. 3.5 Πξνβνιή θαη εηζαγσγή εηθφλαο πνπ αληηζηνηρεί ζην ζπγθεθξηκέλν ηχπν πξντφλησλ. Tab Panel 3 Products ε απηή ηελ θαξηέια εγγξάθνπκε ηα πξντφληα ζην ζχζηεκα. Κάζε πξντφλ πξέπεη λα ζπζρεηίδεηαη κε ζηνηρεία φπσο, εκεξνκελία παξαγσγήο, εκεξνκελία ιήμεσο, θαη ηχπνο πξντφληνο. Αθνχ επηιέμνπκε ηα ππνρξεσηηθά απηά ζηνηρεία, παηάκε ην πιήθηξν εγγξαθήο, κε ηελ πξνυπφζεζε φηη ππάξρεη NFC εηηθέηα επάλσ ζηνλ αλαγλψζηε καο. Μπνξνχκε λα εηζάγνπκε πνιιά πξντφληα κε ηα ίδηα ζηνηρεία, πξάγκα πνπ καο θέξεη ηαρχηεηα ζηε ρξήζε ηεο εθαξκνγήο, θαζψο θαη λα μαλαεγγξάςνπκε δηαθνξεηηθφ κε ηελ ίδηα εηηθέηα (αλαθχθισζε), έηζη ψζηε κπνξνχκε λα ρξεζηκνπνηνχκε ηηο ίδηεο εηηθέηεο. Πεπιγπαθή πεπιοσών 3. Products Tab Panel 1. Λίζηα ηχπσλ πξντφλησλ. Δδψ εκθαλίδνληαη φιεο νη δηαζέζηκεο θαηεγνξίεο πξνο επηινγή. 2. Ηκεξνιφγην επηινγήο εκεξνκελίαο παξαγσγήο. 3. Ηκεξνιφγην επηινγήο εκεξνκελίαο ιήμεσο ηνπ πξντφληνο.

42 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 4. Πεξηνρή πξνβνιήο ζηνηρείσλ πξντφληνο. 5. Πιήθηξν εγγξαθήο. Καη ηα ηξία πεδία είλαη ππνρξεσηηθά. ε πεξίπησζε πνπ δελ επηιέμνπκε θάηη ή δε βξεζεί NFC εηηθέηα ιακβάλνπκε ην θαηάιιειν κήλπκα ιάζνπο. Tab Panel 4 Administration ηελ 4 ε θαη ηειεπηαία θαξηέια έρνπκε θάπνηεο ιεηηνπξγίεο δηαρείξηζεο ηνπ ζπζηήκαηνο. Πην ζπγθεθξηκέλα, έρνπκε ηε δπλαηφηεηα αιιαγήο θσδηθνχ πξφζβαζεο ηεο εθαξκνγήο, θαζψο θαη αιιαγή θσδηθνχ πξφζβαζεο ηεο δηαδηθηπαθήο εθαξκνγήο (βι. παξαθάησ). Δπίζεο, εδψ ξπζκίδνπκε θάπνηεο κεηαβιεηέο ηεο ππεξεζίαο απνζηνιήο email, φπσο ηηο δηεπζχλζεηο ησλ παξαιεπηψλ, θαη ηελ ψξα ειέγρνπ θαη απνζηνιήο ησλ ηδηνπνηήζεσλ. Σέινο, ππάξρεη ν έιεγρνο ηνπ ελζσκαησκέλνπ ζπζηήκαηνο κε δπλαηφηεηεο εθθίλεζεο θαη ηεξκαηηζκνχ. Πεπιγπαθή πεπιοσών 4. Administration Tab Panel 1. Φφξκα αιιαγήο θσδηθνχ πξφζβαζεο ηεο εθαξκνγήο. 2. Φφξκα αιιαγήο θσδηθνχ πξφζβαζεο ηεο δηαδηθηπαθήο εθαξκνγήο. 3. Φφξκα αιιαγήο ξπζκίζεσλ ηεο ππεξεζίαο εηδνπνηήζεσλ. Βιέπνπκε φηη ππάξρεη ε δπλαηφηεηα μερσξηζηνχ θαη πνιιαπινχ παξαιήπηε αλάινγα κε ηελ εηδνπνίεζε. 4. Φφξκα ειέγρνπ ηνπ ελζσκαησκέλνπ ζπζηήκαηνο. Λεηηνπξγίεο, εθθίλεζε θαη ηεξκαηηζκφο. Η επηθνηλσλία γίλεηαη κέζσ ηνπ πξσηνθφιινπ SSH.

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 43 2.4.4 Τπηπεζία αποζηολήρ Email ηελ εθαξκνγή καο ππήξρε ε απαίηεζε δηάθνξσλ εηδνπνηήζεσλ απφ ην ζχζηεκα θαη πξνβήθακε ζηελ αλάπηπμε κηαο ππεξεζίαο (Windows Service), ε νπνία θάησ απφ ζπγθεθξηκέλεο ζπλζήθεο θάλεη ηνπο απαξαίηεηνπο ειέγρνπο έηζη ψζηε λα ιακβάλνπκε ρξήζηκα κελχκαηα ζρεηηθά κε ηελ θαηάζηαζε ηνπ ζπζηήκαηνο καο. Γηα ην ιφγν απηφ ρξεζηκνπνηήζακε έλαλ δσξεάλ Mail Server γηα Windows, ηνλ ιεγφκελν hmailserver. Η ππεξεζία πνπ πινπνηήζακε ρξεζηκνπνηεί ηνλ παξαπάλσ SMTP Server γηα λα θάλεη ηελ απνζηνιή ησλ κελπκάησλ. Η ππεξεζία είλαη ηχπνπ Windows Service θαη πινπνηήζεθε ζην Visual Studio 2010, ζε πεξηβάιινλ C#.NET. Η ιεηηνπξγία ηεο πεξηγξάθεηαη σο εμήο. Ξεθηλψληαο ειέγρεη αλ ε ξχζκηζε ψξαο πνπ γίλεηαη απφ ηελ εθαξκνγή δηαρείξηζεο είλαη ίζε κε ηελ ηξέρνπζα ψξα. Αλ λαη, ειέγρεη εάλ ππάξρεη έιιεηκκα απφ ηα πξντφληα πνπ ππάξρνπλ ζην ζχζηεκα καο. Δθ φζνλ βξεη φηη θάηη ιείπεη, εηνηκάδεη θαη καο απνζηέιιεη κία θαηάζηαζε κε πξντφληα, ε νπνία πεξηέρεη ηνλ ηχπν θαη ηε πνζφηεηα πνπ καο ρξεηάδεηαη. Έπεηηα θάλεη ηνλ έιεγρν ησλ εκεξνκεληψλ ιήμεσο ησλ πεξηερφλησλ πξντφλησλ ηνπ ζπζηήκαηνο καο. Αλ βξεη φηη θάπνην απφ ηα πξντφληα ελδέρεηαη λα ιήμεη ηηο επφκελεο εκέξεο (πάληα ζχκθσλα κε ηηο ξπζκίζεηο απφ ηελ εθαξκνγή δηαρείξηζεο), καο απνζηέιιεη άιιν έλα κήλπκα θαη καο εηδνπνηεί γηα ην πνηά πξντφληα ελδέρεηαη λα ιήμνπλ ή έρνπλ ιήμεη. ην κήλπκα απηφ πεξηέρνληαη ν ηχπνο πξντφληνο, ν θσδηθφο ηνπ θαη ε εκεξνκελία ιήμεσο. Έθηνηε, ε δηαδηθαζία απηή επαλαιακβάλεηαη θάζε ψξα. a) Διδοποίηζη αςηόμαηηρ παπαγγελίαρ b) Διδοποίηζη λήξηρ πποφόνηυν

44 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 2.4.5 Δθαπμογή παποςζίαζηρ και ζηαηιζηικών Πέξα απφ ηε δηαρείξηζε ηνπ ζπζηήκαηνο καο δεκηνπξγήζεθε θαη ε αλάγθε επίβιεςεο ηνπ ζπζηήκαηνο. Γηα απηφ ην ιφγν, δεκηνπξγήζακε κηα δηαδηθηπαθή εθαξκνγή, ε νπνία καο παξέρεη κε δηάθνξα είδε ζηαηηζηηθψλ ζηνηρείσλ ζρεηηθά κε ηε ρξήζε ηνπ ζπζηήκαηνο. Κάπνηα απφ απηά είλαη επίβιεςε ζεξκνθξαζίαο, γεληθή ρξήζε ηνπ ζπζηήκαηνο απφ ηνπο ρεηξηζηέο, ζπρλφηεηα ρξήζεο ζπγθεθξηκέλσλ πξντφλησλ, εκεξήζηα, κεληαία θαη εηήζηα ζηαηηζηηθά, θαη γεληθά δηάθνξα ζηνηρεία απεηθνληδφκελα ζε πίλαθεο θαη γξαθήκαηα, ρξεζηκνπνηψληαο ηα θαηάιιεια θίιηξα. Γηα λα γίλεη ρξήζε ηεο εθαξκνγήο απηήο ζα πξέπεη λα γίλεη απζεληηθνπνίεζε κε ρξήζε θσδηθνχ, ν νπνίνο είλαη απνζεθεπκέλνο ζηε βάζε δεδνκέλσλ κε ρξήζε θξππηνγξάθεζεο. 1. Φόπμα Διζόδος Όπσο κπνξείηε λα δηαθξίλεηε, ππάξρνπλ πέληε βαζηθά κελνχ. Απηά είλαη: Home Temp Logs User Logs Product Logs Admin Logs Η ζειίδα Home είλαη ε πξψηε πνπ εκθαλίδεηαη κεηά ηελ επηηπρή είζνδν ηνπ ρξήζηε θαη είλαη ηθαλή λα θηινμελήζεη δηάθνξα λέα θαη ελεκεξψζεηο ηνπ ζπζηήκαηνο, θαζψο θαη πιεξνθνξίεο ηεο εθαξκνγήο ή ησλ θαηαζθεπαζηψλ ηεο. Temp Logs Καηαγπαθέρ Θεπμοκπαζίαρ Η ζειίδα απηή καο πιεξνθνξεί γηα ηε ζεξκνθξαζία πνπ έρεη θάπνην απφ ηα αηζζεηήξηα πνπ βξίζθνληαη ζπλδεκέλα ζην ζχζηεκα. Η απεηθφληζε ηεο ζεξκνθξαζίαο είλαη 24σξε θαη εκθαλίδεηαη ζε κνξθή γξαθήκαηνο. Υξεζηκνπνηήζακε ηα FussionCharts, ηα νπνία είλαη γξαθήκαηα ζε κνξθή flash, πνπ ηξνθνδνηνχληαη κε δεδνκέλα ζε κνξθή XML. Αθνινπζεί έλα παξάδεηγκα.

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 45 <graph xaxisname='time' yaxisname='temperature' shownames='1' decimalprecision='1' formatnumberscale='0'> <set name='00' value='29.69' /> <set name='01' value='29.5' /> <set name='02' value='29.19' /> <set name='03' value='29.38' /> <set name='04' value='29.38' /> <set name='05' value='29.38' /> <set name='06' value='29.31' /> <set name='07' value='29.31' /> <set name='08' value='29.38' /> <set name='09' value='29.62' /> <set name='10' value='29.81' /> </graph> Καηά ηελ πξψηε θφξησζε ηεο ζειίδαο, θνξηψλνληαη ηα αηζζεηήξηα θαη νη κεηξήζεηο ηνπο απφ ηε βάζε δεδνκέλσλ. Έπεηηα, κε ρξήζε Drop Down Lists, θηιηξάξνληαη ηα δεδνκέλα κε βάζε ηελ επηινγή ηνπ ρξήζηε κε βάζε ην φλνκα ηνπ αηζζεηεξίνπ, ηνπ έηνπο, ηνπ κήλα θαη ηεο εκέξαο κεηξήζεσλ (Cascading Drop Down Lists). Σν θηιηξάξηζκα απηφ γίλεηαη κε ρξήζε ηεο ηερλνινγίαο LinQ (βι. 1.4.5). Με ηελ νινθιήξσζε ηεο επηινγήο δεκηνπξγείηαη ην XML αξρείν πνπ ηξνθνδνηεί ην γξάθεκα, θαη ελζσκαηψλεηαη ζηε θφξκα. Κάησ απφ ην γξάθεκα ππάξρεη πιήθηξν πνπ καο εκθαλίδεη ή καο απνθξχπηεη ηνλ πίλαθα κε ηηο ιεπηνκεξείο κεηξήζεηο ηαμηλνκεκέλεο θαηά θζίλνπζα ψξα απφθηεζεο. Δπίζεο, έρνπκε δηαζέζηκεο πιεξνθνξίεο φπσο κεγαιχηεξε θαη κηθξφηεξε εκεξήζηα ζεξκνθξαζία πνπ κεηξήζεθε απφ ην ζπγθεθξηκέλν αηζζεηήξην. Παποςζίαζη ηηρ ζελίδαρ Temp Logs 2. Φόπμα Πποβολήρ Θεπμοκπαζιών

46 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE Πεπιγπαθή πεπιοσήρ 1. Drop Down Lists, πνπ γίλεηαη ε επηινγή θαη θηιηξάξηζκα ησλ κεηξήζεσλ κε βάζε ηα ζηνηρεία: Όλνκα αηζζεηεξίνπ, Έηνο κέηξεζεο, Μήλαο κέηξεζεο, Ηκέξα κέηξεζεο. 2. Δδψ βιέπνπκε ηε κέγηζηε θαη ηελ ειάρηζηε εκεξήζηα ζεξκνθξαζία πνπ πξνθχπηεη απφ ην θηιηξάξηζκα ησλ κεηξήζεσλ. 3. Απηφ είλαη ην γξάθεκα. ηνλ άμνλα Τ έρνπκε ηελ ηηκή ηεο ζεξκνθξαζίαο, ελψ ζηνλ άμνλα Υ έρνπκε ηελ ψξα κέηξεζεο ζηε κνξθή ΗΗ. Η κέηξεζε φπσο έρεη πξναλαθεξζεί γίλεηαη θάζε ψξα. 4. Δδψ βιέπνπκε έλα panel, πνπ αλ ην παηήζνπκε καο εκθαλίδεη έλαλ πίλαθα κε ηηο εκεξήζηεο κεηξήζεηο. 5. Σν πιήθηξν απηφ ζα ην βιέπνπκε ζε φιεο ηηο θφξκεο, παηψληαο ην πξαγκαηνπνηείηαη έμνδνο ηεο εθαξκνγήο. 6. Η κπάξα ησλ επηινγψλ-κελνχ. Θα ην βιέπνπκε επίζεο ζε φιεο ηηο θφξκεο. User Logs Καηαγπαθέρ Υπηζηών Η θφξκα απηή έρεη ηξεηο δηαθνξεηηθέο πεξηπηψζεηο ρξήζεηο: Λίζηα ρξεζηψλ (User List), Καηαγξαθέο ρξεζηψλ (User Logs), ηαηηζηηθά πξφζβαζεο (Access Statistics). Γηα θάζε πεξίπησζε έρνπκε έλαλ μερσξηζηφ δεζκφ (link), ζηελ αξηζηεξή κπάξα ηεο εθαξκνγήο. ηελ πξψηε απφ ηηο πεξηπηψζεηο, έρνπκε έλαλ πίλαθα κε φινπο ηνπο ρξήζηεο πνπ είλαη εγγεγξακκέλνη ζην ζχζηεκα, καδί κε ηα πξνζσπηθά ηνπο ζηνηρεία, ην κνλαδηθφ αξηζκφ θάξηαο εηζφδνπ, θαη ηηο ζπλζήθεο πξφζβαζεο. 3. Λίζηα Φπηζηών ηελ ιίζηα απηή παξαηεξνχκε φηη ζηελ ζηήιε Access Days έρνπκε θάπνηνπο ραξαθηήξεο κε πξάζηλν ρξψκα, θαη θάπνηνπο κε θφθθηλν. Δίλαη ηα αξρηθά γξάκκαηα

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 47 ησλ εκεξψλ ηεο εβδνκάδνο. Ο ρξήζηεο έρεη πξφζβαζε ζε απηά κε ην πξάζηλν ρξψκα. Δπίζεο, δίπια αθξηβψο βιέπνπκε ηε ρξνληθή πεξίνδν πνπ έρεη πξφζβαζε. ηε δεχηεξε πεξίπησζε, δειαδή ζηηο θαηαγξαθέο ρξεζηψλ, έρνπκε αξρηθά ηελ επηινγή ηνπ ρξήζηε απφ κηα Drop Down List. Έπεηηα, εκθαλίδνληαη δχν δεζκνί (links). Παηψληαο πάλσ ζηνπο δεζκνχο καο εκθαλίδεηαη έλα εζσηεξηθφ παξάζπξν (AJAX Modal Popup Extender), κε ηα πξντφληα πνπ έρεη εηζάγεη ή εμάγεη ν ρξήζηεο αληίζηνηρα ζπκπιεξσκέλα ζε έλα ASP.NET GridView. Με ηε ρξήζε απηνχ ηνπ AJAX Extender δε ρξεηάδεηαη λα έρνπκε θάπνην έμηξα popup παξάζπξν. Όζν είλαη ελεξγνπνηεκέλν, ε «πίζσ» ζειίδα παγψλεη κέρξηο φηνπ παηήζνπκε ην θνπκπί θιεηζίκαηνο πνπ βξίζθεηαη επάλσ δεμηά. Απφ θάησ κπνξνχκε λα δνχκε έλα GridView κε ηηο ηειεπηαίεο θηλήζεηο ηνπ ρξήζηε, κε δπλαηφηεηα θηιηξαξίζκαηνο ζεκεξηλψλ θηλήζεσλ, ηειεπηαίαο εβδνκάδνο, κήλα θαη έηνπο. Παποςζίαζη ηηρ ζελίδαρ User Logs Δδψ βιέπνπκε νιφθιεξε ηε θφξκα θαηαγξαθψλ ρξήζηε. Γηαθξίλνπκε ηνλ modal popup αξηζηεξά ζην παξάζπξν, θαη παξαηεξνχκε φηη είλαη πιήξσο κεηαθηλήζηκν. Πεπιγπαθή πεπιοσήρ 4. Φόπμα Καηαγπαθών Φπήζηη 1. Drop Down List επηινγήο ρξήζηε. 2. Σειεπηαίεο θηλήζεηο ηνπ επηιεγκέλνπ ρξήζηε. 3. Drop Down List γηα θηιηξάξηζκα ησλ απνηειεζκάησλ ησλ θηλήζεσλ. 4. Οη δχν δεζκνί πνπ καο δείρλνπλ ηελ πνζφηεηα ησλ θηλήζεσλ εηζαγσγήο θαη εμαγσγήο αληίζηνηρα. Κάλνληαο θιηθ επάλσ ηνπο, εκθαλίδεηαη ην modal popup.

48 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 5. Modal Popup. Δζσηεξηθφ παξάζπξν πιήξσο κεηαθηλήζηκν- πνπ καο δείρλεη αλαιπηηθά ηηο θηλήζεηο εηζαγσγήο ή εμαγσγήο ηνπ ρξήζηε. Παξαηεξνχκε επίζεο φηη ην παξάζπξν πίζσ απφ ην popup έρεη γίλεη γθξη, θαη απνξξίπηεη νπνηαδήπνηε ελέξγεηα πάλσ ζε απηφ (click, button press, etc). Απηφ είλαη ηδηφηεηα πνπ κπνξεί λα ζπλδπαζηεί κε απηφ ηνλ AJAX Extender. ηελ ηξίηε πεξίπησζε, έρνπκε δηάθνξα ζηαηηζηηθά ησλ πξφζβαζεο ησλ ρξεζηψλ ηνπ ζπζηήκαηνο. Τπάξρεη ζηε θφξκα κία Drop Down List κε ηελ νπνία κπνξνχκε λα επηιέμνπκε ηνλ ηχπν ησλ ζηαηηζηηθψλ. Σςνολική σπήζη. Η επηινγή απηή καο δείρλεη φινπο ηνπο ρξήζηεο κε θζίλνπζα ζεηξά, ζχκθσλα κε ηηο ρξήζεηο πνπ έρνπλ θάλεη ζην ζχζηεκα, θαη δίπια βιέπνπκε ην ηα απνηειέζκαηα ζε πνζνζηφ %. Διάπκεια σπήζεων. Με ηελ επηινγή απηή κπνξνχκε λα δνχκε ζηαηηζηηθά φπσο ειάρηζηνο θαη κέγηζηνο ρξφλνο ρξήζεο, θαζψο θαη ην κέζν φξν φισλ ησλ ρξήζεσλ. Δπίζεο, δεκηνπξγείηαη δπλακηθά έλαο πίλαθαο κε δηάθνξα ρξνληθά δηαζηήκαηα δηάξθεηαο, θαη δίπια ηνλ αξηζκφ ρξήζεσλ πνπ αλήθεη ζε απηφ ην δηάζηεκα. Σα δηαζηήκαηα είλαη δπλακηθά θαη εμαξηνχληαη απφ ην κέζν φξν ρξήζεο. Έπεηηα, έρνπκε ηηο επηινγέο, ημεπήζια, μηνιαία και εηήζια ππόζβαζη, φπνπ καο δεκηνπξγνχλ αληίζηνηρα γξαθήκαηα ρξήζεο. 5. Γπάθημα ημεπήζιαρ σπήζηρ ε απηφ ην γξάθεκα, γηα παξάδεηγκα, βιέπνπκε φηη ην κεγαιχηεξν πνζνζηφ ρξήζεο αλήθεη ζηελ Σεηάξηε. ηνλ άμνλα Υ έρνπκε ηηο εκέξεο ηεο εβδνκάδνο, θαη ζηνλ άμνλα Τ έρνπκε ηνλ αξηζκφ ρξήζεσλ.

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 49 Product Logs Καηαγπαθέρ Πποφόνηυν ηε θφξκα απηή έρνπκε δχν πεξηπηψζεηο ρξήζεο. Σελ λίζηα ηυν εγγεγπαμμένυν πποφόνηυν, θαη ηα ζηαηιζηικά ηυν πποφόνηυν. Οη δχν απηέο πεξηπηψζεηο ελεξγνπνηνχληαη παηψληαο έλα απφ ηνπο δχν δεζκνχο πνπ ππάξρνπλ ζηε θφξκα (Product List και Product Statistics). ηελ πξψηε πεξίπησζε, δεκηνπξγείηαη έλα Grid View ην νπνίν πεξηέρεη ηα εγγεγξακκέλα πξντφληα θαη ηηο πιεξνθνξίεο ηνπο, φπσο, ηχπνο, κνλαδηθφ αλαγλσξηζηηθφ, εκεξνκελία παξαγσγήο, εκεξνκελία ιήμεσο, εκεξνκελία εγγξαθήο θαη κία αθφκα ζηήιε κνπ καο ελεκεξψλεη εάλ απηφ ην πξντφλ είλαη αθφκα ελεξγφ. Απηφ ρξεηάδεηαη γηαηί φπσο είπακε κπνξνχκε λα «αλαθπθιψζνπκε» ηηο NFC εηηθέηεο. Δπίζεο, ππάξρεη θαη ε δπλαηφηεηα θηιηξαξίζκαηνο ησλ απνηειεζκάησλ κε ρξήζε ησλ επηινγψλ ενεπγά, μη-ενεπγά, θαη πποϊόνηα μέζα ζηο ζύζηημα. 6. Λίζηα Πποφόνηυν Σα απνηειέζκαηα ηνπ Grid View είλαη νκαδνπνηεκέλα ζε ζειίδεο, κε κέγηζην αξηζκφ απνηειεζκάησλ αλά ζειίδα δέθα (10). Δπίζεο, παξαηεξνχκε φηη ζε θάπνηα πξντφληα ην αλαγλσξηζηηθφ ηνπο είλαη Ν/Α. Απηφ ζπκβαίλεη γηαηί πιένλ δελ είλαη ελεξγά, θαη ην αλαγλσξηζηηθφ έρεη δνζεί ζε θάπνην άιιν πξντφλ. ηε δεχηεξε πεξίπησζε έρνπκε ηα ζηαηηζηηθά ησλ πξντφλησλ. Απηά, θαηά βάζε, είλαη ζηαηηζηηθά πνπ ζπκβνιίδνληαη κε γξαθήκαηα. Έηζη κεηαμχ ησλ επηινγψλ καο, νη νπνίεο γίλνληαη κέζσ κίαο Drop Down List, βξίζθνληαη ηα: ηαηηζηηθά ζπλνιηθήο ρξήζεο, Ηκεξήζηα ζηαηηζηηθά πξντφλησλ, Μεληαία ζηαηηζηηθά πξντφλησλ θαη, Δηήζηα ζηαηηζηηθά πξντφλησλ.

50 ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE ε φιεο ηηο πεξηπηψζεηο έρνπκε ηε δπλαηφηεηα λα θηιηξάξνπκε ηα απνηειέζκαηα κε ηηο θηλήζεηο πνπ έρεη γίλεη εηζαγσγή ηνπ πξντφληνο θαη ηηο θηλήζεηο πνπ έρεη γίλεη εμαγσγή. 7. Γπάθημα ζςνολικήρ σπήζηρ πποφόνηυν Γίπια ζε θάζε ηίηιν ζηνηρείνπ ηεο πίηαο ππάξρεη ν αξηζκφο ρξήζεσλ ηνπ ζπγθεθξηκέλνπ ηχπνπ πξντφληνο, θαζψο ππάξρεη θαη Tooltip φηαλ θάλεη παχζε επάλσ ην πνληίθη. ην ζπγθεθξηκέλν παξάδεηγκα έρνπκε επηιέμεη ηε ζπλνιηθή ρξήζε ησλ πξντφλησλ πνπ έρνπλ εηζέιζεη ζην ζχζηεκα. Σν θηιηξάξηζκα γίλεηαη κε ηε ρξήζε ηεο κηθξήο Drop Down List πάλσ δεμηά ηνπ γξαθήκαηνο. Admin Logs Καηαγπαθέρ διασειπιζηή ε απηή ηε θφξκα κπνξνχκε λα δνχκε θάπνηα γεγνλφηα πνπ αθνξνχλ θαζαξά ηε δηαρείξηζε ηνπ ζπζηήκαηνο. Τπάξρνπλ δχν πεξηπηψζεηο ρξήζεο. Καηαγπαθέρ Αποηςσιών (Error Logs) ε απηή ηελ πεξίπησζε κπνξνχκε λα δηαβάζνπκε ηηο απνηπρίεο ηνπ ζπζηήκαηνο ηαμηλνκεκέλεο ζε θζίλνπζα ζεηξά κε βάζε ηελ εκεξνκελία πνπ ζπλέβεζαλ. ηηο πιεξνθνξίεο απηέο πεξηιακβάλεηαη ηχπνο απνηπρίαο, κήλπκα θαη εκεξνκελία. Καηαγπαθέρ Μηνςμάηων (Mail Logs) ηελ πεξίπησζε απηή, δηαβάδνπκε ηα κελχκαηα ηεο ππεξεζίαο εηδνπνηήζεσλ. ηηο πιεξνθνξίεο απηέο πεξηιακβάλεηαη ην κήλπκα ηεο ππεξεζίαο, θαη ηελ εκεξνκελία θαη ψξα πνπ θαηαγξάθηεθε. Καη ζηηο δχν πεξηπηψζεηο ηα απνηειέζκαηα εκθαλίδνληαη ζε Grid View νκαδνπνηεκέλα αλά 10. Δπίζεο, εάλ ζε πεξίπησζε πνπ ηελ ψξα πνπ ρξεζηκνπνηνχκε ηε ζπγθεθξηκέλε θφξκα θάπνηνο ρξήζηεο ρξεζηκνπνηήζεη ην ελζσκαησκέλν ζχζηεκα, ζα εκθαληζηεί πάλσ δεμηά έλα κήλπκα κε ην νλνκαηεπψλπκν ηνπ ζπγθεθξηκέλνπ ρξήζηε. Απηή ε δηαπίζησζε γίλεηαη δηαβάδνληαο ηε βάζε

ΚΔΦ.2 ΟΛΟΚΛΗΡΩΜΔΝΟ ΤΣΗΜΑ IP-FRIDGE 51 δεδνκέλσλ, κηαο θαη φηαλ εηζέξρεηαη ν ρξήζηεο ζην ζχζηεκα δελ έρεη θαηαγξαθεί ε εκεξνκελία θαη ψξα απνζχλδεζεο ηνπ. 8. Φόπμα Καηαγπαθών Γιασειπιζηή 2.5 ΔΦΑΡΜΟΓΔ ΚΑΗ ΜΔΛΛΟΝΣΗΚΔ ΔΠΔΚΣΑΔΗ Η αξρηθή ηδέα ηεο πινπνίεζεο ηνπ ζπζηήκαηνο ήηαλ λα ηνπνζεηεζεί ζε ςπγείν. Απηφ ζα κπνξεί λα είλαη είηε ςπγείν mini-bar, είηε νηθηαθφ, είηε ςπγείν αηφκσλ κε εηδηθέο αλάγθεο θαη γηα γεληθή ρξήζε ή εηδηθή (παξαθνινχζεζε πξνγξάκκαηνο δηαίηεο). Αθφκα, ζα κπνξνχζε λα πξνζαξκνζηεί θαη ζε αλάγθεο επαγγεικαηηθέο, φπσο ςπγεία super market, απνζήθεο πξψησλ πιψλ, ηαηξηθά ςπγεία, μελνδνρεία θ.α. Γεληθφηεξα, ζηε πεξίπησζε επαγγεικαηηθήο ρξήζεο, είλαη πνιχ ρξήζηκν θαη νηθνλνκηθφ απφ ηελ άπνςε φηη δελ είλαη απαξαίηεηε ε απαζρφιεζε θάπνηνπ ππαιιήινπ πνπ είλαη ππεχζπλνο γηα ζέκαηα φπσο ελεκέξσζε παξαγγειηψλ θαη έιεγρν ιήμεσο, κηαο θαη ην ζχζηεκα θάλεη ηνπο απαξαίηεηνπο ειέγρνπο παξαγγειηψλ θαη θαηάζηαζεο πξντφλησλ. Δπίζεο, είλαη ηθαλφ λα εγθαηαζηαζεί ζε αιπζίδεο θαηαζηεκάησλ. Με ηε ρξήζε ηνπ ζπζηήκαηνο γλσξίδνπκε πνηνο ρξήζηεο έπξαμε πνηα ελέξγεηα θαη πφηε. Καη θπζηθά, ν ρξήζηεο έρεη ηε δπλαηφηεηα απηή κφλν εάλ ηνπ έρεη επηηξαπεί ε ρξήζε θάησ απφ ηηο ζπγθεθξηκέλεο ζπλζήθεο.