In der heutigen Welt, in der vernetzte Geräte allgegenwärtig geworden sind, ist der Begriff Internet der Dinge (IoT) zur Standardbeschreibung für „Gerät, das mit dem Internet verbunden ist“ geworden. Obwohl dieses glorifizierte, in CamelCase geschriebene Akronym an sich schon schön ist, gibt es bei „internetverbundenen Geräten“ noch viel mehr zu entdecken, als die meisten Menschen realisieren. In diesem Artikel möchte ich tiefer in eines der am weitesten verbreiteten Protokolle eintauchen, die in IoT-Geräten verwendet werden: das MQ Telemetry Transport (MQTT) Protokoll. Wir werden kurz erläutern, was es ist, wie es funktioniert und was daran im Vergleich zu anderen verwendeten Technologien neu ist. Wir werden auch anhand eines umfassenden Beispiels mit einem Arduino-Gerät durchgehen.
In einer typischen Client-Server-Konfiguration haben wir einen Anbieter (d.h. die Geräte selbst), der Sensordaten an den Server sendet, und einen Verbraucher, der anfordert, diese Sensordaten vom Server zu betrachten. MQTT ist da keine Ausnahme. Es handelt sich um ein leichtgewichtiges Protokoll, das zur Kommunikation zwischen Geräten verwendet wird. Geräte werden typischerweise Daten an einen MQTT „Broker“ (oder Server) „veröffentlichen“ (d.h. senden), der diese dann vorhält, um sie anderen Geräten oder Webanwendungen zur Verfügung zu stellen. Ein anderes Gerät oder eine Webanwendung wird sich für diesen Datensatz „abonnieren“ (d.h. die Daten anfordern) beim MQTT-Broker, und dann liefert der MQTT-Broker diese Daten an sie. Denken Sie wirklich nur an einen glorifizierten Webserver mit zwei großen Ausnahmen:
Aus den zwei oben genannten Gründen ist MQTT ein sehr beliebtes Protokoll bei IoT-Geräten geworden. Historisch gesehen würden Menschen HTTP POST/GET-Anfragen verwenden, um diese Form der Gerät-Server-Kommunikation zu erreichen, aber es schränkte ihre Fähigkeit ein, andere Kommunikationsgeräte wie Bluetooth oder ZigBee zu nutzen. Da MQTT in dieser Hinsicht agnostisch ist, können wir jetzt Nachrichtenübertragungsfähigkeiten innerhalb eines Mesh-basierten Netzwerks unter Verwendung von MQTT haben, ohne jemals eine Verbindung zum Internet herzustellen
Es gibt viele Möglichkeiten, mit MQTT zu beginnen, einschließlich der Gestaltung einer vollständigen End-to-End-Lösung. Um die Dinge einfach zu halten, werden wir in diesem Beispiel einen kostenlosen MQTT-Broker-Dienst von Adafruit nutzen. Dies ermöglicht es uns, uns nur auf die Client-Seite des Entwicklungsprozesses zu konzentrieren. Um zu beginnen, benötigen Sie Folgendes:
Es gibt ein paar Dinge, die wir zuerst tun müssen, um unsere Umgebung einzurichten. Lassen Sie uns zuerst unsere Hardware einrichten. Ich werde ein Arduino Uno und ein Arduino Ethernet Shield verwenden, das an mein lokales Netzwerk angeschlossen ist.
Wir müssen das Ethernet Shield auf das Arduino stapeln und es so in das Netzwerk einstecken:
Sobald wir unsere Hardware konfiguriert haben, öffnen wir die Arduino IDE und installieren die notwendigen Bibliotheken. Öffnen Sie die Arduino IDE und navigieren Sie zu Werkzeuge > Bibliotheken verwalten…
Suchen Sie nach der Adafruit MQTT-Bibliothek und klicken Sie auf Installieren:
Es wird Sie auch aufgefordert, Bibliotheksabhängigkeiten zu installieren. Gehen Sie voran und klicken Sie auf „Alle installieren.“
Sobald Sie die Unterstützungsbibliotheken installiert haben, können Sie ein Beispiel öffnen, indem Sie zu Datei > Beispiele > Adafruit MQTT-Bibliothek > mqtt_ethernet navigieren.
An diesem Punkt müssen wir eine Pause einlegen und unsere Anmeldeinformationen von unserem Adafruit IO-Konto abrufen. Loggen Sie sich in Adafruit IO ein und klicken Sie oben auf „Mein Schlüssel“:
Kommen Sie jetzt zurück zu Ihrem Arduino mqtt_ethernet Sketch-Beispiel und füllen Sie die Felder AIO_USERNAME und AIO_KEY mit den Feldern „Benutzername“ und „Aktiver Schlüssel“, die sich in Ihrem Adafruit IO-Konto befinden, aus. Stellen Sie sicher, dass Ihr Gerät verbunden ist, und klicken Sie dann auf Hochladen:
Um den Status des Geräts zu sehen (und um sicherzustellen, dass es mit dem MQTT-Broker verbunden ist), navigieren Sie zu Werkzeuge > Serieller Monitor. Sie sollten eine Ausgabe sehen, die so aussieht:
An diesem Punkt haben wir bestätigt, dass die Daten erfolgreich an den MQTT-Broker gesendet werden. Um einen Blick auf die tatsächlichen Daten auf dem Server zu werfen, gehen wir zurück zu unserem Adafruit IO-Konto und klicken auf „Feeds“, dann klicken wir auf „Fotowiderstand“
Wir erhalten jetzt eine Live-Aufnahme der Daten, die unser Arduino an den MQTT-Broker sendet. Wir können auch historische Daten herunterladen.
Herzlichen Glückwunsch! Sie haben nun ein MQTT-fähiges Gerät eingerichtet und Ihre Daten an einen MQTT-Broker gesendet. Gehen Sie nun den nächsten Schritt, indem Sie Ihre eigenen benutzerdefinierten Sensoren bauen und die Daten an Ihren MQTT-Broker senden.
In diesem Artikel haben wir erfahren, was MQTT ist, warum es verwendet wird und wie man es auf einem Mikrocontroller implementiert. Wir haben auch gezeigt, wie man mit einem kostenlosen MQTT-Broker-Dienst beginnt und die Daten auf deren Server betrachtet. Sie sollten jetzt in der Lage sein, mit Ihrem eigenen Arduino-Sketch, basierend auf dem Beispiel, das wir verwendet haben, Ihre eigenen Sensordaten an den MQTT-Broker zu senden und sie in der Cloud anzusehen.