Interface-Programmierung

IoT-Schnittstellen einfach verdrahten

< zurück

Seite: 3/3

Anbieter zum Thema

Node-RED als Protokoll- und Datenbindeglied

Ein Werkzeug, mit dem sich diese Anforderungen umsetzen lassen und das sich direkt in einen SCS integrieren lässt, ist die Open-Source-Software Node-RED (siehe hierzu auch [4]). Dieses relativ neue Werkzeug wurde von IBM entwickelt und 2013 veröffentlicht. Node-RED steckt zwar noch in den Kinderschuhen, die Entwickler-, Unterstützer- und Anwendergemeinde wächst aber in einem rasanten Tempo.

Node-RED besteht aus einer ereignisgesteuerten JavaScript-Laufzeitumgebung, einem integrierten Webserver und einer komfortablen Web-basierten Benutzerschnittstelle, die mit jedem modernen HTML5-konformen Browser nutzbar ist. Node-RED isoliert nahezu die gesamte Komplexität der Schnittstellenverbindung zwischen IoT-Device und IoT-Plattform in vorgefertigten grafischen Funktionsbausteinen (sogenannten Nodes). Diese werden in der Weboberfläche per Copy&Paste aus einem mitgelieferten Baukasten als einzelne Grafikobjekte entnommen, auf einer Arbeitsfläche platziert und miteinander verbunden (verdrahtet). Dabei entsteht ein Node-RED-Flow.

Schaubild 2: Node-RED bietet eine Web-basierte Benutzeroberfläche mit integriertem Flow-Editor. Im Arbeitsbereich des Editors werden nach dem Prinzip der Datenflussprogrammierung vorgefertigte Funktionsbausteine (sogenannte Nodes) platziert, durch entsprechende Eingaben konfiguriert und per Mausklick verdrahtet. Das Ergebnis ist ein Node-RED-Flow, der über die Weboberfläche ausgeführt wird.(Bild:  SSV Software Systems)
Schaubild 2: Node-RED bietet eine Web-basierte Benutzeroberfläche mit integriertem Flow-Editor. Im Arbeitsbereich des Editors werden nach dem Prinzip der Datenflussprogrammierung vorgefertigte Funktionsbausteine (sogenannte Nodes) platziert, durch entsprechende Eingaben konfiguriert und per Mausklick verdrahtet. Das Ergebnis ist ein Node-RED-Flow, der über die Weboberfläche ausgeführt wird.
(Bild: SSV Software Systems)

Schaubild 2 zeigt im Arbeitsbereich der Weboberfläche das denkbar einfachste Beispiel mit jeweils einem Input-Node und Output-Node. Der Input-Node auf der linken Seite bildet einen MQTT-Subscriber, der per Internet mit einem Broker verbunden ist, um Nachrichten (MQTT-Topics) entgegenzunehmen und an den Output-Node auf der rechten Seite weiterzuleiten.

Als Output-Node wird ein Debug-Node verwendet. Dieser gibt in einem speziellen Fenster der Weboberfläche die vom Input-Node erhaltenen Nachrichten zusammen mit einem Zeitstempel und weiteren Informationen aus. Will man etwa das Datenformat des MQTT-Topics- vor der Weitergabe an den Output-Node verändern, so wird zwischen die beiden Nodes ein zusätzlicher Function-Node aus dem Funktionsvorrat am linken Rand der Weboberfläche eingefügt und die Verdrahtung angepasst. In diesem Node lässt sich dann JavaScript-Programmcode für Datenumwandlungen jeglicher Art und andere Aufgaben ablegen.

Neben dem Platzieren und Verdrahten der Funktionsbausteine ist die Konfiguration der einzelnen Nodes in einem Flow sehr wichtig. Dazu wird im Node-RED-Flow-Editor mit einem Doppelklick auf das entsprechende Grafikobjekt jeweils ein Dialogfenster geöffnet. In diesem Fenster werden dann die erforderlichen Daten – zum Beispiel die Adresse eines MQTT-Brokers oder der JavaScript-Programmcode – eingegeben.

Datenflussprogrammierung und JavaScript als Basis

Die Node-RED-Methodik nutzt das seit vielen Jahren in der IT-Welt verbreitete Konzept der Datenflussprogrammierung (Flow-based Programming = FBP, siehe [5]). Die FBP-Grundlage bilden grafische Module mit Ausgängen zum Versenden von Daten (Datenquellen), Datenempfangsmodule mit Eingängen (Datensenken) sowie Module mit Ein- und Ausgängen, die auf der einen Seite Daten empfangen und auf der anderen Seite modifizierte Daten wieder versenden. Die Ein- und Ausgänge der Module werden zu einem Netzwerk verbunden. Über diese vordefinierten Verbindungen fließen dann die Daten einer Anwendung.

Schaubild 3: Ein ausgetesteter Node-RED-Flow lässt sich als JSON-Objekt exportieren, archivieren und in andere IoT-Devices importieren. Dadurch lassen sich zum Beispiel alle Konfigurationsdaten und weitere Parameter einer Schnittstellenverbindung zwischen IoT-Device und IoT-Plattform beliebig oft duplizieren. Export und Import werden von Node-RED durch spezielle Funktionen der Weboberfläche unterstützt.(Bild:  SSV Software Systems)
Schaubild 3: Ein ausgetesteter Node-RED-Flow lässt sich als JSON-Objekt exportieren, archivieren und in andere IoT-Devices importieren. Dadurch lassen sich zum Beispiel alle Konfigurationsdaten und weitere Parameter einer Schnittstellenverbindung zwischen IoT-Device und IoT-Plattform beliebig oft duplizieren. Export und Import werden von Node-RED durch spezielle Funktionen der Weboberfläche unterstützt.
(Bild: SSV Software Systems)

Eine Node-RED-Implementierung basiert auf der JavaScript-Laufzeitumgebung Node.js (https://nodejs.org/), die für die Entwicklung und den Betrieb serverseitiger Netzwerkanwendungen vorgesehen ist. Node.js lässt sich sowohl auf Embedded-Systemen als auch auf PCs installieren und nutzen. Dadurch ist Node-RED plattformunabhängig und kann auf intelligenten Sensoren, IoT-Edge-Gateways, PCs und sonstigen Automatisierungsbaugruppen eingesetzt werden.

Die zu einer Node-RED-Installation gehörenden Funktionsbausteine decken zahlreiche IoT-Anbindungen, etwa per HTTP/REST und MQTT, ab. Auch Websocket-Funktionen, E-Mail-Versand und Twitter-Anbindungen sind vorhanden. Weitere Bausteine sind jederzeit nachinstallierbar. Ein SCS-Anbieter kann seinen Kunden somit spezielle Erweiterungsbausteine zur Verfügung stellen, die sich relativ einfach nachinstallieren lassen und den Funktionsvorrat der Input-, Output- und Function-Nodes erweitern. Damit lässt sich etwa ein kompletter OPC-UA-Server in einem Node-RED-Funktionsbaustein isolieren und vom Anwender per Copy&Paste in einen Flow implementieren.

Der im Node-RED-Editor erstellte Flow lässt sich durch spezielle Funktionen der Weboberfläche als JSON-Objekt exportieren, archivieren und in andere IoT-Devices importieren. Dadurch sind alle Konfigurationsdaten und weitere Parameter einer IoT-Schnittstellenverbindung beliebig oft duplizierbar.

Insgesamt ist Node-RED zwar eine Expertenlösung. Sie lässt sich allerdings aufgrund der einfachen Struktur mit relativ geringen Vorkenntnissen per Webbrowser bedienen. Durch die Erweiterbarkeit des Funktionsvorrats und die Flow-Importmöglichkeit kann ein IoT-Device-Anbieter seinen Kunden hochkomplexe Konfigurationen zur Verfügung stellen, die sich mit wenigen Mausklicks anpassen und einsetzen lassen.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Externe Quellen:

[1] Smart Connected Sensor (SCS) – Webseite der SSV Software Systems GmbH: http://ssv-embedded.de/loesungen/scs/

[2] Website mit einem REST-Tutorial: http://www.restapitutorial.com/lessons/whatisrest.html

[3] Projekt-Webseite zum MQTT-Protokoll: http://mqtt.org/

[4] Node-RED Website: http://nodered.org/

[5] Paul Morrison: Flow-based Programming (FBP); Webseite des Autors mit Auszügen und Inhaltsangaben zum Buch: http://jpaulmorrison.com/fbp/

* Klaus-Dieter Walter ist als CEO für SSV Software Systems in Hannover tätig. Der Autor ist zudem durch Vorträge sowie Beiträge in Fachzeitschriften bekannt.

Artikelfiles und Artikellinks

(ID:44458333)