Node-RED Entwicklungsprozess - IOTROUTER
Schwebe-Animation
Hinweis zum chinesischen Neujahrsfest (5.-23. Februar) - IOTRouter wünscht Ihnen ein frohes neues Jahr!

Node-RED-Entwicklungsprozess

Mit Node-RED können Sie schnell mit der Entwicklung von Anwendungen beginnen, indem Sie Knoten hineinziehen und sie miteinander verbinden, um einen Fluss zu erstellen. Dies kann ein guter Einstieg sein, aber wenn der Datenverkehr mit der Zeit zunimmt, kann es die Anwendung schwieriger machen, sie zu warten.

Dieser Leitfaden enthält einige Vorschläge und Best Practices für die Erstellung von Node-RED-Flows, die wiederverwendbar, einfacher zu warten und robuster sind.

Dieser Leitfaden geht davon aus, dass Sie bereits mit der grundlegenden Verwendung von Node-RED vertraut sind. Wenn Sie weitere Informationen über die Verwendung von Node-RED suchen, sind das Benutzerhandbuch und das Kochbuch hervorragende Ressourcen für den Einstieg.

Prozessstruktur

In diesem Abschnitt wird beschrieben, wie man Prozesse organisiert, wie man Prozesse in kleinere, wiederverwendbare Komponenten aufteilt und wie man Prozesse für verschiedene Plattformen anpasst.

Nachrichtendesign

Dieser Abschnitt befasst sich mit der Frage, wie das Nachrichtendesign dazu beitragen kann, Knoten und Abläufe zu schaffen, die zusammenarbeiten und leichter zu pflegen sind.

Prozess der Dokumentation

Zu einem guten Code gehört auch eine gute Dokumentation. Dieser Abschnitt beschreibt, welche Werkzeuge und Techniken Node-RED zur Verfügung stellt, um Sie bei der Dokumentation zu unterstützen.

Wenn Sie zum ersten Mal mit Node-RED arbeiten, können Sie zunächst alle Ihre Knoten auf derselben Registerkarte des Editors hinzufügen. Sie können einige Beispielabläufe importieren, die andere freigegeben haben, oder Prototypabläufe erstellen, um verschiedene Dinge zu testen.

Mit der Zeit kann dies zu einem Durcheinander von Knoten und Linien führen, was das Auffinden bestimmter Teile des Prozesses erschwert.

Wenn man sich zu Beginn eines Entwicklungsprojekts Gedanken darüber macht, wie die Prozesse strukturiert werden sollen, kann dies dazu beitragen, sie zu organisieren und leichter zu pflegen.

Die Hauptmethode zur Organisation von Abläufen in Node-RED besteht darin, sie in Registerkarten im Editor zu unterteilen. Es gibt verschiedene Strategien, die Sie dazu verwenden können.

Wenn Sie die einzelnen logischen Komponenten Ihrer Anwendung identifizieren können, sollten Sie diese auf separaten Registerkarten unterbringen.

Bei Hausautomatisierungsanwendungen können Sie die Ablauflogik für jeden Raum auf einer eigenen Registerkarte ablegen, um den physischen Raum widerzuspiegeln. Oder Sie können die Prozesse nach Funktionen trennen, so dass sich alle beleuchtungsbezogenen Prozesse auf einer Registerkarte befinden und die Heizung auf einer anderen.

Wenn Sie ein HTTP-API-Backend erstellen, kann jede Registerkarte einen eigenen Ressourcentyp darstellen, auf den die API zugreift.

Ziel sollte es sein, dass ein einzelner Vorgang von Anfang bis Ende leicht zu “lesen” ist. Dazu kann es hilfreich sein, ihn auf einer einzigen Registerkarte zu halten.

Eine weitere Überlegung ist, ob Sie mit anderen Entwicklern an der gleichen Node-RED-Anwendung arbeiten. Das Zusammenführen von Änderungen ist viel einfacher, wenn sich die Änderungen auf separaten Registerkarten befinden. Wenn Sie Entwickler mit unterschiedlichen Rollen oder Spezialisierungen haben, überlegen Sie, wie sich dies auf die Organisation Ihres Prozesses auswirken könnte.

Wiederverwendbare Prozesse schaffen

Beim Aufbau Ihres Prozesses werden Sie vielleicht einige gemeinsame Teile finden, die Sie an mehreren Stellen wiederverwenden wollen. Sie sollten es vermeiden, mehrere Kopien dieser gemeinsamen Teile über Ihren Prozess zu verteilen, da dies die Wartung erschwert - schließlich müssen Sie Korrekturen an mehreren Stellen vornehmen, und es ist leicht, eine zu übersehen.

Node-RED bietet zwei verschiedene Möglichkeiten, wiederverwendbare Flows zu erstellen - verknüpfte Knoten und Subflows.
Link-Knoten Link-Knoten ermöglichen es Ihnen, einen Stream zu erstellen, der zwischen den Registerkarten des Editors springt - sie fügen eine virtuelle Verbindung vom Ende eines Streams zum Anfang eines anderen hinzu.

Mit einem Substream können Sie einen neuen Knoten in der Palette erstellen, dessen interne Implementierung als Stream beschrieben wird. Sie können dann eine neue Instanz des Substroms an einer beliebigen Stelle eines normalen Knotens hinzufügen.

Es gibt einige wichtige Unterschiede zwischen diesen beiden Methoden. Link-Knoten können nicht in der Mitte eines Prozesses verwendet werden, wo Nachrichten durch den Link geleitet werden und dann zurückgegeben werden, wenn andere Prozesse abgeschlossen sind. Sie können nur zum Starten oder Beenden eines Prozesses verwendet werden. Sie können auch mit mehreren anderen Link-Knoten verbunden werden. Auf diese Weise können Sie Nachrichten an mehrere andere Streams übermitteln oder mehrere Streams Nachrichten an einen einzigen Stream übermitteln lassen. Sie können in einer einzigen Registerkarte verwendet werden, um den Fluss im Arbeitsbereich zu unterstützen, ohne dass sich viele Drähte von rechts nach links kreuzen.

Subflows erscheinen als reguläre Knoten und können daher an jeder Stelle des Flusses verwendet werden. Allerdings ist jede Instanz eines Subflows unabhängig von anderen Instanzen. Jeder Ablaufkontext innerhalb eines Subflows gilt für die einzelnen Instanzen. Wenn ein Subflow eine Verbindung zu einem entfernten System herstellt, wird jede Instanz ihre eigene Verbindung herstellen.

Benutzerdefinierter Subflow

Wenn Sie Subflows erstellen, möchten Sie vielleicht deren Verhalten in irgendeiner Weise anpassen. Ändern Sie zum Beispiel das MQTT-Topic, in dem es veröffentlicht wird.

Ein Muster dafür ist, msg.topic für jede an den Subflow übergebene Nachricht zu setzen. Dies erfordert jedoch das Hinzufügen eines Change-Knotens vor jeder Subflow-Instanz, um den gewünschten Wert festzulegen.

Ein einfacherer Ansatz ist die Verwendung von Substromeigenschaften. Dies sind Eigenschaften, die für eine Subflow-Instanz festgelegt werden können und als Umgebungsvariablen innerhalb des Subflows erscheinen.

Kontakt