background image

Σχεδιασμός και υλοποίηση συστήματος IoT ασύρματου ελέγχου και μέτρησης ενέργειας 

 

60 

 

 

Κατά την εκκίνηση του MQTT, ουσιαστικά δημιουργούνται δύο servers. Ένας με το 

πρωτόκολλο  του  MQTT  και  ένας  με  το  πρωτόκολλο  WebSocket.  Αυτό  εξυπηρετεί  στην 
συνδεσιμότητα  του  συστήματος,  με  διαφορετικές  τεχνολογίες.  Στο  παρόν  σύστημα,  η 

κινητή εφαρμογή χρησιμοποιεί το πρωτόκολλο WebSocket, ενώ η συσκευή χρησιμοποιεί 
το  πρωτόκολλο  MQTT.  Επίσης,  στην  διαδικασία  της  αυθεντικοποίησης  της  κάθε 
οντότητας, το σύστημα ορίζει αν πρόκειται για συσκευή ή για χρήστη, ώστε να επιτρέπει 
την πρόσβαση στα κατάλληλα κανάλια επικοινωνίας. 

Για  να  συνδεθεί  κάποιος  στο  MQTT  Server,  θα  πρέπει  πρώτα  να  γίνει 

αυθεντικοποίηση του χρήστη ώστε να λάβει το απαραίτητο Json Web Token (JWT). Στην 
συνέχεια,  το  JWT  μπορεί  να  χρησιμοποιηθεί  κατά  την  σύνδεση  ενός  MQTT  client  στον 

server αποστέλλοντας το στο πεδίο password όπως φαίνεται και στο παράδειγμα στην 
Εικόνα 37. 
 

 

Εικόνα 37 : Παράδειγμα κώδικα για την σύνδεση στον MQTT Server 

 

 

Αφού  επιτευχθεί  η  σύνδεση  με  τον  server,  ο  χρήστης  μπορεί  να  χρησιμοποιήσει 

συγκεκριμένα  κανάλια-θέματα  (topics)  για  να  επικοινωνήσει  με  τις  συσκευές  του.  Τα 
κανάλια αυτά είναι τα εξής: 

❖  ΚΩΔΙΚΟΣ_ΣΥΣΚΕΥΗΣ/state : Έλεγχος της συσκευής για το άνοιγμα και κλείσιμο 

του κυκλώματος. Πρέπει να σταλεί μήνυμα τύπου String και στην μορφή JSON “ { 
device: 'ΚΩΔΙΚΟΣ_ΣΥΣΚΕΥΗΣ', value: 'true ή false' } ”. 

❖  ΚΩΔΙΚΟΣ_ΣΥΣΚΕΥΗΣ/consumption  :  Στο  κανάλι  αυτό,  η  συσκευή  δημοσιεύει 

κάθε λεπτό μια καταγραφή κατανάλωσης kWh. Το μήνυμα είναι τύπου String και 

στην μορφή JSON “{ device: 'ΚΩΔΙΚΟΣ_ΣΥΣΚΕΥΗΣ', timestamp: 'ΗΜ/ΝΙΑ ΚΑΙ ΩΡΑ 
ΚΑΤΑΓΡΑΦΗΣ', value: 'ΚΑΤΑΝΑΛΩΣΗ ΣΕ kWh' }”. 

❖  ΚΩΔΙΚΟΣ_ΣΥΣΚΕΥΗΣ/instant  :  Στο  κανάλι  αυτό,  η  συσκευή  δημοσιεύει  κάθε 

μερικά  δευτερόλεπτα  μια  καταγραφή  κατανάλωσης  σε  Watt.  Το  μήνυμα  είναι 

τύπου  String  και  στην  μορφή  JSON  “{  device:  'ΚΩΔΙΚΟΣ_ΣΥΣΚΕΥΗΣ',  timestamp: 
'ΗΜ/ΝΙΑ ΚΑΙ ΩΡΑ ΚΑΤΑΓΡΑΦΗΣ', value: 'ΚΑΤΑΝΑΛΩΣΗ ΣΕ Watt }”. 

 

Κατά την σύνδεση μιας συσκευής στο σύστημα, εκπέμπεται το γεγονός ‘client’ το οποίο 

ενημερώνει  την  κατάσταση  της  συσκευής  σε  ‘online’,  καλώντας  την  μέθοδο 
‘updateClientStates’ με παραμέτρους το αναγνωριστικό της συσκευής και την λογική τιμή 
true. Ο κώδικα της λειτουργίας αυτής φαίνεται στην Εικόνα 38. 

 

 

Εικόνα 38 : Κώδικας ακρόασης γεγονότος (event listener) σύνδεσης συσκευής