Die Kommunikation zwischen dem Raspberry Pi und der Bluemix-Cloud von IBM findet mithilfe von MQTT (Message Queuing Telemetry Transport) statt, was seit 2013 als das Standardprotokoll für das IoT gilt und deshalb auch Node-RED einsetzt. Grundsätzlich sendet hier ein Publisher (z. B. ein Sensorknoten) seine Daten nicht direkt an einen Empfänger (Subcriber), sondern an einen Server, der als sogenannter Broker (Vermittler) fungiert, die Daten speichert und sie auf Anforderung an Endgeräte wie Computer oder Smartphones überträgt. Im Prinzip kann jeder Client – sei es eine Sensor-/Aktorschaltung oder ein Smartphone – zeitweilig Publisher oder Subscriber sein, der Daten mit dem Broker austauscht. Dieser wird vom Bluemix-IoT-Service (Bild 9) gebildet. Der Nachrichtenaustausch sowie die Klassifizierung und Filterung der Daten erfolgen dabei über Zeichenketten (Topics), die in ihrer Struktur dem Aufbau von Internet-Links ähnlich sind.
Damit der Watson-IoT-Knoten die Daten aus der Node-RED-Anwendung des Raspberry Pi nutzen kann, muss man innerhalb von Bluemix eine Applikation erstellen, wofür zunächst ein entsprechendes Konto bei Bluemix erforderlich ist. Ein Testkonto ist kostenfrei und zeitlich nicht begrenzt. Der zulässige Laufzeitspeicher hat hierfür eine Kapazität von 0,5 GB, die über die Anzahl der ausgetauschten und verarbeiteten Daten ermittelt wird. Wenn hundert Sensoren täglich hundert Werte liefern würden, ließen sich die Daten über ein Jahr lang in der Cloud speichern, bevor alte Daten zu löschen wären, damit das Limit nicht erreicht wird. Dies reicht also nicht nur für einen Testbetrieb aus.
Nach dem Einloggen ist beim Menü-Unterpunkt Dashboard eine Übersicht über alle erstellten Anwendungen und eingebundenen Services einsehbar sowie der Button Create zu finden. Wichtig an dieser Stelle ist die Auswahl der korrekten Region, die einen bestimmten Bereich für die genutzte Infrastruktur definiert, womit der Bluemix-Katalog mit den verschiedenen Services auftaucht sowie Platform.
An dieser Stelle ist für eine Node-RED-Applikation das Software-Development-Kit (SDK) für Node.js zu wählen. Weil noch weitere Services nötig sind, können diese entweder separat eingebunden werden oder anhand von Boilerplate gleich eine anwendungsspezifische SDK-Zusammenstellung. Das eingesetzte Boilerplate Internet of Things Platform Starter enthält das SDK für Node.js, den Service Cloudant und den Service für die IoT-Plattform. Cloudant ist ein Datenbankservice, der hier für die Speicherung der Sensordaten eingesetzt wird.
Nach Wahl des Boilerplates sind ein eindeutiger Name, unter dem die Anwendung später aufgerufen wird, sowie die Region (Deutschland, Bereich dev) für die Anwendung festzulegen, die nach Fertigstellung im Dashboard unter Cloud-Foundry-Anwendungen auftaucht und im Internet dann bereits direkt aufrufbar ist. Dabei wird ein Node-RED-Editor [9] gestartet, über den sich die Anwendung nachfolgend konfigurieren lässt. Weil diese öffentlich erreichbar ist, ist ein Schutz durch ein Passwort sinnvoll, was sich unter dem Reiter Laufzeit durch Hinzufügen von Umgebungsvariablen zur Node.js Runtime erreichen lässt. Mit einem Klick auf Deploy generiert die Software dann die Anwendung (Bild 10). Es dauert einige Minuten, bis sie dann im Dashboard erscheint.
Der IBM-IoT-Knoten aus der Kategorie Input entspricht quasi dem Gegenüber, dem Watson-IoT-Knoten. Die Objekte, die der Watson-IoT-Knoten auf dem Raspberry Pi als Input erhält, gibt der IBM-IoT-Knoten als Output weiter. Die Daten lassen sich an dieser Stelle – wie mit Node-RED üblich – direkt über einen weiteren Flow weiterverarbeiten. Weil der IoT-Service eingebunden ist, ist die Anwendung automatisch mit der Watson-IoT-Platform verbunden, die sich mit einem Klick auf den Service starten lässt.
Für die Verbindung zwischen den beiden IoT-Knoten ist der Watson-IoT-Knoten auf dem Raspberry Pi mit der Watson-IoT-Platform innerhalb von Bluemix zu verknüpfen, was über Gerätetyp erstellen funktioniert (Bild 11). Nachdem der Gerätetyp bestimmt ist, wird ein Gerät mit einer entsprechenden ID, die der jeweiligen MAC-Adresse des Raspberry Pi entsprechen sollte, sowie ein dazugehöriger Authentifizierungs-Token hinzugefügt. Dieser kann entweder selbst erstellt oder auch automatisch generiert werden und wird aus Sicherheitsgründen verschlüsselt gespeichert. Der Authentifizierungs-Token kann nicht wiederhergestellt werden, weshalb es ratsam ist, diese Daten auch separat zu speichern. Das Gerät ist damit registriert, was sich unter dem Reiter Geräte einsehen lässt.
Allerdings ist noch keine Verbindung vorhanden, weil das Gerät erst zu einem Watson-IoT-Knoten hinzuzufügen ist. Hierfür werden der Modus Registered im Konfigurationsmenü des Watson-IoT-Knotens und unter Credentials ein verknüpftes Gerät ausgewählt. Falls es noch registriert ist, lassen sich die notwendigen Daten an dieser Stelle eintragen. Die ID der Organisation lässt sich über die Watson-IoT-Platform herausfinden, während man die anderen Daten ja selbst festgelegt hat. Sind die Daten korrekt festgelegt, so wechselt der Status des Knotens auf connected. Damit ist der Watson-IoT-Knoten (Raspberry Pi) nun mit der Watson-IoT-Platform verbunden. Unter Geräte wird das soeben registrierte Gerät als verbunden angezeigt, und beim Draufklicken lassen sich die gelieferten Sensordaten einsehen (Bild 12).
Für die Visualisierung der Daten sind im Boards-Menü verschiedene Möglichkeiten wie etwa generische Visualisierung, Liniendiagramm, Balkendiagramm oder auch Ringdiagramm zu finden. Die hierfür auszuwählende Datenquelle entspricht dem registrierten Knoten. Die Payload des ankommenden Objektes setzt sich aus Temperatur, Druck und Zeitstempel zusammen, was sich in einem Liniendiagramm darstellen lässt (Bild 13).
Die Sensordaten werden mithilfe des Datenbankservice (Cloudant) zudem gespeichert und lassen sich später als Historie anzeigen. Hierfür ist ein Cloudant-Knoten in den Node-RED-Editor zu ziehen und mit dem IBM-IoT-Knoten zu verbinden. Die JSON-Objekte mit den Sensordaten im Payload werden direkt an den Cloudant-Knoten übergeben. Die Konfigurierung ist dabei recht einfach (Bild 14): Unter Service wird die Bezeichnung der Anwendung angegeben, unter welcher der Service gestartet wurde. Die Datenbank selbst wird hier nodered genannt. Der Cloudant-Service, über den man auf alle angelegten Datenbanken zugreifen kann, ist dann im Dashboard zu starten. Die empfangenen JSON-Objekte werden hier auch als solche gespeichert, und jedem Objekt wird eine eindeutige ID zugewiesen, über die es sich wieder abrufen lässt.
Fazit
Ein Raspberry Pi in Industrieausführung arbeitet als Gateway für CAN-Bus-Sensorknoten, die sich relativ einfach mit einem Arduino Nano aufbauen lassen. Die Arduino-Programmierung ist mit zahllosen Beispielen hinlänglich dokumentiert und schließt auch den CAN-Bus und die Sensoranbindung mit ein. Die Gateway-Applikation mit dem Datentransport in die Bluemix-Cloud von IBM ist mit Node-RED schnell realisiert, was gleichermaßen für die Cloud-Applikation gilt, die sich ebenfalls mit Node-RED erstellen lässt. Dies führt zu einer einheitlichen Programmierung. Die vorgestellte Applikation beinhaltet alle IoT-Disziplinen, die sich in leicht überschaubaren Stufen mit Standardbauteilen und -methoden kostengünstig umsetzen lassen.
Links und Referenzen
[1] Klaus Dembowski, IoT-Kits auf dem Prüfstand – Teil 1, DESIGN&ELEKTRONIK 11/2017 S. 42 ff., https://tinyurl.com/y8uwun57
[2] Klaus Dembowski, IoT-Kits auf dem Prüfstand – Teil 2, DESIGN&ELEKTRONIK 01/2018 S. MF45 ff., https://tinyurl.com/y8d5ao6l
[3] Klaus Dembowski, IoT-Kits auf dem Prüfstand – Teil 3, DESIGN&ELEKTRONIK 04/2018 S. 58 ff., https://tinyurl.com/ycv47c98
[4] Klaus Dembowski, IoT-Entwicklungssystem(e) mit Gateway-Funktion, DESIGN&ELEKTRONIK 06/2018 S. 14 ff., https://tinyurl.com/ydad5w64
[5] Produktseite emPC-A/RPI3 von Janztec, https://tinyurl.com/yakdv8rm
[6] CAN-Busbibliothek von Seeed Studio, https://tinyurl.com/z8mp8br
[7] Node-RED-Plattform, https://nodered.org
[8] Kostenloses Bluemix-Konto eröffnen, https://console.bluemix.net/
[9] Node-RED-Editor, tutorialapp.eu-de.mybluemix.net