MQTT[1] (Message Queue Telemetry Transport) hat sich in den letzten Jahren zu einem wichtigen Nachrichtenprotokoll im Bereich IoT durchgesetzt. Mit ihm können Informationen leichtgewichtig nach dem Publish/Subscribe Pattern übermittelt werden. Dabei verbindet sich eine Vielzahl von Clients an einen Server („Broker“) und abonniert wichtige Nachrichten bzw. veröffentlicht Nachrichten zu einem bestimmten Thema („Topic“). Der Broker sammelt die Nachrichten und verschickt sie automatisch („push“) an die Clients, die das Topic abonniert haben. Über die Quality of Service kann jeder Client festlegen, wie die Nachrichtenübertragung garantiert wird. Das reicht von maximal ein Mal (Level 0) über mindestens ein Mal (Level 1) zu genau ein Mal (Level 2).

So kann beispielsweise eine automatische Fahrplanauskunft entwickelt werden. In Bussen werden GPS-Empfänger installiert, die ihre Position jede Sekunde oder an jeder Haltestelle publishen. Der Broker sendet die Position an eine Anwendung, die die Ist-Position mit der Soll-Position vergleicht und damit eine eventuelle Verspätung berechnet. Die Anwendung veröffentlicht die ermittelte Verspätung im Broker, der alle digitalen Fahrplananzeiger benachrichtigt, die die Buslinie abonniert haben. Die wartenden Fahrgäste können so direkt informiert werden. An diesem Beispiel kann man sehen, wie passend das Publish/Subscribe Pattern für IoT ist. Einfache Daten werden von „Dingen“ (hier: Fahrplananzeigern) geteilt, an Abonnenten weitergeschickt, verarbeitet und führen schließlich zu einem Mehrwert: Transparenz und Informationen für die Fahrgäste. Abgesehen davon, dass Benutzer direkten Einblick in die Fahrplandaten haben, lassen sich über die erfassten Daten komplette Routen aktualisieren und optimieren „“ also in einer weiterführenden Verarbeitung einsetzen. Weitere Fälle, wie zum Beispiel die direkte Erfassung von Statistiken verspäteter Linien, sind denkbar.

Seit der Version 3.1.1 unterstützt MQTT das WebSocket-Protokoll[2], das eine aktive bidirektionale Verbindung zwischen einem Client und Server herstellt. Hierbei kann der Server Nachrichten an den Client übermitteln, ohne dass erneut eine Client-Server-Verbindung hergestellt werden muss. MQTT über WebSockets bietet damit die Möglichkeit, Daten „live“ im Browser darzustellen.

Um Daten übersichtlich aufbereitet anzuzeigen, werden sogenannte Dashboards verwendet. Die Daten aus dem Beispiel der Fahrplanauskunft können erstklassig für ein Dashboard verwendet werden. Eine Anwendungsmöglichkeit wäre, das Dashboard im Eingangsbereich einer Firma zu installieren und so Kunden und Mitarbeiter über die nächsten Busverbindungen und Verspätungen zu informieren. In der Leitzentrale des Verkehrsbetriebs könnten Dashboards die Verantwortlichen über Verspätungen informieren und dazu führen, dass beispielsweise Ersatzbusse kurzfristig auf den Weg geschickt werden, um Verspätungen zu kompensieren.

Dashboards bieten eine Vielzahl an Vorteilen:

  • Mit ihnen kann eine direkte, schnelle Kommunikation mit dem Endverbraucher aufgebaut werden.
  • Der Kunde wird sofort mit allen wichtigen Informationen versorgt, die er benötigt.
  • Die Dienstleitung erhält eine gesteigerte Qualität auf Basis offener Informationen.

Im Internet findet man verschiedene Dashboard-Bibliotheken, die den Entwickler bei der Arbeit unterstützen. Im Folgenden sollen fünf Dashboards näher betrachtet werden, die MQTT-kompatibel sind:

Crouton[3] ist OpenSource und bietet zehn verschiedene Typen von Kacheln an, mit denen die Daten angezeigt werden. Neben einfachen Ausgaben und Diagrammen gibt es die Möglichkeit, mittels Buttons, Schieberegler und Umschalter die Zustände der Clients zu manipulieren. So kann beispielsweise die Helligkeit einer Lampe oder deren Farbenwert geregelt werden. Für den Einstieg und eine einfache Datendarstellung ist Crouton eine gute Wahl. Das Projekt wird jedoch vom Entwickler nicht weitergeführt.

Freeboard[4] stellt acht Anzeigetypen bereit, ist OpenSource und kann kostenlos über den Anbieter gehostet werden, so lange das Dashboard öffentlich einsehbar ist. Für geschützte Dashboards gibt es in Abhängigkeit der Anzahl verschiedene Stufen und Preise. Die Bedienung ist einfach. Für jeden Anzeigetyp kann eine Datenquelle angegeben werden. Für die Unterstützung von MQTT muss ein Plugin installiert werden, das sich unter dem folgenden Link findet [5]. Die Installation funktioniert nicht bei den live gehosteten Dashboards. Für MQTT muss Freeboard aus diesem Grund auf einem eigenen Server laufen. Da es OpenSource ist, können weitere Anzeigetypen implementiert werden. Seit Februar 2016 wurden fast keine Commits mehr am Projekt durchgeführt.

Node-RED[6] bietet einen interessanten Ansatz zum „Verdrahten“ des Internets der Dinge. Über eine grafische Oberfläche können Komponenten („Nodes“) zu Abläufen („Flows“) verbunden werden. Jeder Node kann Nachrichten senden, empfangen oder verarbeiten. Dabei können auch mehrere Nachrichten in einen Node laufen bzw. aus einem Node mehrere Nachrichten gesendet werden. Node-RED baut auf Node.js auf, ist OpenSource und stellt ca. 600 Nodes und 300 Flows auf der Homepage zu Verfügung. Flows werden im JSON-Format gespeichert und können einfach importiert und exportiert werden. Um Dashboards generieren zu können, wurden in einem Projekt ca. 10 Nodes von der OpenSource-Community entwickelt [7].

Highcharts JS[8] stellt eine sehr breite Palette an Anzeigetypen zur Verfügung. Für nicht-kommerzielle Zwecke ist Highcharts JS kostenlos. Eine einzelne Lizenz ohne Support kostet ca. 400 Dollar. Unter Github[9] gibt es ein Beispiel, wie Livedaten von einem MQTT-Topic über Highcharts JS ausgegeben werden können. Für kommerzielle Anwender, die Wert auf Wartung und Support des Herstellers legen, könnte Highcharts JS eine Lösung sein.

Arbela[10] ist die Implementierung einer Referenzarchitektur[11], die der Autor entwickelt hat. Es ist OpenSource und hält drei generische Anzeigetypen bereit. Die Dokumentation ist sehr dünn, die Referenzarchitektur ist jedoch einen Blick wert. Arbela unterstützt zurzeit nicht die Browser Opera und Chrome. Wenn kein weiterer Ausbau erfolgt, kann das Dashboard nur für extrem einfache Tests verwendet werden.

Weitere kommerzielle Anbieter für Dashboards wie Geckoboard[12] oder Jaspersoft[13] bieten keine direkte Unterstützung für MQTT. Da Jaspersoft eine Javascript-Schnittstelle anbietet und Geckoboard JSON als Eingabe für die Dashboards akzeptiert, sollte eine Verbindung mit MQTT-Daten jedoch kein Problem sein. Für AngularJS werden verschiedene Lösungen im Internet angeboten.

Fazit: Die Unterstützung von Dashboards für MQTT ist nicht weit verbreitet. Die meisten Lösungen sind sehr einfach und erfordern weiteren Implementierungsaufwand. Dies gilt für den kommerziellen Bereich wie für Open-Source-Anwendungen.

Links:

[1] https://de.wikipedia.org/wiki/MQ_Telemetry_Transport

[2] https://de.wikipedia.org/wiki/WebSocket

[3] http://crouton.mybluemix.net/crouton/gettingStarted

[4] http://freeboard.io/

[5] https://github.com/alsm/freeboard-mqtt

[6] http://nodered.org/

[7] http://flows.nodered.org/node/node-red-contrib-ui

[8] http://www.highcharts.com/

[9] https://github.com/matbor/mqtt2highcharts

[10] https://github.com/walkingtree/arbela

[11] https://www.sencha.com/blog/a-reference-architecture-for-an-ext-js-based-iot-dashboard/

[12] https://www.geckoboard.com/

[13] https://www.jaspersoft.com/

Alle Beiträge von Daniel Rock

Schreibe einen Kommentar