ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ : Η Υ Δ Ε

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ : Η Υ Δ Ε"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ : Η Υ Δ Ε της φοιτήτριας του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Μ Κ : Θέμα Μελέτη και υλοποίηση πρωτοκόλλων επικοινωνίας για το διαδίκτυο των πραγμάτων (IoT) με εφαρμογή σε δίκτυο ρομποτικών οχημάτων Επιβλέπων Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Αριθμός Διπλωματικής Εργασίας: Πάτρα, Ιούλιος 2018

2

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η διπλωματική εργασία με θέμα Μελέτη και υλοποίηση πρωτοκόλλων επικοινωνίας για το διαδίκτυο των πραγμάτων (IoT) με εφαρμογή σε δίκτυο ρομποτικών οχημάτων της φοιτήτριας του τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Μαρίνας Κιούσης (Α.Μ.: ) παρουσιάστηκε δημόσια και εξετάστηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις / / Ο Επιβλέπων Ο Διευθυντής του Τομέα Ευάγγελος Δερματάς Αναπληρωτής Καθηγητής Θεόδωρος Αντωνακόπουλος Καθηγητής

4

5 Αριθμός διπλωματικής εργασίας: Θέμα: Μελέτη και υλοποίηση πρωτοκόλλων επικοινωνίας για το διαδίκτυο των πραγμάτων (IoT) με εφαρμογή σε δίκτυο ρομποτικών οχημάτων Φοιτήτρια: Μαρίνα Κιούση Επιβλέπων: Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Περίοδος εκπόνησης της εργασίας: Σεπτέμβριος Μάιος 2018 Η εργασία αυτή γράφτηκε στο X L A TEX και χρησιμοποιήθηκε η γραμματοσειρά GFS Didot του Greek Font Society. E

6

7 Σ Περίληψη της παρούσας διπλωματικής εργασίας η μελέτη και η κατανόηση βασικών εννοιών τόσο για το Διαδίκτυο των Πραγμάτων (IoT), όσο και για τη λειτουργία του λειτουργικού συστήματος του Android. Δουλεύοντας με το hardware της Dialog Semiconductor (IoT Sensor Development Kit), το software της αντίστοιχης Android εφαρμογής (Smart- Bond IoT Sensors) και την cloud πλατφόρμα της Yodiwo, υλοποιήθηκε ένα IoT σύστημα και αναπτύχθηκαν cloud και android εφαρμογές. Αρχικά, γίνεται μία εισαγωγή στις έννοιες και τα χαρακτηριστικά του IoT και του Cloud Computing (Υπολογιστικό Νέφος), αναλύονται τα σημαντικότερα στοιχεία των Δικτυωμένων Ρομποτικών Συστημάτων, παρουσιάζονται η αρχιτεκτονική και τα βασικά στοιχεία του συστήματος Android και επεξηγούνται τα εργαλεία που χρησιμοποιήθηκαν. Στη συνέχεια, στον ήδη υπάρχοντα κώδικα της εφαρμογής της Dialog, ο οποίος δεν υποστήριζε συνδεσιμότητα με το cloud, ενσωματώθηκε ο Android Agent της Yodiwo. Όταν εδραιωθηκε η επικοινωνία με το cloud και στάλθηκαν τα δεδομένα από τους αισθητήρες του kit με επιτυχία, δημιουργήθηκαν μερικές IoT cloud-based εφαρμογές (demos). Στο κινητό δημιουργήθηκε το κατάλληλο UI ώστε ο χρήστης της Android εφαρμογης να έχει έλεγχο επί των cloud εφαρμογών. Τέλος, αναπτύχθηκε η εφαρμογή RSSI Heatmap. Σε αυτή ο χρήστης μπορεί να μετρήσει την ισχύ του σήματος του Bluetooth Low Energy από το kit της Dialog σε διάφορα σημεία στον χώρο και ακολουθεί η γραφική απεικόνηση των τιμών σε ένα χάρτη θερμότητας (heatmap). Η εφαρμογή αυτή υποστηρίζει cloud συνδεσιμότητα, καθώς ο χρήστης μπορεί να ανεβάσει την τελική εικόνα στο cloud, όπου αποθηκεύεται σε μια βάση δεδομένων και τα αποτελέσματα απεικονίζονται στα dashboards της Yodiwo. vii

8 T Abstract he main focus of this diploma dissertation is the study and general understanding of Internet of Things (IoT) and Android operating system basic functionalities. Utilizing Dialog Semiconductor s hardware (IoT Sensor Development Kit), corresponding Android application s software (SmartBond IoT Sensors) and Yodiwo s cloud platform, an IoT system was implemented as well as cloud and android applications were developed. In the first four chapters, a brief introduction is given, regarding terms and characteristics of IoT and Cloud Computing, general features of Network Robot Systems, architecture and basic components of Android OS, and details of the tools used. In the following chapter, Yodiwo s Android Agent was integrated in the code of Dialog s IoT Sensor Kit application, which originally did not support cloud connectivity. When communication was established and data were successfully transmitted to Yodiwo s cloud, several cloud demo applications were created. In the Android device, the proper user interface (UI) was created for a full user experience. In the last chapter, details of the development of the RSSI Heatmap Android application are presented. In the said application the user is able to measure the received Bluetooth Low Energy (BLE) signal strength from Dialog s sensor kit at various points in the room, and the values are graphically displayed in a heatmap. This application also supports cloud connectivity: the user may choose to upload the generated heatmap image to Yodiwo s cloud, where the data are saved to a database and the final results are visualized at Yodiwo s dashboards. viii

9 Ευχαριστίες Θ ήθελα να ευχαριστήσω την για τη συντροφιά και τη στήριξη που μου πρόσφερε καθ όλη τη διάρκεια εκπόνησης της εργασίας. ix

10 Απόδοση αγγλικών όρων Internet of Things Cloud Computing Gateway Hardware Software User Interface Heatmap Διαδίκτυο των Πραγμάτων Υπολογιστικό Νέφος Πύλη Υλικό Λογισμικό Διεπαφή Χρήστη Χάρτης Θερμότητας Ακρωνύμια IoT IoRT NRS ROS BLE RSSI API IDE SDK OS OSI IP HTTP REST MQTT PaaS YCP DB UI Internet of Things Internet of Robotic Things Network Robot Systems Robot Operating System Bluetooth Low Energy Received Signal Strength Indicator Application Programming Interface Integrated Development Environment Software Development Kit Operating System Open Systems Interconnection Internet Protocol HyperText Transfer Protocol Representational State Transfer Messaging Queuing Telemetry Transport Platform as a Service Yodiwo Cloud Platform Database User Interface x

11 ΠΕΡΙΕΧΟΜΕΝΑ Περίληψη Abstract Περιεχόμενα vii viii xi 1 Internet of Things Εισαγωγικά στοιχεία Βασικοί Όροι Χαρακτηριστικά & Απαιτήσεις Αρχιτεκτονική Επικοινωνία Μοντέλα επικοινωνίας στο IoT Πρωτόκολλα επικοινωνίας Διαδίκτυο και APIs TCP, UDP και IP HTTP URIs XML JSON Διαδικτυακές Υπηρεσίες (Web Services) MQTT Web APIs Cloud Computing Σημαντικά χαρακτηριστικά Μοντέλα Cloud Computing xi

12 xii Μοντέλα ανάπτυξης Fog Computing Χαρακτηριστικά Network Robot System Εισαγωγικά στοιχεία Cloud Robotics Internet of Robotic Things (IoRT) Αρχιτεκτονική Χαρακτηριστικά Robot Operating System (ROS) ROS Equation Βασικές Έννοιες Android Τι είναι το Android Platform Architecture The Linux Kernel Hardware Abstraction Layer (HAL) Android Runtime (ART) Native C/C++ Libraries Java API Framework System Apps Android Fundumentals App components The manifest file App resources Κύκλος ζωής ενός Activity Android Studio Εργαλεία Εισαγωγικά στοιχεία IoT Sensor Development Kit Bluetooth Sensors Yodiwo Cloud Platform Τοπολογία APIs Υλοποίηση Συστήματος Εισαγωγικά στοιχεία Σύνδεση με το cloud Cloud Demos Demo 1: Real-Time Data Monitoring Demo 2: Environmental Sensors - Notifications Demo 3: Historical Environmental Data

13 xiii 5.4 Δημιουργία UI RSSI Heatmap Application Εισαγωγικά στοιχεία Τι είναι το RSSI Τι είναι το Heatmap Υλοποίηση Android κομμάτι Cloud κομμάτι Συμπεράσματα και Προοπτικές Σύνοψη & Συμπεράσματα Μελλοντικό έργο Επέκταση στα ρομποτικά συστήματα Βιβλιογραφία 71 Παράρτημα Αʹ IoT Protocols 76 Παράρτημα Βʹ Sensors 77 Παράρτημα Γʹ Κώδικας C# 78 Γʹ.1 Demo 2: Environmental Sensors - Notifications Γʹ.2 Demo 3: Historical Environmental Data Παράρτημα Δʹ MySQL Queries 82

14 ΚΕΦΑΛΑΙΟ 1 INTERNET OF THINGS 1.1 Εισαγωγικά στοιχεία Τ Διαδίκτυο των πραγμάτων ή Ίντερνετ των πραγμάτων (αγγλικά: Internet of things) αποτελεί το δίκτυο επικοινωνίας πληθώρας συσκευών, οικιακών συσκευών, αυτοκινήτων καθώς και κάθε αντικειμένου που ενσωματώνει ηλεκτρονικά μέσα, λογισμικό, αισθητήρες και συνδεσιμότητα σε δίκτυο ώστε να επιτρέπεται η σύνδεση και η ανταλλαγή δεδομένων. Απλούστερα, η φιλοσοφία του IoT είναι η σύνδεση όλων των ηλεκτρονικών συσκευών μεταξύ τους (τοπικό δίκτυο) ή με δυνατότητα σύνδεσης στο διαδίκτυο (παγκόσμιο ιστό). 1.2 Βασικοί Όροι Actuator¹ Είναι μια συσκευή που εισάγει κίνηση μετατρέποντας την ηλεκτρική ενέργεια σε μηχανική ενέργεια σε ένα ηλεκτρομηχανικό σύστημα. Sensor¹ Είναι μια συσκευή που χρησιμοποιείται για τη μέτρηση ενός συγκεκριμένου χαρακτηριστικού του περιβάλλοντος περιβάλλοντος, όπως η θερμοκρασία. ¹Η χρήση ενεργοποιητών (actuators) και αισθητήρων (sensors) για τη σύνδεση των πραγμάτων του φυσικού κόσμου με το Διαδίκτυο είναι ένα βασικό στοιχείο του IoT. 1

15 2 Internet of Things Thing Είναι μια οντότητα ή φυσικό αντικείμενο που έχει ένα μοναδικό αναγνωριστικό, ένα ενσωματωμένο σύστημα και την ικανότητα να μεταφοράς δεδομένων μέσω ενός δικτύου. Gateway Είναι ένας κόμβος του δικτύου που συνδέει δύο ή περισσότερα δίκτυα που χρησιμοποιούν διαφορετικά πρωτόκολλα. Τα gateways μπορούν να λάβουν διάφορες μορφές (router ή υπολογιστές) και μπορούν να εκτελέσουν μια ποικιλία εργασιών (traffic filtering, proxies, protocol translations). Big Data Πρόκειται για δεδομένα που παράγονται σε μεγάλες ποσότητες σε πραγματικό χρόνο ως μίγμα δομημένων και αδόμητων πληροφοριών και μπορεί να είναι αβέβαιης προέλευσης. Λόγω του όγκου και της πολυπλοκότητάς τους, τα παραδοσιακά συστήματα διαχείρισης πληροφορίας είναι ανεπαρκή να τα διαχειριστούν. Έχουν σημαντικό ρόλο στο IoT, καθώς οι αισθητήρες παράγουν πολλά δεδομένα και είναι αναγκάια η επεξεργασία, αποθήκευση και εξαγωγή συμπερασμάτων από αυτά. 1.3 Χαρακτηριστικά & Απαιτήσεις Οι γενικές απαιτήσεις του ΙοΤ είναι [1]: Heterogeneity (Ανομοιογένεια): Το ΙοΤ χαρακτηρίζεται από μεγάλη ανομοιογένεια, λόγω του μεγάλου αριθμού διαφορετικών συσκευών που είναι συνδεδεμένες. Η διαχείριση και η υποστήριξη διαφορετικών συσκευών/ τεχνολογιών/ υπηρεσιών/ περιβάλλοντων, αποτελεί βασική απαίτηση του ΙοΤ. Scalability (Επεκτασιμότητα): Δισεκατομμύρια αντικειμένων επικοινωνούν μεταξύ τους. Η αποτελεσματική διαχείριση του μεγάλου όγκου των ανταλλασσόμενων δεδομένων, των πόρων και των λειτουργιών είναι απαραίτητη προϋπόθεση ορθής λειτουργίας του ΙοΤ. Cost minimization (Ελαχιστοποίηση κόστους): Η ελαχιστοποίηση του κόστους ανάπτυξης/συντήρησης, καθώς και η ελαχιστοποίηση της κατανάλωσης ενέργειας αποτελούν βασικό μέλημα των σχεδιαστών μιας ΙοΤ αρχιτεκτονικής. Flexibility (Ευελιξία): Απαιτείται δυναμική διαχείριση και επαναπρογραμματισμός των συσκευών, καθώς η κατάστασή τους μεταβάλλεται διαρκώς (π.χ. συνδεδεμένο/αποσυνδεδεμένο, ενεργοποίηση/απενεργοποίηση λειτουργίας ύπνου). Quality of Service (QoS - Ποιότητα υπηρεσιών): Η εγγύηση υψηλής ποιότητας παρεχόμενων υπηρεσιών και εφαρμογών έχει μεγάλη σημασία, ιδιαίτερα όταν οι εφαρμογές αυτές πραγματεύονται real-time πληροφορίες.

16 Αρχιτεκτονική 3 Secure environment (Ασφάλεια): Το ΙοΤ πρέπει να εγγυηθεί ασφαλές περιβάλλον και αξιόπιστο δίκτυο, παρέχοντας ασφάλεια στις επικοινωνίες μέσω της ταυτοποίησης των συσκευών και των χρηστών, διατηρώντας την ακεραιότητα των δεδομένων και των συσκευών και προστατεύοντας τα προσωπικά δεδομένα. 1.4 Αρχιτεκτονική Η επικρατέστερη ΙοΤ αρχιτεκτονική είναι η αρχιτεκτονική τριών επιπέδων [2] [3]. Τα τρία αυτά επίπεδα είναι: 1. Perception Layer (Επίπεδο Αντίληψης) Σκοπός αυτού του επιπέδου είναι η αναγνώριση των αντικειμένων και η συλλογή πληροφοριών από αυτά. Στη βιβλιογραφία συναντάται συχνά και ο όρος επίπεδο έξυπνων αντικειμένων ή επίπεδο αισθητήρων. Το επίπεδο αντίληψης μπορεί να περιλαμβάνει κάμερες, αισθητήρες, ενεργοποιητές, ετικέτες RFID, GPS, τερματικά και δίκτυα αισθητήρων. 2. Network Layer (Επίπεδο Δικτύου) Βασική λειτουργία του επιπέδου δικτύου αποτελεί η ορθή και γρήγορη δρομολόγηση και μετάδoση των πακέτων σε ένα δίκτυο. Στο επίπεδο αυτό περιλαμβάνονται τεχνολογίες δικτύων, όπως ασύρματα ή ενσύρματα δίκτυα και τοπικά δίκτυα (LAN). Τα κυριότερα μέσα, για τη μετάδοση των πληροφοριών, είναι τα FTTx, 3G/4G, WiFi, ETH- ERNET, Bluetooth, ZigBee και η τεχνολογία υπερύθρων (infrared). Επιπλέον, στο επίπεδο αυτό μπορεί να πραγματοποιηθεί η αποθήκευση και η επεξεργασία ενός μεγάλου αριθμού δεδομένων. 3. Application Layer (Επίπεδο Εφαρμογής) Το επίπεδο εφαρμογής είναι υπεύθυνο για την επεξεργασία των ληφθέντων δεδομένων από το επίπεδο δικτύου. Μέσω διαφόρων εφαρμογών, ο χρήστης μπορεί να έρθει σε επαφή με τα έξυπνα αντικείμενα που παρέχει το επίπεδο αντίληψης. Οι εφαρμογές αυτές έχουν επεκταθεί σε πολλούς τομείς, οι οποίοι παρουσιάζονται στην αμέσως επόμενη υποενότητα. Επιπλέον, το επίπεδο εφαρμογής περιλαμβάνει και το ενδιάμεσο λογισμικό (middleware), το οποίο αποτελεί τον ενδιάμεσο συνδετικό κρίκο μεταξύ των δύο επιπέδων, της εφαρμογής και του δικτύου. Το middleware μπορεί να αποτελέσει ξεχωριστό επίπεδο. Τα τρία επίπεδα που αναλύθηκαν είναι βασικά σε όλες τις αρχιτεκτονικές. Παρόλα αυτά, ορισμένοι προσθέτουν δύο επιπλέον επίπεδα: επίπεδο ενδιάμεσου λογισμικού και επίπεδο επιχείρησης (Εικόνα 1.1) [2] [3].

17 4 Internet of Things Εικόνα 1.1: Layered architecture of IoT 4. Middleware Layer (Επίπεδο Ενδιάμεσου Λογισμικού) Το επίπεδο αυτό συνδέει το επίπεδο δικτύου με το επίπεδο εφαρμογής. Στην ουσία, αποτελεί το λογισμικό, το οποίο επιτρέπει στις εφαρμογές την πρόσβαση στα δεδομένα που παρέχουν τα έξυπνα αντικείμενα. Στο επίπεδο αυτό πραγματοποιούνται πολλές λειτουργίες επεξεργασίας και αποθήκευσης δεδομένων. Οι πλατφόρμες λογισμικού, αποτελούν ένα τμήμα αυτού του επιπέδου. 5. Business Layer (Επίπεδο Επιχείρησης) Το κέρδος πάντα αποτελούσε βασικό στόχο των εταιρειών. Το επίπεδο αυτό ασχολείται με την οικονομική διαχείριση των παρεχόμενων υπηρεσιών. Οι επιχειρήσεις, μέσω των εφαρμογών τους, παρέχουν πληροφορίες και δεδομένα, παίρνοντας ως αντάλλαγμα ένα χρηματικό αντίτιμο. 1.5 Επικοινωνία Μοντέλα επικοινωνίας στο IoT Από λειτουργικής πλευράς, είναι χρήσιμο να αναφερθεί ο τρόπος με τον οποίο οι συσκευές του IoT συνδέονται και επικοινωνούν σε σχέση με τα τεχνικά μοντέλα επικοινωνίας. Τον Μάρτιο του 2015, το Συμβούλιο Αρχιτεκτονικής του Διαδικτύου (Internet Architecture Board, IAB) κυκλοφόρησε ένα κατευθυντήριο αρχιτεκτονικό έγγραφο για τη δικτύωση των έξυπνων αντικειμένων, που περιγράφει ένα πλαίσιο τεσσάρων κοινών μοντέλων επικοινωνίας που χρησιμοποιείται από συσκευές IoT. Παρακάτω παρουσιάζονται τα βασικά χαρακτηριστικά του κάθε μοντέλου ξεχωριστά [4] :

18 Επικοινωνία 5 Device-to-Device Το μοντέλο επικοινωνίας device-to-device αντιπροσωπεύει δύο ή περισσότερες συσκευές που συνδέονται άμεσα και επικοινωνούν μεταξύ τους, χωρίς τη χρήση ενός ενδιάμεσου application server. Αυτές οι συσκευές επικοινωνούν σε πολλούς τύπους δικτύων, συμπεριλαμβανομένων των δικτύων IP ή το Internet. Συχνά, ωστόσο, αυτές οι συσκευές χρησιμοποιούν πρωτόκολλα όπως το Bluetooth, Z-Wave, ή ZigBee για την καθιέρωση της μεταξύ τους επικοινωνίας, όπως φαίνεται στην Εικόνα 1.2. Εικόνα 1.2: Example Of Device-To-Device Communication Model Αυτό το μοντέλο δικτύο επιτρέπει σε συσκευές που συμμορφώνονται με ένα συγκεκριμένο πρωτόκολλο επικοινωνίας να επικοινωνούν και να ανταλλάσσουν μηνύματα μεταξύ τους. Χρησιμοποιείται κυρίως σε εφαρμογές που στέλνονται μικρά πακέτα δεδομένων πληροφορίας μεταξύ των συσκευών, όπως σε συστήματα οικιακών αυτοματισμών (π.χ. οικιακές IoT συσκευές όπως λάμπες, διακόπτες, θερμοστάτες που επικοινωνούν μεταξύ τους). Device-to-Cloud Στο μοντέλο επικοινωνίας device-to-cloud, η IoT συσκευή συνδέεται απευθείας σε μια διαδικτυακή υπηρεσία cloud, όπως ένας πάροχος υπηρεσιών εφαρμογής (application service provider), για την ανταλλαγή δεδομένων και τη διαχείριση της κίνησης των μηνυμάτων. Αυτή η προσέγγιση συχνά εκμεταλλεύεται τους υπάρχοντες μηχανισμούς επικοινωνίας, όπως το ενσύρματο Ethernet ή το ασύρματο Wi-Fi, για να δημιουργηθεί μια σύνδεση μεταξύ της συσκευής και του δικτύου IP, το οποίο τελικά θα συνδεθεί με την cloud υπηρεσία. Αυτό φαίνεται στην Εικόνα 1.3. Αυτό το μοντέλο επικοινωνίας χρησιμοποιείται από κάποια δημοφιλή καταναλωτικά προϊόντα (π.χ. η SmartTV της Samsung) Τα προϊόντα αυτά συνδέονται στο Internet και μεταξύ άλλων μεταδίδουν δεδομένα σε μια cloud υπηρεσία για ανάλυση ή/και αποθήκευση, παρέχουν στον χρήστη απόμακρο έλεγχο της συσκευής μέσω κάποιου smartphone ή web interface και κάνουν αναβαθμίσεις λογισμικού.

19 6 Internet of Things Εικόνα 1.3: Example Of Device-To-Cloud Communication Model Device-to-Gateway Στο μοντέλο device-to-gateway, ή αλλιώς device-to-application-layer-gateway (ALG), η συσκευή IoT συνδέεται με μια cloud υπηρεσία μέσω μιας ALG υπηρεσίας. Με πιο απλά λόγια, αυτό σημαίνει ότι μια τοπική gateway Εικόνα 1.4: Example Of Device-To-Gateway Communication Model

20 Επικοινωνία 7 συσκευή με το κατάλληλο application software δρα ως μεσολαβητής μεταξύ της IoT συσκευής και της cloud υπηρεσίας και περέχει ασφάλεια και άλλες λειτουργίες, όπως μετάφραση δεδομένων ή πρωτοκόλλων. Το μοντέλο αυτό απεικονίζεται στην Εικόνα 1.4. Μια μορφή του μοντέλου device-to-gateway που συναντάται καθημερινά σε καταναλωτικές συσκευές είναι τα smartphones. Τα smartphones λειτουργούν ως gateways ώστε συσκευές που από μόνες δεν έχουν πρόσβαση στο Internet να μπορούν να συνδεθούν σε μια cloud υπηρεσία (π.χ. personal fitness trackers). Μια άλλη μορφή αυτού του μοντέλου είναι τα hub devices, τα οποία λειτουργούν ως local gateways και γεφυρώνουν το χάσμα που υπάρχει ανάμεσα σε συσκεύες με διαφορετικά πρωτόκολλα επικοινωνίας. Back-End Data-Sharing Το back-end data-sharing μοντέλο αναφέρεται στην αρχιτεκτονική που επιτρέπει στους χρήστες να εξάγουν και να αναλύσουν τα δεδομένα που προέρχονται από smart objects από μια cloud υπηρεσία σε συνδυασμό με δεδομένα από άλλες πηγές. Η προσέγγιση αυτή αποτελεί μια προέκταση του μοντέλου επικοινωνίας device-to-cloud, στο οποίο οι IoT συσκευές ανεβάζουν τα δεδομένα μόνο σε έναν πάροχο υπηρεσιών. Το μοντέλο back-end data-sharing υποδηλώνει ότι χρειάζονται cloud APIs και μια πιο συνολική προσέγγιση των cloud υπηρεσιών για την επίτευξη της αμοιβαίας χρήσης των δεδομένων των smart devices που φιλοξενούνται στο cloud. Αυτό φαίνεται στην Εικόνα 1.5. Εικόνα 1.5: Back-End Data-Sharing Model

21 8 Internet of Things Πρωτόκολλα επικοινωνίας Από τα παραπάνω έγινε εμφανές πως το IoT σχετίζεται με πληθώρα πρωτοκόλλων επικοινωνίας, τα οποία κατηγοριοποιούνται συνήθως² με βάση το μοντέλο αναφοράς OSI³, όπως φαίνεται και στην Εικόνα 1.6. Εικόνα 1.6: Protocol Stacks of IoT Τα σημαντικότερα πρωτόκολλα που σχετίζονται με το διαδίκτυο εξετάζονται στην Ενότητα 1.6 που ακολουθεί. 1.6 Διαδίκτυο και APIs Η απότομη εξέλιξη του διαδικτύου έφερε στην επιφάνεια μια νέα ανάγκη, την ανάγκη της επικοινωνίας μεταξύ εφαρμογών. Ως αποτέλεσμα, εκτός από την εξέλιξη του ΙοΤ την τελευταία δεκαετία, επήλθε μεγάλη πρόοδος στον τομέα των διαδικτυακών υπηρεσιών (Web Services). Προτού προχωρήσουμε σε περαιτέρω ανάλυση της έννοιας των διαδικτυακών υπηρεσιών, κρίνεται απαραίτητη η κατανόηση βασικών τεχνολογιών που διέπουν την επικοινωνία στο διαδίκτυο [6] TCP, UDP και IP TCP Το Transmission Control Protocol αποτελεί ένα από τα δυο βασικά πρωτόκολλα του επιπέδου μεταφοράς στο μοντέλο OSI. Παρέχει αξιόπιστη αμφίδρομη επικοινωνία, ενώ διέπεται από τα ακόλουθα χαρακτηριστικά: Μεταφορά δεδομένων Σύνδεση δύο τερματικών (endpoints) ²Άλλοι τρόποι κατηγοροποίησης παρατίθενται στο Παράρτημα Αʹ. ³Το μοντέλο αναφοράς Ανοικτής Διασύνδεσης Συστημάτων, ή μοντέλο αναφοράς OSI, είναι μια διαστρωματωμένη, αφηρημένη περιγραφή για τη σχεδίαση τηλεπικοινωνιακών και δικτυακών πρωτοκόλλων η οποία καθορίστηκε από την πρωτοβουλία Ανοικτή Διασύνδεση Συστημάτων OSI. Είναι γνωστό και ως μοντέλο των επτά επιπέδων.

22 Διαδίκτυο και APIs 9 Τα δεδομένα να παραλαμβάνονται όπως στάλθηκαν Αποστολή δεδομένων σε ακολουθία Αξιόπιστη εκκίνηση και τερματισμός UDP Το User Datagram Protocol είναι το άλλο βασικό πρωτόκολλο στο επίπεδο μεταφοράς που χρησιμοποιείται στο διαδίκτυο. Συγκρινόμενο με το TCP, το UDP είναι λιγότερο πολύπλοκο αλλά ταυτόχρονα και λιγότερο αξιόπιστο όσον αφορά τη λήψη των πακέτων που αποστέλνονται στο άλλο τερματικό. Το πρωτόκολλο αυτό χρησιμοποιείται κυρίως σε περιπτώσεις όπου απαιτείται μεγάλη ταχύτητα στην αποστολή των δεδομένων, όπως η ζωντανή μετάδοση ομιλίας ή βίντεο, με στόχο να μην διακοπεί η συνεχή ροή των δεδομένων. IP Το Internet Protocol παρέχει έναν μηχανισμό επικοινωνίας για υπολογιστές και συσκευές. Το πρωτόκολλο αυτό διαχωρίζει τον κάθε συνδεδεμένο στο διαδίκτυο υπολογιστή ή συσκευή μέσω ενός μοναδικού αριθμού γνωστού ως IP address (διεύθυνση IP). Τα TCP ή UDP πακέτα περικλείονται συνήθως σε πακέτα IP HTTP Το Πρωτόκολλο Μεταφοράς Υπερκειμένου (HyperText Transfer Protocol, HTTP) είναι ένα πρωτόκολλο επικοινωνίας του επιπέδου εφαρμογής (application layer) στο μοντέλο OSI, υπεύθυνο για την ανταλλαγή και τη μεταφορά περιεχομένου (όπως hypertext). Υλοποιεί μια τεχνική αίτησηςαπάντησης (request-response), χρησιμοποιώντας μεθόδους που θα αναλυθούν στη συνέχεια. Υποστηρίζει τη μεταφορά και TCP και UDP πακέτων. Αποτελεί το κύριο πρωτόκολλο που χρησιμοποιείται στους φυλλομετρητές του Παγκοσμίου Ιστού (Web browsers), με στόχο τη διασύνδεση του διακομιστή (server) και του πελάτη (client), επιτρέποντας τη μεταξύ τους μεταφορά δεδομένων. Οι βασικοί μέθοδοι που χρησιμοποιούνται ευρέως είναι: POST: Δημιουργία νέου πόρου GET: Ανάκτηση πληροφορίας PUT: Ενημέρωση του περιεχομένου του πόρου DELETE: Διαγραφή ενός πόρου URIs Στην επιστήμη των υπολογιστών, πόρος (resource) ενός συστήματος είναι οποιοδήποτε φυσικό ή λογικό συστατικό, η διαθεσιμότητα του οποίου είναι περιορισμένη σε ένα υπολογιστικό σύστημα. Ως πόρος μπορεί

23 10 Internet of Things να χαρακτηριστεί ένα ηλεκτρονικό έγγραφο, μια εικόνα, μια πηγή πληροφορίας, μια υπηρεσία ή ακόμα και ένα σύνολο άλλων πόρων. Για να καταστεί εφικτή η χρήση ενός πόρου, θα πρέπει να προσδιορίζεται από τουλάχιστον ένα URI (Universal Resource Identifier Ομοιόμορφο Αναγνωριστικό Πόρου). Το URI είναι το όνομα και η διεύθυνση του πόρου. Η πιο συνηθισμένη μορφή URI είναι το URL (Uniform Resource Locator Ενιαίος Εντοπιστής Πόρων), το οποίο καθορίζει τη διεύθυνση του πόρου στο διαδίκτυο και επιτρέπει την πρόσβαση σε αυτόν. Ως URIs αναφέρονται οι απλά μορφοποιημένες συμβολοσειρές, οι οποίες ταυτοποιούν μέσω ονόματος, τοποθεσίας ή οποιουδήποτε άλλου χαρακτηριστικού- έναν πόρο XML Η XML είναι μια γλώσσα σήμανσης, η οποία καθορίζει ένα σύνολο κανόνων για την κωδικοποίηση εγγράφων και τη μετατροπή τους σε αναγνώσιμη μορφή και από τον άνθρωπο και από τη μηχανή. Αποτελεί μια μορφοποίηση δεδομένων κειμένου, με υποστήριξη Unicode για όλες τις γλώσσες του κόσμου. Η σχεδίαση της XML εστιάζει σε έγγραφα, ωστόσο χρησιμοποιείται ευρέως για την αναπαράσταση αυθαίρετων δομών δεδομένων, όπως αυτές που χρησιμοποιούνται στα web services JSON Το JSON (JavaScript Object Notation) είναι μια lightweight μορφή ανταλλαγής δεδομένων. Είναι εύκολο τόσο για τους ανθρώπους να το διαβάσουν και το γράψουν, όσο και για τις μηχανές να το αναλύσουν (parse) και να το παράγουν (generate). Χρησιμοποιείται για την ασύγχρονη επικοινωνία browser-server, έχοντας αντικαταστήσει πλέον την XML. Το JSON αποτελείται από δυο δομές: Μια συλλογή από ζευγάρια ονομάτων/τιμών. Σε διάφορες γλώσσες προγραμματισμού, αυτό γίνεται αντιληπτό ως object, record, struct, dictionary, hash table, keyed list, associative array. Μία ταξινομημένη λίστα τιμών. Στις περισσότερες γλώσσες προγραμματισμού, αυτό γίνεται αντιληπτό ως array, vector, list, sequence Διαδικτυακές Υπηρεσίες (Web Services) Ένα web service είναι μια συλλογή ανοικτών πρωτοκόλλων και προτύπων που χρησιμοποιούνται για την ανταλλαγή δεδομένων μεταξύ εφαρμογών ή συστημάτων. Software εφαρμογές που είναι γραμμένες σε διάφορες γλώσσες προγραμματισμού και τρέχουν σε διάφορες πλατφόρμες μπορούν να χρησιμοποιήσουν web services για να ανταλλάξουν δεδομένα μέσω δικτύων ηλεκτρονικών υπολογιστών, όπως το Internet [7].

24 Διαδίκτυο και APIs 11 Κάνοντας μια ευρεία ταξινόμηση, τα πρωτόκολλα των web services κατηγοριοποιούνται σε δυο ομάδες: το SOAP (Simple Object Access Protocol) και το REST (REpresentational State Transfer) [8]. SOAP Το πρωτόκολλο πρόσβασης απλού αντικειμένου (Simple Object Access Protocol SOAP) είναι ένα πρωτόκολλο που καθορίζει τη δομή των μηνυμάτων/πληροφοριών που ανταλλάσσονται σε ένα δίκτυο κατά τη διάρκεια παροχής ενός web service. Ορίζει ένα μηχανισμό RPC με χρήση της XML και στόχο την αλληλεπίδραση πελάτη-εξυπηρετητή μέσω ενός δικτύου. Το μήνυμα αποτελείται από μία δομή XML, η οποία ονομάζεται SOAP envelope και περιέχει δύο στοιχεία, την προαιρετική Επικεφαλίδα (SOAP Header) και το Σώμα του μηνύματος (SOAP Body). REST To REST (REpresentational State Transfer) REST ορίζει ένα σύνολο αρχιτεκτονικών αρχών για τη σχεδίαση υπηρεσιών διαδικτύου, χρησιμοποιώντας τους πόρους ενός συστήματος. Καθορίζει επίσης και τον τρόπο διευθυνσιοδότησης και μεταφοράς των καταστάσεων του πόρου, μέσω του πρωτοκόλλου HTTP, από ένα ευρύ φάσμα πελατών, ενώ είναι γραμμένες σε διαφορετικές γλώσσες. Τα τελευταία χρόνια, αποτελεί το κυρίαρχο μοντέλο σχεδίασης υπηρεσιών διαδικτύου. Μια REST διαδικτυακή υπηρεσία ακολουθεί τέσσερις βασικές αρχές σχεδίασης: Χρήση βασικών HTTP μεθόδων Έλλειψη κατάστασης Διευθυνσιοδότηση κάθε πόρου από ένα μοναδικό URI Χρήση XML ή/και JSON MQTT Το MQTT (Message Queue Telemetry Transport) είναι ένα απλό και ελαφρύ (lightweight) πρωτόκολλο ανταλλαγής μηνυμάτων για M2M⁴ επικοινωνίες. Από το πρώτο κιόλας έτος δημιουργίας του άρχισε να χρησιμοποιείται ευρέως σε ποικίλες βιομηχανικές εφαρμογές. Είναι βασισμένο στην τεχνική publish-subscribe, η οποία διευκολύνει σε μεγάλο βαθμό το σχεδιασμό ΙοΤ εφαρμογών, όπως θα αναλυθεί στη συνέχεια. Οι αρχές σχεδίασης που ακολουθεί το πρωτόκολλο είναι η ελαχιστοποίηση του εύρους ζώνης του δικτύου, καθώς και των απαιτούμενων πόρων (ενέργειας, μνήμης). Παράδειγμα τέτοιου πρωτοκόλλου αποτελεί το Facebook messenger. ⁴Το Machine to machine (M2M) αναφέρεται στην απευθείας επικοινωνία μεταξύ συσκευών χρησιμοποιώντας οποιοδήποτε κανάλι επικοινωνίας, συμπεριλαμβανομένων των ενσύρματων και ασύρματων.

25 12 Internet of Things Publish-Subscribe Η τεχνική Publish-Subscribe (PubSub) αποτελεί ένα πρότυπο αποστολής μηνυμάτων το οποίο εμπεριέχει τρεις ρόλους: 1. Publishers: Οι Publishers αποτελούν αυτούς που αποστέλλουν τα μηνύματα. Κατά την αποστολή μηνυμάτων δεν καθορίζουν ποιος θα είναι ο παραλήπτης του μηνύματος, αντ αυτού το μήνυμα αποστέλλεται σε κάποιο θέμα (topic) στον Broker. 2. Subscribers: Οι Subscribers αποτελούν τους παραλήπτες των μηνυμάτων. Ένας subscriber δηλώνει στον Broker το ενδιαφέρον του σε ένα συγκεκριμένο θέμα. Οποιοδήποτε μήνυμα σταλεί στο συγκεκριμένο θέμα, αποστέλλεται αυτομάτως και στους subscribers του θέματος. 3. Broker: Ο Broker στην ουσία αποτελεί τον ενδιάμεσο κόμβο που συνδέει όλους τους χρήστες (publishers και subscribers). Είναι ένας δρομολογητής (router) ο οποίος είναι υπεύθυνος να επιτρέπει την εγγραφή (subscription) των subscribers σε θέματα και να δρομολογεί τα εισερχόμενα γεγονότα (events) από τους publishers στους subscribers ανάλογα με το θέμα. Παράδειγμα αποτελεί ο MQTT Broker. Σύγκριση MQTT-HTTP Αν και συχνά γίνεται σύγκριση του MQTT με άλλα κοινά πρωτόκολλα, η πιο χρήσιμη σύγκριση είναι με το HTTP (Πίνακας 1.1). Και τα δυο αυτά πρωτόκολλα είναι βασισμένα στο TCP/IP, αλλά το HTTP είναι πολύ διαδεδομένο και σχεδόν όλες οι συσκευές με TCP/IP το διαθέτουν [8]. MQTT HTTP Design orientation Data centric Document centric Pattern Publish/subscribe Request/response Complexity Simple More complex Message size Service levels Extra libraries Small, with a compact binary header just two bytes in size Three quality of service settings Libraries for C (30 KB) and Java (100 KB) Larger, partly because status detail is text-based All messages get the same level of service Depends on the application (JSON, XML), but typically not small Data distribution Supports 1 to zero, 1 to 1, and 1 to n 1 to 1 only Πίνακας 1.1: Comparison between MQTT and HTTP

26 Cloud Computing Web APIs Το API (Application Programming Interface - Διεπαφή Προγραμματισμού Εφαρμογών) είναι ένα σύνολο ορισμών, πρωτοκόλλων και εργαλείων, τα οποία χρησιμοποιούνται για τη δημιουργία μιας εφαρμογής λογισμικού. Στην ουσία, είναι η διεπαφή των προγραμματιστικών διαδικασιών που παρέχει ένα λειτουργικό σύστημα, μια βιβλιοθήκη ή μια εφαρμογή προκειμένου να επιτρέπει να γίνονται προς αυτά αιτήσεις από άλλα προγράμματα ή/και ανταλλαγή δεδομένων. Ένας από τους βασικούς σκοπούς μίας διεπαφής είναι να ορίζει και να διατυπώνει το σύνολο των λειτουργιών-υπηρεσιών που μπορεί να παρέχει μια βιβλιοθήκη ή ένα λειτουργικό σύστημα σε άλλα προγράμματα, χωρίς να επιτρέπει πρόσβαση στον κώδικα που υλοποιεί αυτές τις υπηρεσίες. Το Web API (Διαδικτυακή Διεπαφή Προγραμματισμού Εφαρμογών) είναι μια διεπαφή προγραμματισμού εφαρμογών, που αποτελείται από ένα ή περισσότερα σημεία πρόσβασης δεδομένων ή διεργασιών. Για την επικοινωνία, εφαρμόζεται συγκεκριμένο σύστημα ανταλλαγής μηνυμάτων αιτήματος-απόκρισης. Τα μηνύματα συνήθως εκφράζονται σε JSON ή XML, και μεταδίδονται μέσω του διαδικτύου με βάση το πρωτόκολλο HTTP. RESTful APIs Ως RESTful ή REST API χαρακτηρίζεται ένα API που είναι βασισμένο στην αρχιτεκτονική REST και χρησιμοποιεί τις HTTP μεθόδους. Ένα REST API περιγράφει ένα σύνολο πόρων και ένα σύνολο λειτουργιών που μπορούν να καλέσουν αυτούς τους πόρους. Οι λειτουργίες ενός REST API μπορούν να κληθούν από οποιονδήποτε HTTP client. 1.7 Cloud Computing Το Cloud Computing (Υπολογιστικό Νέφος) αναφέρεται στις εφαρμογές που παραδίδονται ως υπηρεσίες μέσω του διαδικτύου και στα υπολογιστικά μηχανήματα (hardware) και στο λογισμικό (software) που βρίσκονται σε ένα κέντρο πληροφοριών που παρέχει αυτές τις υπηρεσίες. Οι υπηρεσίες συχνά αναφέρονται ως SaaS. Το hardware και το software στο κέντρο πληροφοριών είναι αυτό που συχνά αποκαλείται ως Cloud (νέφος). Το Cloud Computing είναι μια νέα μέθοδος υπολογισμών. Οι δομικοί πόροι (hardware, αποθήκευση και software του συστήματος) και οι εφαρμογές παρέχονται με μορφή υπηρεσιών. Κύρια χαρακτηριστικά του cloud είναι η χρήση εικονικών περιβάλλοντων και η δυναμική επεκτασιμότητα όποτε αυτές ζητηθούν. Οι cloud υπηρεσίες καταναλώνονται είτε μέσω ενός προγράμματος περιήγησης στο διαδίκτυο είτε μέσω μιας καθορισμένης εφαρμογής διασύνδεσης προγραμμάτων (API) [9].

27 14 Internet of Things Σημαντικά χαρακτηριστικά Υπάρχουν 5 ουσιώδη χαρακτηριστικά του Cloud Computing, τα οποία εξηγούν τη σχέση και τη διαφορά που υφίσταται συγκριτικά με τις παραδοσιακές υπολογιστικές μεθόδους [10] [9]. 1. Αυτο-εξυπηρέτηση κατά απαίτηση (On-Demand Self Service) Οι καταναλωτές μπορούν να εφοδιάζονται ή να απορρίπτουν την παροχή υπηρεσιών και να τροποποιούν τις επεξεργαστικές δυνατότητες αυτόματα, χωρίς να απαιτείται ανθρώπινη αλληλεπίδραση με τον πάροχο της κάθε υπηρεσίας (service provider). 2. Ευρεία πρόσβαση στο δίκτυο (Heterogeneous Access) Παρέχεται ικανότητα κάλυψης δικτύου και πρόσβαση μέσω τυποποιημένων μηχανισμών, οι οποίοι προωθούν τη χρήση από ετερογενείς client platforms (όπως mobile devices and workstations). 3. Διάθεση πόρων (Resource Pooling) Οι πόροι του παρόχου που χρησιμοποιούνται για υπολογιστικές διαδικασίες διατίθενται για να εξυπηρετήσουν πολλαπλούς χρήστες. Οι πόροι χρησιμοποιούν ένα multi-tenant μοντέλο και συνδυάζοντας δυναμικά φυσικούς και εικονικούς πόρους ανταποκρίνονται στην εκάστοτε καταναλωτική δύναμη. 4. Ταχεία ελαστικότητα (Rapid elasticity) Οι υπηρεσίες μπορούν να παρέχονται γρήγορα και ελαστικά. 5. Μετρούμενη υπηρεσία (Measured Service) Τα συστήματα Cloud Computing οργανώνουν και βελτιστοποιούν αυτόματα τη διάθεση πόρων παρέχοντας δυνατότητα μέτρησης των χρησιμοποιούμενων υπηρεσιών ανάλογα με το είδος (λ.χ αποθήκευσης, επεξεργασίας, εύρους σύνδεσης ή διαθέσιμων λογαριασμών χρηστών) Μοντέλα Cloud Computing Υπάρχουν 3 μοντέλα cloud computing και 3 θεμελιώδεις κατηγορίες οι οποίες συχνά αναφέρονται και ως μοντέλο SPI (Software, Platform or Infrastructure as a Service Λογισμικό, Πλατφόρμα ή Δομή ως υπηρεσία) [10] [9] (Εικόνα 1.7). 1. Software as a Service (SaaS): Δίνεται η δυνατότητα σε χρήστες να χρησιμοποιήσουν τις εφαρμογές μιας επιχείρησης έχοντας πρόσβαση σε αυτές μέσω μιας υποδομής Cloud Computing. Με αυτό τον τρόπο οι εφαρμογές είναι προσβάσιμες από διάφορα ήδη συσκευών και διάφορα ήδη διεπαφών, όπως είναι ένα πρόγραμμα περιήγησης στο διαδίκτυο (π.χ., firefox, chrome), ή μία διεπαφή προγράμματος. Ο χρήστης δεν διαχειρίζεστε ή έχει πρόσβαση στην υποκείμενη υποδομή του Cloud Computing συστήματος που τρέχουν οι εφαρμογές, συμπεριλαμβανομένων των δικτύων, των servers, των λειτουργικών

28 Cloud Computing 15 συστημάτων ή τον αποθηκευτικό τους χώρο, παρά μόνο στην ίδια την εφαρμογή. 2. Platform as a Service (PaaS): Δίνεται η δυνατότητα στον χρήστη να μπορεί να αναπτύξει εφαρμογές, χρησιμοποιώντας διάφορα ήδη γλωσσών προγραμματισμού, βιβλιοθηκών, υπηρεσιών και εργαλείων που παρέχονται από τον πάροχο, οι οποίες θα εκτελούνται από την Cloud υποδομή του παρόχου. Ο χρήστης δεν διαχειρίζεται ή έχει πρόσβαση στην υποκείμενη υποδομή του Cloud Computing συστήματος που τρέχουν οι εφαρμογές, συμπεριλαμβανομένων των δικτύων, των servers, των λειτουργικών συστημάτων ή τον αποθηκευτικό τους χώρο, αλλά έχει τον πλήρη έλεγχο των εφαρμογών που έχει αναπτύξει και ενδεχομένως έχει την δυνατότητα να διαμορφώσει τις ρυθμίσεις του περιβάλλοντος στο οποίο θα τρέξει η εφαρμογή του. 3. Infrastructure as a Service (IaaS): Δίνεται η δυνατότητα στον χρήστη να μπορεί να ελέγχει την κατανομή των υπολογιστικών πόρων, των χώρων αποθήκευσης, τη διαμόρφωση των δικτύων, και να ρυθμίζει γενικά όλες τις θεμελιώδεις υπολογιστικές δομές μιας Cloud υποδομής. Ο χρήστης είναι σε θέση να αναπτύξει και να εκτελέσει το δικό του λογισμικό χωρίς περιορισμούς, έχοντας πλήρη πρόσβαση μέχρι και στο λειτουργικό σύστημα που θα εκτελέσει την εφαρμογή του. Ο χρήστης δεν διαχειρίζεστε ή έχει πρόσβαση στην υποκείμενη υποδομή του Cloud συστήματος, αλλά έχει τον πλήρη έλεγχο των λειτουργικών συστημάτων, των χώρων αποθήκευσης και ενδεχομένως περιορισμένο έλεγχο σε κομμάτια της δικτύωσης (π.χ. firewalls, virtual switches). Εικόνα 1.7: Cloud Service Models

29 16 Internet of Things Μοντέλα ανάπτυξης Υπάρχουν 4 μοντέλα ανάπτυξης του cloud και χωρίζονται στις εξής κατηγορίες [9] : 1. Public Cloud (Δημόσιο): Η δομή του δημόσιου cloud είναι διαθέσιμη σε όλο το κοινό. 2. Private Cloud (Ιδιωτικό): Σε αυτού του είδους το cloud, η δομή είναι διαθέσιμη για έναν οργανισμό. 3. Community Cloud (Κοινότητας): Σε αυτού του είδους το cloud, η δομή είναι κοινή για αρκετούς οργανισμούς και υποστηρίζει μια συγκεκριμένη κοινότητα με κοινά ενδιαφέρονται και κοινές ανάγκες. 4. Hybrid Cloud (Υβριδικό): Το παρόν είναι ένα cloud αποτελούμενο από δύο ή περισσότερα clouds διαφορετικού είδους. 1.8 Fog Computing Το Fog Computing επεκτείνει ουσιαστικά το Cloud Computing και τις υπηρεσίες στην άκρη του δικτύου (edge), φέρνοντας τα πλεονεκτήματα και τη δύναμη του cloud πιο κοντά στο σημείο όπου δημιουργoύνται τα δεδομένα και απαιτούνται οι κατάλληλες ενέργειες. Οι IoT συσκευές συνδέονται με ένα fog node (data hub ή ένα smart device, ή σε ένα smart router ή gateway) όπου εκεί γίνεται προ-επεξεργασία των δεδομένων. Αυτός είναι ένας τρόπος να βελτιωθεί η απόδοτικότητα και να μειωθεί η ποσότητα των δεδομένων που μεταφέρονται στο cloud για επεξεργασία, ανάλυση και αποθήκευση. Τέλος, πρέπει να σημειωθεί πως το fog computing δεν μπορεί να αντικαταστήσει το cloud computing, αλλά το συμπληρώνει στα θέματα που το δεύτερο υστερεί, όπως θέματα ασφάλειας ή ταχύτητας [2] [11] [12] [13]. Fog Node Αποκεντρωμένη υπολογιστική υποδομή στην οποία τα δεδομένα, η απαιτούμενη υπολογιστική δύναμη, οι αποθηκευτικές απαιτήσεις και η λογική κατανέμονται με τον πιο αποτελεσματικό τρόπο μεταξύ της πηγής των δεδομένων και του cloud Χαρακτηριστικά Τα βασικότερα χαρακτηριστικά του fog computing είναι τα παρακάτω [2]: Low latency (Μικρή καθυστέρηση): Απαιτείται λιγότερος χρόνος για την πρόσβαση σε υπολογιστικούς και αποθηκευτικούς πόρους στα fog nodes (smart gateways). Location awareness (Αναγώριση θέσης): Καθώς το fog βρίσκεται στην άκρη του δικτύου, γνωρίζει τις τοποθεσίες των εφαρμογών και του

30 Fog Computing 17 περιβάλλοντος που τις περικλύει, κάτι το οποίο αποτελεί ένα σημαντικό χαρακτηριστικό των IoT εφαρμογών. Distributed nodes (Κατανεμημένοι κόμβοι): Τα fog nodes είναι κατανεμημένα σε αντίθεση με τα κεντρικά cloud nodes. Πολλαπλά fog nodes πρέπει να αναπτυχθούν σε γεωγραφικά διανεμημένες περιοχές, προκειμένουν να παρέχουν υπηρεσίες σε κινητές συσκευών αυτών των περιοχών. Mobility (Κινητικότητα): To fog υποστηρίζει την κινητικότητα αφού τα smart devices επικοινωνούν απευθείας με τα gateways που βρίσκονται εντός της εμβέλειάς τους. Real time response (Ανταπόκριση σε πραγματικό χρόνο): Τα fog nodes μπορούν να δίνουν άμεσες απαντήσεις με μικρότερη καθυστέρηση, σε αντίθεση με το cloud. Interaction with the cloud (Αλληλεπίδραση με το cloud): Τα fog nodes επιπλέον μπορούν να αλληλεπιδρούν με το cloud, στέλνοντας μόνο τα δεδομένα που είναι απαραίτητα.

31 ΚΕΦΑΛΑΙΟ 2 NETWORK ROBOT SYSTEM 2.1 Εισαγωγικά στοιχεία Ω Δικτυωμένα Ρομποτικά Συστήματα (Network Robot Systems - NRS) χαρακτηρίζονται τα ρομποτικά συστήματα τα οποία αποτελούνται από δικτυωμένα οχήματα, αισθητήρες, ενεργοποιητές και συσκευές επικοινωνίας και τα οποία είναι ικανά να αλληλεπιδρούν με συνεργατικό τρόπο τόσο με τον άνθρωπο όσο και με άλλα ρομπότ [14]. Networked Robot Ο όρος δικτυωμένο ρομπότ (networked robot) αναφέρεται σε ρομποτικές συσκευές που συνδέονται σε ενσύρματα ή/και ασύρματα δικτύα επικονωνίας, όπως το Internet ή το LAN, χρησιμοποιώντας πληθώρα πρωτοκόλλων επικοινωνίας [15]. Υπάρχουν δύο υποκατηγορίες δικτυωμένων ρομπότ: 1. Tele-operated robots (Ρομπότ διαχειριζόμενα από απόσταση), στα οποία οι άνθρωποι στέλνουν εντολές και λαμβάνουν αποτελέσματα (feedback) μέσω του δικτύου. Τέτοια συστήματα υποστηρίζουν την έρευνα, την εκπαίδευση και την ευαισθητοποίηση του κοινού, καθιστώντας πολύτιμους πόρους προσβάσιμους από το ευρύ κοινό. 2. Autonomous robots (Αυτόνομα ρομπότ), όπου τα ρομπότ και οι αισθητήρες ανταλλάσσουν δεδομένα μέσω του δικτύου με την ελάχιστη ανθρώπινη αλληλεπίδραση. Σε τέτοια συστήματα, το δίκτυο των αισθητήρων επεκτείνεται πέρα από την αποτελεσματική εμβέλεια ανί- 18

32 Cloud Robotics 19 χνευσης των ρομπότ, επιτρέποντας την μεταξύ τους επικοινωνία για τον συντονισμό των ενεργειών τους μέσω μεγάλων αποστάσεων. Τα ρομπότ μπορούν να αναπτύξουν, να επιδιορθώσουν και να διατηρήσουν το δίκτυο των αισθητήρων για να αυξήσουν τη μακροζωία τους και τη χρησιμότητά τους. Τα δικτυωμένο ρομπότ δημιουργούν μια σειρά τεχνικών προκλήσεων που σχετίζονται με τον θόρυβο του δικτύου, την αξιοπιστία, τη συμφόρηση, τη σταθερή και μεταβλητή χρονική καθυστέρηση, τη σταθερότητα, την παθητικότητα, την εμβέλεια και την ισχύ, την ανάπτυξη, την κάλυψη, την ασφάλεια, τον εντοπισμό και τη σύντηξη των αισθητήρων και των ενεργοποιητών. Συχνά προκύπτουν νέες δυνατότητες με την εισαγωγή νέων προδιαγραφών για το hardware, το software και τα πρωτοκόλλα επικοινωνίας. 2.2 Cloud Robotics Cloud Robotics είναι το πεδίο της ρομποτικής που αξιοποιεί το διαδίκτυο ως εναν πόρο για παράλληλους υπολογισμούς και ανταλλαγή τεράστιων ποσοτήτων δεδομένων σε πραγματικό χρόνο. Εκμεταλλεύεται τις υπηρεσίες και τις υποδομές του cloud και άλλες υπάρχουσες τεχνολογίες του διαδικτύου για την ανάπτυξη, την κατασκευή και τη βελτιώση των ρομποτικών συστημάτων [16] [17]. Τα κύρια πλεονεκτήματα από την χρήση του cloud είναι: Big-Data: πρόσβαση σε απομακρυσμένες βιβλιοθήκες με εικόνες, χάρτες, τροχιές και άλλα σύνολα δεδομένων. Cloud Computing: πρόσβαση σε υπολογιστικούς πόρους για στατιστικές αναλύσεις, μάθηση και βέλτιστο σχεδιασμό κίνησης. Collective Robot Learning: επαναχρησιμοποίση και διαμοιρασμός της γνώσης μεταξύ ρομπότ διαφορετικών ειδών. Open-source and Open-Access: ανταλλαγή ανοιχτού κώδικα, δεδομένων και σχεδίων για την ανάπτυξη software και hardware για ρομπότ. Crowd-sourcing and Call Centers: απομακρυσμένη ανθρώπινη καθοδήγηση για τον χειρισμό εξαιρέσεων και την αποκατάσταση σφαλμάτων. 2.3 Internet of Robotic Things (IoRT) Το Internet of Robotic Things (IoRT) είναι μια παγκόσμια υποδομή που επιτρέπει την ανάπτυξη προηγμένων ρομποτικών υπηρεσιών με τη διασύνδεση των ρομπότ με άλλες ετερογενείς ευφυείς συσκευές σε μια κατανεμημένη αρχιτεκτονική από διάφορες πλατφόρμες που λειτουργούν τόσο στην άκρη του δικτύου (edge) όσο και στο cloud, αξιοποιώντας τις

33 20 Network Robot System υποδομές και υπηρεσίες του cloud και τις υπάρχουσες τεχνολογίες του διαδικτύου [18] [19]. Στην ουσία το IoRT ξεπερνά τις έννοιες των networked robots και του cloud robotics, εκμεταλλευόμενο ορισμένες πτυχές του cloud computing και τις δυνατότητες του IoT, ώστε να υπάρχει ευελιξία στον σχεδιασμό και στην υλοποίηση νέων εφαρμογών για δικτυωμένα ρομποτικά συστήματα [19] Αρχιτεκτονική Η αρχιτεκτονική του IoRT είναι ίδια με αυτή του IoT (βλ. Υποενότητα 1.4). Βαρύτητα, όμως, πρέπει να δωθεί στο επίπεδο του Ενδιάμεσου Λογισμικού (Middleware/Processing/Service and Application Support), το οποίο εμπεριέχει κάποια σημαντικά χαρακτηριστικά για την ανάπτυξη ρομποτικών συστημάτων [19]: Robotic Cloud Platform: υπηρεσίες και τεχνολογίες εξειδικευμένες για ρομπότ, όπως RT (Robot Technology) middleware, Robot Operating System (ROS), Robot Service Network Protocol (RSNP), Open Robot/Resource interface for the Network (ORiN), CANOpen, open source ubiquitous network robot platform (UNR-PF) κ.ά. M2M2A (Machine-to-Machine-to-Actuator) solutions: συνδυασμός ρομποτικών τεχνολογιών και πληροφοριών από διάφορους αισθητήρες μέσω δικτύου για την αυτόματη λήψη πρακτικών αποφάσεων από προηγμένα ρομπότ ώστε να επιφέρουν αλλαγές στον φυσικό κόσμο. IoT Cloud Robotics Infrastructure: αξιοποίηση υπηρεσιών του IoT cloud (όπως επεξεργασία εικόνας και video, αναγνώριση θέσης, έλεγχος επικοινωνίας κ.ά.) από τα ρομποτικά συστήματα Χαρακτηριστικά Το IoRT έχει διάφορα χαρακτηριστικά που διαφέρουν από τις παραδοσιακές υπηρεσιές της ρομποτικής (networked robots, cloud robotics) και τα οποία συνοψίζονται παρακάτω [19]: Composability: Απλοποιείται η δημιουργία πολύπλοκων εφαρμογών με τη χρήση βασικών στοιχείων του web. Context Awareness: Οι αποφάσεις των ρομποτικών συστημάτων είναι context-aware, καθώς λαμβάνουν πληροφορίες σχετικά με τον περιβάλλων χώρο από διάφορους αισθητήρες. Virtualized Diversification: Ο τελικός χρήστης μπορεί να λαμβάνει μόνο τις υπηρεσίες που επιθυμεί, χωρίς να χρειάζεται να λάβει υπόψιν του τα φυσικά χαρακτηριστικά των ρομπότ που τις εκτελούν. Extensibility: Υποστηρίζεται η επέκταση των ήδη υπαρχόντων ρομποτικών υπηρεσιών, με την προσθήκη νέων ρομπότ ή την αναβάθμιση

34 Robot Operating System (ROS) 21 των υπηρεσιών που παρέχονται. Interoperability: Yποστηρίζεται η επικοινωνία με την υποδομή ή με συσκευές διαφορετικού είδους μέσω διαφόρων διαλειτουργικών πρωτοκόλλων επικοινωνίας. Dynamic and Self-Adaptive: Υπάρχει η δυνατότητα λήψης αποφάσεων και δυναμικής προσαρμογής με βάση τις μεταβαλλόμενες συνθήκες του περιβάλλοντος και τις συνθήκες λειτουργίας τους. Geo-Distribution and Ubiquitous Network Access: Πολλά ρομποτικά συστήματα αποτελούνται από κέντρα δεδομένων που βρίσκονται σε απομακρυσμένες γεωγραφικές περιοχές ανά την υφήλιο, ενώ ο έλεγχος τους πραγματοποιείται απομακρυσμένα μέσω cloud υπηρεσιών από οποιαδήποτε συσκευή με πρόσβαση στο Internet. 2.4 Robot Operating System (ROS) Το Robot Operating System (ROS) είναι ένα ευέλικτο framework για τη σύνταξη λογισμικού για ρομπότ. Αν και δεν είναι λειτουργικό σύστημα (τρέχει σε ήδη υπάρχοντα λειτουργικά συστήματα, όπως το GNU/ Linux), παρέχει τις υπηρεσίες που αναμένονται από ένα λειτουργικό σύστημα (όπως hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes και package management). To ROS διανέμεται με άδεια BSD και χρηματοδοτείται από το Open Source Robotics Foundation. Το ROS στοχεύει στην απλούστευση των διαδικασιών που απαιτούνται για τη δημιουργία περίπλοκων ρομποτικών συμπεριφορών (όπως αυτόνομα ρομποτικά συστήματα) πάνω σε διάφορες πλατφόρμες και διαθέτει ένα μεγάλο σύνολο από drivers και υλοποιημένους αλγορίθμους. Για το παράδειγμα της αυτόνομης κίνησης, το ROS έχει ήδη διαθέσιμες λειτουργίες, όπως η δημιουργία χαρτών, ο χειρισμός βάθους χάρτη και ο εντοπισμός εμποδίων ROS Equation Με πιο απλά λόγια, το Robot Operating System αντιστοιχεί στην εξίσωση που ακολουθεί, όπως φαίνεται και στην Εικόνα 2.1 [20]: ROS = plumbing + tools + capabilities + ecosystem Οι παραπάνω όροι επεξηγούνται ως εξής: Plumbing (Διασύνδεση): Το ROS παρέχει μια υποδομή τύπου publishsubscribe (βλ. Υποενότητα 1.6.7) για την ανταλλαγή των μηνυμάτων, η οποία είναι σχεδιασμένη ώστε να υποστηρίζει τη γρήγορη και εύκολη κατασκευή καταναμημένων υπολογιστικών συστημάτων.

35 22 Network Robot System Εικόνα 2.1: Robot Operating System (ROS) Tools (Εργαλεία): Το ROS παρέχει ένα εκτεταμένο σύνολο εργαλείων για τη διαμόρφωση (configuring), την εκκίνηση (starting), την επιθεώρηση (introspecting), τον εντοπισμό σφαλμάτων (debugging), την οπτικοποίηση (visualizing), την καταγραφή (logging), τη δοκιμή (testing) και τη διακοπή (stopping) των κατανεμημένων υπολογιστικών συστημάτων. Capabilities (Δυνατότητες): Το ROS παρέχει μια ευρεία συλλογή βιβλιοθηκών που υλοποιούν χρήσιμες ρομποτικές λειτουργίες, με έμφαση στην κινητικότητα (mobility), τον χειρισμό (manipulation) και την αντίληψη (perception). Ecosystem (Οικοσύστημα): Το ROS υποστηρίζεται και βελτιώνεται από μια μεγάλη κοινότητα, με ιδιαίτερη έμφαση στην ενσωμάτωση (integration) και στα εγχειρίδια λειτουργίας (documentation). Στη σελίδα ros.org βρίσκονται χιλιάδες πακέτα ROS, διαθέσιμα από προγραμματιστές από όλο τον κόσμο Βασικές Έννοιες Το ROS έχει τρία επίπεδα έννοιων [20]: 1. Filesystem (Σύστημα αρχείων): Οι έννοιες αυτού του επιπέδου καλύπτουν κυρίως τους πόρους ROS που συναντούνται στο δίσκο, όπως packages, metapackages, manifests κ.ά. 2. Computation Graph (Γράφοι υπολογισμού): Το computation graph είναι το peer-to-peer¹ δίκτυο των διαδικασιών του ROS που επεξεργάζονται δεδομένα. Οι βασικές έννοιες αυτού του επιπέδου (Nodes, Master, Parameter Server, Messages, Services, Topics και Bags) παρέχουν δεδομένα στο γράφο με διάφορους τρόπους. 3. Community (Κοινότητα): Οι έννοιες αυτού του επιπέδου είναι οι πόροι του ROS που επιτρέπουν σε ξεχωριστές κοινότητες να ανταλλάσσουν λογισμικό και γνώση (όπως distributions, repositories, ROS wiki κ.ά.) ¹In a P2P (peer-to-peer) network, the peers are computer systems which are connected to each other via the Internet. Files can be shared directly between systems on the network without the need of a central server. In other words, each computer on a P2P network becomes a file server as well as a client.

36 ΚΕΦΑΛΑΙΟ 3 ANDROID 3.1 Τι είναι το Android Τ Android είναι λειτουργικό σύστημα για συσκευές κινητής τηλεφωνίας το οποίο τρέχει τον πυρήνα του λειτουργικού Linux. Επιτρέπει στους κατασκευαστές λογισμικού να συνθέτουν κώδικα με τη χρήση της γλώσσας προγραμματισμού Java, ελέγχοντας τη συσκευή μέσω βιβλιοθηκών λογισμικού ανεπτυγμένων από την Google. Παρόλο που έχει αναπτυχθεί για συσκευές με οθόνη αφής, όπως τα smartphone και τα tablet, έχει χρησιμοποιηθεί σε κονσόλες παιχνιδιών, ψηφιακές φωτογραφικές μηχανές και σε άλλες ηλεκτρονικές συσκευές [21]. 3.2 Platform Architecture Το λειτουργικό σύστημα Android είναι μια δομή βασισμένη στο Linux και αποτελείται από στοιχεία software που μπορούν να χωριστούν σε 6 τμήματα και 5 βασικά επίπεδα, όπως φαίνεται και στο παρακάτω διάγραμμα αρχιτεκτονικής (Εικόνα 3.1) [22] The Linux Kernel Η βάση της Android πλατφόρμας είναι ο πυρήνας¹ του Linux. Η χρήση αυτού του πυρήνα επιτρέπει στο Android να εκμεταλλευτεί τα βασικά χαρακτηριστικά ασφάλειας και επιτρέπει στους κατασκευαστές 23

37 24 Android συσκευών την ανάπτυξη hardware drivers για ένα γνωστό πυρήνα. Εικόνα 3.1: The Android software stack ¹Ο πυρήνας(kernel) είναι το βασικό τμήμα ενός λειτουργικού συστήματος(os) που αλληλεπιδρά στενά με το hardware. Είναι υπεύθυνος για την αυτόματη διαχείριση των πόρων του συστήματος, την κατανομή τους στις εκτελούμενες εφαρμογές, την απρόσκοπτη εκτέλεση των τελευταίων και την επικοινωνία μεταξύ υλικού και λογισμικού[23].

38 Platform Architecture Hardware Abstraction Layer (HAL) Το hardware abstraction layer (HAL) παρέχει τυποποιημένα interfaces (διεπαφές) που εκθέτουν τις δυνατότητες του hardware των συσκευών στο υψηλότερο επιπέδου Java API framework. Το HAL αποτελείται από διάφορα library modules, κάθε ένα από τα οποία υλοποιεί ένα interface για ένα συγκεκριμένο component του hardware, όπως η κάμερα ή το Bluetooth. Όταν ένα framework API ζητάει πρόσβαση στο hardware μιας συσκευής, το σύστημα του Android φορτώνει το αντίστοιχο library module για το συγκεκριμένο hardware component Android Runtime (ART) Το ART χρησιμοποείται για την εκτέλεση πολλαπλών virtual machines σε συσκευές χαμηλής μνήμης εκτελώντας αρχεία DEX, μια μορφή bytecode ειδικά σχεδιασμένη για το Android που έχει βελτιστοποιηθεί για ελάχιστο αποτύπωμα μνήμης Native C/C++ Libraries Πολλά βασικά στοιχεία και υπηρεσίες του Android είναι υλοποιημένα με native κώδικα που απαιτεί native βιβλιοθήκες γραμμένες σε C και C++. Η πλατφόρμα Android παρέχει πολλά Java framework APIs ώστε να μεταφέρει τη λειτουγικότητα αυτών των βιβλιοθηκών στις εφαρμογές Java API Framework Το σύνολο των χαρακτηριστικών Android είναι διαθέσιμο μέσω APIs που είναι γραμμένα στη γλώσσα προγραμματισμού Java. Αυτά τα APIs αποτελούν τις δομικές μονάδες που απαιτούνται για τη δημιουργία Android εφαρμογών καθιστώντας πιο απλή τη χρήση βασικών στοιχείων και υπηρεσιών του συστήματος System Apps To Android διαθέτει ένα σύνολο βασικών εφαρμογών για μηνύματα SMS, s, επαφές, περιήγηση στο διαδίκτυο και πολλά ακόμα. Οι εφαρμογές του συστήματος χρησιμοποιούνται τόσο από τους χρήστες όσο και από τους developers εφαρμογών. Συνεπώς οι προγραμματιστές μπορούν να τις αξιοποιήσουν μέσα από τις δικές τους εφαρμογές χωρίς να είναι απαραίτητη η εκ νέου δημιουργία των ήδη υπάρχοντων λειτουργιών.

39 26 Android 3.3 Android Fundumentals Οι εφαρμογές σε Android γράφονται σε Kotlin, Java και C++. To Android SDK κάνει compile τον κώδικα μαζί με τα δεδομένα και τα resource files σε ένα αρχείο APK (Android package). Το αρχείο APK περιέχει όλα τα στοιχεία μιας εφαρμογής και χρησιμοποιείται για την εγκατάσταση μιας εφαρμογής σε μια συσκευή με Android. Κάθε εφαρμογή προστατεύεται από τα χαρακτηριστικά ασφάλειας του Android (π.χ. η εκχώρηση μοναδικού Linux user ID από το σύστημα σε κάθε εφαρμογή ώστε μόνο ο συκρεκριμένος χρήστης να έχει πρόσβαση στα permissions, ο κώδικας κάθε εφαρμογής τρέχει μεμονωμένα από τις υπόλοιπες κά). Τέλος, πρέπει να αναφερθέι πως το σύστημα Android υλοποιεί το principle of least privilege (αρχή του ελάχιστου προνομίου), δηλαδή κάθε εφαρμογή έχει πρόσβαση μόνο στα στοιχεία που απαιτεί για να δουλέψει και όχι περισσότερα. Έτσι διασφαλίζεται ένα ασφαλές περιβάλλον όπου οι εφαρμογές δεν μπορούν να έχουν πρόσβαση σε μέρη του συστήματος για τα οποία δεν έχουν πάρει άδεια [24] App components Τα app components είναι τα βασικά στοιχεία κάθε Android εφαρμογής. Κάθε component είναι ένα entry point μέσω του οποίου το σύστημα ή ο χρήστης μπορεί να έχει πρόσβαση στην εφαρμογή. Αυτά τα components είναι τα εξής: 1. Activity: Το activity (δραστηριότητα) είναι το σημείο της εφαρμογής με το οποίο αλληλεπιδρά ο χρήστης. Αντιστοιχεί σε μια οθόνη με user interface. Οι εφαρμογές ορίζουν activities ώστε να διαχειριστούν τις διάφορες φάσεις του προγράμματος. Τα activities μπορούν να συνεργάζονται το ένα με το άλλο για να προσφέρουν μια συνολική εμπειρία για τον χρήστη, όμως είναι ανεξάρτητα μεταξύ τους. 2. Service: Το service (υπηρεσία) είναι το στοιχείο που επιτρέπει σε μια εφαρμογή να τρέχει στο background για να εκτελεί εργασίες μακράς διαρκείας ή απομακρυσμένες διαδικασίες. Άλλα στοιχεία, όπως ένα activity, μπορούν να ξεκινήσουν ένα service και να το αφήσουν να τρέχει ή να συνδεθούν σε αυτό και να αλληλεπιδράσουν μαζί του. 3. Broadcast Receiver: Το broadcast receiver (δείκτης αναμετάδοσης) είναι το στοιχείο που απαντά σε broadcast ανακοινώσεις από όλο το σύστημα. Το σύστημα μπορεί να παραδώσει broadcasts ακόμα και σε εφαρμογές που δεν εκτελούνται. Τα broadcasts προέρχονται από το σύστημα ή ξεκινούν από εφαρμογές. Οι broadcast receivers δεν έχουν user interface αλλά μπορούν να δημιουργήσουν μια ειδοποίση τύπου status bar για να ειδοποιήσουν τον χρήστη όταν συμβαίνει ένα broadcast event. 4. Content Provider: Ένας content provider (πάροχος περιεχομένου)

40 Android Fundumentals 27 διαχειρίζεται το σύνολο των δεδομένων της εφαρμογής που μπορεί να αποθηκευτεί στο σύστημα αρχείων, σε μια SQLite database, στο web ή σε οποιαδήποτε άλλο μέσο αποθήκευσης που έχει πρόσβαση η εφαρμογή. Άλλες εφαρμογές μπορούν να ζητήσουν ή να τροποποιήσουν αυτά τα δεδομένα αν ο content provider το επιτρέπει. Επίσης, οι content providers είναι χρήσιμοι για την αποθήκευση και ανάγνωση δεδομένων που προορίζονται για αποκλειστική χρήση εντός της εφαρμογής. Activating components Τα τρία πρώτα από τα προηγούμενα components (Activity, Service, Broadcast Receiver) ενεργοποιούνται από ένα ασύγχρονο μήνυμα που λέγεται intent. Για τα activities και τα services το intent ορίζει την πράξη που θα γίνει (π.χ. view or send something), ενώ για τα τους broadcast receivers το intent ορίζει την ανακοίνωση που θα αναμεταδοθεί. Οι content providers ενεργοποιούνται από ένα αίτημα από έναν content resolver, που χειρίζεται όλες τις άμεσες συναλλαγές με τον content provider. Fragments Ένα Fragment αντιπροσωπεύει μια συμπεριφορά ή ένα τμήμα UI σε ένα FragmentActivity. Σε ένα activity μπορούν να συνδυαστούν πολλά fragments για τη δημιουργία ενός multi-pane UI, ενώ ένα fragment μπορεί να χρησιμοποιηθεί σε πολλαπλά activities. Ένα fragment φιλοξενείται πάντα από ένα activity και ο κύκλος ζωής του επηρεάζεται άμεσα από τον κύκλο ζωής του activity [25] The manifest file Κάθε εφαρμογή πρέπει να έχει στο root φάκελο του project ένα αρχείο AndroidManifest.xml, στο οποίο δηλώνονται όλα τα components της εφαρμογής. Πριν το Android σύστημα ξεκινήσει μια εφαρμογή, πρέπει να γνωρίζει τα components που χρησιμοποιούνται και διαβάζει αυτό το αρχείο. Το manifest file εκτός από τη δήλωση των components, δηλώνει και τα ακόλουθα: ποια user permissions χρειάζεται η εφαρμογή. το ελάχιστο API Level που απαιτείται. ποια χαρακτηριστικά του hardware και του software χρησιμοποιούνται ή απαιτούνται. τις API libraries με τις οποίες πρέπει να συνδεθεί η εφαρμογή (εκτός των Android framework APIs)

41 28 Android App resources Μια εφαρμογή Android αποτελείται από κάτι παραπάνω από απλό κώδικα - απαιτεί πόρους, ξεχωριστούς από τον πηγαίο κώδικα, όπως εικόνες, αρχεία ήχου και οτιδήποτε σχετίζεται με την οπτική παρουσίαση της εφαρμογής. Για παράδειγμα, το user interface μπορεί να τροποποιηθεί με αρχεία XML τα οποία να καθορίζουν menu, χρώματα, animations και τη διάταξη των στοιχείων στην οθόνη. Η χρήση των πόρων εφαρμογών καθιστά εύκολη την ενημέρωση διαφόρων χαρακτηριστικών της εφαρμογής χωρίς να απαιτείται τροποποίηση του κώδικα. Παρέχοντας sets εναλλακτικών πόρων επιτυγχάνεται η βελτιστοποίηση για διαφορετικές ρυθμίσεις συσκευών, όπως διαφορετικές γλώσσες και μεγέθη οθόνης. 3.4 Κύκλος ζωής ενός Activity Κατά τη διάρκεια περιήγησης του χρήστη σε μια εφαρμογή, ένα Activity μεταβαίνει σε διαφορετικές καταστάσεις μέσα στον κύκλο ζωής του. Η κλάση του Activity παρέχει κάποιες μεθόδους που επιτρέπουν στο activity να γνωρίζει ότι άλλαξε η κατάσταση στην οποία βρίσκεται π.χ. αν δημιουργήθηκε, αν τέθηκε σε παύση, αν ξανάρχισε ή αν καταστράφηκε. Ο προγραμματιστής μπορεί να ρυθμίσει τη συμπεριφορά του activity και τις λειτουργίες που θα πραγματοποιούνται για μια δεδομένη μεταβολή της κατάστασής του. Κάνοντας τη σωστή δουλειά στο σωστό χρόνο, μια εφαρμογή γίνεται πιο ισχυρή και πιο αποτελεσματική. Παρακάτω φαίνεται ο κύκλος ζωής ενός activity με τις callback² μεθόδους που μπορούν να εφαρμοστούν για τις διάφορες διεργασίες όταν το activity κινείται μεταξύ διάφορων καταστάσεων (Εικόνα 3.2) [26]. oncreate(): Καλείται όταν δημιουργείται πρώτη φορά το activity προκειμένου να γίνουν οι απαραίτητες αρχικοποιήσεις. Η επόμενη μέθοδος είναι πάντα η onstart(). onstart(): Καλείται όταν το activity γίνεται ορατό στον χρήστη, προετοιμάζοντας τον κώδικα που χρειάζεται για το UI. Η επόμενη μέθοδος είναι η onresume(). onresume(): Η μέθοδος αυτή καλείται όταν ολοκληρωθούν οι διεργασίες της onstart(). Ο χρήστης μπορεί να αλληλεπιδράσει με την εφαρμογή, η οποία παραμένει σε αυτή την κατάσταση έως ότου κάτι να διακόψει τη λειτουργίας της (όπως π.χ. μια εισερχόμενη κλήση). onpause(): Καλείται όταν η εφαρμογή δεν είναι πλέον στο foreground ακόμα και αν είναι ορατή από τον χρήστη (π.χ. όταν εμφανίζεται ένα παράθυρο διαλόγου). Σε αυτή την κατάσταση η εφαρμογή μπορεί να σταματήσει τις διεργασίες που δεν χρειάζονται και να απελευθερώ- ²The concept of callbacks is to inform a class synchronous / asynchronous if some work in another class is done. Some call it the Hollywood principle: Don t call us we call you.

42 Κύκλος ζωής ενός Activity 29 Εικόνα 3.2: A simplified illustration of the activity lifecycle σει system resources που δεν χρησιμοποιεί και μπορεί να επηρεάζουν τη διάρκεια ζωής της μπαταρίας. Το activity μπορεί είτε να επανεκκινηθεί είτε να τερματιστεί. onstop(): Καλείται όταν το activity δεν είναι πλέον ορατό από τον χρήστη. Σε αυτή την κατάσταση η εφαρμογή πρέπει να προσαρμόσει ή απελευθερώσει τα UI-related resources που δεν χρειάζεται και μπορούν να πραγματοποιηθούν shutdown operations, όπως save application/user data, execute DB transactions κά). Το activity μπορεί είτε να επανεκκινηθεί είτε να τερματιστεί. ondestroy(): Καλείται όταν το activity καταστρέφεται από το σύστημα, δηλαδή όταν ο χρήστης τερματίζει την εφαρμογή ή όταν γίνεται μια αλλαγή στις ρυθμίσεις της συσκευής (όπως device rotation ή

43 30 Android multi-window mode). onrestart(): Καλείται όταν το activity επανεκκινείται, αφού πρώτα είχε σταματήσει να εκτελείται. Ακολουθείται πάντα από την on- Start(). 3.5 Android Studio Για το προγραμματισμό της android εφαρμογής χρησιμοποιήθηκε το Android Studio. To Android Studio είναι ένα ολοκληρωμένο προγραμματιστικό περιβάλλον (IDE) για ανάπτυξη εφαρμογών στην πλατφόρμα Android. Βασισμένο στο λογισμικό της JetBrains IntelliJ IDEA, το Android Studio σχεδιάστηκε αποκλειστικά για προγραμματισμό Android και αντικατέστησε τα Eclipse Android Development Tools (ADT) ως το κύριο IDE της Google για την ανάπτυξη εφαρμογών Android. Είναι διαθέσιμο για Windows, Mac OS X και Linux [27]. Workflow Η δημιουργία μιας εφαρμογής με το Android Studio απαιτεί 5 βήματα τα οποία φαίνονται στην παρακάτω εικόνα (Εικόνα 3.3) [28]. Αφού πραγματοποιηθεί η εγκατάσταση του Android Studio και η δημιουργία του project, ακολουθεί το γράψιμο κώδικα, η προσθήκη UI και η δημιουργία των resources για διαφόρους τύπους συσκευών με τη βοήθεια των εργαλείων που προσφέρονται. Tο project γίνεται build σε ένα debuggable APK πακέτο που μπορεί να τρέξει στον emulator ή σε Android συσκευές. Στη συνέχεια ακολουθεί η φάση του debugging όπου η εφαρμογή περνάει από tests με σκοπό την εξάλειψη των σφαλμάτων και τη βελτιστοποίηση της απόδοσης. Σε αυτήν τη φάση αναλύονται και διάφορα performance metrics, όπως η χρήση μνήμης και δικτύου, ο αντίκτυπος στη CPU και άλλα. Τέλος, όταν όλα είναι έτοιμα, η εφαρμογή μπορεί να γίνει release για να τη χρησιμοποιούν και άλλοι χρήστες.

44 Android Studio 31 Εικόνα 3.3: Android Studio Workflow

45 ΚΕΦΑΛΑΙΟ 4 ΕΡΓΑΛΕΙΑ 4.1 Εισαγωγικά στοιχεία Γ τη δημιουργία του IoT συστήματος αυτής της διπλωματικής εργασίας χρησιμοποιήθηκαν το IoT Development Sensor Kit της Dialog Semiconductor με την αντίστοιχη Android εφαρμογή SmartBond IoT Sensors καθώς και η cloud πλατφόρμα της Yodiwo. 4.2 IoT Sensor Development Kit Το προϊόν που χρησιμοποιήθηκε είναι το IoT Sensor Development Kit της Dialog Semiconductor, το οποίο συνδυάζει την ασύρματη επικοινωνία μέσω Bluetooth Low Energy (BLE) με τον επεξεργαστή ARM Cortex- M0¹ και διαθέτει επιταχυνσιόμετρο, γυροσκόπιο, μαγνητόμετρο και περιβαλλοντολογικούς αισθητήρες για την ατμοσφαιρική πίεση, τη θερμοκρασία και την υγρασία [29]. Το προαναφερθέν kit συνδέεται με την εφαρμογή SmartBond IoT Sensors προκειμένου να επιτεχθεί η απεικόνηση των δεδομένων των αισθητήρων (Εικόνα 4.1). Επίσης, υπάρχει η δυνατότητα παρουσίασης μιας συγχωνευμένης έκδοσης αυτών των δεδομένων μέσω της απεικόνησης τους ως ένα κινούμενο τρισδιάστατο αντικείμενο [30]. ¹The Cortex-M0 processor is a very low gate count, highly energy efficient processor that is intended for microcontroller and deeply embedded applications that require an area optimized processor. 32

46 IoT Sensor Development Kit 33 Εικόνα 4.1: IoT Sensor Development Kit Στις παραγράφους που ακολουθούν επεξηγούνται κάποια από τα χαρακτηριστικά του kit, όπως η τεχνολογία Bluetooth και οι αισθητήρες Bluetooth Η ασύρματη τεχνολογία Bluetooth είναι ένα σύστημα επικοινωνιών μικρής εμβέλειας που προορίζεται να αντικαταστήσει τα καλώδια που συνδέουν φορητές και/ή σταθερές ηλεκτρονικές συσκευές. Τα κύρια χαρακτηριαστικά του Bluetooth είναι η ανθεκτικότητα, η χαμηλή κατανάλωση ενέργειας και το χαμηλό κόστος. Το Bluetooth λειτουργεί στα 2.4 GHz στη ζώνη συχνοτήτων ISM², όπου δεν απαιτείται άδεια. Υπάρχουν δυο μορφές συστημάτων ασύρματης επικοινωνίας Bluetooth: Basic Rate (BR) και Low Energy (LE) [31]. BLE Το Bluetooth Low Energy ή Bluetooth Smart είναι σχεδιασμένο για προϊόντα που απαιτούν μικρότερη κατανάλωση ρεύματος, μικρότερη πολυπλοκότητα και μικρότερο κόστος από το Bluetooth BR. Χρησιμοποιεί 40 κανάλια για τη μεταφορά των δεδομένων. Το BLE παρέχει στους προγραμματιστές τεράστια ευελιξία, συμπεριλαμβανομένων των πολλαπλών επιλογών PHY που υποστηρίζουν ταχύτητες δεδομένων (data rate) από 125 Kb/s έως 2 Mb/s, πολλαπλά επίπεδα ισχύος από 1mW έως 100mW, καθώς και πολλαπλές επιλογές ασφάλειας. Το Bluetooth LE υποστηρίζει επίσης πολλαπλές τοπολογίες δικτύου, συμπεριλαμβανομένης της επιλογής point-to-point που χρησιμο- ²The industrial, scientific and medical (ISM) radio bands are radio bands (portions of the radio spectrum) reserved internationally for the use of radio frequency (RF) energy for industrial, scientific and medical purposes other than telecommunications.

47 34 Εργαλεία ποιείται για τη μεταφορά δεδομένων, της επιλογής broadcast που χρησιμοποιείται για υπηρεσίες εντοπισμού θέσης και της επιλογής mesh που χρησιμοποιείται για τη δημιουργία μεγάλης κλίμακας δικτύων συσκευών. Όσον αφορά το BLE 4.2, που χρησιμοποιείται στο συγκεκριμένο kit[32], ο ρυθμός μετάδοσης δεδομένων είναι 1 Mb/s (1 megabit per second) [33]. Υποστηρίζει IP συνδεσιμότητα (οι BLE συσκευές μπορούν να είναι προσβάσιμες από το Internet, να έχουν τη δικιά τους IPv6³ διεύθυνση με το Internet Protocol Support Profile και να συμπεριφέρονται ως clients αλληλεπιδρώντας με εφαρμογές στο cloud με το HTTP Proxy Service) και έχει βελτιωμένα χαρακτηριστικά απορρήτου και ασφάλειας, που το καθιστούν ιδανικό για IoT συστήματα [34][35][36] Sensors Οι αισθητήρες που διαθέτει το kit είναι τρεις. Κάθε τιμή που παράγεται από καθέναν από αυτούς φτάνει μέσω BLE στην Android εφαρμογή και εκεί τα δεδομένα επεξεργάζονται ώστε να μπορούν να γίνουν κατανοητά από τον άνθρωπο. Παρακάτω παρουσιάζονται συνοπτικά οι αισθητήρες και ο τρόπος με τον οποίο γίνεται η επεξεργασία των δεδομένων στην εφαρμογή. BMI160 [37] Μετρά τη γραμμική κίνηση και τις βαρυτικές δυνάμεις και ανιχνεύει τον ρυθμό περιστροφής στον χώρο κατά τους τρεις άξονες των συντεταγμένων. Λειτουργεί ως inertial measurement unit (IMU)⁴ συνδυάζοντας επιταχυνσιόμετρο και γυροσκόπιο. Το sensitivity⁵ για το επιταγχυσιόμετρο έχει οριστεί στο ±2g: LSB⁶/g (όπου g 9.81m/s 2 ⁷). Αυτό σημαίνει πώς για να μετατραπεί η τιμή που προέρχεται από τον αισθητήρα σε g πρέπει να διαιρεθεί με τον αριθμό 16384: accelerometer_value = raw_value/16384 Ενδεικτικά, όταν το kit παραμένει ακίνητο, οι τιμές που προκύπτουν για τους άξονες x, y και z είναι οι παρακάτω: raw_value accelerometer_value (g) axis-x axis-y axis-z ³Internet Protocol version 6 (IPv6) is the most recent version IP. ⁴An inertial measurement unit (IMU) is an electronic device that measures and reports a body s specific force, angular rate, using a combination of accelerometers and gyroscopes. ⁵ Για τους όρους sensitivity και resolution, βλ. Παράρτημα Βʹ. ⁶Least Significant Bit, which is the last bit on the right.

48 IoT Sensor Development Kit 35 Το sensitivity για το γυροσκόπιο έχει οριστεί στο ±2000 /s: 16.4 LSB/ /s. Αυτό σημαίνει πώς για να μετατραπεί η τιμή που προέρχεται από τον αισθητήρα σε degrees/s πρέπει να διαιρεθεί με τον αριθμό 16.4: gyroscope_value = raw_value/16.4 Ενδεικτικά, όταν το kit παραμένει ακίνητο, οι τιμές που προκύπτουν για τους άξονες x, y και z είναι οι παρακάτω: raw_value gyroscope_value ( /s) axis-x axis-y axis-z BMM150 [38] Μετρά τα μαγνητικά πεδία της γης. Το resolution⁵ είναι 0.317, οπότε η επεξεργασία της ακατέργαστης τιμής από τον αισθητήρα είναι: magnetometer_value = raw_value Ενδεικτικά, οι τιμές που προκύπτουν για τους άξονες x, y και z είναι οι παρακάτω: raw_value magnetometer_value (ut) axis-x axis-y axis-z Ο υπολογισμός για την τιμή της πυξίδας πραγματοποιείται χωρίς αντιστάθμιση κλίσης, οπότε χρησιμοποιούνται μόνο οι τιμές από τους x και y άξονες. Οι καρτεσιανές συντεταγμένες (x,y) μετατρέπονται σε πολικές (r,θ) και η γωνία θ που θα προκύψει σε rad μετατρέπεται σε μοίρες που αντιστοιχούν στις μοίρες της πυξίδας. Αναλόγως τις μοίρες⁸, δίνεται και κάποιος χαρακτηρισμός που υποδηλώνει τον προσανατολισμό της πυξίδας (N, NE, E, SE, S, SW, W, NW). Έτσι, από τις προηγούμενες μετρήσεις προκύπτει γωνία , και τελικά στην Android συσκευή μέσω της εφαρμογής θα απεικονιστεί η τιμή 81E. ⁷The gravitational force, or more commonly, g-force, is a measurement of the type of acceleration that causes a perception of weight. One g is the acceleration due to gravity at the Earth s surface. ⁸Ο βορράς αντιστοιχεί στις 0 και συνεχίζοντας με τη φορά του ρολογιού η ανατολή αντιστοιχεί στις 90, ο νότος στις 180 και η δύση στις 270.

49 36 Εργαλεία BME280 [39] Μετρά τη θερμοκρασία του περιβάλλοντος, τη σχετική υγρασία και τη βαρομετρική πίεση και το υψόμετρο. Στην περίπτωση της πίεσης, δεν χρειάζεται κάποια επεξεργασία καθώς το kit επιστρέφει έναν ακέραιο αριθμό σε Pa. Ενδεικτικά η τιμή που απεστάλη μέσω BLE αντιστοιχεί σε Pa = hpa. Η τιμή της θερμοκρασίας επιστρέφεται από το kit σε βαθμούς Celcius, με resolution 0.01 C. Η επεξεργασία που γίνεται είναι: temperature = raw_value/100. Ενδεικτικά η τιμή 2598 που απεστάλη μέσω BLE αντιστοιχεί σε C. Η τιμή της υγρασίας επιστρέφεται από το kit ως σχετική υγρασία (RH - Relative Humidity) σε unsigned 32 bit integer in Q22.10 μορφή (22 integer and 10 fractional bits). Η επεξεργασία που γίνεται είναι: humidity = raw_value/1024. Ενδεικτικά η τιμή που απεστάλη μέσω BLE αντιστοιχεί σε %RH. 4.3 Yodiwo Cloud Platform Για τη διπλωματική εργασία χρησιμοποιήθηκε η πλατφόρμα της Yodiwo. H Yodiwo είναι ένας πάροχος PaaS και συνδυάζοντας υπηρεσίες, plugins και άλλα στοιχεία παρέχει μια πλατφόρμα που καλύπτει όλο το φάσμα του τομέα του IoT [40] (Εικόνα 4.2). Εικόνα 4.2: Yodiwo Cloud Platform Τα πιο σημαντικά στοιχεία της πλατφόρμας παρουσιάζονται στις παραγράφους που ακολουθούν. Yodiwo Cloud Platform Alcyone ή YCP: Η Alcyone είναι η πλατφόρμα σύνδεσης με το cloud. Γεφυρώνει τα γεωγραφικά διασκορπισμένα

50 Yodiwo Cloud Platform 37 things με συστήματα ανάλυσης και αποθήκευσης της πληροφορίας και άλλες υπηρεσίες τρίτων. Yodiwo s Workflow Creator & Thing Manager Cyan: Ο Cyan είναι ένα εργαλείο απεικόνησης, διαχείρησης των things και δημιουργίας ροής εργασίας. Προσφέρει ένα περιβάλλον ανάπτυξης εφαρμογών βασισμένο σε γράφους και επιτρέπει σε συνδεδεμένες συσκευές διάφορων τεχνολογιών να έχουν πρόσβαση τόσο σε συστήματα ανάλυσης και αποθήκευσης όσο και σε εφαρμογές κινητού ή παγκόσμιου ιστού. Yodiwo Agents: Οι πράκτορες της Yodiwo κάνουν οποιαδήποτε συνδεδεμένη συσκευή Yodiwo-aware. Είναι βιβλιοθήκες οι οποίες ενσωματώνονται σε εφαρμογές κινητών ή μικροελεγκτών που λειτουργούν σε οποιαδήποτε κυρίαρχη πλατφόρμα. Dashboards: Τα dashboards είναι ένα διαμορφώσιμο περιβάλλον αναφοράς που μπορεί να απεικονήσει δεδομένα από τα things σε πραγματικό χρόνο ή metadata⁹ που προέρχονται από αναλύσεις ή βάσεις δεδομένων. DataBase Management System: Τέλος, παρέχεται η δυνατότητα αποθήκευσης δεδομένων σε βάσεις δεδομένων διαφόρων τύπων: σε Time- Series DB όπως η InfuxDB, σε SQL DB όπως η MySQL, ή σε NoSQL DB όπως η MongoDB Τοπολογία Όσον αφορά την τοπολογία της Yodiwo, υπάρχουν 3 βασικές έννοιες: το node(κόμβος), το thing(πράγμα) και το port(θύρα) [41]. 1. Node: Ένας Yodiwo Node είναι μια IP-aware συσκευή που υλοποιεί το Plegma API και συνδέεται στο YCP. Κάθε κόμβος μπορεί να λειτουργήσει ως gateway για συσκευές που δεν χρησιμοποιούν απευθείας το Plegma API. 2. Thing: Ένα Yodiwo Thing είναι μια φυσική συσκευή ή μια εικονική υπηρεσία με συγκεκριμένες λειτουργίες στο YCP. Κάθε thing πρέπει να ανήκει σε ένα node και μπορεί να έχει Ports. 3. Port: Τα Ports είναι η ελάχιστη οντόντητα στην τοπολογία της Yodiwo και περιέχει την ελάχιστη πληροφορία που ανταλλάσσεται μεταξύ του YCP και μιας συσκευής. Pairing Όλα τα Nodes πρέπει να περάσουν από μια διαδικασία αντιστοίχισης (pairing process) προκειμένου να τους επιτραπεί η ανταλλαγή ⁹Τα metadata (μεταδεδομένα) είναι δομημένη πληροφορία που περιγράφει, εξηγεί, εντοπίζει ή κάνει ευκολότερη την ανάκτηση και διαχείριση πληροφορίας. Με άλλα λόγια είναι δεδομένα που περιγράφουν άλλα δεδομένα.

51 38 Εργαλεία δεδομένων με το cloud της Yodiwo. Το pairing αναθέτει ένα Key και ένα Secret Token στο Node, τα οποία θα χρησιμοποιηθούν αργότερα για τη σύνδεση με την cloud πλατφόρμα της Yodiwo μέσω ασφαλών καναλιών. Keys and Addressing Κάθε οντότητα στην τοπολογία της Yodiwo (π.χ. Nodes, Things, Ports κ.ά.) αναγνωρίζεται μοναδικά μέσω του Plegma API και υπάρχει αυστηρώς ορισμένη ιεραρχία μεταξύ τους: ένα Port πρέπει να ανήκει σε ένα Thing ένα Thing πρέπει να ανήκει σε έναν Node ένα Node πρέπει να ανήκει σε έναν User Κάθε ένα από τα παραπάνω στοιχεία έχει ένα μοναδικό Key που προέρχεται από το προηγούμενο της ιεραρχίας. Έτσι, ένα μήνυμα σε ένα Port υποδεικνύει τόσο το Thing στο οποίο αναφέρεται όσο και το Node και τον χρήστη από τον οποίο προήλθε APIs Plegma API Το Plegma API συνδέει το YCP με Nodes διαφόρων τύπων. Χρησιμοποιείται για τη δημιουργία και τη ρύθμιση των things και των nodes, καθώς και για την αμφίδρομη μεταφορά δεδομένων μεταξύ των συσκευών και του cloud [41]. Εικόνα 4.3: Connection Methods for Plegma API Το Plegma API υποστηρίζει πολλές μεθόδους σύνδεσης, όπως φαίνεται και στις Εικόνες 4.3 και 4.4.

52 Yodiwo Cloud Platform 39 Εικόνα 4.4: Block Diagram of the API Frontend Stack Warlock API Το Warlock API χρησιμοποιείται από τους frontend¹⁰ servers για την επικοινωνία με τους back¹⁰ servers και τους workers. Επιτρέπει σε τρίτα μέρη την παράκαμψη του Cyan μέσω της δημιουργίας διαφορετικών UI clients, όχι απαραίτητα web-based, ή της ρύθμισης και χρήσης του YCP με κώδικα χωρίς UI. Προσφέρει δυνατότητες όπως τη δημιουργία ή την ενεργοποίηση εφαρμογών, την ομαδοποίηση things με βάση τον τύπο, την προσθήκη φίλων ή άλλων συνδεδεμένων χρηστών σε ένα λογαριασμό, την κοινοποίηση things ή γράφων μεταξύ των χρηστών, τη σύνδεση με βάσεις δεδομένων κ.ά. Τα Nodes που χρησιμοποιούν το Plegma API μπορούν να χρησιμοποιήσουν το Warlock API αν δηλώσουν την ικανότητα IsWarlock και τους έχουν δοθεί τα κατάλληλα permissions (δικαιώματα) [41]. ¹⁰ In software engineering, the terms front end and back end refer to the separation of concerns between the presentation layer (front end), and the data access layer (back end) of a piece of software, or the physical infrastructure or hardware. In the client server model, the client is usually considered the front end and the server is usually considered the back end, even when some presentation work is actually done on the server.

53 ΚΕΦΑΛΑΙΟ 5 ΥΛΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΟΣ 5.1 Εισαγωγικά στοιχεία Ό αναφέρθηκε και στα προηγούμενα κεφάλαια, έγινε χρήση της εφαρμογής SmartBond IoT Sensors της Dialog Semiconductor. Αυτή η εφαρμογή συνδέεται με το IoT Sensor Development Kit και μέσω Bluetooth Low Energy παίρνει τα δεδομένα από τους αισθητήρες. Τα δεδομένα φτάνουν στην εφαρμογή ως raw data (ανεπεξέργαστα δεδομένα), έτσι ακριβώς όπως παράγονται από τους αισθητήρες. Στην Android εφαρμογή επεξεργάζονται προκειμένου να μπορεί να τα διαχειριστεί ο developer και να μπορεί να τα καταλάβει ο τελικός χρήστης της εφαρμογής. Για τους σκοπούς αυτής της εργασίας υλοποιήθηκε η αποστολή των δεδομένων στο YCP, η αξιοποίηση τους μέσω ορισμένων cloud εφαρμογών (demos) και η δημιουργία UI στην Android για έλεγχο των demos. 5.2 Σύνδεση με το cloud Κατανόηση του κώδικα της Android εφαρμογής Το πρώτο βήμα ήταν η κατανόηση του κώδικα της ήδη υπάρχουσας εφαρμογής και η μελέτη της λειτουργίας του λειτουργικού συστήματος Android. Η εφαρμογή αποτελείται από 4 Activities, εκ των οποίων τα 2 είναι τα πιο σημαντικά: 40

54 Σύνδεση με το cloud Το πρώτο είναι το MainActivity.java, όπου η εφαρμογή ζητάει από τον χρήστη permissions για να συνεχίσει. Σε αυτό γίνεται και η ανίχνευση BLE συσκευών και η εμφάνιση στην οθόνη των συσκευών με τις οποίες είναι συμβατή η εφαρμογή. Ο χρήστης στη συνέχεια μπορεί να επιλέξει τη συσκευή με την οποία επιθυμεί να συνδεθεί. 2. Όταν πραγματοποιείται η σύνδεση με την BLE συσκευή, ξεκινάει το activity MenuHolderActivity.java. Αρχικά επεξεργάζονται τα ακατέργαστα δεδομένα (raw data), που προέρχονται από τους αισθητήρες του kit μέσω Bluetooth (βλ. Υποενότητα 4.2.2). Εδώ βρίσκεται το menu της εφαρμογής μέσα από το οποίο ο χρήστης μπορεί να περιηγηθεί στις διάφορες λειτουργίες της εφαρμογής: απεικόνηση των δεδομένων όλων των αισθητήρων σε πραγματικό χρόνο, δημιουργία 3D απεικόνισης του kit και πρόσβαση στις ρυθμίσεις και στις πληροφοριές της εφαρμογής. Η υλοποίηση του UI αυτών των λειτουργιών έχει γίνει σε fragments, ενώ υπάρχουν πολλά ακόμα αρχεία (java, xml, εικόνες κ.ά.) με συγκεκριμένες λειτουργικότητες που διαχειρίζονται και επεξεργάζονται τα δεδομένα και προσφέρουν μια ολοκληρωμένη εμπειρία χρήστη. Ενσωμάτωση του YAgent Όταν κατανοήθηκε η λειτουργία της εφαρμογής, ενσωματώθηκε ο Android Agent της Yodiwo (YAgent) στον κώδικα της εφαρμογής IoT Sensors. Αφού φορτώθηκε η βιβλιοθήκη στο Android Studio, το πρώτο πράγμα που έγινε ήταν η δήλωση των καινούριων στοιχείων στο αρχείο AndroidManifest.xml της εφαρμογής. <uses-permission android:name="android.permission.internet" /> <service android:name="com.yodiwo.androidagent.core.nodeservice" android:enabled="true" android:exported="false" /> <!-- Mqtt Service --> <service android:name="org.eclipse.paho.android.service.mqttservice"/> Το επόμενο βήμα ήταν η αρχικοποίηση στο αρχείο MainActivity.java. Ο κώδικας που γράφτηκε είναι: SetCredentials.initiate(); // set predefined Things ArrayList<Thing> things = ThingsCreator.Create(); NodeService.ImportThings(getApplicationContext(), things, false); //start Node Service NodeService.Startup(this); Η κλάση SetCredentials.java περιέχει τα στοιχεία του χρήστη ( , node key, secret key) ώστε αργότερα να χρησιμοποιηθούν για να γίνει το pairing με το cloud. Το key δημιουργήθηκε χρησιμοποιώντας τον

55 42 Υλοποίηση Συστήματος Cyan, στο section Device Manager: Create API Key. Η κλάση NodeService.java είναι κομμάτι του YAgent και συνεπώς χρησιμοποιήθηκε έτοιμη. Είναι το αρχείο που εδραιώνει και ρυθμίζει την επικοινωνία με το cloud και είναι υπεύθυνο για την ανταλλαγή μηνυμάτων (διάφορα Requests, Upload/Download κ.ά.). Δημιουργία των Things Στην κλάση ThingsCreator.java δημιουργήθηκαν τα things και τα ports που φαίνονται στην Εικόνα 5.1. Εικόνα 5.1: Things & Ports of IoT kit s sensors Ενδεικτικά παρατίθεται ο κώδικας που χρησιμοποιήθηκε για τη δημιουργία του αισθητήρα θερμοκρασίας¹, αλλά κατά αντιστοιχία φτιάχτηκαν και τα υπόλοιπα. public static ArrayList<Thing> Create(){ ArrayList<Thing> things = new ArrayList<>(); SettingsProvider settingsprovider = SettingsProvider.getInstance(WearablesApplication.getAppContext()); String nodekey = settingsprovider.getnodekey(); String temperaturekey = ThingKey.CreateKey(nodeKey, "Temperature"); Thing temperature = new Thing(temperatureKey, //ThingKey "Temperature", //Name new ArrayList<ConfigParameter>(), //Config new ArrayList<Port>(), //Ports "com.yodiwo.text.console", //Type "", //BlockType new ThingUIHints (" "") //UIHints ); temperature.ports.add(new Port(PortKey.CreateKey(temperatureKey, "0"), //PortKey "Value", //Name "", //Description ioportdirection.output, //iodirection eporttype.string, //Type "", //State 0, //RevNum eportconf.propagateallevents) //ConfFlags ); things.add(temperature); } return things;

56 Cloud Demos 43 Μεταφορά των δεδομένων Μετά τη δημιουργία των things και ports, το επόμενο βήμα ήταν η μεταφορά των δεδομένων στο cloud. Αυτό έγινε με τη μέθοδο Send- PortMsg που χρησιμοποιεί το πρωτόκολλο MQTT (επιλέχθηκε έναντι του HTTP για τους λόγους που φαίνονται στον Πίνακα 1.1) από το αρχείο GlobalDataProcessor.java. Παρατίθεται ο κώδικας που χρησιμοποιήθηκε για την αποστολή της επεξεργασμένης τιμής της θερμοκρασίας στο cloud. NodeService.SendPortMsg(WearablesApplication.getAppContext(), "Temperature", "0", String.valueOf(value)); Κατά αντιστοιχία στάλθηκαν και οι υπόλοιπες τιμές, με μια μικρή διαφοροποίηση στην τιμή της πυξίδας (Compass port) του μαγνητόμετρου, όπου χρησιμοποιήθηκαν και τα αρχεία που υπολογίζουν αυτήν την τιμή, βασιζόμενα στα δεδομένα που παράγονται από τον αισθητήρα (όπου headingvalue είναι οι μοίρες που υπολογίστηκαν με τον τρόπο που έχει αναφερθεί στην Παράγραφο 4.2.2): NodeService.SendPortMsg(WearablesApplication.getAppContext(), "Magnetometer", "3", String.valueOf((int) CompassController.getHeadingValue()) + " " + Compass.getDirection(CompassController.getHeadingValue())); Κάνοντας μια δοκιμή στο Cyan με τη χρήση του Message console block, παρατηρείται ότι η σύνδεση με το cloud έχει γίνει με επιτυχία! 5.3 Cloud Demos Αξιοποιώντας τα δεδομένα από το Sensor Kit και χρησιμοποιώντας την πλατφόρμα της Yodiwo, δημιουργήθηκαν τρεις IoT cloud-based εφαρμογές (demos), που επιδεικνύουν τις δυνατότητες τόσο του kit όσο και της πλατφόρμας Demo 1: Real-Time Data Monitoring Το graph του πρώτου demo φαίνεται στην Εικόνα 5.2. Σε αυτό το demo ο χρήστης μπορεί να παρακολουθήσει σε πραγματικό χρόνο τις τιμές από όλους τους αισθητήρες του kit στα διάφορα widgets που έχουν χρησιμοποιηθεί στο Demo 1 Dashboard. Όσον αφορά την τιμή της θερμοκρασίας και τις τιμές του επιταχυνσιόμετρου, του μαγνητόμετρου και του γυροσκόπιου έχει γίνει χρήση του Timeseries chart widget. Αυτό το widget απεικονίζει τις τιμές που λαμβάνει στην είσοδό του σε ένα διάγραμμα του οποίου ο x άξονας είναι ο χρόνος και ο y άξονας είναι οι τιμές από τους αισθητήρες. Ανανεώνεται συνεχώς ¹Τα icons που χρησιμοποιήθηκαν για τους περιβαλλοντολογικούς αισθητήρες υπάρχουν στον φάκελο με τα resources της εφαρμογής, ενώ τα icons για το επιταγχυσιόμετρο, γυροσκόπιο και μαγνητόμετρο βρέθηκαν στη σελίδα Noun Project.

57 44 Υλοποίηση Συστήματος σε πραγματικό χρόνο και επιτρέπει την απεικόνηση των max (μέγιστο), min (ελάχιστο) και avg (μέσο όρο) τιμών. Εικόνα 5.2: Demo 1: Real-Time Monitoring (Cyan Graph) Στην Εικόνα 5.3 το kit είναι εν κινήσει (παρατίθενται τα διαγράμματα για το επιταχυνσιόμετρο και το γυροσκόπιο), ενώ στην Εικόνα 5.4, που φαίνονται όλα τα widgets του dashboard, το kit διατηρείται ακίνητο (ενδεικτικά, οι τιμές του επιταχυνσιόμετρου είναι x 0, y 0, z 1g). Εικόνα 5.3: Demo 1: Real-Time Monitoring (Dashboard)

58 Cloud Demos 45 Εικόνα 5.4: Demo 1: Real-Time Monitoring (Dashboard)

59 46 Υλοποίηση Συστήματος Demo 2: Environmental Sensors - Notifications Το graph του δεύτερου demo φαίνεται στην Εικόνα 5.5). Ο κώδικας που γράφτηκε στα Custom C# Code blocks παρατίθεται στο Παράρτημα Γʹ.1. Εικόνα 5.5: Demo 2: Environmental Sensors - Notifications (Cyan Graph) Σε αυτό το demo ο χρήστης λαμβάνει ειδοποιήσεις όταν οι τιμές από τους περιβαλλοντολογικούς αισθητήρες ξεπεράσουν κάποιες προκαθορισμένες τιμές. Η μεταβολή των τιμών φαίνεται από τα Led singleton widgets στο Demo 2 Dashboard. Όταν η τιμή που μετρήθηκε από τους αισθητήρες είναι εκτός του επιλεγμένου διαστήματος τιμών (δηλαδή των επιθυμητών τιμών), τότε ενεργοποιείται το LED που αντιστοιχεί στον κατάλληλο αισθητήρα. Μένει ενεργοποιημένο έως ότου να επανέλθουν οι επιθυμητές τιμές, οπότε και απενεργοποιείται. Ακόμα στέλνεται και ειδοποίησης στον χρήστη. Το στέλνεται όταν εντοπιστεί η απόκλιση από τις επιθυμητές τιμές και ανά τακτά χρονικά διαστήματα εφόσον δεν έχει επανέλθει η τιμή εντός ορίων. Το χρονικό διάστημα καθορίζεται από το Counter block που φαίνεται στην Εικόνα 5.5 και έχει ρυθμιστεί στα 8 λεπτά. Για τη θερμοκρασία το διάστημα τιμών που επιλέχθηκε είναι μεταξύ 15 C και 25 C, δηλαδή θερμοκρασία δωματίου [42]. Για την υγρασία επιλέχθηκε το διάστημα τιμών 30% - 50%, καθώς αυτό θεωρείται το ιδανικό ποσοστό υγρασίας για τον άνθρωπο [43]. Όταν οι τιμές που μετράνε οι αισθητήρες είναι εκτός αυτών των διαστημάτων, τότε ενεργοποιείται το αντίστοιχο LED και στέλνεται στον χρήστη. Για την πίεση γίνεται σύγκριση με την τιμή Pa, η οποία

60 Cloud Demos 47 είναι η τιμή της ατμοσφαιρικής πίεσης στην επιφάνεια της θάλασσας [44]. Όταν η τιμή από τον αισθητήρα της πίεσης γίνει μικρότερη αυτού του αριθμού, δηλαδή ο χρήστης βρίσκεται σε υψόμετρο (η ατμοσφαιρική πίεση μειώνεται όταν αυξάνεται το υψόμετρο), τότε στέλνεται η αντίστοιχη ειδοποίηση. Τα αποτελέσματα φαίνονται στην Εικόνα 5.6. Όπως φαίνεται στο συγκεκριμένο dashboard, μόνο η τιμή της υγρασίας είναι εντός του επιθυμητού διαστήματος τιμών, ενώ οι τιμές της θερμοκρασίας και της πίεσης έχουν υπερβεί τα καθορισμένα όρια. Τα LED ενεργοποιήθηκαν για να ενημερώσουν τον χρήστη για τις μετρήσεις και στάλθηκαν ειδοποίησης. Εικόνα 5.6: Demo 2: Environmental Sensors - Notifications (Dashboard) Demo 3: Historical Environmental Data Το graph του τρίτου demo φαίνεται στην Εικόνα 5.7. Ο κώδικας που γράφτηκε στο Custom C# Code block παρατίθεται στο Παράρτημα Γʹ.2. Σε αυτό το demo οι τιμές από τους περιβαντολλογικούς αισθητήρες αποθηκεύονται σε μια βάση δεδομένων MySQL και απεικονίζονται στο Demo 3 Dashboard σε ένα διάγραμμα χρόνου με τη χρήση του Time Series widget. Ο χρήστης έχει τη δυνατότητα να δει όλα τα δεδομένα συγκεντρωτικά ή να επιλέξει για προβολή μόνο τις τιμές που μετρήθηκαν εντός ενός συγκεκριμένου χρονικού διαστήματος εισάγωντας την επιθυμητή ημερομηνία. Όταν επιλεγεί η ημερομηνία, ο χρήστης πατάει το κουμπί Apply για να πραγματοποιηθεί το query στη βάση δεδομένων και να εφαρμοστεί τελικά η αλλαγή στο χρονοδιάγραμμα. Επίσης, το συγκεκριμένο widget επιτρέπει την απεικόνηση των max (μέγιστο), min (ελάχιστο) και avg (μέσο όρο)

61 48 Υλοποίηση Συστήματος τιμών. Εικόνα 5.7: Demo 3: Historical Environmental Data (Cyan Graph) Όσον αφορά τη βάση δεδομένων, αρχικά δημιουργήθηκαν πίνακες (tables) για κάθε αισθητήρα (Temperature, Humidity, Pressure). Όταν φτάνουν τα δεδομένα από τους αισθητήρες του kit στο cloud, εκτελείται το query INSERT για την αποθήκευση των μετρήσεων στο αντίστοιχο table. Το {0} αντιστοιχεί στην τιμή της μέτρησης από τον αισθητήρα του kit στρογγυλοποιημένη στα δυο δεκαδικά ψηφιά. Το query SELECT εκτελείται κατά την αρχικοποίηση του Demo 3 Dashboard και χρησιμοποείται για την επιλογή όλων των αποθηκευμένων στοιχείων που υπάρχουν στα tables και την προβολή τους στο Time Series widget. CREATE TABLE IF NOT EXISTS Temperature ( temperature_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, temperature_value DECIMAL(5,2), timestamp TIMESTAMP NOT NULL ); INSERT INTO Temperature (temperature_value, timestamp) values ('{0}', CURRENT_TIMESTAMP); SELECT * FROM Temperature; Όταν ολοκληρωθεί η εισαγωγή του επιθυμητού διαστήματος ημερομηνίας, πραγματοποιείται ένα SELECT query, όπου τα αποτελέσματα φιλτράρονται με τη χρήση του WHERE. Επιλέγονται μόνο οι τιμές της θερμοκρασίας που βρίσκονται εντός του χρονικού διαστήματος που διά-

62 Cloud Demos 49 λεξε ο χρήστης, με τα {0} και {1} να αντιπροσωπεύουν τη StartDate και EndDate αντίστοιχα. SELECT * FROM Temperature WHERE timestamp BETWEEN '{0} 00:00:00' AND '{1} 23:59:59'; (αʹ) Προβολή όλων των μετρήσεων και επιλογή ημερομηνίας (βʹ) Προβολή μετρήσεων συγκεκριμένου χρονικού διαστήματος Εικόνα 5.8: Demo 3: Historical Environmental Data (Dashboard) Τα αποτελέσματα φαίνονται στην Εικόνα 5.8. Στην Εικόνα 5.8αʹ εμφανίζονται όλες οι τιμές που είναι αποθηκευμένες στη βάση δεδομένων. Πατώντας στην ημερομηνία στο πάνω δεξιά μέρος της οθόνης, εμφανίζεται το ημερολόγιο με το οποίο γίνεται η εισαγωγή του επιθυμητού χρονικού

63 50 Υλοποίηση Συστήματος διαστήματος. Στην εικόνα 5.8βʹ φαίνεται το αποτελέσμα της παραπάνω επιλογής, δηλαδή σε αυτήν την περίπτωση η απεικόνηση όλων των μετρήσεων που έγιναν στις 24 και 25 Μαΐου Δημιουργία UI Το τελευταίο που έμεινε μετά από όλα τα παραπάνω είναι η δημιουργία user interface² στην Android εφαρμογή, ώστε ο χρήστης να μπορεί να αλληλεπιδρά με τα cloud demos. Στο αρχείο MenuHolderActivity.java μέσω του οποίου πραγματοποιείται η περιήγηση στις επιλογές της εφαρμογής (βλ. Υποενότητα 5.2), προστέθηκε κώδικας που επιτρέπει στον χρήστη, επιλέγοντας το Cloud από το menu, να μεταφερθεί στο AppStoreFragment.java. Warlock API Πρωτού παρουσιαστούν λεπτομέρειες της υλοποίησης, πρέπει να αναφερθεί ότι σε αυτό το σημείο της εργασίας χρησιμοποιήθηκε το Warlock API της Yodiwo. Δημιουργήθηκε το αρχείο WarlockService.java (public class WarlockService extends BroadcastReceiver) το οποίο δηλώθηκε στο αρχείο AndroidManifest.xml της εφαρμογής: <receiver android:name=".services.warlockservice" android:exported="true"> <intent-filter> <action android:name="android.intent.action.boot_completed"/> <action android:name="android.intent.action.input_method_changed" /> </intent-filter> </receiver> Το WarlockService.java είναι ουσιαστικά ένας broadcast receiver που λαμβάνει broadcasts από τους warlock handlers του NodeService.java. Η επεξεργασία γίνεται στις μεθόδους handlemultigraphactionrsp (Context context, RpcWaiter rpc, MultiGraphActionRsp msg)³ και handlegraphaction- Rsp (Context context, GraphActionReq req, GraphActionRsp rsp)³, που είναι υπεύθυνες για τη φόρτωση των graphs και για τη διαχείρηση των ενεργειών του χρήστη. Τα αποτελέσματα αναμεταδίδονται και τελικά λαμβάνονται από έναν broadcast receiver στο αρχείο AppStoreFragment.java, ο οποίος είναι υπεύθυνος για την ενημέρωση του UI της εφαρμογής. Τα graphs που είναι αποθηκευμένα στον φάκελο Demo στο Cyan, εμφανίζονται στην οθόνη της Android συσκευής και ο χρήστης μπορεί να τα δει και να επιλέξει αυτό που θέλει και να το κάνει deploy/undeploy ή/και public void onreceive(context context, Intent intent) { String action = intent.getaction(); ²Το UI είναι βασισμένο σε αυτό που υπάρχει στην εφαρμογή Yodiwo NeBiT (beta) [45] της Yodiwo.

64 Δημιουργία UI 51 Bundle b = intent.getextras(); Logger.getInstance(context).log(Log.INFO, TAG, "Broadcast received: " + action); } try { switch (action) { // MULTIGRAPH_ACTION_RSP case BroadcastConstants.BROADCAST_MULTIGRAPH_ACTION_RSP: { handlemultigraphactionrsp(context, new Gson().fromJson(b.getString( BroadcastConstants.EXTRA_RPC_WAITER), RpcWaiter.class), new Gson().fromJson(b.getString( BroadcastConstants.EXTRA_MULTIGRAPH_ACTION_RSP), MultiGraphActionRsp.class)); break; } // LOAD_GRAPHS_RSP case BroadcastConstants.BROADCAST_LOAD_GRAPHS_RESP: { handleloadgraphsresp(context, new Gson().fromJson(b.getString( BroadcastConstants.EXTRA_LOAD_GRAPHS_RESP), LoadGraphsResp.class)); break; } } } catch(exception ex) { Logger.getInstance(context).logException(TAG, ex); } Άλλες Τεχνολογίες Για την υλοποίηση του UI εκτός του αρχείου AppStoreFragment.java χρησιμοποιήθηκαν ακόμα 3 αρχεία java, 3 αρχεία xml και 1 εικόνα. Για λόγους εξοικονόμησης χώρου δεν είναι δυνατό να παρατεθεί ο κώδικας, αλλά θα εξηγηθούν συνοπτικά οι βασικές τεχνολογίες που χρησιμοποιήθηκαν. Το τελικό αποτέλεσμα φαίνεται στην Εικόνα 5.9. Το RecyclerView[46] χρησιμοποιήθηκε για την απεικόνηση των γράφων του cloud σε μια λίστα με scroll. Γενικά χρησιμοποιείται για μεγάλα sets από δεδομένα ίδιου τύπου που είναι πιθανόν να μην μπορούν να εμφανιστούν όλα μαζί ή δεδομένα που αλλάζουν συχνά αναλόγως τις ενέργειες του χρήστη ή συμβάντων του δικτύου (network events). Όταν ο χρήστης κάνει scroll up ή scroll down, τα στοιχεία που δεν είναι ορατά ανακυκλώνονται και ξαναχρησιμοποιούνται για τη δημιουργία των νέων στοιχείων της λίστας. Η ανακύκλωση των views είναι ιδιαίτερα χρήσιμη γιατί εξοικονομεί μνήμη. (Εικόνα 5.9αʹ) Για τη δημιουργία κάθε στοιχείου της λίστας χρησιμοποιήθηκε το CardView[47]. Με αυτό απεικονίζονται τα δεδομένα σε μορφή καρτών του ίδιου στυλ και επιτυγχάνεται έτσι μια ομοιομορφία όσον αφορά το UI. (Εικόνα 5.9αʹ) Το Swipe-to-Refresh[48] προστέθηκε ώστε ο χρήστης να μπορεί να κάνει update τη λίστα manually όποτε αυτός το επιθυμεί. Εμφανίζεται στην οθόνη ένα κυκλικό progress bar το οποίο εξαφανίζεται όταν πραγματοποιηθεί η ενημέρωση των στοιχείων της λίστας. (Εικόνα 5.9αʹ) ³Λεπτομερές documentation για το Warlock API βρίσκεται στη σελίδα Warlock API.

65 52 Υλοποίηση Συστήματος (αʹ) Swipe-to-Refresh, RecyclerView (βʹ) SearchView, Filtering Εικόνα 5.9: Cloud Fragment at Dialog s Application Επίσης προστέθηκε στο menu της εφαρμογής, που βρίσκεται στο πάνω μέρος της οθόνης και είναι κοινό σε όλα τα fragments του MenuHolder Activity.java, το SearchView[49]. Με αυτό ο χρήστης μπορεί να πραγματοποιήσει μια αναζήτηση στα στοιχεία της λίστας και να βρει την εφαρμογή που επιθυμεί αμέσως. Το φιλτράρισμα στα στοιχεία της λίστας πραγματοποιήθηκε με το Filter Class[50] και το Filterable Interface[51]. (Εικόνα 5.9βʹ) Τέλος, χρησιμοποιήθηκε και το Data Binding[52]. Η βιβλιοθήκη Data Binding επιτρέπει τη δέσμευση των UI στοιχείων των layouts⁴ σε data sources της εφαρμογής χρησιμοποιώντας δηλωτική μορφή και όχι προγραμματιστικά. Η δέσμευση στοιχείων στα αρχεία layout επιτρέπει την αφαίρεση πολλών UI framework calls ελαχιστοποιώντας τον κώδικα που αφορά τα UI στοιχεία και κάνοντας τον κώδικα του αρχείου απλούστερο και πιο εύκολο να συντηρηθεί. Με αυτόν τρόπο βελτιώνεται και η απόδοση της εφαρμογής και αποφεύγονται memory leaks⁵ και null pointer exceptions⁶. ⁴Layout (διάταξη) είναι η διαδικασία υπολογισμού της θέσης αντικειμένων στην οθόνη υπακούοντας σε διάφορους περιορισμούς. Στα Android το layout ορίζει τη δομή για ένα UI στην εφαρμογή. ⁵Memory Leaks (διαρροές μνήμης) συμβαίνουν όταν ένα αντικείμενο μένει δεσμευμένο στη μνήμη πολύ καιρό αφότου έχει εξυπηρετήσει τον σκοπό του. Έτσι αυξάνεται σταδιακά η χρήση της μνήμης από την εφαρμογή, έως ότου η εφαρμογή να μην μπορεί να διαθέσει άλλους πόρους και τελικά να κρασάρει. Τότε παράγεται το OutOfMemoryException. ⁶Το NullPointerException παράγεται όταν η εφαρμογή προσπαθεί να χρησιμοποιήσει το null σε μια περίπτωση όπου απαιτούνταν ένα αντικείμενο (π.χ. όταν καλείται ένα αντικείμενο που δεν έχει αρχικοποιηθεί).

66 ΚΕΦΑΛΑΙΟ 6 RSSI HEATMAP APPLICATION 6.1 Εισαγωγικά στοιχεία Α επιτεύχθηκε η σύνδεση με το cloud, η απεικόνιση των δεδομένων στα dashboards και η δημιουργία cloud-based εφαρμογών, το επόμενο βήμα ήταν η δημιουργία μιας εφαρμογής στο κινητό. Στο παρόν κεφάλαιο, αναλύονται οι λεπτομέρειες της εφαρμογής RSSI Heatmap που αναπτύχθηκε. Ο χρήστης φορτώνει μια εικόνα απο το Gallery του κινητού (π.χ. μια κάτοψη ενός δωματίου) και στη συνέχεια κλικάρει στην εικόνα για να υποδείξει το σημείο που θα τοποθετηθεί το BLE device (το οποίο και θα μείνει σταθερό καθ ολη τη διαρκεια των μετρησεων) και σε ποια σημεία επιθυμεί να κάνει μετρήσεις για την τιμή του rssi. Μετά ακουλουθεί τις οδηγίες της εφαρμογής (π.χ. Go to position Pos 1 and press the button I M THERE ή If you wish to continue to the next position press NEXT. If you wish to stop the measurements and generate the heatmap with the current values press STOP ). Στο τέλος λοιπόν δημιουργείται το heatmap. Ο χρήστης μπορεί να αποθηκεύσει την εικόνα τοπικά στο κινητό του και στη συνέχεια να επιλέξει να την ανεβάσει στο cloud. Στο cloud αποθηκεύεται σε μια mysql βάση δεδομένων και τα αποτελέσματα απεικονίζονται μέσω των dashboards της Yodiwo. Απο εκεί μπορεί να αλλάξει το όνομα στις διάφορες εικόνες, να τις διαγράψει και να τις ταξινομήσει αλφαβητικά ή με βάση την ημερομηνία. 53

67 54 RSSI Heatmap Application Τι είναι το RSSI Για ανάπτυξη αυτής της εφαρμογής χρησιμοποιήθηκε ο δείκτης RSSI, ο οποίος συνιστά μέτρο της ισχύος του σήματος που λαμβάνεται στην RF κεραία του δέκτη σε dbm (decibel-milliwatts), όπου dbm = 10 log 10 (mw ). Οι τυπικές τιμές είναι 100 dbm για ένα ασθενές σήμα και 60 dbm για ένα ισχυρό σήμα [53]. Παρά την καταλληλότητά του για την επίλυση του παραπάνω προβλήματος, σύμφωνα με εμπειρική μελέτη της RF τεχνολογίας, όπως παρουσιάζεται στην παρακάτω ενότητα, υπάρχουν προβλήματα (π.χ. multi-path fading, background interference) που καθιστούν κάποιες φορές τις μετρήσεις του εν λόγω δείκτη ανακριβείς [54] [55] [56]. Παράγοντες που επιδρούν στην τιμή RSSI Υπάρχουν ποικίλοι παράγοντες που συμβάλλουν στην εμφάνιση αποκλίσεων στη μέτρηση της έντασης της ισχύος του ληφθέντος σήματος (RSS). Πιο συγκεκριμένα, η ποικιλομορφία των αποστολέων έχει σαν αποτέλεσμα διαφορετικοί αποστολείς, ακόμα και αν έχουν προγραμματιστεί για ίδια λειτουργία, να συμπεριφέρονται διαφοροποιημένα. Συνεπώς, αν ένας κόμβος έχει καθοριστεί να αποστέλλει πακέτα με ισχύ εκπομπής d dbm, τότε αυτά θα αποσταλούν με ισχύ εκπομπής όχι απαραίτητα ίση με d dbm. Αντίστοιχα, λόγω της ποικιλομορφίας των δεκτών, η ευαισθησία τους διαφέρει για τα διαφορετικά radio chips, με αποτέλεσμα η τιμή του RSSI που καταγράφεται από τους δέκτες να είναι διαφορετική, ακόμα και αν διατηρούνται σταθερές οι υπόλοιπες παράμετροι που επηρεάζουν την RSS. Επιπροσθέτως, η κατευθυντικότητα της κεραίας αποτελεί καθοριστικό παράγοντα για την τιμή του RSSI, καθώς, δεδομένου ότι κάθε κεραία κατασκευαστικά διαθέτει ένα καθορισμένο μοτίβο ακτινοβολίας (radiation pattern), η μετρούμενη στο δέκτη RSSI τιμή για ένα ζευγάρι επικοινωνούντων κόμβων και για δεδομένη μεταξύ τους απόσταση μεταβάλλεται για διαφορετικό προσανατολισμό των κεραιών του ζεύγους των κόμβων. Επίσης, το σήμα που καταφθάνει στο δέκτη αποτελεί στην πραγματικότητα το άθροισμα επιμέρους σημάτων (multipath), τα οποία έχουν προέλθει από το αρχικό, εξαιτίας μιας σειράς δύσκολων στον υπολογισμό φαινομένων, όπως η σκέδαση (scattering), η ανάκλαση (reflection), η διάθλαση (refraction) και η περίθλαση (diffraction), τα οποία συνδέονται με την RF μετάδοση (propagation) του σήματος στο χώρο. Λεπτομερέστερα, ο όρος σκέδαση αναφέρεται στο φαινόμενο, κατά το οποίο το μέσο από το οποίο διαδίδεται το κύμα αποτελείται από αντικείμενα μικρότερων διαστάσεων συγκρινόμενων με το μήκος κύματος. Επίσης, ο αριθμός των εμποδίων ανά μονάδα όγκου είναι μεγάλος. Έτσι τα κύματα σκεδάζονται λόγω τραχειών επιφανειών, μικρών αντικειμένων ή ανομοιομορφίας του καναλιού. Η ανάκλαση λαμβάνει χώρα όταν το μεταδιδόμενο κύμα προσπίπτει σε αντικείμενο μεγάλων διαστάσεων, συγκριτικά με αυτές του

68 Εισαγωγικά στοιχεία 55 μήκους κύματος. Έτσι ανάκλαση συμβαίνει στο έδαφος, τα βουνά και τα κτήρια. Η περίθλαση είναι μια άλλη ιδιότητα των ηλεκτρομαγνητικών κυμάτων που προέρχεται από την ύπαρξη σχισμών σε ένα αγώγιμο επίπεδο ή την ύπαρξη αιχμηρών εμποδίων. Στις υψηλές συχνότητες η περίθλαση, όπως και η ανάκλαση, εξαρτάται από τη γεωμετρία του αντικειμένου, καθώς επίσης από το πλάτος, τη φάση και την πολικότητα του κύματος στο σημείο της περίθλασης. Τέλος, όπως και στην περίπτωση του φωτός, η διάθλαση λαμβάνει χώρα όταν το ηλεκτρομαγνητικό κύμα περάσει από ένα μέσο διάδοσης σε ένα άλλο με διαφορετική πυκνότητα. Αυτό έχει σαν αποτέλεσμα το κύμα να ακολουθεί μια άλλη κατεύθυνση στο δεύτερο μέσο και ταυτόχρονα η ταχύτητα του μεταβάλλεται. Συνεπώς, λόγω των παραπάνω φαινομένων κατά τη μετάδοση του σήματος, προκαλείται εξασθένηση και αλλοίωση του σήματος. Οι διακυμάνσεις του SS (Signal Strength), επηρεάζουν αμφότερους τους σταθερούς και κινούμενους δέκτες, είτε αυτοί βρίσκονται σε εξωτερικό ή εσωτερικό χώρο. Η εξασθένηση του ηλεκτρομαγνητικού SS στον ελεύθερο χώρο ονομάζεται large-scale effect, ενώ οι γρήγορες διακυμάνσεις του SS που εμφανίζονται για σύντομο χρονικό διάστημα ή σε μικρή διαδρομή του κύματος και συνδέονται με την κίνηση της κεραίας εκπομπής ή λήψης αναφέρονται ως small-scale effects Τι είναι το Heatmap Ένας χάρτης θερμότητας (heatmap) είναι μια γραφική αναπαράσταση ενός συνόλου σημείων γεωγραφικών δεδομένων σε ένα δισδιάστατο χώρο. Κάθε σημείο διαθέτει μια συντεταγμένη με τιμή Χ και μια άλλη, με τιμή Υ. Οι τιμές Χ και Υ καθορίζουν την επακριβή τοποθέτηση ενός σημείου πάνω στο επίπεδο. Η πυκνότητα των σημείων στο επίπεδο αυτό, αναπαρίσταται σε ένα χάρτη θερμότητας με τη χρήση χρωμάτων. Η χρήση αυτής της γεωγραφικής αναπαράστασης δεδομένων στο χάρτη, ουσιαστικά ενθαρρύνει την ανάδειξη ενός νέου τρόπου απεικόνισης της πληροφορίας. Με τη βοήθεια του χάρτη θερμότητας αναπαρίσταται γραφικά ένας πίνακας τιμών (αριθμών) με τη χρήση χρωμάτων, ενώ παράλληλα υλοποιείται μια διαδικασία ομαδοποίησης των σχετιζόμενων δεδομένων, που φέρουν παρόμοιες τιμές. Οι «χαμηλές» τιμές τείνουν να χρησιμοποιούν ανοικτότερες αποχρώσεις του μπλε, ενώ οι «υψηλότερες» τιμές υιοθετούν πιο θερμές αποχρώσεις του κόκκινου, ή του πορτοκαλί χρώματος[57].

69 56 RSSI Heatmap Application 6.2 Υλοποίηση μέρη: Η υλοποίηση για αυτήν την εφαρμογή μπορεί να διακριθεί σε δυο 1. H ανάπτυξη κώδικα στο κινητό που περιλαμβάνει το UI και την αλληλεπίδραση με τον χρήστη, τη μέτρηση του RSSI όπως υπολογίζεται από το κινητό και την παραγωγή του heatmap. 2. Ο σχεδιασμός και η ανάπτυξη cloud εφαρμογής με το εργαλείο Cyan της Yodiwo, η δημιουργία βάσης δεδομένων για την αποθήκευση των εικόνων και η απεικόνηση στο περιβάλλον των dashboards Android κομμάτι Όπως και στην Ενότητα 5.4, αρχικά προστέθηκε κώδικας στο αρχείο MenuHolderActivity.java, ο οποίος επιτρέπει στον χρήστη, επιλέγοντας το RSSI Heatmap από το menu, να μεταφερθεί στο αντίστοιχο fragment, δηλαδή το RssiHeatmapFragment.java. Ανάγνωση RSSI τιμής Για την τιμή του RSSI χρησιμοποιήθηκε το αρχείο Callback.java (public class Callback extends android.bluetooth.bluetoothgattcallback). Εκεί έγινε Override της μεθόδου onreadremoterssi¹ και δημιουργήθηκε η μέθοδος getrssi() ώστε να υπάρχει πρόσβαση στην τιμή που μετριέται και από άλλα public void onreadremoterssi(bluetoothgatt gatt, int rssi, int status) { super.onreadremoterssi(gatt, rssi, status); } if(status == BluetoothGatt.GATT_SUCCESS) { Log.d(TAG, "Got RSSI value of " + rssi); rssivalue = rssi; } else { Log.d(TAG, "Error getting RSSI value."); } public int getrssi() { return rssivalue; } Στο αρχείο RssiHeatmapFragment.java δημιουργήθηκε η μέθοδος calculateavgrssi(). Αυτή καλείται κάθε φορά που ο χρήστης επιθυμεί να πάρει τη μέτρηση του RSSI για κάποιο σημείο στον χώρο. Εκεί υλοποιείται ένα for loop το οποίο μετρά 10 τιμές για το RSSI με τη χρήση της μεθόδου ¹Να σημειωθεί πως η μέτρηση του RSSI γίνεται με αυτόν τον τρόπο όταν η BLE συσκευή είναι συνδεδεμένη με μια Android εφαρμογή. Όταν γίνεται ανίχνευση με Bluetooth για να μετρηθεί η τιμή RSSI των κοντινών συσκευών, χρησιμοποιείται ένας Broadcast Receiver.

70 Υλοποίηση 57 readremoterssi(). Στο τέλος υπολογίζεται και επιστρέφεται ο μέσος όρος αυτών των τιμών (για μεγαλύτερη αξιοπιστία). Load Image Ο χρήστης έχει τη δυνατότητα να φορτώσει μια δικιά του εικόνα κάτοψης χώρου, επιλέγοντάς την από το Gallery της συσκευής του με το κουμπί Pick an Image from Gallery. Τότε εκτελείται ο παρακάτω κώδικας: loadimage.setonclicklistener(new View.OnClickListener() public void onclick(view v) { Intent intent = new Intent(Intent.ACTION_PICK, android.provider.mediastore.images.media.external_content_uri); startactivityforresult(intent, IMG_RESULT); } }); Η μέδοδος startactivityforresult χρησιμοποιείται για να πάρει ένα αποτέλεσμα από το νέο Activity που θα ξεκινήσει και το οποίο θα τοποθετηθεί στην κορυφή του activity stack². Δέχεται ως όρισμα ένα Intent που περιγράφει το activity που θα εκτελεστεί και μια παράμετρο που προσδιορίζει το request που πραγματοποιήθηκε. Όταν ο χρήστης ολοκληρώσει τις ενέργειές του στο νέο activity και επιστρέψει στο προηγούμενο απ όπου ξεκίνησε, το σύστημα καλεί τη μέθοδο onactivityresult. Αυτή η μέθοδος δέχεται ως όρισμα το request code που προσδιορίστηκε στη startactivityforresult, ένα result code για το αν η ενέργεια ολοκληρώθηκε με επιτυχία και ένα Intent με τα δεδομένα που ζητήθηκαν. Στη συγκεκριμένη περίπτωση, όταν ολοκληρωθεί η περιήγηση στο Gallery με επιτυχία και ο χρήστης επιστρέψει στο MenuHolderActivity.java, η μέθοδος onactivityresult θα πάρει ως όρισμα το uri της εικόνας που επιλέχθηκε για φόρτωση. Στη συνέχεια έγινε Override της μεθόδου onactivityresult για την επεξεργασία του uri. Από αυτό το uri δημιουργήθηκε ένα Bitmap αντικείμενο, χρησιμοποιώντας την κλάση BitmapFactory για την αποκωδικοποίηση, το οποίο τελικά φορτώθηκε ως ένα αρχείο τύπου bitmap³ στο ImageView⁴ στοιχείο του RssiHeatmap fragment. Με τη χρήση του BitmapFactory[59] επιτυγχάνεται η δημιουργία των bitmaps από διάφορες πηγές, όπως ένα resource, ένα file, ένα byte ²The activities are arranged in a stack (the back stack) in the order in which each activity is opened. When the current activity starts another, the new activity is pushed on the top of the stack and takes focus. The previous activity remains in the stack, but is stopped [58]. ³A bitmap is a common graphics format which is used to store digital raster images. It can be likened to a map of bits, hence the name, as the image is made up of a number of individual dots (bits). Usually, the term bitmap refers to an uncompressed image stored as one bit per pixel. ⁴Supported media formats are: PNG, BMP, WEBP, JPEG and GIF.

71 58 RSSI Heatmap Application array, ένα input stream⁵ κ.ά. Σε αυτήν την εργασία χρησιμοποιήθηκε το Input Stream με τη μέθοδο decodestream(). Επίσης, έγινε χρήση της κλάσης BitmapFactory.Options, η οποία επιτρέπει τη ρύθμιση των επιλογών της αποκωδικοποίησης και περιέχει πληροφορίες για το bitmap που θα προκύψει, όπως π.χ. οι διαστάσεις του. Τέλος, επειδή οι εικόνες έχουν πολλά μεγέθη και σχήματα, σε πολλές περιπτώσεις είναι μεγαλύτερες από ότι χρειάζεται σε ένα τυπικό UI. Κάποιες φορές χρειάζεται να φορτωθεί στη μνήμη μια έκδοση της επιλεγμένης εικόνας με χαμηλότερη ανάλυση (subsampled version) από την κανονική. Οι παράγοντες που επηρεάζουν αυτή την απόφαση είναι η μνήμη που θα χρειαστεί για την εικόνα σε σχέση με αυτή που μπορεί να δεσμευτεί από την εφαρμογή, το μέγεθος της οθόνης της συσκευής και οι διαστάσεις του ImageView ή κάποιου άλλου UI στοιχείου στο οποίο θα απεικονιστεί η εικόνα. Για αυτόν τον λόγο υλοποιήθηκε η μέθοδος calculateinsamplesize(), η οποία αλλάζει την ανάλυση της εικόνας ανάλογα με το ύψος και το πλάτος της οθόνης της Android συσκευής που θα χρησιμοποιηθεί [59] [60]. Υλοποίηση Heatmap Για τον σχεδιασμό του heatmap πάνω στην εικόνα που φορτώθηκε έγινε χρήση της βιβλιοθήκης AndroidHeatMap της εταιρείας Heartland Software Solutions. Ο κώδικας είναι διαθέσιμος στο Github [61]. Αυτό το αρχείο ορίζει ένα custom ImageView, το Heatmap (public class HeatMap extends AppCompatImageView implements OnTouchListener)⁶. Η μέθοδος ontouch γίνεται Override ώστε να ανιχεύονται και να αποθηκεύονται τα clicks του χρήστη πάνω στην εικόνα που φορτώθηκε. Επίσης, μέσα σε αυτό το αρχείο είναι υλοποιημένη η εσωτερική κλάση DataPoint (public static class DataPoint). Σε αυτήν αποθηκεύονται οι συντεταγμένες των σημείων που επέλεξε ο χρήστης, η σειρά με την οποία εισήχθησαν και η τιμή RSSI που έχουν. Κατά τη διάρκεια επιλογής των σημείων, τα σημεία αποθηκεύονται με τιμή RSSI ίση με το μηδέν, και κατά τη διαδικασία των μετρήσεων αποθηκεύεται η πραγματική τιμή RSSI που αντιστοιχεί σε καθένα από αυτά. Ένα από τα πιο βασικά στοιχεία αυτής της βιβλιοθήκης είναι η κλάση Canvas [62], η οποία γενικά χρησιμοποιείται για τον σχεδιασμό δισδιάστατων γραφικών (2D) στο Android. Με τις μεθόδους σχεδιασμού (draw calls) που διαθέτει, επιτρέπει τον σχεδιασμό διαφόρων drawing primatives (π.χ. Rect, Path, text, Bitmap) πάνω σε ένα Bitmap, το οποίο εμπεριέχει τα pixels. Ο τρόπος με τον οποίο γίνεται τελικά η απεικόνηση εξαρτάται ⁵A stream is a sequence of data. A program uses an input stream to read data from a source and an output stream to write data to a destination. The data source and data destination can be anything that holds, generates, or consumes data. Obviously this includes disk files, but a source or destination can also be another program, a peripheral device, a network socket, or an array. ⁶AppCompat is a set of libraries that provide backward compatibility.

72 Υλοποίηση 59 από το Paint που έχει καθοριστεί, το οποίο περιγράφει τα χρώματα και τα στυλ που θα χρησιμοποιηθούν για τον σχεδιασμό. Ένα άλλο σημαντικό χαρακτηριστικό της βιβλιοθήκης είναι η χρήση της κλάσης RadialGradient⁷, η οποία χαρακτηρίζει ένα αντικείμενο τύπου Paint. Δημιουργεί έναν κύκλο με συγκεκριμένο κέντρο και ακτίνα και τον χρωματίζει από το κέντρο έως την άκρη χρησιμοποιώντας τα χρώματα που έχουν οριστεί (Εικόνα 6.1). Εικόνα 6.1: Παραδείγματα RadialGradient Ο παρακάτω κώδικας χρησιμοποιήθηκε για την αρχικοποιήση: private void setheatmap(heatmap map) { map.setminimum(0.0); //minimum on the gradient scale map.setmaximum(100.0); //maximum on the gradient scale map.setradius(200.0); map.setleftpadding(100); map.setrightpadding(100); map.settoppadding(100); map.setbottompadding(100); //A callback to allow markers, values and text to be drawn over the heatmap at each data point. map.setmarkercallback(new HeatMapMarkerCallback.CircleHeatMapMarker(0xff9400D3)); } //Build a color gradient in HSV from red at the center to green at the outside Map<Float, Integer> colors = new ArrayMap<>(); for (int i = 0; i < 21; i++) { float stop = ((float)i) / 20.0f; int color = dogradient(i * 5, 0, 100, 0xff00ff00, 0xffff0000); colors.put(stop, color); } map.setcolorstops(colors); Επίσης, όταν φορτώθηκε η εικόνα, δημιουργήθηκε ένα mutable⁸ αρχείο bitmap με τις διαστάσεις και το config του αρχικού, το οποίο χρησιμοποιήθηκε από τη βιβλιοθήκη για τη δημιουργία του Canvas αντικειμένου. ⁷The word gradient in this context (as in many graphics editors, including Photoshop) refers to a smooth transition between multiple colors, as opposed to using just a single color to fill an area. ⁸In object-oriented and functional programming, an immutable object (unchangeable object) is an object whose state cannot be modified after it is created. This is in contrast to a mutable object (changeable object), which can be modified after it is created.

73 60 RSSI Heatmap Application Υλοποίηση Table Για τη συγκεντρωτική προβολή των αποτελεσμάτων χρησιμοποιήθηκε το TableLayout [63], δηλαδή ένας πίνακας, που οργανώνει την πληροφορία σε σειρές και στήλες. Το TableLayout αποτελείται από TableRow αντικείμενα, κάθε ένα από τα οποία ορίζει μια σειρά του πίνακα. Στην πρώτη σειρά είναι ένας τίτλος, που αναφέρεται στα περιεχόμενα κάθε στήλης, ενώ οι υπόλοιπες σειρές αντιστοιχούν στις μετρήσεις. Ο πίνακας εμφανίζεται στην οθόνη με την ολοκλήρωση της διαδικασίας. Έχει επίσης υλοποιηθεί το ScrollView layout, ώστε σε περίπτωση πολλών μετρήσεων ο χρήστης να μπορεί να κάνει scroll και να δει όλα τα αποτελέσματα. Οι στήλες του πίνακα είναι τρεις: 1. Position: η θέση στην οποία έγινε η μέτρηση. 2. RSSI: η τιμή του RSSI που μετρήθηκε εκφρασμένη σε dbm. 3. Description: χαρακτηρισμός/περιγραφή για την τιμή RSSI που μετρήθηκε. Οι χαρακτηρισμoί⁹ φαίνονται στον Πίνακα 6.1. RSSI Description 0 to -59 dbm Amazing -60 to 69 dbm Good -70 to -84 dbm Okay -85 dbm to -94 dbm Not good less than -95 dbm Unusable Πίνακας 6.1: Χαρακτηρισμός των τιμών RSSI Save Image Για τη δημιουργία του προς αποθήκευση αρχείου χρησιμοποιήθηκε το αρχείο ImageHelper του YAgent. Στη μέθοδο createfile() ορίζεται το πρόθεμα του ονόματος του αρχείου που θα δημιουργηθεί (το μέρος του ονόματος που δεν ορίζεται αντιστοιχεί στην ημερομηνία και την ώρα της αποθήκευσης) και η επέκτασή του (.png). Επιπλέον προσδιορίστηκε ο φάκελος στον οποίο θα αποθηκεύονται οι εικόνες στην Android συσκευή. Έχει το όνομα Heatmap και είναι υποφάκελος του Pictures Directory του Android. File photofile = ImageHelper.createFile(WearablesApplication.getAppContext(), "Heatmap_", ".png", Environment.DIRECTORY_PICTURES); ⁹Σε διαφορετικές πηγές στο Internet, η διάκριση και ο χαρακτηρισμός των τιμών RSSI συναντάται αλλιώς. Έγινε μια προσπάθεια να δοθεί ένας ποιοτικός χαρακτηρισμός βασισμένος στις διάφορες πηγές που βρέθηκαν.

74 Υλοποίηση 61 Η μέθοδος setdrawingcacheenabled ενεργοποιεί την drawing cache και η μέθοδος getdrawingcache που καλείται στη συνέχεια επιστρέφει το view που επιλέχτηκε (δηλαδή το framelayout στο οποίο βρίσκονται η εικόνα που φορτώθηκε και το heatmap που παράχθηκε) σε ένα bitmap [64]. Η μέθοδος compress είναι υπεύθυνη για την αποθήκευση του bitmap σε μια εικόνα στην Android συσκευή. Δέχεται ως παραμέτρους τον τύπο της εικόνας (PNG), την ποιότητα αποθήκευσης (στη συγκεκριμένη περίπτωση αυτή η ρύθμιση θα αγνοηθεί, καθώς ο τύπος που επιλέχθηκε είναι lossless¹⁰) και το output stream που καθορίστηκε προηγουμένως. framelayout.setdrawingcacheenabled(true); OutputStream imagefileos = new FileOutputStream(photoFile); framelayout.getdrawingcache(true).compress(bitmap.compressformat.png, 100, imagefileos); imagefileos.close(); Creation of RSSI Heatmap Thing Προστέθηκε κώδικας στο αρχείο ThingsCreator.java για τη δημιουργία του RSSI Heatmap Image Thing (Εικόνα 6.2). Η διαδικασία είναι παρόμοια με αυτήν που πραγματοποιήθηκε στην Παράγραφο 5.2, με μόνη διαφορά την προσθήκη Port εισόδου (με το όνομα Response), η λειτουργία του οποίου παρουσιάζεται παρακάτω. Εικόνα 6.2: RSSI Heatmap Thing & Ports Upload Image Το upload της τελικής εικόνας (heatmap) στο cloud της Yodiwo έγινε με το αρχείο NodeService.java του YAgent και τη μέθοδο UploadFile, χρησιμοποιώντας το πρωτόκολλο MQTT. Για την αποστολή της εικόνας στο cloud χρησιμοποιείται το RSSI Heatmap Image thing. uploadimage.setonclicklistener(new View.OnClickListener() public void onclick(view v) { registercloudreceiver(); ¹⁰Lossless compression is a class of data compression algorithms that allows the original data to be perfectly reconstructed from the compressed data. By contrast, lossy compression permits reconstruction only of an approximation of the original data, though this usually improves compression rates (and therefore reduces file sizes).

75 62 RSSI Heatmap Application }); NodeService.UploadFile(WearablesApplication.getAppContext(), //context mcurrentphotopath, //filepath mcurrentphotoname, //filename "Heatmap", //thingname "0", //portindex etransportprotocol.mqtt, //protocol false); //ismultipart } Getting Response from Cloud Όπως αναφέρθηκε και παραπάνω, το thing που δημιουργήθηκε για αυτήν την εφαρμογή έχει επιπλέον με το port εξόδου, μέσω του οποίου φτάνουν οι πληροφορίες στο cloud, και ένα port εισόδου. Το port αυτό δέχεται είσοδο από το graph που αντιστοιχεί στην εφαρμογή και με αυτόν τον τρόπο στέλνεται πληροφορία απο το cloud προς την Android συσκευή, πράγμα ιδιαίτερα χρήσιμο καθώς ο χρήστης μπορεί να ειδοποιείται σχετικά με την επιτυχία της ενέργειας που έκανε, δηλαδή το upload της εικόνας. Το μήνυμα από το cloud έχει το payload που παρατίθεται παρακάτω. Το PortKey αναφέρεται στο port από το οποίο ήρθε το μήνυμα και το State είναι τα δεδομένα που στάλθηκαν. Στη συγκεκριμένη περίπτωση το State αντιπροσωπεύει αν η εγγραφή της εικόνας στη βάση δεδομένων έγινε με επιτυχία (State = Τrue) ή αποτυχία (State = False). { "PortEvents": [ {"PortKey":"5a1bdc66bba8d15ed875b54e-3-Heatmap-1", "State":"True", "RevNum":17, "Timestamp": }], "SeqNo":12728 } Για την επεξεργασία των δεδομένων δημιουργήθηκε ένας broadcast receiver που λαμβάνει broadcasts σχετικά με τα things από τους handlers του NodeService.java. private void registercloudreceiver() { LocalBroadcastManager.getInstance(WearablesApplication.getAppContext()).registerReceiver(mBroadcastCloudMsgRx, new IntentFilter(BroadcastConstants.BROADCAST_THING_UPDATE)); } Ο broadcast receiver mbroadcastcloudmsgrx αρχικά διαπιστώνει αν το μήνυμα προήλθε από το port 1 του thing RSSI Heatmap Image, και στη συνέχεια ελέγχει το state για να ειδοποιήσει τον χρήση με το αντίστοιχο Toast¹¹ μήνυμα. ¹¹A toast provides simple feedback about an operation in a small popup. It only fills the amount of space required for the message and the current activity remains visible and interactive. Toasts automatically disappear after a timeout.

76 Υλοποίηση 63 Διαδικασία & Αποτελέσματα Για την πειραματική διαδικασία αρχικά δημιουργήθηκε μια πρόχειρη κάτοψη που αντιστοιχεί στον χώρο στον οποίο έγιναν οι μετρήσεις. Στη συνέχεια η εικόνα αποθηκεύτηκε σε ένα smartphone, δηλαδή στην Android συσκευή που χρησιμοποιήθηκε, και ακολουθώντας τις οδηγίες έγιναν τα εξής βήματα: 1. Άνοιγμα της εφαρμογής και μετάβαση στο RSSI Heatmap fragment από το menu 2. Φόρτωση της εικόνας (μια κάτοψη χώρου) στην εφαρμογή. 3. Υπόδειξη της θέσης της BLE συσκευής, δηλαδή του IoT Sensor Kit, και των σημείων στα οποία θα πραγματοποιηθούν οι μετρήσεις (Εικόνα 6.3αʹ). Όταν ολοκληρωθεί η εισαγωγή των σημείων, πάτημα ενός κουμπιού για συνέχεια. 4. Μεταφορά του smartphone στη θέση της επόμενης μέτρησης. 5. Πάτημα ενός κουμπιού για υπόδειξη στην εφαρμογή ότι ολοκληρώθηκε η μετάβαση στο κατάλληλο σημείο και συνεπώς μπορεί να πραγματοποιηθεί η μέτρηση για την τιμή του RSSI (Εικόνα 6.3βʹ). 6. Πάτημα του κουμπιού NEXT για συνέχεια των μετρήσεων στην επόμενη θέση ή του κουμπιού STOP είτε όταν ολοκληρώθηκαν όλες οι μετρήσεις είτε εάν ο χρήστης επιθυμεί να τερματίσει τη διαδικασία νωρίτερα με ό,τι μετρήσεις έχουν γίνει μέχρι εκείνη τη στιγμή (Εικόνα 6.3γʹ). (αʹ) (βʹ) (γʹ) Εικόνα 6.3: Διαδικασία μετρήσεων 7. Παραγωγή της εικόνας heatmap και πίνακα με όλες τις τιμές συγκεντρωτικά, με χαρακτηρισμό για την ισχύ του σήματος για κάθε μέτρηση (Εικόνα 6.4). 8. Επιλογή για αποθήκευση της εικόνας τοπικά στο smartphone (Εικόνα 6.4αʹ). 9. Αν πραγματοποιηθεί αποθήκευση, υπάρχει η δυνατότητα να γίνει up-

77 64 RSSI Heatmap Application load της εικόνας στο cloud της Yodiwo (Εικόνα 6.4βʹ). Ενδεικτικά παρατίθενται τα αποτελέσματα που προέκυψαν από δυο πειραματικές διαδικασίες στον ίδιο χώρο, αλλά με διαφορετική θέση της BLE συσκευής (Εικόνα 6.4). Στην αριστερή εικόνα (6.4αʹ) το IoT kit τοποθετήθηκε σχεδόν στο κέντρο του χώρου, ενώ στη δεξιά (6.4βʹ) πιο αριστερά. (αʹ) (βʹ) Εικόνα 6.4: Αποτελέσματα Cloud κομμάτι Το graph που δημιουργήθηκε για τις ανάγκες αυτής της εφαρμογής φαίνεται στην εικόνα 6.5. Το block RSSI Heatmap Image δίνει το JSON string που απεστάλη από την εφαρμογή του κινητού:

78 Υλοποίηση 65 Εικόνα 6.5: RSSI Heatmap Graph (from Yodiwo s Cyan)

79 66 RSSI Heatmap Application { } "ContentType":3, "FriendlyDescription":"/storage/emulated/0/Pictures/Heatmap/Heatmap_ _ jpg", "FriendlyName":"/storage/emulated/0/Pictures/Heatmap/Heatmap_ _ jpg", "LocationDescriptorJson":"{ \"RestServiceType\":4, \"Uri\":\" }", "LocationType":1, "Size":0 Το block Image to URI δίνει το URI της εικόνας το οποίο αποθηκεύεται στη βάση δεδομένων και χρησιμοποιείται για την απεικόνηση της εικόνας στα CV Viewer και Image Viewer widgets του Dashboard της εφαρμογής. Το URI έχει την παρακάτω μορφή: Όταν ο χρήστης επιλέγει να δει ή να διαγράψει μια εικόνα heatmap, παράγεται ένα JSON String από το Table widget του Dashboard, από το οποίο αξιοποιούνται κάθε φορά τα κατάλληλα πεδία για το query στη βάση δεδομένων προκειμένου να πραγματοποιηθεί η αντίστοιχη ενέργεια. Το JSON String έχει την παρακάτω μορφή. { } "heatmap_id":41, "image_uri":" "image_name":"heatmap_ _ _tg", "timestamp":" t08:09:45.000z", "$ThisAKeyForBootstrap":19 Όσον αφορά τη μετονομασία, δίνεται η δυνατότητα στον χρήστη να αλλάξει το όνομα σε πολλές εικόνες ταυτόχρονα και σε αυτήν την περίπτωση παράγεται ένα JSON Array, το οποίο επεξεργάζεται με τη χρήση των Arrayfier και Foreach blocks που υπάρχουν στην πλατφόρμα Cyan. Το JSON Array έχει την παρακάτω μορφή. [ { "heatmap_id":40, "image_uri":" "image_name":"heatmap 40", "timestamp":" t08:08:50.000z", "$ThisAKeyForBootstrap":18 }, { "heatmap_id":41, "image_uri":" "image_name":"heatmap!", "timestamp":" t08:09:45.000z", "$ThisAKeyForBootstrap":19 } ] Για την εξαγωγή των δεδομένων από τα JSON χρησιμοποιείται το JSON Single-level Deserializer block. Κάθε φορά χρησιμοποιούνται τα δεδομένα που είναι απαραίτητα για τα queries και παράγεται το αντίστοιχο

80 Υλοποίηση 67 query με το String Builder block. Τα τελικά strings που δημιουργούνται χρησιμοποιούνται ως είσοδος για το MySQL Database Transaction block και παραθέτονται στο Παράρτημα Δʹ. Τέλος, πρέπει να αναφερθεί πως στο Dashboard παρέχονται στον χρήστη διάφορες επιλογές, όπως το zoom και το rotate των εικόνων, η ταξινόμηση τους στο table με βάση το id, το όνομα και η αναζήτηση με βάση την ημερομηνία. Τα αποτελέσματα φαίνονται στην Εικόνα 6.6¹². Όσον αφορά τις εικόνες, δεξιά βρίσκεται το CV Viewer widget που χρησιμοποιείται για την απεικόνηση του τελευταίου (χρονικά) heatmap που έγινε upload και δεξιά είναι το Image viewer widget, όπου απεικονίζονται τα heatmaps που επιλέγει ο χρήστης από το Table widget. Στο Table, φαίνεται πως τα entries με ID 4 και 6 έχουν μετονομαστεί. Τέλος, στις δυο τελευταίες στήλες είναι τα View και Delete buttons για προβολή και διαγραφή μιας εικόνας αντίστοιχα. ¹²Κανένα από τα heatmaps που απεικονίζονται σε αυτή την εικόνα δεν αντιστοιχεί σε κάποιον πραγματικό χώρο ούτε σε κανονική πειραματική διαδικασία. Είναι μόνο μερικά δείγματα από τις προσπάθειες που έγιναν για να δημιουργηθεί και να τεσταριστεί η εφαρμογή. Αριστερά είναι η γάτα μου, δεξιά ένα βατράχι.

81 68 RSSI Heatmap Application Εικόνα 6.6: RSSI Heatmap (from Yodiwo s Dashboard)

Διαδίκτυο των Αντικειμένων - IoT.

Διαδίκτυο των Αντικειμένων - IoT. Διαδίκτυο των Αντικειμένων - IoT sdima@ece.upatras.gr ΑΠΟΚΤΗΣΗ ΑΚΑΔΗΜΑΪΚΗΣ ΔΙΔΑΚΤΙΚΗΣ ΕΜΠΕΙΡΙΑΣ ΣΕ ΝΕΟΥΣ ΕΠΙΣΤΗΜΟΝΕΣ ΚΑΤΟΧΟΥΣ ΔΙΔΑΚΤΟΡΙΚΟΥ ΣΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ (ΦΚ/MIS) Ε.655/ 5001184. sdima@ece.upatras.gr

Διαβάστε περισσότερα

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Μάθημα Πρώτο Εισαγωγή στις Υπηρεσίες Ιστού (Web Services) Μοντέλα WS JSON Χρήση (consume) WS μέσω python Πρόσβαση σε WS και άντληση δεδομένων Παραδείγματα

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών 1 ίκτυα μικρά και μεγάλα Ένα δίκτυο υπολογιστών (computer network) είναι ένας συνδυασμός συστημάτων (δηλαδή, υπολογιστών),

Διαβάστε περισσότερα

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα Στόχοι κεφαλαίου ίκτυα υπολογιστών (Κεφαλαιο 15 στο βιβλιο) Περιγραφή των κύριων θεµάτων σχετικά µε τα δίκτυα υπολογιστών Αναφορά στα διάφορα είδη δικτύων Περιγραφή των διαφόρων τοπολογιών των τοπικών

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

Διαβάστε περισσότερα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

Διαβάστε περισσότερα

Κάντε κλικ για έναρξη

Κάντε κλικ για έναρξη Σημειώσεις : Χρήστος Μουρατίδης Κάντε κλικ για έναρξη Ορισμός Δίκτυο Υπολογιστών = Mία ομάδα από 2 ή περισσότερους υπολογιστές που είναι συνδεδεμένοι μεταξύ τους. Ο κύριος σκοπός είναι να ανταλλάσσουν

Διαβάστε περισσότερα

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου.

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου. ΚΕΦΑΛΑΙΟ 13 Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου. Οι υπηρεσίες νέφους παρέχονται με τέτοιο τρόπο ώστε ο τελικός χρήστης δεν μπορεί να διακρίνει τεχνικές λεπτομέρειες. Η χρηστικότητα, η διαθεσιμότητα

Διαβάστε περισσότερα

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol HTTP Protocol Web and HTTP Βασικά Συστατικά: Web Server Web Browser HTTP Protocol Web Servers (1/2) Ένα πρόγραμμα (λογισμικό) που έχει εγκατασταθεί σε ένα υπολογιστικό σύστημα (έναν ή περισσότερους υπολογιστές)

Διαβάστε περισσότερα

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα 1.7 - Πρωτόκολλα και Αρχιτεκτονική Δικτύου) Πρωτόκολλο είναι ένα σύνολο κανόνων που πρέπει να ακολουθήσουν όλοι οι σταθμοί εργασίας σε ένα δίκτυο ώστε να μπορούν

Διαβάστε περισσότερα

Επίπεδο δικτύου IP Forwading κτλ

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

Διαβάστε περισσότερα

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα Λιόλιου Γεωργία ΕπιβλέπουσαΚαθηγήτρια: ΣατρατζέµηΜάγια, καθηγήτρια, τµ. ΕφαρµοσµένηςΠληροφορικής, ΠΑΜΑΚ Εισαγωγή Γενικά στοιχεία εφαρµογή

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών I Δίκτυα Υπολογιστών I Σχεδίαση και Αρχιτεκτονική Δικτύων Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1 / 19 Διάρθρωση

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία AtYourService CY : Create a REST API Δημήτρης Χριστοδούλου Λεμεσός 2016 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... xiii

Περιεχόμενα. Πρόλογος... xiii Περιεχόμενα Πρόλογος... xiii Κεφάλαιο 1 ο Εισαγωγή στις τεχνολογίες Διαδικτύου... 1 1.1 Σύντομη ιστορία του Διαδικτύου... 3 1.2 Σύνδεση στο Διαδίκτυο μέσω Παρόχου (ISP)... 6 1.3 Μοντέλα Επικοινωνίας...

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Πλωτάρχης Γ. ΚΑΤΣΗΣ ΠΝ Γιατί χρησιµοποιούµε δίκτυα? Δίκτυο Σύνολο Η/Υ και συσκευών Συνδεδεµένα µε κάποιο µέσο Stand-alone

Διαβάστε περισσότερα

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΘΕΣΣΑΛΟΝΙΚΗ, 2016 ΕΙΣΑΓΩΓΗ Μια διαδικτυακή υπηρεσία μπορεί να περιγραφεί απλά σαν μια οποιαδήποτε

Διαβάστε περισσότερα

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

Διαβάστε περισσότερα

Εισαγωγή στο διαδίκτυο

Εισαγωγή στο διαδίκτυο Εισαγωγή στο διαδίκτυο Στόχοι κεφαλαίου Περιγραφή των κύριων θεμάτων σχετικά με τα δίκτυα υπολογιστών Αναφορά στα διάφορα είδη δικτύων Περιγραφή των διαφόρων τοπολογιών των τοπικών δικτύων Περιγραφή των

Διαβάστε περισσότερα

Κεφάλαιο 13: : Εφαρμογές νέφους. Καραμαούνας Π. 1

Κεφάλαιο 13: : Εφαρμογές νέφους. Καραμαούνας Π. 1 Κεφάλαιο 13: : Εφαρμογές νέφους Καραμαούνας Π. 1 13.1 Eισαγωγή στις εφαρμογές νέφους Βασικά χαρακτηριστικά: Εξυπηρέτηση κατ απαίτηση: άμεσα και χωρίς καθυστέρηση Ευρεία πρόσβαση στο δίκτυο: προσβάσιμες

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

Διαβάστε περισσότερα

Υπολογιστική Νέφους Cloud computing

Υπολογιστική Νέφους Cloud computing Υπολογιστική Νέφους Cloud computing Χρ. Ηλιούδης Clouds Cloud computing??? Διείσδυση του Cloud Ορισμός - χαρακτηριστικά Ο όρος cloud έχει τις ρίζες στου στην αρχή του internet όπου συνήθιζαν να το αναπαριστούν

Διαβάστε περισσότερα

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Σχολή Επικοινωνίας και Μέσων Ενημέρωσης Πτυχιακή εργασία Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Εύρος Χριστοδούλου Λεμεσός, Μάιος 2018 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΚΟΙΝΩΝΙΑΣ

Διαβάστε περισσότερα

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12 Αρχιτεκτονικές κατανεμημένων συστημάτων Στόχοι Εξήγηση των πλεονεκτημάτων και των μειονεκτημάτων των αρχιτεκτονικών κατανεμημένων συστημάτων Εξέταση των αρχιτεκτονικών συστημάτων πελάτηδιακομιστή και των

Διαβάστε περισσότερα

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Βιβλιογραφία: Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών Προγραμματισμός Android Ian Clifton. AndroidTM User Interface Design, Addison-Wesley, 2013 P. Deitel. H. Deitel, A. Deitel.

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018 Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου Α Γενικού Λυκείου 87 Διδακτικές ενότητες 10.1 Υπηρεσίες Διαδικτύου 10.2 Ο παγκόσμιος ιστός, υπηρεσίες και εφαρμογές Διαδικτύου Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να μπορούν να διακρίνουν

Διαβάστε περισσότερα

Κεφάλαιο 2. Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον

Κεφάλαιο 2. Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον Κεφάλαιο 2 Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον Εισαγωγή Μέσα αποθήκευσης Δίκτυα υπολογιστών Βάσεις δεδομένων Δίκτυα Υπολογιστών Σύνολο από υπολογιστές ή συσκευές διασυνδεδεμένες

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης Δίκτυα Υπολογιστών Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή Κ. Βασιλάκης Περίγραμμα Τι είναι το διαδίκτυο Στοιχεία που το συνθέτουν Τρόποι παροχής υπηρεσιών Τι είναι τα πρωτόκολλα Τα άκρα του δικτύου

Διαβάστε περισσότερα

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12 Αρχιτεκτονικές κατανεμημένων συστημάτων Στόχοι Εξήγηση των πλεονεκτημάτων και των μειονεκτημάτων των αρχιτεκτονικών κατανεμημένων συστημάτων Εξέταση των αρχιτεκτονικών συστημάτων πελάτηδιακομιστή και των

Διαβάστε περισσότερα

Network Address Translation (NAT)

Network Address Translation (NAT) HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο 2016-2017 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Network Address Translation (NAT) Network Layer Private IP Addresses Πρόβλημα: o χώρος των ΙΡ διευθύνσεων

Διαβάστε περισσότερα

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. 5.1 Γενικά Τα πρώτα δίκτυα χαρακτηρίζονταν από την «κλειστή» αρχιτεκτονική τους με την έννοια ότι αυτή ήταν γνωστή μόνο στην εταιρία που την είχε σχεδιάσει. Με τον

Διαβάστε περισσότερα

Παπασταθοπούλου Αλεξάνδρα Επιβλέπων Καθηγητής: Ψάννης Κωνσταντίνος

Παπασταθοπούλου Αλεξάνδρα Επιβλέπων Καθηγητής: Ψάννης Κωνσταντίνος ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Παπασταθοπούλου Αλεξάνδρα Επιβλέπων Καθηγητής: Ψάννης Κωνσταντίνος Ορισμός «Το Διαδίκτυο των πραγμάτων (IoT) είναι

Διαβάστε περισσότερα

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η Αρχές Δικτύων Επικοινωνιών Σελ. 9-50 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-b.ggia.info/ Creative Commons License 3.0 Share-Alike Σύνδεση από σημείο

Διαβάστε περισσότερα

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Γενικά Η αρχιτεκτονική ανάπτυξης τους πληροφοριακού συστήµατος Γραµµατεία 2000 υποσύστηµα διαχείρισης προσωπικού

Διαβάστε περισσότερα

Connecto. Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Άγγελος Σφακιανάκης. Επιφάνεια Άμεσης Σύνδεσης

Connecto. Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Άγγελος Σφακιανάκης. Επιφάνεια Άμεσης Σύνδεσης Connecto Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Άγγελος Σφακιανάκης Επιφάνεια Άμεσης Σύνδεσης Περιγραφή Συστήματος Προβλήματα μικρή αυτονομία μπαταρίας χρεώσεις δεδομένων πολλαπλοί λογαριασμοί

Διαβάστε περισσότερα

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Μεταπτυχιακό Δίπλωμα Ειδίκευσης Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Δρ. Κακαρόντζας Γεώργιος Επίκουρος Καθηγητής Τμ. Μηχανικών Πληροφορικής Τ.Ε. Μηχανική Λογισμικού για Διαδικτυακές

Διαβάστε περισσότερα

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού 1η διάλεξη Χαρακτηριστικά Μαθήματος Μάθημα προγραμματισμού (και όχι μόνον) Μπορεί να εξελιχθεί σε εφιάλτη αν δεν έχετε καλή γνώση και αρκετή εμπειρία προγραμματισμού (Java)

Διαβάστε περισσότερα

Επαναληπτικές Ασκήσεις Μαθήματος

Επαναληπτικές Ασκήσεις Μαθήματος Επαναληπτικές Ασκήσεις Μαθήματος Ερώτηση: EAM1. Ποιο από τα παρακάτω χαρακτηριστικά δεν αποτελεί κριτήριο κατηγοριοποίησης δικτύων. Κλίμακα Τεχνολογία μετάδοσης Πλήθος τερματικών εντός του δικτύου Ερώτηση:

Διαβάστε περισσότερα

Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών

Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών Συστήματα πανταχού παρόντος υπολογιστή σε περιβάλλοντα υβριδικών βιβλιοθηκών Βερονίκης Σπύρος Τμήμα Αρχειονομίας- Βιβλιοθηκονομίας, Ιόνιο Πανεπιστήμιο spver@ionio.gr Stoica Adrian Τμήμα Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

Διαδίκτυο των Αντικειμένων - IoT.

Διαδίκτυο των Αντικειμένων - IoT. Διαδίκτυο των Αντικειμένων - IoT sdima@ece.upatras.gr ΑΠΟΚΤΗΣΗ ΑΚΑΔΗΜΑΪΚΗΣ ΔΙΔΑΚΤΙΚΗΣ ΕΜΠΕΙΡΙΑΣ ΣΕ ΝΕΟΥΣ ΕΠΙΣΤΗΜΟΝΕΣ ΚΑΤΟΧΟΥΣ ΔΙΔΑΚΤΟΡΙΚΟΥ ΣΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ (ΦΚ/MIS) Ε.655/ 5001184. sdima@ece.upatras.gr

Διαβάστε περισσότερα

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο Συσκευές Τηλεπικοινωνιών και Δικτύωσης Επικοινωνίες Δεδομένων Μάθημα 9 ο Εισαγωγή Ένα δίκτυο αποτελείται από ενεργά και παθητικά στοιχεία. Στα παθητικά στοιχεία εντάσσονται τα καλώδια και τα εξαρτήματα

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 10 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Περιεχόμενα 2 Συνδέσεις και Επικοινωνίες Δίκτυα υπολογιστών Κατηγορίες

Διαβάστε περισσότερα

Information Technology for Business

Information Technology for Business Information Technology for Business Lecturer: N. Kyritsis, MBA, Ph.D. Candidate e-mail: kyritsis@ist.edu.gr Computer System Hardware Υποδομή του Information Technology Υλικό Υπολογιστών (Hardware) Λογισμικό

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου Μ.Στεφανιδάκης Κατανεμημένα συστήματα ελέγχου Α Β διασυνδετικό δίκτυο Γ Δ Ε π.χ. οι επιμέρους

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης Δίκτυα Υπολογιστών Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή Κ. Βασιλάκης Περίγραμμα Τι είναι το διαδίκτυο Στοιχεία που το συνθέτουν Τρόποι παροχής υπηρεσιών Τι είναι τα πρωτόκολλα Τα άκρα του δικτύου

Διαβάστε περισσότερα

Επικοινωνία Client/Server

Επικοινωνία Client/Server Επικοινωνία Client/Server Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία - Client/Server 1 Μοντέλο Πελάτη-Εξυπηρετητή Βασική ιδέα: να δομηθεί το λειτουργικό σύστημα ως συνεργαζόμενες

Διαβάστε περισσότερα

Υποδομή ΤΠ: Υλικό και λογισμικό

Υποδομή ΤΠ: Υλικό και λογισμικό Κεφάλαιο 5 Υποδομή ΤΠ: Υλικό και λογισμικό 5.1 ΜΑΘΗΣΙΑΚΟΙ ΣΤΟΧΟΙ Ποια είναι τα στοιχεία της υποδομής τεχνολογίας πληροφοριών (ΤΠ); Ποιες είναι οι βασικές τεχνολογίες υλικού υπολογιστών, αποθήκευσης δεδομένων,

Διαβάστε περισσότερα

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ Αριθμ. Πρωτ.: 129334/2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ΤΟΥ ΑΡΙΣΤΟΤΕΛΕΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΑΚΟΙΝΩΝΕΙ Τη διενέργεια διαδικασίας ΑΠΕΥΘΕΙΑΣ

Διαβάστε περισσότερα

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture) Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture) Χρήστος Ηλιούδης Πλεονεκτήματα των Υπηρεσιών Ιστού Διαλειτουργικότητα: Η χαλαρή σύζευξή τους οδηγεί στην ανάπτυξη ευέλικτου λογισμικού

Διαβάστε περισσότερα

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud Εισαγωγή στα Πληροφοριακά Συστήματα Ενότητα 11: Κωνσταντίνος Ταραμπάνης Τμήμα Οργάνωσης & Διοίκησης Επιχειρήσεων ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κωνσταντίνος Ταραμπάνης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ Τεχνολογία Δικτύων Επικοινωνιών Πρωτόκολλα και Αρχιτεκτονική

Διαβάστε περισσότερα

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Β5.1.2 Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Τι θα μάθουμε σήμερα: Να ορίζουμε τι είναι πρωτόκολλο επικοινωνίας Να εξηγούμε τη χρησιμότητα των πρωτοκόλλων επικοινωνίας Να ονομάζουμε τα σημαντικότερα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

Διαβάστε περισσότερα

2- Μοντέλα, Επίπεδα, Συμπράξεις, ROI, Υπολ/κό νέφος, Πλατφόρμες και Κινητή Διακυβέρνηση ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ

2- Μοντέλα, Επίπεδα, Συμπράξεις, ROI, Υπολ/κό νέφος, Πλατφόρμες και Κινητή Διακυβέρνηση ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ 2- Μοντέλα, Επίπεδα, Συμπράξεις, ROI, Υπολ/κό νέφος, Πλατφόρμες και Κινητή Διακυβέρνηση ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ Ενότητες Επιχειρηματικά μοντέλα Επίπεδα παροχής υπηρεσιών Συμπράξεις

Διαβάστε περισσότερα

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 4 Λογισμικό συστήματος Καραμαούνας Πολύκαρπος 1 4.1 Λογισμικό συστήματος (application software) Καραμαούνας Πολύκαρπος 2 Λογισμικό εφαρμογών (application software): προγράμματα για την αντιμετώπιση

Διαβάστε περισσότερα

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet. PROXY SERVER Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet. Αποτελεσματικό εργαλείο για την απόκρυψη των εσωτερικών λεπτομερειών και διευθύνσεων IP του δικτύου. Αυξάνει τη συνολική

Διαβάστε περισσότερα

Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές.

Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές. Νεογεωγραφία και Χαρτογραφική Διαδικτυακή Απεικόνιση. Η χρήση Ελεύθερων Γεωγραφικών Δεδομένων και Λογισμικού Ανοιχτού Κώδικα σε Φορητές Συσκευές. 13ο ΕΘΝΙΚΟ ΣΥΝΕΔΡΙΟ ΧΑΡΤΟΓΡΑΦΙΑΣ Η ΧΑΡΤΟΓΡΑΦΙΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

Διαβάστε περισσότερα

Παρουσίαση του Έργου SECOVIA: στόχοι και αποτελέσματα

Παρουσίαση του Έργου SECOVIA: στόχοι και αποτελέσματα Παρουσίαση του Έργου SECOVIA: στόχοι και αποτελέσματα Πάτρα, 4 Οκτωβρίου 2013 Δρ. Πέτρος Γανός Σύμβουλος Περιφερειάρχη σε θέματα ΤΠΕ Μέλος Συντονιστικής Επιτροπής SECOVIA SEE (South East Europe) Transnational

Διαβάστε περισσότερα

Θέματα Διπλωματικών Εργασιών

Θέματα Διπλωματικών Εργασιών Πανεπιστήμιο Πατρών Τμήμα Μηχανικών Η/Υ και Πληροφορικής Τομέας Εφαρμογών και Θεμελιώσεων της Επιστήμης των Υπολογιστών Εργαστήριο Κατανεμημένων Συστημάτων και Τηλεματικής Θέματα Διπλωματικών Εργασιών

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

Διαβάστε περισσότερα

7.2.2 Σχέση OSI και TCP/IP

7.2.2 Σχέση OSI και TCP/IP Κεφάλαιο 7 7.2.2 Σχέση OSI και TCP/IP Σελ. 226-230 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr ΕΣΠΕΡΙΝΟ ΕΠΑΛ Κομοτηνής http://diktya-epal-g.ggia.info/ Γνωστό μοντέλο OSI διασύνδεσης ανοικτών συστημάτων.

Διαβάστε περισσότερα

Βασικές Έννοιες Web Εφαρμογών

Βασικές Έννοιες Web Εφαρμογών ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Τεχνολογίες και Εφαρμογές Διαδικτύου Βασικές Έννοιες Web Εφαρμογών Κατερίνα Πραματάρη Τεχνολογίες και Εφαρμογές Διαδικτύου Περιεχόμενα

Διαβάστε περισσότερα

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1 Επικοινωνία με μηνύματα Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Επικοινωνία με ανταλλαγή μηνυμάτων Η επικοινωνία με μηνύματα είναι ο πιο ευέλικτος τρόπος αλληλεπίδρασης σε κατανεμημένα συστήματα πιο

Διαβάστε περισσότερα

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP Κεφάλαιο 7 Διαδικτύωση-Internet 7.2 Τεχνολογία TCP/IP Τι δηλώνει ο όρος «TCP/IP»; Ο όρος TCP/IP αναφέρεται σε μια ομάδα ομοειδών πρωτοκόλλων που χρησιμοποιούνται για την επικοινωνία των δικτύων υπολογιστών

Διαβάστε περισσότερα

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud Ανοικτά Δεδομένα Προκλήσεις και Ευκαιρίες: Η εμπειρία του OpenDataCloud Κώστας Σαΐδης, PhD Πάροχοι Ανοικτών Δεδομένων datagov.gr diavgeia.gr geodata.gov.gr Πυροσβεστικό σώμα Ελληνική Αστυνομία Υπουργείο

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 2. Το περιβάλλον του παγκόσμιου Ιστού Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 Πλεονεκτήματα παγκόσμιου Ιστού Εξυπηρετητής Ιστού & Ιστοσελίδες Κύριες

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δίκτυα Υπολογιστών Στόχοι 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες

Διαβάστε περισσότερα

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΚΟΤΣΟΓΙΑΝΝΙΔΗΣ ΛΑΖΑΡΟΣ Επιβλέπων καθηγητής Σφέτσος Παναγιώτης ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ως Ηλεκτρονικό Εμπόριο ή

Διαβάστε περισσότερα

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7] Στόχοι ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 Να εξηγήσουμε τι είναι τα δίκτυα υπολογιστών, ποιες είναι οι βασικές κατηγορίες τους και ποιες οι πιο συνηθισμένες τοπολογίες τους. Να περιγράψουμε

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Έστω ότι θέλετε να συνδέσετε 20 υπολογιστές με συνδέσεις από σημείο σε σημείο (point-to-point), ώστε να είναι δυνατή η επικοινωνία όλων

Διαβάστε περισσότερα

ΠΡΟΛΟΓΟΣ. Σε ποιους απευθύνεται αυτό το βιβλίο... vi Διάρθρωση του βιβλίου... vi

ΠΡΟΛΟΓΟΣ. Σε ποιους απευθύνεται αυτό το βιβλίο... vi Διάρθρωση του βιβλίου... vi Πίνακας Περιεχομένων ΠΡΟΛΟΓΟΣ V Σε ποιους απευθύνεται αυτό το βιβλίο... vi Διάρθρωση του βιβλίου... vi 1η Ενότητα: Κινητός ιστός... vii 2η Ενότητα: Κινητές εφαρμογές στην πλατφόρμα Android... vii 3η Ενότητα:

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δυναμική προσωποποιημένη ενημέρωση προσφορών Super Markets στη Θεσσαλονίκη Παπαδόπουλου Κυριάκου Αρ. Μητρώου: 093507 Επιβλέπων καθηγητής: Ηλιούδης Χρήστος Εισαγωγή - Σκοπός Εργασίας Καινοτόμες

Διαβάστε περισσότερα

Παραδείγµατα δικτυακών τεχνολογιών. Ethernet Internet ATM

Παραδείγµατα δικτυακών τεχνολογιών. Ethernet Internet ATM Παραδείγµατα δικτυακών τεχνολογιών Ethernet Internet ATM Τοπικά δίκτυα (LANs) Τα πιο απλά δίκτυα Κάθε υπολογιστής έχει όνοµα διεύθυνση δικτύου (Internet) διεύθυνση τοπικού δικτύου (Ethernet) alice 28 35

Διαβάστε περισσότερα

RobotArmy Περίληψη έργου

RobotArmy Περίληψη έργου RobotArmy Περίληψη έργου Στην σημερινή εποχή η ανάγκη για αυτοματοποίηση πολλών διαδικασιών γίνεται όλο και πιο έντονη. Συνέχεια ακούγονται λέξεις όπως : βελτιστοποίηση ποιότητας ζωής, αυτοματοποίηση στον

Διαβάστε περισσότερα

ΕΠΛ 012. Δίκτυα Τπολογιστών & Διαδίκτυο

ΕΠΛ 012. Δίκτυα Τπολογιστών & Διαδίκτυο ΕΠΛ 012 Δίκτυα Τπολογιστών & Διαδίκτυο Βιβλιογραφία: Nell Dale & John Lewis, Computer Science Illuminated, 2 nd Edition, 2005 Θέματα Η ανάγκη για δίκτυα Αναφορά στα διάφορα είδη δικτύων Περιγραφή των διαφόρων

Διαβάστε περισσότερα

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα επικοινωνίας Ορισμός Σύνολα προσυμφωνημένων κανόνων που απαιτούνται για τον καθορισμό του τρόπου με τον οποίο επιτυγχάνεται η ανταλλαγή δεδομένων, και επομένως

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή ΚΕΦΑΛΑΙΟ 17: Web Services 17.1. Εισαγωγή Με τον όρο WebService αναφερόμαστε σε ένα σύστημα λογισμικού το οποίο σχεδιάστηκε με τρόπο τέτοιο ώστε να υποστηρίζει την ανεμπόδιστη συνεργασία δύο μηχανών μέσω

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ Μεταπτυχιακό Πρόγραµµα Σπουδών Τµήµατος Εφαρµοσµένης Πληροφορικής Θεσσαλονίκη, Ιούνιος 2007 Στόχοι χρήση αντικειµενοστρεφούς

Διαβάστε περισσότερα

Η όλα σε - ένα λύση για μικρά και περιφερειακά ΤETRA δίκτυα

Η όλα σε - ένα λύση για μικρά και περιφερειακά ΤETRA δίκτυα Η όλα σε - ένα λύση για μικρά και περιφερειακά ΤETRA δίκτυα Με μια ματιά Το ACCESSNET Campus IP είναι ένα μικρό σύστημα TETRA το οποίο καθιστά την τεχνολογία TETRA προσιτή για όλους τους διαχειριστές δικτύων.

Διαβάστε περισσότερα

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

Διαβάστε περισσότερα

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP Ημερομηνία παράδοσης 2 εβδομάδες μετά την έναρξη της άσκησης 1. Γενικά για το TCP/IP Η ομάδα πρωτοκόλλων TCP/IP επιτρέπει σε υπολογιστές όλων των μεγεθών, από

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας Υπηρεσίες Internet ίκτυα Η/Υ Επίπεδο Εφαρµογής O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer

Διαβάστε περισσότερα

Κινητές τεχνολογίες;

Κινητές τεχνολογίες; Κινητές τεχνολογίες Κινητές τεχνολογίες; Ασύρματη δικτύωση Κινητές επικοινωνίες Τεχνολογίες Πληροφορικής Σύγχρονες κινητές συσκευές Πρόσβαση στο Internet Αισθητήρες Δέκτης GPS Ηλεκτρονική πυξίδα Επιταχυνσιόμετρο

Διαβάστε περισσότερα

ANDROID Προγραμματισμός Εφαρμογών

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

Διαβάστε περισσότερα

ΠΛΑΤΩΝΑΣ Έργο ΓΓΕΤ 1SME2009

ΠΛΑΤΩΝΑΣ Έργο ΓΓΕΤ 1SME2009 ΠΛΑΤΩΝΑΣ Έργο ΓΓΕΤ 1SME2009 4o Συνέδριο InfoCom Green ICT 2012 ΕΥΡΩΠΑΪΚΗ ΕΝΩΣΗ ΠΛΑΤΩΝΑΣ ΠΛΑΤφόρμα έξυπνου διαλογισμικού για συλλογή, ανάλυση, επεξεργασία δεδομένων από συστήματα πολλαπλών ετερογενών ΑισθητήρΩΝ

Διαβάστε περισσότερα

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Bread Online Σχεδιασμός και μετατροπή μιας απλής οικιακής συσκευής σε επαναπρογραμματιζόμενη συσκευή IP Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών

Διαβάστε περισσότερα

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Μάθημα 0.2: Το Λογισμικό (Software) Δίκτυα υπολογιστών Αντώνης Χατζηνούσκας 2 ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήματος

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης Δίκτυα Υπολογιστών Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης Περίγραμμα ενότητες που εξετάζονται Αρχές δικτυακών εφαρμογών. Αρχιτεκτονικές. Μοντέλα υπηρεσιών επιπέδου μεταφοράς Μοντέλο πελάτη

Διαβάστε περισσότερα

Νέες Επικοινωνιακές Τεχνολογίες

Νέες Επικοινωνιακές Τεχνολογίες Νέες Επικοινωνιακές Τεχνολογίες Λύσεις Θεμάτων http://nop33.wordpress.com Τι ορίζουμε ως Τοπικό Δίκτυο Υπολογιστών; Ποια είναι τα βασικά χαρακτηριστικά των Τοπικών Δικτύων; Ποιες οι βασικές τοπολογίες

Διαβάστε περισσότερα

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα Ανδρέας Βέγλης, Αναπληρωτής Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης Δίκτυα Υπολογιστών Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης Περίγραμμα ενότητες που εξετάζονται Αρχές δικτυακών εφαρμογών Αρχιτεκτονικές Μοντέλα υπηρεσιών επιπέδου μεταφοράς Μοντέλο πελάτη

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Ορισμός των Web Services

Διαβάστε περισσότερα

L. M. Vaquero, L. Rodero Merino, J. Caceres, M. Lindner

L. M. Vaquero, L. Rodero Merino, J. Caceres, M. Lindner A Break in the L. M. Vaquero, L. Rodero Merino, J. Caceres, M. Lindner A Break in the 1 2 3 4 2/44 A Break in the 1 2 3 4 3/44 Δεν υπάρχει ορισμός για το cloud computing A Break in the προκαλείται σύγχυση

Διαβάστε περισσότερα