
Immer mal wieder treffe ich auf das Thema MQTT sowohl beruflich wie auch privat. Da ich mir vor kurzer Zeit nun für meinen Raspberry PI ein z-wave Adapter angeschafft habe, ist nun meine Idee die Informationen meiner z-wave Devices wie MQTT in meine Hausautomatisierung einzubinden.
Aus diesem Grund will ich hier mal kurz zeigen wie man auf dem Raspberry Pi einen MQTT Broker installiert. Zuvor will ich aber kurz erklären, was MQTT ist und wofür man das ganze verwendet.
Was ist MQTT?
MQTT steht für Message Queuing Telemetry Transport ist und ein Protokoll von dem man oft im Zusammenhang mit dem Internet of Things hört. Das ist nicht weiter verwunderlich, da dieses Protokoll dazu verwendet wird, eine Machine zu Machine Kommunikation für Telemetriedaten aufzubauen.
Der MQTT-Broker verbindet sich mit MQTT fähigen Geräten um die Telemetriedaten zu sammeln und hälte diese dann in einem lokalen Datenlager vor. In der Praxis werden diese Daten dann für gewöhnlich an einen Date Lake oder eine Analyse Plattform zur weiteren Verarbeitung mittels ETL Prozess weitergegeben.
MQTT auf dem Raspberry Pi installieren
Wir werden nun auf unserem Raspberry Pi den MQTT Broker Mosquitto installieren. Dafür installieren wir als erstes die aktuellen Updates auf dem Raspberry Pi.
1 2 | apt-get update apt-get dist-upgrade |
Anschließend wird Mosquitto installiert.
1 | apt-get install -y mosquitto mosquitto-clients |
Nach der Installation fügen wir den Broker dem Startup Script hinzu, damit der Broker nach einem Neustart oder einem Stromausfall automatisch wieder startet.
1 | systemctl enable mosquitto.service |
MQTT Broker testen
Um den Broker zu testen, starten wir den deamon im Hintergrund deamon im Hintergrund.
1 | mosquitto -d |
Anschließend schaltet man sich mit dem Mosquitto Client auf eine Topic (Subscribing). In unserem Beispiel verwenden wir die Topic test.
1 | mosquitto_sub -d -t test |
Danach schicken wir eine Nachricht zu dem Broker (Publishing), welche dann in dem Terminal wo wir lauschen angezeigt werden sollte.
1 2 3 4 5 | mosquitto_pub -d -t test -m "Hello world!" Client mosqpub/19914-raspberry sending CONNECT Client mosqpub/19914-raspberry received CONNACK Client mosqpub/19914-raspberry sending PUBLISH (d0, q0, r0, m1, 'test', ... (12 bytes)) Client mosqpub/19914-raspberry sending DISCONNECT |
Die Ausgabe im Mosquitto Client in dem gelauscht wird, sieht wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 | mosquitto_sub -d -t test Client mosqsub/19867-raspberry sending CONNECT Client mosqsub/19867-raspberry received CONNACK Client mosqsub/19867-raspberry sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 0) Client mosqsub/19867-raspberry received SUBACK Subscribed (mid: 1): 0 Client mosqsub/19867-raspberry received PUBLISH (d0, q0, r0, m0, 'test', ... (12 bytes)) Hello world! Client mosqsub/19867-raspberry sending PINGREQ Client mosqsub/19867-raspberry received PINGRESP Client mosqsub/19867-raspberry sending PINGREQ Client mosqsub/19867-raspberry received PINGRESP |
Hier sieht man, dass der String „Hello world!“ übertragen wurde. Dazu sieht man noch ein paar Übertragungsinformationen, die für uns an dieser Stelle aber erstmal uninteressant sind.
Damit haben wir nun erfolgreich einen MQTT Broker auf dem Raspberry Pi installiert.
Hallo,
Ich bin blutiger Anfänger. Dass man vor Kommandos ein sudo schreiben muss, habe ich noch herausgefunden.
Leider funktioniert bei mir das Hallo Welt nicht.
mosquitto_pub -d -t test -m „Hello world!“
Client mosqpub/19914-raspberry sending CONNECT
Client mosqpub/19914-raspberry received CONNACK
Client mosqpub/19914-raspberry sending PUBLISH (d0, q0, r0, m1, ‚test‘, … (12 bytes))
Client mosqpub/19914-raspberry sending DISCONNECT
pi@raspberrypi:~ $ mosquitto_sub -d -t test
Client mosqsub/3787-raspberryp sending CONNECT
Client mosqsub/3787-raspberryp received CONNACK
Client mosqsub/3787-raspberryp sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 0)
Client mosqsub/3787-raspberryp received SUBACK
Subscribed (mid: 1): 0
Client mosqsub/3787-raspberryp sending PINGREQ
Client mosqsub/3787-raspberryp received PINGRESP
Die Zeile mit der Ausgabe „Hello World“ fehlt.
Was habe ich falsch gemacht?
Gruss Frank
Hallo,
habe es gerade selbst herausgefunden. Man muss natürlich 2 Terminals starten.
Gruss Frank