Τι είναι το MQTT και πώς λειτουργεί


nc
Δημοσίευση: • Share Article:

@Αυτό το άρθρο είναι μια εισαγωγή στο πρωτόκολλο MQTT. Το MQTT σημαίνει Message Queuing Telemetry Transport και είναι ένα απλό πρωτόκολλο ανταλλαγής μηνυμάτων κατάλληλο για επικοινωνία μεταξύ συσκευών IoT. Η επικοινωνία μέσω MQTT λειτουργεί ως σύστημα  δημοσίευσης  (publish) και συνδρομής (subscribe). Οι συσκευές  δημοσιεύουν  μηνύματα για ένα συγκεκριμένο θέμα (topic).  Όλες οι συσκευές που είναι  εγγεγραμμένες  σε αυτό το topic λαμβάνουν το μήνυμα, το οποίο είναι υπεύθυνο για τον έλεγχο εξόδου των ΙΟΤ συσκευών (pins, αισθητήρες), ανάγνωση δεδομένων από αυτές κ.λπ.

Στο MQTT οι βασικές αρχές κατανόησης περιλαμβάνουν:
1. Connect/disconnect - δημιουργία/διακοπή σύνδεσης με τον Broker μηνυμάτων
2. Publish δημοσίευση δεδομένων/μηνυμάτων σχετικά με κάποιο θέμα
3. Subscribe/Unsubscribe - Εγγραφή/διαγραφή σε/από ένα θέμα
4. Messages (μηνύματα)
5. Topics (θεματολογία)
6. Broker (μεσάζων)

MQTT - Σύνδεση/αποσύνδεση στον/από τον broker

Όλες οι συσκευές/πελάτες πρέπει να συνδεθούν στον broker για να μπορέσουν να ανταλλάξουν δεδομένα μεταξύ τους ή να εγγραφούν σε κάποιο θέμα.

MQTT – Publish/Subscribe

Σε ένα σύστημα δημοσίευσης και εγγραφής (publish/subscribe από εδώ και στο εξής), μια συσκευή μπορεί να δημοσιεύσει ένα μήνυμα για ένα θέμα ή μπορεί να εγγραφεί σε ένα συγκεκριμένο θέμα για να λαμβάνει μηνύματα. Παράδειγμα:


Η Συσκευή 1 δημοσιεύει ένα θέμα. Η συσκευή 2 έχει εγγραφεί στο ίδιο θέμα στο οποίο δημοσιεύει η συσκευή 1. Έτσι, η συσκευή 2 λαμβάνει το μήνυμα.

MQTT – Messages
Τα μηνύματα είναι οι πληροφορίες που θέλετε να ανταλλάξετε μεταξύ των συσκευών σας. Μπορεί να είναι μια εντολή να ανάψει ένα led ή δεδομένα όπως μετρήσεις αισθητήρα.

MQTT – Topics
Μια άλλη σημαντική έννοια είναι τα θέματα. Τα topics (όπως θα τα λέμε από εδώ και στο εξής) είναι ο τρόπος με τον προσδιορίζουμε το πού θέλουμε να δημοσιεύσουμε το μήνυμα. Ακολουθεί ένα παράδειγμα για το πώς θα δημιουργήσουμε ένα topic για μια λάμπα στο γραφείο του σπιτιού μας.

home/office/lamp

Εάν θέλετε να ανάψετε μια λάμπα στο γραφείο του σπιτιού σας χρησιμοποιώντας το MQTT, μπορείτε να φανταστείτε το ακόλουθο σενάριο:

Μια συσκευή δημοσιεύει τα μηνύματα "on" και "off" σχετικά με το topic home/office/lamp. Έχουμε μια συσκευή που ελέγχει μια λάμπα (μπορεί να είναι ESP32, ESP8266 ή οποιαδήποτε άλλη πλακέτα). Το ESP32 που ελέγχει τη λάμπα σας είναι εγγεγραμμένο (subscribe) στο ίδιο θέμα:  home/office/lamp. Έτσι, όταν δημοσιεύεται/publish ένα νέο μήνυμα για αυτό το θέμα/topic, το ESP32 λαμβάνει τα μηνύματα "on" ή "off" και ανάβει ή σβήνει τη λάμπα.

MQTT - O μεσάζων/Broker

Ο broker MQTT είναι o υπεύθυνος για τη  λήψη  όλων των μηνυμάτων, το φιλτράρισμά τους, την  απόφαση  για το ποιος ενδιαφέρεται γι' αυτά και στη συνέχεια  τη δημοσίευση  του μηνύματος σε όλους τους εγγεγραμμένους πελάτες. Φανταστείτε τον broker σαν server, κατά κάποιον τρόπο, όμως στην πραγματικότητα δεν είναι. Είναι απλά ένας διαμεσολαβητής που απλά μεταφέρει τα μηνύματα μεταξύ των clients/πελατών, είτε αυτοί είναι συσκευές ή εφαρμογές στο κινητό μας.
Ο πιο συνηθισμένος και free broker είναι ο Mosquitto Broker, που μπορεί να εγκατασταθεί εύκολα σε κάθε υπολογιστή ή στο Raspberry Pi. Προτιμούμε βέβαια την εγκατάσταση στο raspberry και όχι στον υπολογιστή, γιατί αυτός θα πρέπει να είναι σε λειτουργία συνεχώς, ώστε να διατηρείται ενεργή η σύνδεση MQTT μεταξύ των συσκευών. Και το raspberry, βέβαια, είναι υπολογιστής, αλλά η κατανάλωση ενέργειας είναι κατά πολύ μικρότερη ενός υπολογιστή desktop ή laptop.
Η εγκατάσταση του Mosquitto Broker σε ένα Raspberry Pi στο τοπικό μας δίκτυο, επιτρέπει την ανταλλαγή δεδομένων μεταξύ των ΙΟΤ συσκευών μας που είναι επίσης συνδεδεμένα στο ίδιο δίκτυο.

Γενικά στοιχεία
• Το πρωτόκολλο MQTT λειτουργεί πάνω από το πρωτόκολλο TCP / IP και χρησιμοποιεί την θύρα 1883 (8883 εάν συνδέεται μέσω SSL) ως προεπιλογή.
• Τα θέματα αποτελούνται από χαρακτήρες με κωδικοποίηση UTF-8. Η ιεραρχία των θεμάτων έχει μορφή δέντρου. Τα θέματα μπορούν να αποτελούνται από ένα ή περισσότερα επίπεδα που χωρίζονται με το σύμβολο «/» (π.χ. home/office/lamp)
• Ο συνδρομητής μπορεί επίσης να λαμβάνει δεδομένα από διάφορα θέματα ταυτόχρονα μέσω ενός τύπου wildcard:
wildcard ενός επιπέδου χρησιμοποιώντας το σύμβολο "+": Π.χ.: home/+/lamp θα σήμαινε: άνοιξε όλες τις λάμπες του σπιτιού σε όλα τα δωμάτια.
wildcard πολλών επιπέδων, χρησιμοποιώντας το σύμβολο "#". Π.χ.: home/office/# σημαίνει λήψη δεδομένων από όλων των ειδών τους αισθητήρες που υπάρχουν στο δωμάτιο office.
Υπάρχουν κάποιες παράμετροι που μπορούν να χρησιμοποιηθούν στο MQTT:
Username, password, will retain, Will QoS, Will Flag, Clean Session.
Το MQTT υποστηρίζει τρία επίπεδα ποιότητας εξυπηρέτησης (QoS) κατά την αποστολή των μηνυμάτων:
• QoS 0 At most once. Σε αυτό το επίπεδο, ο Publisher στέλνει ένα μήνυμα στον Broker μία φορά και δεν περιμένει οποιαδήποτε απάντηση, δηλ. στέλνει και ξεχνάει γι 'αυτό.
• QoS 1 At least once. Αυτό το επίπεδο εγγυάται την παράδοση του μηνύματος στον Broker, ωστόσο είναι δυνατή η επανάληψη των μηνυμάτων από τον Publisher.
• QoS 2 Exactly once. Σε αυτό το επίπεδο, η παράδοση του μηνύματος στον Subscriber είναι εγγυημένη, χωρίς την επαναποστολή αντιγράφων.

 

Foreach programming

Εγγραφείτε για να βλέπετε τα εξειδικευμένα άρθρα.