Einstieg in MQTT und Arduino Uno

Ari Mahpour
|  Erstellt: Oktober 19, 2021  |  Aktualisiert am: Juli 1, 2024
Einstieg in MQTT

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.

Das Was und Warum von MQTT

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:

  1. Die Datenpakete sind sehr leichtgewichtig (was Geschwindigkeit, Effizienz und Kosten verbessert)
  2. MQTT kann andere Kommunikationsmodi als nur das Internet nutzen (z.B. Bluetooth)
Figure 1: MQTT Broker with Devices
Abbildung 1: MQTT-Broker mit Geräten

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

Erste Schritte mit MQTT

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:

  1. Arduino-Gerät (Dieses Beispiel verwendet das Arduino Uno)
  2. Arduino-Shield mit Internetverbindung (z. B. Arduino Ethernet Shield) oder ein Wifi-basiertes Arduino-kompatibles Gerät wie das ESP8266.
  3. Arduino IDE Software
  4. Konto bei Adafruit IO.

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.

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Abbildung 2: Arduino Uno und Arduino Ethernet Shield nebeneinander

Wir müssen das Ethernet Shield auf das Arduino stapeln und es so in das Netzwerk einstecken:

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Abbildung 3: Arduino Uno und Arduino Ethernet Shield zusammengekoppelt und eingesteckt

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…

Figure 4: Manage Libraries menu option
Abbildung 4: Menüoption Bibliotheken verwalten

Suchen Sie nach der Adafruit MQTT-Bibliothek und klicken Sie auf Installieren:

Figure 5: Library Manager
Abbildung 5: Bibliotheks-Manager

Es wird Sie auch aufgefordert, Bibliotheksabhängigkeiten zu installieren. Gehen Sie voran und klicken Sie auf „Alle installieren.“

Figure 6: Library Dependencies Dialog
Abbildung 6: Dialog für Bibliotheksabhängigkeiten

Sobald Sie die Unterstützungsbibliotheken installiert haben, können Sie ein Beispiel öffnen, indem Sie zu Datei > Beispiele > Adafruit MQTT-Bibliothek > mqtt_ethernet navigieren.

Figure 7: Menu navigation for the mqtt_ethernet example
Abbildung 7: Menünavigation für das Beispiel mqtt_ethernet

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“:

Figure 8: My Key Menu Option
Abbildung 8: Menüoption 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:

Figure 9: Arduino Sketch ready for the upload
Abbildung 9: Arduino-Skizze bereit zum 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:

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Abbildung 10: Ausgabe des seriellen Monitors des Arduino mqtt_ethernet Beispiels

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“

Figure 11: Adafruit IO Feeds
Abbildung 11: Adafruit IO Feeds

Wir erhalten jetzt eine Live-Aufnahme der Daten, die unser Arduino an den MQTT-Broker sendet. Wir können auch historische Daten herunterladen.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Abbildung 12: Live- und historische Daten, die vom Arduino an den MQTT-Broker gesendet wurden

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.

Schlussfolgerung

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.

Über den Autor / über die Autorin

Über den Autor / über die Autorin

Ari ist ein PCB-Designer mit umfassender Erfahrung in der Entwicklung, Herstellung, Prüfung und Integration verschiedener Softwaresysteme. Dabei bringt er leidenschaftlich gern Entwickler aus den Bereichen Design, Prüfung und Abnahme zusammen, um gemeinsam an Projekten zu arbeiten und diese voranzutreiben.

Ähnliche Resourcen

Zur Startseite
Thank you, you are now subscribed to updates.