Node-Red
Die Installation ist beschrieben. Nachdem Node-Red gestartet wurde, steht ein Webserver zur Verfügung, der auf dem Port 1880 läuft.
Mit dem Aufruf der Url 127.0.0.1:1880
kann man die Workbench starten.
Das Grundprinzip eines Flow ist das Verbinden von Nodes. Ein Node ist eine Komponente, die einen bestimmten Auftrag erfüllt. Die Nodes können in einem Flow zusammengefasst werden und umgekehrt auch in mehreren Flows.
Flows müssen das Prinzip:
Quelle - Funktion - Senke
aufweisen:
Quelle | Verarbeitung | Senke |
---|---|---|
Inject-Node | Function-Node | Debug-Node |
HTTP-Node | Function-Node | UI-Widget: Chart |
Zwischen den Nodes werden über die gerichteten Verbindungen Messages ausgetauscht. Messages beinhalten strukturierte Daten, die in einem Flow verarbeitet werden. Sie werden als json-Objekte dargestellt:
{
"msg
{
"topic": "test",
"payload": "Hello World"
}
Start von Node-Red mit spezifischen Flow
Node-Red kann auch mit einem spezischen Flow gestartet werden.
node-red -s z:/settings_jb.js
So lassen sich auch die Beispiel-Flows direkt nutzen.
Minimal-Flow
Mit einem Doppel-Klick öffnet sich rechts der Parasmerter-Dialog des Node. Mit dem *Function-Node * lässt sich Javascript-Code einfügen. Das Beispiel zeigt, wie die Funktion eine Message (msg.payload=123;
in, msg.topic="test";
an den Debug-Node sendet.
Debug-Nodes haben rechts eine Fahne, mit der die Ausgabe in der rechten Spalte gesteuert werden kann.
Ist der Flow Übernahme (deploy) (nach jeder Änderung) aktiviert worden , dann wird er zyklisch oder ereignisgesteuert abgearbeitet.
Erweiterung: ui-Element
Nun soll der Flow um ein Visualisierungselement erweitert werden. Dies geschieht in zwei Schritten:
- Nodes aus Dashboard-Paket hinzufügen
- Dashboard konfigurieren (Tab anlegen, Group anlegen)
Diese Schritte sind im nachfolgend Bild dargestellt:
Erweiterung des Flows: ui-Element (Gauge)
Das Dashboard ist im Browser unter http://localhost:1880/ui
erreicbar, da Node-Red einen Webserver auf dem Port 1880
mit dem Endpoint ui
bereitstellt.
Dashboard
Dynamisierung des Flows
Mit dem Inject-Node steht das Element zur Verfügung, das eine zyklische Abarbeitung des Flows ermöglicht. Damit lässt sich z.B. steuern, in welchen zeitlichen Abständen ein Signal generiert / gelesen (über eine Kommunikationsstrecke, aus einer Datenbank, …) wird und durch die nachfolgenden Nodes weiterverarbeitet werden soll:
Parametrierung des Inject-Node
Download: flows_intervall.json
Function-Node
Individuellen Code kann man in den Function-Node implementieren. In dem Editor-Feld lässt sich per JavaScript auf das Message-Objekt zugreifen, manipulieren und auf den Ausgang (== return) legen.
Function-Node (msg.payload
& msg.topic
)
Download: functionGen_flow.json
Debugging wird allerdings durch einen Function-Node NICHT unterstützt !!
Debugging
Tip
Wenn komplexere Berechnungen in einem Function-Node * durchgeführt werden sollen, dann sollte der Algorithmus z.B. in VS Code und node.js programmiert und getestet werden. Anschließend kann der JS-Code in den Function-Node* kopiert werden.