MQTT und nodeRED für Dummies
Verfasst: Fr Nov 05, 2021 11:05 am
Vor einiger Zeit habe ich mich mal mit nodeRED beschäftigt und hatte nach relativ kurzer Zeit doch so gute Ergebnisse, dass ich das hier mal für Leute zusammenfassen möchte, die nicht so tief in der Materie mit Smarthome und aller möglicher Programmiererei auskennt. Diese Leute haben ja meist schon einen oder mehrere Raspberry PIs herumliegen. Das hier wendet sich an diejenigen, die das noch nicht haben.
Aktueller Anlass ist der hier https://openwb.de/forum/viewtopic.php?f=11&t=4277 geäußerte Wunsch ein korrekt eingestecktes Auto zu visualisieren.
Als allererstes braucht es einen Raspberry PI. Ausreichend (und auch in den openWBs verbaut) ist sicherlich ein Modell der 3.ten Generation, aktuell scheint der aber ausverkauft zu sein - es gibt aktuell nur die 4.te Generation. Man sollte ein Modell B nehmen, das hat dann auch einen LAN-Stecker. Denn: Wer Funk kennt, nimmt Kabel. Bezugsquellen sind auf der Seite weiter unten. Oder halt amazon.
https://www.raspberrypi.com/products/ra ... el-b-plus/
https://www.raspberrypi.com/products/ra ... 4-model-b/
Dann braucht es noch ein Netzteil (3: Micro-USB; 4:USB-C) und eine SD-Karte für das Betriebssystem. Die bekommt man auch vorinstalliert: https://www.rasppishop.de/Sandisk-micro ... erry-Pi-OS oder man macht die sich selbst mit dem PI imager, den es für Windows und MacOS gibt: https://www.raspberrypi.com/software/
Nun braucht man nur noch eine Tastatur, Maus und ein HDMI-Kabel für den heimischen Monitor, und dann kann's auch schon losgehen. SD-Karte einstecken und dem weiteren Verlauf auf dem Bildschirm folgen. Zeitzone, Sprache, WLAN etc werden beim ersten Start abgefragt und ein Passwort für den Benutzer "pi" vergeben. Im Abschluss wird noch nach updates gekuckt und dann ist der Raspi einsatzbereit. (Hätte ich vor 20 Jahren nicht gedacht, dass Linux mal so weit kommen wird, dass das eines Tages mal so reibungslos klappt.)
Nun brauchen wir ein Konsolen-Fenster, damit wir mal die paar Befehle eingeben können um nodeRED zu installieren. Dazu klicken wir oben links auf die Himbeere und dann Zubehör -> LXTerminal. In diesem Fenster geben wir nun per Copy & Paste folgendes ein: (Die einzelnen Installationsschritte kann man hier https://nodered.org/docs/getting-started/raspberrypi nachlesen.)
Die Sicherheitsfrage, ob für die Installation weitere 103MB Plattenplatz belegt werden sollen, können wir auch bei einer 32GB-SD-Karte ohne groß zu zögern, bejahen. (Großes J, kein kleines j)
Nun läuft ziemlich viel Text an einem vorbei. Wenn zum Schluss nichts nach Fehlermeldung aussehendes auf dem Bildschirm steht, ist die Installation erfolgreich gewesen.
EDIT: mit dem aktuellen (18.09.2024 bullseye-image von aus dem raspberry pi imager) funktioniert das nicht mehr. Auf https://nodered.org/docs/getting-started/raspberrypi steht ein script, welches funktioniert:
Da kommen ein paar Fragen, die nach bestem Wissen und Gewissen beantwortet werden müssen.
/EDIT
Nun müssen wir noch einen Befehl eingeben, damit nodeRED auch immer beim Starten des Pis sofort mitgestartet wird:
Das hat uns noch nicht das nodeRED gestartet, dazu machen wir einen reboot: (now für jetzt, -r für reboot, -h wäre ausschalten)
Nun können wir den raspberry links liegen lassen und nodeRED auf dem PC oder Mac im Browser aufrufen.
http://raspberrypi:1880
(wenn's nicht mit dem hostnamen "raspberrypi" klappt, dann die IP im Router raussuchen und die eingeben. Am besten im Router eine feste IP vorgeben)
Links sehen wir nun die vorhandenen Programm-Teile, bei nodeRED "Nodes" genannt, in der Mitte den Programmierbereich. Fangen wir mal an mit einer Inject-Node und einer debug-node, die uns das im linken Bildschirmteil anzeigt, was die inject-Node so liefert:
Wir sehen, dass oben rechts das "Übernahme (deploy)" rot geworden ist: Das ist das Zeichen dafür, dass das aktuelle Programm (bei nodeRED "Flow" genannt" geändert wurde. Mit Klick auf den Knopf wird die Änderung übernommen und wir können mal auf den Knubbel links an der Node "timestamp" klicken. Bitte noch auf den bepfeilten Knopf klicken, das schaltet den linken Bereich auf den Debug-Output um.
Per Default sendet die Inject-Node einen Zeitstempel. Man kann aber auch anderes senden. Dazu gehen wir mit einem Doppeklick in die Eigenschaften der Inject node und wählen "String" und tippen "Ein Text!" ein:
Nach einem Deploy schickt die Inject-Node nun nach einem Klick "Ein Text!" in den Debug-Output:
Nun sind wir so weit, dass wir gleich einmal an die openWB drangehen.
Aktueller Anlass ist der hier https://openwb.de/forum/viewtopic.php?f=11&t=4277 geäußerte Wunsch ein korrekt eingestecktes Auto zu visualisieren.
Als allererstes braucht es einen Raspberry PI. Ausreichend (und auch in den openWBs verbaut) ist sicherlich ein Modell der 3.ten Generation, aktuell scheint der aber ausverkauft zu sein - es gibt aktuell nur die 4.te Generation. Man sollte ein Modell B nehmen, das hat dann auch einen LAN-Stecker. Denn: Wer Funk kennt, nimmt Kabel. Bezugsquellen sind auf der Seite weiter unten. Oder halt amazon.
https://www.raspberrypi.com/products/ra ... el-b-plus/
https://www.raspberrypi.com/products/ra ... 4-model-b/
Dann braucht es noch ein Netzteil (3: Micro-USB; 4:USB-C) und eine SD-Karte für das Betriebssystem. Die bekommt man auch vorinstalliert: https://www.rasppishop.de/Sandisk-micro ... erry-Pi-OS oder man macht die sich selbst mit dem PI imager, den es für Windows und MacOS gibt: https://www.raspberrypi.com/software/
Nun braucht man nur noch eine Tastatur, Maus und ein HDMI-Kabel für den heimischen Monitor, und dann kann's auch schon losgehen. SD-Karte einstecken und dem weiteren Verlauf auf dem Bildschirm folgen. Zeitzone, Sprache, WLAN etc werden beim ersten Start abgefragt und ein Passwort für den Benutzer "pi" vergeben. Im Abschluss wird noch nach updates gekuckt und dann ist der Raspi einsatzbereit. (Hätte ich vor 20 Jahren nicht gedacht, dass Linux mal so weit kommen wird, dass das eines Tages mal so reibungslos klappt.)
Nun brauchen wir ein Konsolen-Fenster, damit wir mal die paar Befehle eingeben können um nodeRED zu installieren. Dazu klicken wir oben links auf die Himbeere und dann Zubehör -> LXTerminal. In diesem Fenster geben wir nun per Copy & Paste folgendes ein: (Die einzelnen Installationsschritte kann man hier https://nodered.org/docs/getting-started/raspberrypi nachlesen.)
Code: Alles auswählen
sudo apt-get install nodered
Nun läuft ziemlich viel Text an einem vorbei. Wenn zum Schluss nichts nach Fehlermeldung aussehendes auf dem Bildschirm steht, ist die Installation erfolgreich gewesen.
EDIT: mit dem aktuellen (18.09.2024 bullseye-image von aus dem raspberry pi imager) funktioniert das nicht mehr. Auf https://nodered.org/docs/getting-started/raspberrypi steht ein script, welches funktioniert:
Code: Alles auswählen
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
/EDIT
Nun müssen wir noch einen Befehl eingeben, damit nodeRED auch immer beim Starten des Pis sofort mitgestartet wird:
Code: Alles auswählen
sudo systemctl enable nodered.service
Code: Alles auswählen
sudo shutdown now -r
http://raspberrypi:1880
(wenn's nicht mit dem hostnamen "raspberrypi" klappt, dann die IP im Router raussuchen und die eingeben. Am besten im Router eine feste IP vorgeben)
Links sehen wir nun die vorhandenen Programm-Teile, bei nodeRED "Nodes" genannt, in der Mitte den Programmierbereich. Fangen wir mal an mit einer Inject-Node und einer debug-node, die uns das im linken Bildschirmteil anzeigt, was die inject-Node so liefert:
Wir sehen, dass oben rechts das "Übernahme (deploy)" rot geworden ist: Das ist das Zeichen dafür, dass das aktuelle Programm (bei nodeRED "Flow" genannt" geändert wurde. Mit Klick auf den Knopf wird die Änderung übernommen und wir können mal auf den Knubbel links an der Node "timestamp" klicken. Bitte noch auf den bepfeilten Knopf klicken, das schaltet den linken Bereich auf den Debug-Output um.
Per Default sendet die Inject-Node einen Zeitstempel. Man kann aber auch anderes senden. Dazu gehen wir mit einem Doppeklick in die Eigenschaften der Inject node und wählen "String" und tippen "Ein Text!" ein:
Nach einem Deploy schickt die Inject-Node nun nach einem Klick "Ein Text!" in den Debug-Output:
Nun sind wir so weit, dass wir gleich einmal an die openWB drangehen.