Huhu, heute wollen wir endlich mal den MQTT-Broker wirklich benutzen und ein paar Nachrichten hin und her senden, sowie natürlich auch empfangen. In den vorherigen Blogeinträgen konnten wir uns das Basiswissen (Das Protokoll MQTT erklärt und vorgestellt #Part1) und das erweiterte Wissen (MQTT für Fortgeschrittene – QoS & letzter Wille) aneignen und heute wollen wir das in der Praxis mal anwenden. Ich für meinen Teil nehme für solche Geschichten immer ganz gerne Python, da es einfach ist zu installieren und zwar auf jeder Umgebung und egal wo ich mein Script geschrieben habe, es klappt auf jedem Betriebssystem.

Python unter Windows installieren
Ich empfehle euch unter jeglichem Betriebssystem die Version 3 zu installieren, obwohl Version 2 auch noch überall angeboten wird, aber mit V3 seit ihr auf dem richtigen Weg. Ladet euch auf der Downloadpage von Python selber das passende Paket herunter. In den meisten Fällen einfach eine Stable Version und gut ist. ( Zum Download )
Wie man jetzt die Installation durchführt, lasse ich jetzt mal aus. Ich sage nur “weiter, weiter, fertig“.

Python unter Linux installieren ( z.B. auch auf dem Raspberry Pi )
Unter Linux möchte ich jetzt auch nicht in die Tiefe gehen, ein wenig Erfahrung sollte man schon haben. Also hier installieren wir uns direkt python3 als fertiges Paket aus den Quellen. ( Gültig für Debian und Raspberry Pi )

sudo apt-get install python3

Jetzt benötigen wir noch eine Bibliothek damit wir auch im Python ein wenig MQTT sprechen können. Wir besorgen uns die Bibliothek von paho und das Paket heißt “paho-mqtt”.

Paho-MQTT unter Windows installieren
Ihr öffnet ein “CMD” Fenster –> In der Suche kann man einfach CMD eintippen und dann ENTER. Das typische Konsolenfenster öffnet sich und wir können wenn Ihr wollt noch die Python version überprüfen in dem Ihr einfach mal python eintippt und ENTER drückt. Wenn Ihr die Pythonzeile wieder verlassen möchtet, drückt Ihr einfach STRG + Z & ENTER. Also installieren wir das Paket mit 

pip3 install paho-mqtt

Paho-MQTT unter Linux installieren
Es ist einfach zu einfach. Unter Linux ist es genauso einfach wie unter Windows, in die Kommandozeile tragt Ihr folgendes ein und bestätigt.

pip3 install paho-mqtt

Kommen wir nun zum wirklich wichtigen Teil dieser Anleitung, zum Script selber. Unser Ziel in diesem Tutorial ist es eine einfache Nachricht zum Broker zu senden und diese mit einem anderen Script vom Broker zu empfangen.

Client –> Broker | Publish | Nachricht senden

#!/usr/bin/env python
import paho.mqtt.client as mqtt

client = mqtt.Client()
client.connect("rpicloud.de", 1883, 60)

client.publish("test/temperatur", "25 C")
client.disconnect()

mqtt_publish.py

Also was macht das obrige Script nun? Nun ja, zunächst wird die Bibliothek paho.mqtt.client als mqtt eingebunden. Mit den nächsten beiden Zeilen wird verfügt, dass eine Verbindung mit dem rpicloud.de Broker auf dem Port 1883 aufgebaut werden soll. Die 60 bedeutet hier, das wir eine Timeout von 60 Sekunden haben. Die nächste Zeile ist eigentlich die wichtigste. Hier geben wir dem Script mit das wir in dem Topic “test/temperatur” “25 C” publishen sollen. Diese beiden Werte können natürlich nach belieben angepasst werden. Zu guter letzt wird die Verbindung wieder geschlossen und das Script beendet sich.

Broker –> Client | Subscribe | Nachrichten empfangen

#!/usr/bin/env python
import paho.mqtt.client as mqtt

def on_message(client, userdata, msg):
	print(msg.topic + " " + str(msg.payload))

client = mqtt.Client()
client.on_message = on_message
client.connect("rpicloud.de", 1883, 60)
client.subscribe("test/temperatur")
client.loop_forever()

mqtt_subscribe.py

Hier wird auch zunächst auch die Bibliothek eingebunden und die Verbindung mit “connect” zur rpicloud.de aufgebaut. Eine Funktion mit dem Namen on_message wird definiert, damit die Konsole uns auch was anzeigt wenn wir eine Nachricht empfangen. Diese Funktion wird immer dann getriggert wenn eine Nachricht empfangen wird. Es wird uns in diesem Fall zunächst das Topic angezeigt und mit einem Leerzeichen dazwischen dann die Nachricht selber. Mit der Befehl “subscribe” geben wir das Topic vor, welches wir abbonieren möchten. Wir könnten hier auch ein Wildcard setzen. ( Wildcards ) Die letzte Zeile besagt das der Client in einer Schleife laufen soll und jedes mal wenn jetzt eine Nachricht vom Broker zu uns gesendet wird, wird die Funktion on_message aufgerufen.

Speichert euch beide Dateien einfach ab.

Startet das Subscribe Script mit 
python mqtt_subscribe.py

und startet anschließend das Publish Script mit ( natürlich gerne auch mehrfach )
python mqtt_publish.py

Ihr solltet in dem Fenster vom Subscribe nun sehen das Ihr Nachrichten erhaltet. Jetzt sind das natürlich nur die einfachsten Scripte und was es tut ist auch nur sehr marginal. Im nächsten Tutorial gehen wir auf einen konkrekten Use-Case ein.