ModbusTCP-Smart und Node-RED / MQTT: Steuerung & Auswertung für DaheimLader Wallboxen
- DaheimLaden

- vor 1 Tag
- 3 Min. Lesezeit
Node-RED ist eine Low-Code-Plattform zur Entwicklung ereignisgesteuerter Anwendungen.
Sie eignet sich besonders gut, um Echtzeitdaten zu erfassen, zu verarbeiten und zu visualisieren.
In vielen Smart-Home-Systemen ist Node-RED bereits integriert oder lässt sich mit wenigen Klicks nachinstallieren. Als standardisierte Schnittstelle zwischen Node-RED und anderen Systemen hat sich ein MQTT-Broker bewährt.
Zur Visualisierung und Analyse der MQTT-Daten empfehlen wir den MQTT Explorer von Thomas Nordsquist (https://mqit-explorer.com/).
Beide Komponenten - Node-RED und MQTT-Broker - sind nach der Installation über eine Web-Oberfläche erreichbar.

Installation der Modbus-Nodes
Als erstes Installiert man die sog. (Programm) Palette für die Nodes vom ModBus (Klick siehe roter Pfeil) oder <Alt>+<Shift>+<p> geht auf Installation und gibt im „Suchen“ Feld „modbus" ein.
Bitte genau dieses Installationspaket auswählen, die Versionsnummer kann hierbei variieren:

Jetzt den Import der Flow Daten mit Button (roter Pfeil) oder <Strg>+<i> auswählen und den Programmcode vollständig in das rosa Feld einfügen. Hierzu die heruntergeladene Datei WallboxModbflow.json mit dem Windows Editor oder mit Notepad++ öffnen und per
<Strg>+<a> den gesamten Text markieren und mit <Strg>+<c> kopieren. Jetzt in das
Programmfenster von NodeRed wechseln und per <Strg>+<v> den Text in das rosa Feld hinein kopieren. Mit „Import“ wird der Programmcode übernommen und als Flow mit Allen Nodes angezeigt.

Sollte während des Importvorgangs folgendes Fenster angezeigt werden, dann bitte den Button „importiere Kopie“ anwählen.

Der neue Flow erscheint nun im Editor und ist durch einen blauen Punkt als „geändert“ markiert.


Konfiguration der IP-Adressen
Als erstes müssen jetzt die notwendigen IP-Adressen eingegeben werden.
Modbus-Server konfigurieren
Wähle den ModBus Getter per Doppelklick aus und wähle die Server Konfiguration an.


Die Angaben für Port, Type und ID sollten bereits vom Import eingestellt sein.
Wichtig ist hier die IP-Adresse der Wallbox.
Achtung: Die IP-Adresse darf sich nicht ändern. Empfehlenswert ist eine feste IP oder eine DHCP-Reservierung im Router. Sonst kann sich die IP Adresse der Wallbox nach einem Neustart oder eines anderen Ereignisses am Router ändern.
MQTT Broker Einstellungen
Jetzt stellen wir noch die IP-Adresse des MQTT-Servers ein. Hierzu eines der lila Ausgabe-Notes doppelklicken und die Konfiguration des Server anwählen.

Hier trägst du die IP-Adresse für den MQTT-Broker ein.

Wer einen Benutzer und ein Passwort für den MQTT-Broker bei der Installation eingeben hat, bitte dieses noch unter dem Reiter „Sicherheit“ eintragen und Fenster schließen.
Flow aktivieren
Nachdem diese Aufgaben erfüllt sind nur noch die <Übernahme (deploy)> Taste betätigen und die Verbindungen werden aufgebaut. Nach 20 Sekunden sollte im Debug-Fenster eine Meldung erscheinen mit folgendem Inhalt:

array[115] gibt an, dass alle 115 (von Register 0 bis Register 114) der Wallbox gelesen wurden.
Die Werte werden nun über MQTT zur Verfügung gestellt und können in jedem Smart-Home-System weiterverarbeitet werden.

Welche Modbus Register werden verwendet?
Bei dem Import der Daten habe ich auf einige Register bewusst verzichtet. Es fehlen die Register mit div. Zeitstempeln, da die Erfassung im SmartHome bei jeder Änderung des Anzeigewertes erfolgt und entsprechend in einer Datenbank eingetragen werden.
Die Auswertung umfasst folgende Inhalte von Oben nach Unten:
[1] - [8] sind alles Werte, welche in der Daheimladen APP enthalten sind. Hier kann man sogar auf die beiden Register Ladestrom Min und Max verzichten da beide fix angelegt sind.
[9] - [18] sind Register, deren Werte nur durch ModBus Kommunikation erhältlich sind und für diverse Auswertungen genutzt werden können. Sehr interessant hierbei der Wert für die Leistung des aktuellen Ladevorganges, das sieht man in der App ja nur nach Abschluss des aktuellen Vorgangs.
[19] - [23] sind die Register, in welche auch Werte geschrieben werden.
Es ist zu beachten, dass die Vorgabe des aktiven Ladestromes [8] und [21] nicht identisch sind. Man kann also eine Vorgabe in der App einstellen und einen anderen Wert per ModBus übermitteln.
Diese sind immer nur dann gültig, wenn in dem jeweiligen Modus geladen wird.
In dem vorliegenden Flow kann man Vorgabewerte und den Start/Stop der Wallbox nur manuell ausführen. Das ist bewusst so gehalten, da alle anderen Aktionen von der verwendeten SmartHome Applikation abhängig sind und für den Ersteinsatz, durch Fehlermeldungen, eher verwirrend sein könnten.
Bei der Prüfung, ob die Wallbox On- oder Offline ist, wurde der Rückgabewert ausgewertet. Es wird eine HTTP-Anfrage gesendet und es wird eigentlich kein Wert von der Wallbox
zurückgesendet. Wenn sie aber Online ist bekommt man ein ECONNREFUSED zurück und bei TimeOut, weil nicht erreichbar ein EHOSTUNREACH zurück. Diese Meldung, als auch die Meldungen aus [3] kann man z.B. durch eine Anbindung an einen TelegramBot ausgeben lassen.

Ausblick
Hier noch ein Ausblick für die Integration in OpenHAB

und ein Screenshot für eine Auswertung der Daten per Grafana:





















