Das Internet der Dinge (IoT) stellt viele Herausforderungen an das verwendete Protokoll. Es soll möglichst robust sein, Geräte unterstützen, die geringe Prozessorleistung haben, schlechte Netzwerkkonditionen verkraften und damit zurechtkommen, wenn der Datenstrom instabil wird. MQTT ist solch ein Protokoll. Es ist für die Kommunikation von Maschine zu Maschine (M2M) der Quasi-Standard geworden.
Terminologie
Klären wir zuerst ein paar Begriffe, die im Zusammenhang mit MQTT wichtig sind:
MQTT-Broker: Der Server, der die Nachrichtenvermittlung übernimmt. Er kann sich im lokalen Netzwerk befinden oder irgendwo im Internet.
Topic: Das kann man sich wie ein Pfad zum Nachrichtenaustausch vorstellen. Ein Topic könnte temperatur oder raum1/temperatur heißen.
Publish: Hierbei handelt es ich um das Senden von Daten. Wenn also z.B. ein Arduino als Sensoreinheit die Temperatur an den Broker schickt, spricht man von publishen.
Subscribe: Das aktive Empfangen von Daten, sobald diese eintreffen. Will man z.B. die Daten vom Thermometer abrufen, muss man – ob mit einem IoT-Gerät oder einer Applikation (z.B. Website) – auf dieses Thema subscriben. D.h., das das Gerät nun ein Auge auf dieses Topic wirft. Kommen beim Broker neue Daten an, kann man diese abgreifen.
Darüber hinaus bietet MQTT viele andere nützliche Funktionen, die aber den Rahmen sprengen würden. Auf Wikipedia kann man sich gern in die Tiefe einarbeiten: Wikipedia
Aber nun in die Praxis
Als Erstes setzen wir den MQTT-Broker auf und senden Daten in unserem Computer hin und her.
Wir verwenden Eclipse Mosquitto als Broker-Software.
1. Installation von Mosquitto (MQTT-Broker)
Windows:
Unter Windows ist der Weg etwas steiniger. Man muss nämlich neben dem eigentlichen Installer einige dll-Dateien hinzufügen. In diesem Tutorial ist die Installation aber sehr anschaulich erklärt.
OSX: Zuerst installiert man Homebrew (Download). Hierbei handelt es sich (u.A.) um eine Erweiterung, die die Installation von Software vereinfacht. Die Installation erfolgt in einem Terminal-Fenster.
Danach gib einfach:
sudo brew install mosquitto
ein. Der Befehl installiert Mosquitto.
2. Testen
Öffne ein Terminal- (bzw. CMD-) Fenster. Subscribe auf ein MQTT-Topic. (Unter Windows muss man im gleichen Verzeichnis wie die MQTT-Installation sein z.B. C:\Program Files (x86)\mosquitto)
mosquitto_sub -t "temperatur"
Dieses Fenster hat jetzt auf das Topic temperatur subscribed. Wir lauschen also beim MQTT-Broker, ob zu diesem Topic neue Daten ankommen.
Öffne ein zweites Fenster und publishe auf das Topic:
mosquitto_pub -t "temperatur" -m "24 Grad"
Im ersten Fenster erscheint nun die Nachricht
24 Grad
So what?
Was machen wir jetzt damit? Sieht ja erstmal unspektakulär aus, aber in Wirklichkeit läuft auf dem Computer nun ein MQTT-Broker! Beide Terminal-Fenster repräsentieren MQTT Teilnehmer. Willkommen im Internet der Dinge! Der Publisher könnte das Arduino mit dem Temperatursensor sein, der Subscriber ist vielleicht eine Applikation, die auf einem Raspberry Pi läuft und auf einem Wanddisplay die Temperatur anzeigt. Fehlt nur noch ein steuerbares Thermostat. (Auf dem Raspberry Pi könnte man übrigens auch gleich einen lokalen Broker laufen lassen, aber das nur am Rande.)
Coming soon: Arduino sendet Daten zu unserem lokalen MQTT-Broker Mosquitto.
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs