Über MQTT (man soll tatsächlich nur noch die ehemalige Abkürzung als Bezeichnung verwenden) habe ich in der letzten Folge dieser Serie berichtet. Das Protokoll besitzt einige interessante Eigenschaften, gerade für Anwendungen, bei denen mehrere Datenproduzenten (Sensoren u.ä.) und Datenkonsumenten (PC, Smartphone) beteiligt sind. Doch nicht nur das – es ist auch fest in Händen der Open-Source-Community.

Es gibt zwei offizielle Websites für Entwickler: Einmal http://mqtt.org, wo man unter anderem die Spezifikation herunterladen kann. Und einmal www.eclipse.org/paho, die Website des Eclipse Paho Projekts. Dieses wird von der Eclipse IOT Working Group betreut, zu der interessanterweise auch Firmen wie Cisco, Huawei und Bosch gehören. Man kümmert sich hier um MQTT-Implementierungen in diversen Programmiersprachen.

Mein Interesse war geweckt – ich wollte das Protokoll nun auch selbst ausprobieren. Glücklicherweise stehen schon einige funktionierende MQTT-Broker für Tests bereit, das Ganze natürlich in „der Wolke“. Ich habe mich für den Mosquitto-Testserver (http://test.mosquitto.org) entschieden, doch es gibt noch andere. Fast immer steht in der Doku, dass man damit keinen Unsinn treiben sollte, und die berechtigte Warnung: Jeder kann alles mitlesen!

Für uns egal, denn es geht ja erst einmal darum, ein paar Nachrichten von einem (selbst programmierten) MQTT-Client abzusetzen und wieder zu empfangen. Beginnen wir einfach mal mit dem PC als Plattform. Auf den Paho-Seiten werden Open-Source-Bibliotheken für Java, Javascript, Python u.a. angeboten. Ich habe mir die M2Mqtt-Library für C#/.NET herausgesucht. Hier findet man Dokumentation für den Einstieg:
www.eclipse.org/paho/clients/dotnet/
www.hivemq.com/blog/mqtt-client-library-encyclopedia-m2mqtt

Auch auf den offiziellen MQTT-Seiten führen immer wieder Weblinks ins Leere, daher hier noch der direkte Weblink auf den Sourcecode bei Github:
http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.m2mqtt.git/

Der Download ist eine Visual Studio Solution (Projektordner), die man in der kostenlos downloadbaren IDE Visual Studio Community 2015 öffnen sollte. Zuerst muss man der Solution ein weiteres Projekt hinzufügen, welche die Benutzeroberfläche und den Anwendungscode des selbst programmierten Clients aufnimmt. Dann fügt man diesem neuen Projekt einen Verweis auf die M2Mqtt-Library hinzu und macht deren Funktionen im Code über die Anweisungen

using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;


zugänglich.

Das eigentliche Programmieren gegen die Bibliothek gestaltete sich mit den Anleitungen recht einfach. Sie können sich die komplette Solution unten herunterladen. Ich habe auch die ausführbare Anwendung in einen Ordner gepackt (benötigt die .NET Framework 4.5 Laufzeitumgebung, oft bereits installiert, kann aber auch kostenlos heruntergeladen werden).

Mein Test-Client kann seine eigenen Nachrichten empfangen, wenn man in die Topic-Textboxen jeweils dasselbe Kennwort einträgt und dann den Button „Subscribe“ betätigt. Nach Eingabe eines Textes im Feld „Text to publish“ und dem Betätigen des Buttons „Publish“ geht die Nachricht ins Netz und erscheint mit einer kleinen Verzögerung unten in der Textbox „Received text“. Wenn man denselben Client auf verschiedenen PCs öffnet, kann man kleine Nachrichten hin und her schicken. Ich konnte mir problemlos Nachrichten von unserer Verlagszentrale in mein Home-Office senden und auch mit einer Kollegin chatten (man trägt dabei praktischerweise als „Topic to publish“ den eigenen Vornamen und als „Topic to subscribe“ den Vornamen des anderen ein).

So ein Broker im Netz ist eben eine ziemliche Vereinfachung gegenüber einer Lösung, bei der man daheim einen eigenen Webserver aufsetzt und sich um eine feste IP-Adresse, Konfigurieren des Routers und so weiter kümmern muss.
Erfolgserlebnisse machen Lust auf mehr – weiter geht es in der nächsten Folge!