Seite 1 von 1

MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 11:05 am
von Gero
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.)

Code: Alles auswählen

sudo apt-get install nodered
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:

Code: Alles auswählen

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
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:

Code: Alles auswählen

sudo systemctl enable nodered.service
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)

Code: Alles auswählen

sudo shutdown now -r
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)
startbild.jpg
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:
first_flow.jpg
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.
first_click.jpg
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:
inject.jpg
Nach einem Deploy schickt die Inject-Node nun nach einem Klick "Ein Text!" in den Debug-Output:
ein_text.jpg
Nun sind wir so weit, dass wir gleich einmal an die openWB drangehen.

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 11:20 am
von Gero
openWB möchte gerne per MQTT angesprochen werden, also ersetzen wir die inject-node durch MQTT-in, welche im Bereich Netzwerk zu finden ist.
mqtt-in.jpg
In den Eigenschaften müssen wir noch angeben wo die openWB zu finden ist und welches MQTT-Topic wir abfragen wollen.
mqtt.jpg
Mit einem Klick auf den Stift neben "Neuen Typ 'mqtt-Broker' hinzufügen" kommt man an die Stelle, wo die IP-Adresse (oder den Hostname der openWB) eintippen kann.
broker.jpg
Nun "Hinzufügen" klicken und im Feld Topic das hier reinkopieren:

Code: Alles auswählen

openWB/lp/1/ChargePointEnabled
....deploy...
deploy.jpg
...und siehe da, der Ladepunkt 1 ist auf "1", also aktiv. Dann mal eben zur openWB-homepage gehen und den Ladepunkt 1 deaktivieren:
deaktiviert.jpg
Andere Topics der openWB bekommt man sehr komfortabel mit dem mqtt-Explorer heraus, den man hier http://mqtt-explorer.com bekommt.

Viel Spaß beim herumspielen!

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 11:56 am
von Gero
Das war nun das Lesen von Werten aus der openWB. Aber eigentlich wollten wir ja einen shelly schalten. Die kann man per http-aufruf ein- und ausschalten. Einfach im Browser:

http://shelly.fritz.box/relay/0\?turn=on

oder

http://shelly.fritz.box/relay/0\?turn=off

eingeben und der shelly wird ein- oder ausgeschaltet. Das machen wir uns nun zunutze, indem wir den flow ein wenig umbauen und eine Switch-Node und zwei http-Request Nodes einfügen:

flow.jpg
In den Eigenschaften der Switch-Node fragen wir auf 1 oder 0 ab und leiten die Nachricht entweder in den oberen oder unteren http-Request.

switch.jpg
In den http-Request nodes muss der URL eingetragen werden. Einmal mit "on" und im anderen mit "off":

http-req.jpg
Und wenn man nun auf der Bedienoberfläche den Ladepunkt1 aktiviert oder deaktiviert, schaltet der shelly. Um nun unser Ziel zu erreichen, dass der Shelly angeht, wenn der Ladestecker eingesteckt ist, muss nur noch das Topic in der MQTT-Node auf openWB/lp/1/pluggedladungakt geändert werden. (Falls das nicht das richtige Topic sein sollte, bitte ich um Nachsicht. Ich komme gerade nicht an die Wallbox um abzustecken.)

Ach, eins noch: Ich habe hier immer mit Hostnamen statt IP-Adressen gearbeitet. Die sind bei mir wie man unschwer erkennen kann, in meiner Fritzbox hinterlegt. Das mag nicht für alle Router so funktionieren. Also im Zweifelsfalle mit den IP-Adressen statt hostnamen arbeiten.

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 2:23 pm
von hominidae
...nett.
Wie wäre es, wenn Du die gezeigten Flows mit in die Posts integrierst.
Auf Basis Screenshots nachbauen ist ja nicht Jedermann gegeben...haben wir hier auch schon gemacht: viewtopic.php?f=6&t=601

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 2:50 pm
von Gero
War ja als Tutorial für euphorische Einsteiger gedacht - da fand ich ein bissl rumklicken lehrreich. Ansonsten hätte ich mir den Ausflug über die Debug-Node und das einfach tu klickende MQTT-Topic ja auch sparen können. Und alles was man per C&P übernehmen kann, ist auch kopierbar.

Dummerweise hab‘ ich den Flow bei mir auch schon wieder gelöscht. :-(
Ansonsten hätte ich den hier eben reingepasted.

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 3:21 pm
von aiole
und keine Sorge Gero - das hier wird auch zeitnah realisiert:
viewtopic.php?p=48219#p48219
Ich finde es top, wenn NodeRed speziell am Bsp. openWB praktiziert wird.

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 3:56 pm
von hominidae
Gero hat geschrieben: Fr Nov 05, 2021 11:05 am Als allererstes braucht es einen Raspberry PI.
...oder einfach nur ein NAS (zB Synology, QNAP, unraid) oder einen vorhandenen Homeserver (der evtl. schon aus SmartHome Zentrale dient) mit Unterstützung für Docker oder VMs.
Node-Red kann man dann "einfach" installieren, in der Regel mit 3 clicks aus dem "App-Repository" des NAS oder Docker-Hub (https://hub.docker.com/r/nodered/node-red).

Re: MQTT und nodeRED für Dummies

Verfasst: Fr Nov 05, 2021 4:09 pm
von aiole
Da es hier auch um Dummies geht.

Es sollte vorab sauber geklärt sein, wo man das ggf. auch produktiv zu nutzende Programm (hier NodeRed) laufen lassen möchte, schließlich ist es meist direkt mit openWB verknüpft oder erledigt Zusatzaufgaben in Zusammenhang mit oWB. Auf dem RPi der openWB ist es im Normalfall schwierig, da ein SSH-Zugriff erforderlich ist (Verlust Gewährleistung bei SSH-Freigabe durch den Support).

=> Also extra Rechner.
RPi. NAS, PC bis hin zu Tablet/Phone, wobei letztere keine optimale Programmierumgebung darstellen dürften. NAS ist schon gut, weil es 24/7 läuft, aber das hat nicht jeder.
Bei "kein NAS" und NodRed im Produktiveinsatz also entweder stromsparenden extra RPi (24/7) oder SSH-Freigabe und oWB-RPi. Letzteres ist aber eher etwas für Linux-Profis. Zu schnell hat man seine oWB abgeschossen.

just my 2 ct

Re: MQTT und nodeRED für Dummies

Verfasst: Mo Nov 08, 2021 6:45 am
von Becker
hab mir ein paar versteckte Einstellungen, die ich oft brauche ins NR geholt:
312.JPG
flow.js
(12.75 KiB) 245-mal heruntergeladen
@openwb ist es schlimm wenn man hier 82% einstellt ?