MQTT: ένα πρωτόκολλο ανοιχτού δικτύου και η σημασία του στο IoT

Δίκτυο πρωτοκόλλου MQTT IoT

Θυμηθείτε το όνομα MQTT, δεδομένου ότι πρόκειται για πρωτόκολλο επικοινωνίας δικτύου τύπου M2M (Machine to Machine) που ακούγεται αρκετά. Γίνεται αρκετά δημοφιλές χάρη στη νέα εποχή του Internet of Things ή του IoT (Internet of Things) για το ακρωνύμιο του στα Αγγλικά. Επιπλέον, είναι ένα ανοιχτό πρωτόκολλο, το οποίο δίνει πολλά πλεονεκτήματα.

Στην πραγματικότητα, έχει γίνει ένας από τους κεντρικούς πυλώνες του IoT, καθώς είναι αρκετά καλός σε συσκευές με κάποιους περιορισμούς μετάδοσης όπως αυτές. Το ακρωνύμιο MQTT προέρχεται από Μεταφορά τηλεμετρίας ουράς αναμονής, ένα ανοιχτό πρότυπο από το OASIS και το ISO (ISO / IEC 20922) για επικοινωνίες δικτύου και που γενικά λειτουργεί με το περίφημο TCP / IP.

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

Μοντέλο OSI και τα επίπεδα του

Ο πρωτόκολλα επικοινωνίας Πρόκειται για κανόνες που επιτρέπουν σε δύο ή περισσότερες συσκευές ή συστήματα να επικοινωνούν μεταξύ τους. Δηλαδή, είναι ένα πρωτόκολλο για τη μετάδοση πληροφοριών με διάφορα μέσα και με καθορισμένη μορφή, είτε υλοποιείται από λογισμικό και υλικό (ή και τα δύο).

El πρότυπο του πρωτοκόλλου καθορίζει ένα πλήθος χαρακτηριστικών επικοινωνίας. Μπορεί να ξεφεύγει από τους κανόνες συγχρονισμού, σημασιολογίας, σύνταξης, μορφής πακέτων κ.λπ. Και η αλήθεια είναι ότι δεν είναι κάτι αμελητέο, καθώς χάρη σε αυτά τα πρωτόκολλα σήμερα μπορούμε να χρησιμοποιήσουμε το Διαδίκτυο και άλλα δίκτυα επικοινωνίας ...

Και φυσικά, δεν υπάρχει μόνο ένα πρωτόκολλο, αλλά πολλά. Για παράδειγμα, ο διάσημος DNS, FTP, MQTT, HTTP και HTTPS, IMAP, LDAP, NTP, DHCP, SSH, Telnet, SNMP, SMTP κ.λπ., για το επίπεδο εφαρμογής. Ενώ βρίσκεστε στο επίπεδο μεταφοράς, μπορείτε να βρείτε μερικά από τα πιο διάσημα όπως TCP, UDP κ.λπ., καθώς και εκείνα του επιπέδου Διαδικτύου όπως IPv4 ή IPv6 (αυτό που κατέστησε δυνατό τον μεγαλύτερο αριθμό διαθέσιμων IP και την άφιξη του το IoT), IPSec κ.λπ. και άλλα από το επίπεδο συνδέσμου όπως DSL, Ethernet, WiFi, ARP κ.λπ.

Σχετικά με τα πρωτόκολλα IoT

Πρωτόκολλο MQTT

Φυσικά, υπάρχουν συγκεκριμένα πρωτόκολλα επικοινωνίας ή που μπορούν να εφαρμοστούν στο IoT. Δηλαδή, λαμβάνοντας υπόψη την προηγούμενη ενότητα, θα ήταν μια σειρά καθορισμένων προτύπων έτσι ώστε δύο ή περισσότερες συσκευές IoT να μπορούν να επικοινωνούν και να κατανοούν η μία την άλλη, και συνήθως είναι M2M, δηλαδή επικοινωνία μεταξύ μηχανών. πολλές συσκευές IoT συνδέονται και μοιράζονται πληροφορίες από αισθητήρες ή άλλες πηγές.

Λόγω του μεγάλου αριθμού συσκευών IoT, αυτά τα πρωτόκολλα πρέπει να πληρούν απαιτήσεις πέρα ​​από τους περιορισμούς του εύρους ζώνης, της ταχύτητας κ.λπ. (σημειώστε ότι πολλές συσκευές είναι ενσωματωμένες και φθηνές), κάτι που συνήθως υπάρχει σε ορισμένες συσκευές. Και εννοώ το γεγονός ότι πρέπει να είναι επεκτάσιμη, για να μπορείτε να προσθέσετε περισσότερες συνδεδεμένες συσκευές εάν είναι απαραίτητο και χωρίς να επηρεάσετε το παγκόσμιο σύστημα.

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

Άλλα χρήσιμα χαρακτηριστικά θα ήταν η ευκολία εφαρμογής τους, la seguridad, και τα λοιπά. Λάβετε υπόψη ότι το IoT δημιουργεί μεγάλες προκλήσεις στον τομέα της ασφάλειας. Ακόμη περισσότερο όταν πολλές από τις συνδεδεμένες συσκευές τείνουν να είναι κρίσιμες σε ορισμένες περιπτώσεις ... για παράδειγμα, παιχνίδια για ανηλίκους.

Σημαντικές έννοιες

Τούτου λεχθέντος, πρέπει να ειπωθεί ότι οι λύσεις για το IoT χρησιμοποιούν έναν κεντρικό διακομιστή για τη λήψη μηνυμάτων από όλες τις συνδεδεμένες συσκευές που εκπέμπουν και διανέμουν σε όλες τις συνδεδεμένες συσκευές IoT που ακούνε. Αυτός ο διακομιστής είναι αυτό που είναι γνωστό ως δρομολογητής ή μεσίτης. Κάτι που απέχει πολύ από τη συμβατική σχέση πελάτη-διακομιστή με κάποιους τρόπους.

Επιπλέον, τις μεθοδολογίες που μπορείτε να βρείτε σε αυτά τα πρωτόκολλα επικοινωνίας για το IoT είναι:

  • PubSub: Το Publish / Susbcribe είναι ένα μοτίβο ανταλλαγής μηνυμάτων όπου μια συσκευή (Sub) ενημερώνει τον μεσίτη ότι θέλει να λάβει ένα μήνυμα, ενώ μια άλλη συσκευή (Pub) δημοσιεύει μηνύματα για τον μεσίτη για διανομή στις άλλες συσκευές που τις περιμένουν.
  • rRPC: Router Remoder Διαδικασία Κλήσεις είναι ένα άλλο μοτίβο της απομακρυσμένης εκτέλεσης διαδικασίας. Σε αυτήν, μια συσκευή (Callee) ενημερώνει τον μεσίτη ότι θα πραγματοποιήσει μια συγκεκριμένη διαδικασία και ο μεσίτης το διανέμει σε μια άλλη συσκευή (Caller) στην οποία εκτελείται η εν λόγω διαδικασία.

Τώρα, για την εκτέλεση αυτών των μεθοδολογιών ή προτύπων, α υποδομή ανταλλαγής μηνυμάτων. Και με αυτή την έννοια μπορούν να διακριθούν δύο:

  • Ουρά μηνυμάτων: υπηρεσία ανταλλαγής μηνυμάτων όπου δημιουργείται μια ουρά μηνυμάτων για όλους τους πελάτες που ξεκινούν μια συνδρομή στον μεσίτη. Το τελευταίο θα διατηρήσει τα μηνύματα αποθηκευμένα μέχρι να παραδοθούν στον πελάτη. Εάν ο πελάτης ή ο παραλήπτης δεν είναι συνδεδεμένος, διατηρείται έως ότου συνδεθεί. Αυτοί οι τύποι υπηρεσιών είναι όπως αυτοί που χρησιμοποιούνται σε εφαρμογές ανταλλαγής άμεσων μηνυμάτων, όπως Telegra, WhatsApp, Messenger κ.λπ.
  • Υπηρεσία μηνυμάτων: είναι μια άλλη υπηρεσία στην οποία ο μεσίτης στέλνει τα μηνύματα στον συνδεδεμένο πελάτη παραλήπτη, φιλτράροντας με βάση τον τύπο του μηνύματος. Εάν ο πελάτης ή η συσκευή λήψης αποσυνδεθεί, τότε τα μηνύματα χάνονται (αν και μπορεί να έχει κάποιο σύστημα καταγραφής).

Πρωτόκολλα IoT

Έχοντας δει τα παραπάνω, τώρα ας ρίξουμε μια πιο προσεκτική ματιά Πρωτόκολλα IoT που είναι πιο γνωστά. Μεταξύ των πιο διακεκριμένων M2M είναι:

  • AMQP (προηγμένο πρωτόκολλο ουράς μηνυμάτων): είναι πρωτόκολλο τύπου PubSub της ουράς μηνυμάτων. Σχεδιασμένο να έχει καλή διαλειτουργικότητα και να διασφαλίζει την αξιοπιστία. Ειδικό για εταιρικές εφαρμογές, δίκτυα υψηλής απόδοσης, υψηλής καθυστέρησης, κρίσιμα κ.λπ.
  • WAMP (Πρωτόκολλο ανταλλαγής μηνυμάτων εφαρμογής Ιστού): Είναι ένα άλλο ανοιχτό πρωτόκολλο τύπου PubSub όπως το rRPC, και λειτουργεί σε WebSockets.
  • CoAP (Πρωτόκολλο περιορισμένης εφαρμογής): είναι ένα πρωτόκολλο ειδικά σχεδιασμένο για εφαρμογές χαμηλής χωρητικότητας.
  • TOMP (Πρωτόκολλο ανταλλαγής μηνυμάτων ροής με κείμενο): πολύ απλό πρωτόκολλο και για επίτευξη μέγιστης διαλειτουργικότητας. Το HTTP χρησιμοποιείται για τη μετάδοση μηνυμάτων κειμένου.
  • XMPP (Πρωτόκολλο παρουσίας eXtensible και παρουσίας): ένα άλλο πρωτόκολλο που χρησιμοποιείται στο IoT για εφαρμογές άμεσων μηνυμάτων και βασίζεται σε XML. Jan αυτή η υπόθεση είναι επίσης ανοιχτή.
  • WMQ (Ουρά μηνυμάτων WebSphere): πρωτόκολλο που αναπτύχθηκε από την IBM. Είναι του τύπου Ουρά μηνυμάτων, όπως υποδηλώνει το όνομά του, και είναι προσανατολισμένο στα μηνύματα.
  • MQTT: (βλ. επόμενη ενότητα)

Όλα για το MQTT

Πακέτο MQTT

El Πρωτόκολλο MQTT Είναι ένα πρωτόκολλο επικοινωνίας ουράς μηνυμάτων, το οποίο ακολουθεί ένα μοτίβο PubSub και τύπου M2M, όπως έχω ήδη αναφέρει. Χρησιμοποιείται ευρέως στο IoT και βασίζεται στη στοίβα TCP / IP που χρησιμοποιείται στο Διαδίκτυο.

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

Πλεονέκτημα

Τα πλεονεκτήματα του πρωτοκόλλου MQTT είναι αρκετά εμφανή όσον αφορά τις επικοινωνίες M2M για IoT. Εκτός από όλα όσα προαναφέρθηκαν, είναι ένα πρωτόκολλο που παρέχει:

  • Επεκτασιμότητα, για τη σύνδεση όλο και περισσότερων πελατών.
  • Αποσύνδεση μεταξύ πελατών, για λιγότερη εξάρτηση.
  • Ασυγχρονισμός.
  • Απλότητα.
  • Ελαφριά ώστε να μην καταναλώνει πάρα πολλούς πόρους (αν και με την ασφάλεια TLS / SSL αυξάνεται)
  • Ενεργειακά αποδοτικό για συσκευές που εξαρτώνται από μπαταρία ή λειτουργούν 24/7, δεν χρειάζεται μεγάλο εύρος ζώνης (ιδανικό για αργές συνδέσεις, όπως ορισμένες ασύρματες).
  • Ασφάλεια και ποιότητα, για μεγαλύτερη αξιοπιστία και ανθεκτικότητα στις επικοινωνίες.

Ιστορία

Το MQTT δημιουργήθηκε τη δεκαετία του '90, με μια πρώιμη έκδοση του πρωτόκολλο το 1999. Δημιουργήθηκε από τον Dr. Andy Stanford-Clark της IBM και τον Arlen Nipper του Cirrus Link (πρώην Eurotech).

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

Το αρχικό πρωτόκολλο βελτιώθηκε με την εμφάνιση του νέες εκδόσεις, όπως το MQTT v3.1 (2013) σύμφωνα με τις προδιαγραφές OASIS (Οργανισμός για την Πρόοδο των Δομημένων Πληροφοριών) κ.λπ. Θα πρέπει να γνωρίζετε ότι στην αρχή ήταν ένα ιδιόκτητο πρωτόκολλο IBM, αλλά ότι θα κυκλοφορούσε το 2010 και κατέληξε να γίνει πρότυπο στο OASIS ...

Πώς λειτουργεί η σύνδεση MQTT

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

Όπως και το MQ, τα μηνύματα θα παραμείνουν στην ουρά και δεν θα χαθούν έως ότου ο πελάτης λάβει αυτό το μήνυμα.

Οι συνδέσεις, όπως ανέφερα επίσης, γίνονται μέσω TCP / IPκαι ο διακομιστής ή ο μεσίτης θα διατηρήσει αρχείο των συνδεδεμένων πελατών. Από προεπιλογή, οι συσκευές θα χρησιμοποιούν θύρες επικοινωνίας με αριθμό 1883, αν και ενδέχεται επίσης να αντιμετωπίσετε τη θύρα 8883 εάν χρησιμοποιείτε SSL / TLS για πρόσθετη ασφάλεια.

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

  • Δημιουργία σύνδεσης: CONNECT μήνυμα / πακέτο που αποστέλλεται από τον πελάτη με όλες τις απαραίτητες πληροφορίες. Αυτές οι πληροφορίες περιλαμβάνουν το αναγνωριστικό πελάτη, το όνομα χρήστη, τον κωδικό πρόσβασης κ.λπ. Ο μεσίτης ή ο διακομιστής αποκρίνεται με ένα πακέτο CONNACK που θα ενημερώνει τον πελάτη ότι η σύνδεση έγινε αποδεκτή, απορρίφθηκε κ.λπ.
  • Αποστολή και λήψη μηνυμάτων: Μόλις πραγματοποιηθεί η σύνδεση, χρησιμοποιούνται πακέτα ή μηνύματα PUBLISH με το θέμα και το ωφέλιμο φορτίο του μηνύματος που αποστέλλεται στον μεσίτη. Από την άλλη πλευρά, οι ενδιαφερόμενοι πελάτες ή πελάτες χρησιμοποιούν τα πακέτα SUBSCRIBE και UNSUSCRIBE για να εγγραφούν ή να αποσύρουν τη συνδρομή τους αντίστοιχα. Ο μεσίτης θα απαντήσει επίσης με ένα πακέτο SUBACK και UNSUBACK αντίστοιχα για να αναφέρει την επιτυχία της λειτουργίας που ζήτησε ο πελάτης.
  • Διατήρηση της σύνδεσης: για να διασφαλιστεί ότι η σύνδεση παραμένει ανοιχτή, οι πελάτες μπορούν να στέλνουν περιοδικά ένα πακέτο PINGREQ που θα ταιριάζει με ένα πακέτο PINGRESP από το διακομιστή.
  • Τερματισμός σύνδεσης: όταν ένας πελάτης αποσυνδέεται στέλνει ένα πακέτο DISCONNECT για να αναφέρει αυτό το συμβάν.

Εκείνοι μηνύματα ή πακέτα Αυτά για τα οποία μίλησα έχουν δομή ίδια με άλλα πακέτα άλλων πρωτοκόλλων δικτύου:

  • Κεφαλίδα ή σταθερή κεφαλίδα: είναι ένα σταθερό μέρος που καταλαμβάνει μεταξύ 2-5 byte. Περιέχει έναν κωδικό ελέγχου, αναγνωριστικό του τύπου του μηνύματος που αποστέλλεται και το μήκος του. Χρησιμοποιούνται μεταξύ 1-4 byte για την κωδικοποίηση του μήκους, χρησιμοποιώντας τα πρώτα 7 bit κάθε οκτάδας ως δεδομένα για το μήκος και ένα επιπλέον κομμάτι συνέχειας για να προσδιοριστεί ότι υπάρχουν περισσότερα από ένα byte που αποτελούν το μήκος του μηνύματος.
  • Μεταβλητή κεφαλίδα: δεν είναι πάντα υποχρεωτικό, αλλά προαιρετικό. Περιλαμβάνεται μόνο σε ορισμένα πακέτα σε συγκεκριμένες καταστάσεις ή συγκεκριμένα μηνύματα.
  • Περιεχόμενο ή δεδομένα: τα δεδομένα πακέτου είναι αυτά που περιέχουν στην πραγματικότητα το μήνυμα που πρέπει να σταλεί. Μπορεί να είναι από λίγα kB έως όριο 256 MB.

Εάν ενδιαφέρεστε να μάθετε τον αντίστοιχο κωδικό σε δεκαεξαδικό για τους τύπους των μηνυμάτων που αποστέλλονται είναι:

μήνυμα Κώδικας
ΣΥΝΔΈΩ 0x10
ΕΠΙΚΟΙΝΩΝΙΑ 0x20
ΔΗΜΟΣΙΕΥΩ 0x30
PUBACK 0x40
ΕΚΔΟΣΗ 0x50
ΕΚΔΟΣΗ 0x60
ΔΗΜΟΣΙΟΓΡΑΦΟΣ 0x70
ΕΓΓΡΑΦΕΙΤΕ 0x80
ΕΠΙΣΤΡΟΦΗ 0x90
ΑΓΓΕΛΙΑ 0xA0
ΑΠΟΣΥΝΔΕΣΗ 0xB0
PINGREQ 0xC =
PINGRESP 0xD0
ΔΙΑΧΩΡΙΖΩ 0xE0

Ποιότητα και ασφάλεια των επικοινωνιών

Μια άλλη σημαντική λεπτομέρεια των μηνυμάτων από το MQTT είναι το ποιότητα υπηρεσίας ή QoSκαι ασφάλεια. Η ανθεκτικότητα του συστήματος επικοινωνίας σε περίπτωση βλαβών και η ασφάλειά του θα εξαρτηθεί από αυτό.

Όσον αφορά την ποιότητά του, μπορεί να καθοριστεί 3 διαφορετικά επίπεδα:

  • QoS 0 (μη γνώση)- Το μήνυμα αποστέλλεται μόνο μία φορά και σε περίπτωση αποτυχίας δεν θα παραδοθεί. Χρησιμοποιείται όταν δεν είναι κρίσιμο.
  • QoS 1 (αναγνώριση): το μήνυμα θα σταλεί όσες φορές χρειάζεται για να εγγυηθεί την παράδοση στον πελάτη. Το μειονέκτημα είναι ότι ο πελάτης θα μπορούσε να λάβει το ίδιο μήνυμα αρκετές φορές.
  • QoS 2 (εξασφαλισμένο)- Παρόμοια με παραπάνω, αλλά εγγυημένη παράδοση μόνο μία φορά. Χρησιμοποιείται συχνά για πιο κρίσιμα συστήματα όπου απαιτείται μεγαλύτερη αξιοπιστία.

Από την άλλη πλευρά, όπως για Ασφάλεια MQTTΜπορούν να χρησιμοποιηθούν διάφορα μέτρα για να διασφαλιστεί η ισχύς της από αυτήν την άποψη. Όπως έχω ήδη αναφέρει, ο έλεγχος ταυτότητας του ονόματος χρήστη και του κωδικού πρόσβασης, όπως και πολλά άλλα πρωτόκολλα, μπορεί να διασφαλιστεί από το SSL / TLS. Παρόλο που πολλές συσκευές IoT με χαμηλές δυνατότητες ή πόρους, θα μπορούσαν να έχουν προβλήματα με την υπερφόρτωση της εργασίας κατά τη χρήση αυτού του τύπου ασφαλούς επικοινωνίας ...

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

Χρήση του MQTT με το Arduino

Arduino UNO με MQTT

Φυσικά μπορείτε να χρησιμοποιήστε το πρωτόκολλο MQTT με το Arduino και άλλους πίνακες ανάπτυξης, καθώς και το Rapsberry Pi, κ.λπ. Για να το κάνετε αυτό, πρέπει να παρέχετε συνδεσιμότητα στον πίνακα Arduino, εάν δεν το διαθέτει. Επίσης, η βιβλιοθήκη Πελάτης Arduino για MQTT θα σας βοηθήσει σε αυτές τις εργασίες. Αυτή η βιβλιοθήκη είναι συμβατή με:

Γνωρίζετε ήδη ότι μπορείτε να κατεβάσετε και να εγκαταστήσετε τη βιβλιοθήκη στο Arduino IDE χρησιμοποιώντας την εντολή: κλώνος git https://github.com/knolleary/pubsubclient.git

Μόλις στον κωδικό για χρήση του MQTT σε κάποια εφαρμογή, η αλήθεια είναι ότι είναι απλό. Στην εικόνα Fritzing μπορείτε να δείτε μια πινακίδα Arduino UNO στην οποία έχει προστεθεί συνδεσιμότητα από το Arduino Ethernet και έχει επίσης συνδεθεί έναν αισθητήρα υγρασίας και θερμοκρασίας DHT22, αν και θα μπορούσε να ήταν οτιδήποτε άλλο ...

Εντάξει, με αυτό είπε, για τον κωδικό που πρέπει να δημιουργήσετε Arduino IDE Για να εργαστείτε με το πρωτόκολλο MQTT στο Arduino, είναι τόσο απλό:

  • να στείλετε μηνύματα MQTT
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT22

// Direccion MAC del adaptador Ethernet
byte mac[] = { 0xCE, 0xAB, 0x0E, 0x3F, 0xFE, 0xD4 };

// IP del servidor (broker)
IPAddress mqtt_server(192, 168, 1, 4);

// Topic o tema con el que se trabaja
const char* topicName = "test";

DHT dht(DHTPIN, DHTTYPE);
EthernetClient ethClient;
PubSubClient client(ethClient);

void setup()
{
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Fallo en Ethernet usando DHCP");
  }
// Puerto 1883 de comunicación
  client.setServer(mqtt_server, 1883);
  dht.begin();
}

void loop()
{
  if (!client.connected()) {
    Serial.print("Conectando ...\n");
    client.connect("Cliente Arduino");
  }
  else {
    // Envío de informacion del sensor de temperatura y humedad
    float temp = dht.readTemperature();
    char buffer[10];
    dtostrf(temp,0, 0, buffer);
    client.publish(topicName, buffer);
  }
  // Tiempo entre envíos en ms (cada 10 segundos)
  delay(10000);
}

  • να λήψη μηνυμάτων από το MQTT χρειάζεστε μόνο το πιάτο Arduino UNO και σύνδεση, με Arduino Ethernet ή οποιοδήποτε άλλο στοιχείο. Όσον αφορά τον κώδικα, ένα παράδειγμα θα ήταν:
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

// Direccion MAC del adaptador Ethernet
byte mac[] = { 0xCE, 0xAB, 0x0E, 0x3F, 0xFE, 0xD4 };

// IP del servidor (broker)
IPAddress mqtt_server(192, 168, 1, 4);

// Topic o tema con el que trabajr
const char* topicName = "test";

EthernetClient ethClient;
PubSubClient client(ethClient);

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("El mensaje ha llegado [");
  Serial.print(topic);
  Serial.print("] ");
  int i=0;
  for (i=0;i<length;i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void setup()
{
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Fallo en Ethernet al usar configuración DHCP");
  }
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback)
}

void loop()
{
  if (!client.connected()) {
      Serial.print("Conectando ...");
      if (client.connect("rece_arduino")) {
        Serial.println("conectado");
        client.subscribe(topicName);
      } else {
        delay(10000);
      }
  }
  // Cliente a la escucha
  client.loop();
}

Θυμηθείτε ότι πρέπει να αλλάξετε την IP στην κατάλληλη για τον διακομιστή και πρέπει επίσης να αλλάξετε τη διεύθυνση MAC του προσαρμογέα δικτύου Ethernet ή εκείνου που χρησιμοποιείτε, καθώς και τον υπόλοιπο κώδικα εάν σκοπεύετε να τον προσαρμόσετε σε ένα διαφορετικό έργο. Αυτό είναι απλώς ένα παράδειγμα!

Για περισσότερες πληροφορίες, μπορείτε κατεβάστε δωρεάν Nuestro Εγχειρίδιο PDF με το μάθημα Arduino IDE για να ξεκινήσετε τον προγραμματισμό.


Γίνε ο πρώτος που θα σχολιάσει

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.