Einstieg in Node-RED
über
In den letzten Jahren haben die Entwicklung und der Einsatz von blockbasierten visuellen Programmierwerkzeugen einen starken Aufschwung erfahren. Die Idee dahinter ist, dass dem Programmierer ein Satz von visuellen Blöcken zur Verfügung gestellt wird, die er lediglich auf logische Weise miteinander verbinden muss, um das gewünschte Anwendungsprogramm zu erstellen. Node-RED ist ein solches visuelles blockbasiertes Programmiertool, das kostenlos und open-source ist, aber dennoch die Ausführung sehr komplexer Aufgaben erlaubt, einschließlich Web-Zugang, Twitter, E-Mail, HTTP-Abfragen, Bluetooth, MQTT sowie Steuerung der GPIO-Ports gängiger Computer wie Raspberry Pi, Arduino und ESP32. Das Schöne an Node-RED ist, dass der Programmierer nicht lernen muss, komplexe Programme zu schreiben. Zum Beispiel kann er ein Programm zum Verschicken einer E-Mail erstellen, indem er ein paar Knoten zusammenfügt und nur ein paar Zeilen einfachsten Code schreibt.
Node-RED, die Inbetriebnahme
Node-RED ist bereits im Raspbian-Betriebssystem des Raspberry Pi enthalten und kann entweder vom Desktop (Bild 1) oder durch Eingabe des Befehls
pi@raspberrypi:~ $ node-red-start
von der Befehlszeile (Bild 2) aus gestartet werden.
Node-RED wird als Service gestartet. Eine kurze Liste gültiger Befehle zum Starten und Stoppen dieses Dienstes wird nach dem Start auf dem Bildschirm angezeigt, wie es unten in Bild 2 schon dargestellt ist. Die lokale IP-Adresse 192.168.1.202 ist die des Raspberry Pi des Autors. Sie können die IP-Adresse Ihres Raspberry Pi leicht finden, indem Sie den Befehl ifconfig am Prompt eingeben und im Ergebnis auf die Zeile schauen, die mit wlan0 beginnt.
Wenn Sie „Ihre“ IP-Adresse wissen, können Sie sie im Browser Ihres PCs eingeben, um das grafische Node-RED-Benutzerinterface auf dem Monitor zu starten:
https://<Ihre IP-Adresse>:1880
Beim Autor beispielsweise wäre die Eingabe im Browser:
https://192.168.1.202:1880
Bild 3 zeigt den dreiteiligen Startbildschirm von Node-RED. Auf der linken Seite befindet sich eine Liste der Knoten, die bei der Installation des Programms standardmäßig verfügbar sind, sich aber bei Bedarf mit zusätzlichen Nodes aus verschiedenen Quellen im Internet erweitern lässt. Der mittlere Teil ist der Arbeitsbereich, in dem die erforderlichen Knoten per Drag & Drop gezogen und zu einem Ablaufprogramm verbunden werden. Auf der rechten Seite befindet sich der Informations- und Debug-Bereich, der bei der Programmentwicklung sehr nützlich werden kann.
Schauen wir uns den Umgang mit Node-RED anhand eines sehr einfachen Beispiels an, einer LED, die über einen 220-Ω-Strombegrenzungswiderstand an GPIO 2 des Raspberry Pi angeschlossen ist (Bild 4).
Die LED soll von einem Node-RED-Flussprogramm gesteuert werden. Dieses lächerlich einfache Flussprogramm (Bild 5) wird so aufgebaut:
- Der Inject-Knoten wird angeklickt, in den Arbeitsbereich gezogen und abgelegt. Mit Injektionsknoten werden Nachrichten (wie Strings oder Zahlen) in ein Flussprogramm eingebracht. In diesem Beispiel werden wir 1 oder 0 „injizieren“, um die LED ein- und auszuschalten.
- Doppelklicken Sie auf den Injektionsknoten, um ihn zu konfigurieren. Dabei wird das Payload auf number gesetzt und eine „1“ eingegeben. Durch Klicken auf das quadratische Feld am linken Rand dieses Knotens wird „1“ ausgegeben, um die LED einzuschalten.
- Stellen Sie Topic des Injektionsmodus auf ON, so dass Sie die Funktion dieses Knotens sehen können. Klicken Sie dann auf Done, um das Konfigurationsfenster zu schließen.
- Klicken, ziehen und legen Sie einen weiteren Inject-Knoten in den Arbeitsbereich, setzen Sie Payload auf „0“ und seinen Topic auf OFF. Wenn Sie auf diesen Knoten klicken, wird eine „0“ ausgegeben, um die LED auszuschalten.
- Legen Sie nun einen Knoten rpi gpio out in den Arbeitsbereich. Dieser Knoten sendet digitale oder PWM-Daten an einen GPIO-Port des Raspberry Pi. Schließen Sie den Knoten wie in Bild 5 an.
- Durch einen Doppelklick auf diesen Knoten erscheint ein Fenster (Bild 6), in dem Sie den GPIO-Anschluss des Raspberry Pi konfigurieren können. Setzen Sie Pin auf GPIO2, Type auf Digital output, klicken Sie auf Initialise pin state und setzen Sie den Anfangszustand der LED auf „0“. Setzen Sie den Namen des Knotens auf LED. Abschließend klicken Sie auf Done, um den Konfigurationsbildschirm zu schließen.
Damit ist das Flussprogramm abgeschlossen. Klicken Sie auf Deploy, um das Programm zu kompilieren und einen ausführbaren Code zu generieren. Vergewissern Sie sich, ob in diesem Stadium des Entwurfs keine Fehlermeldungen mehr angezeigt werden, dann dürfen Sie auf die quadratische Schaltfläche auf der linken Seite des ON-Injektionsknotens klicken, um die LED einzuschalten. Wenn Sie dann auf die Schaltfläche des anderen Injektionsknotens klicken, wird die LED wieder dunkel.
Weitere Aspekte
An diesem sehr einfachen Beispiel haben wir gesehen, was Node-RED ist und wie es verwendet wird. Eine der Stärken von Node-RED ist, dass es von großen Communities unterstützt wird und dass es viele von Dritten entwickelte Nodes gibt, die kostenlos zur Verfügung stehen und in komplexen Projekten eingesetzt werden können. Zum Beispiel gibt es den Knoten openweathermap, der die lokalen Wetterbedingungen wie Temperatur, Feuchtigkeit, Luftdruck, Windgeschwindigkeit, Niederschlagsmenge und so weiter überall auf der Erde angibt. Ein Projekt mit einer Wettervorhersage lässt sich mit diesem und einigen zusätzlichen Knoten in weniger als einer Stunde erstellen. Würde man ein solches Projekt auf herkömmliche Weise mit „eigenen“ externen Sensoren realisieren, wäre dies viel komplizierter, zeitaufwändiger und in der Regel auch erheblich kostspieliger. Node-RED unterstützt UDP- und TCP-basierte Kommunikation mit einem Knoten über eine WLAN-Verbindung. Diese Funktion ermöglicht es Benutzern, drahtlos Daten von entfernten Stellen über eine WLAN-Verbindung von vernetzten Geräten wie Mobiltelefonen, Tablets oder PCs zu senden und zu empfangen.
Einige andere interessante Knoten, die kostenlos aus dem Internet installiert werden können, sind:
- Dashboard
- Bluetooth
- Amazons Alexa
- I2C- und paralleles LCD
- Weltkarte
- A/D-Wandler
- Ultraschall-Sensor
Node-RED ist nicht nur für die den Raspberry Pi gedacht, sondern kann (wenn auch eingeschränkt) mit den Prozessorboards Arduino und ESP32 oder Kombinationen von Raspberry Pi und Arduino oder Raspberry Pi und ESP32 verwendet werden.
Einer der sehr wichtigen Node-RED-Knoten ist der function-Knoten, der so konfiguriert werden kann, dass er mehrere Ausgänge hat. Benutzer können bei der Konfiguration dieses Knotens passende Programmcodes schreiben. So lassen sich mit dem function-Knoten aus den lokalen Wetterdaten, die der openweathermap-Knoten liefert, beispielsweise die lokalen Temperatur- und Feuchtigkeitsdaten extrahieren. Dies kann man leicht durch ein paar Befehle bei der Konfiguration des function-Knotens erreichen. Interessierte Leser bekommen weitere Infos unter den Weblinks [1] [2] [3] [4] [5] oder im Node-RED-Buch des Autors.
(200164-03)
----------------------------------------------------------------------------------------------------------------------
Wollen Sie weitere Elektor-Artikel lesen? Jetzt Elektor-Mitglied werden und nichts verpassen!
----------------------------------------------------------------------------------------------------------------------
Diskussion (5 Kommentare)