Hallo zusammen,
nachdem meine Lüftungsanlage (Helios KWL EC 270 ET, gekauft 2020) jetzt ein paar Wochen in Betrieb ist und ich keine Bedienelemente dazu gekauft habe, musste ich mich mal mit der Steuerung auseinandersetzen. Da das Gerät eine Ethernet-Schnittstelle hat, ließ sich die anfängliche Konfiguration bequem über das Webinterface durchführen. Für den gelegentlichen Eingriff zur Überstimmung der Regelung war mir das aber nicht komfortabel genug. Zeit sich mit der Modbus TCP Schnittstelle zu befassen! Dazu gibt es zum Glück eine sehr gute Anleitung vom Hersteller [1], mit der die Kommunikation über das im Beispiele verwendete und freie Programm modpoll [2] auch sofort funktionierte. Auf meiner Suche nach einer bereits fertigen Lösung bin ich leider nicht fündig geworden. Es gibt da was für EDOMI aber die Entscheidung gegen EDOMI fiel schon vorher und ich bin bei OpenHAB + Node-RED gelandet.
Der nächste Schritt war dann, das Ganze in Node-RED umzusetzen. Hier habe ich auf den Node node-red-contrib-modbus [3] zurückgegriffen. Dieser kann sowohl mit einer seriellen Schnittstelle als auch mit Ethernet und TCP/IP umgehen. Ich habe nur Letzteres ausprobiert. Den Node habe ich anfangs nicht korrekt konfiguriert bekommen weil die Begriffe gänzlich anders waren als in der Dokumentation von Helios. Da ich kein Modbus-Experte bin, habe ich daher die TCP-Modbus-Kommunikation aus der Helios-Anleitung mit Wireshark aufgezeichnet. Anzeigefilter in Wireshark auf "modbus" und dann mit modpoll das Kommando abgesetzt... Damit konnte ich genug über die Kommunikation lernen und hatte quasi eine Referenz. In Node-RED habe ich dann die Parameter der entsprechenden Nodes aus dem node-red-contrib-modbus Paket so weit angepasst, bis die Daten in Wireshark genauso aussahen wie mit modpoll:
wireshark.png
Mit dem Ergebnis bin ich erst mal zufrieden, auch wenn ich noch keinerlei Fehlerbehandlung eingebaut habe. Das wäre meiner Meinung nach aber nur für den Fall relevant, dass das Gerät sich falsch verhält oder eine Störung der Kommunikation auftritt. Fehler, die das Gerät selbst erkennen kann (z.B. Sensor ausgefallen), lassen sich ja über Modbus auslesen und in Node-RED verarbeiten.
Ich möchte meine Lösung hier teilen. Den Flow findet ihr im Anhang. Während die Modbus-Nodes Modbus Flex Write und Modbus Flex Getter ja aus dem o.g. Paket stammen, habe ich die Verarbeitung der Kommunikation, also quasi den Kleber zwischen den Modbus-Nodes, gebaut. Somit lassen sich Schreib- und Lesebefehle an die Helios-Anlage relativ bequem absetzen und das Ergebnis bei Lesebefehlen kommt "hinten raus":
flow.png
Wer das auch mal ausprobieren möchte, kann den Flow in Node-RED importieren (node-red-contrib-modbus [3] installieren nicht vergessen). Vor dem Deployen muss nur der Modbus Server auf die IP-Adresse der KWL umgestellt werden. Dazu einfach in den Eigenschaften eines der Modbus Nodes unter Server die IP-Adresse ändern und Speichern. Eine Authentifizierung mit Kennwort wie beim Webinterface findet übe Modbus nicht statt!
config-modbus1.png config-modbus2.png
Der Flow soll die Kommunikation einfach verständlich aufzeigen. Natürlich würde man den jeweiligen Ablauf noch mal als Subflow kapseln um KWL Lesen/Schreiben platzsparender in andere Flows einzubauen.
Die Inject-Nodes können sofort verwendet werden. Beim Lesen sollte im Debug-Fenster von Node-RED der entsprechende Wert angezeigt werden:
get.png
Hinweis: Im Beispiel "Variable schreiben" wird am Ende zwar eine Debug-Ausgabe getätigt, die liefert allerdings nicht den Status der Variable (im Beispiel "Partymodus Aktiv") zurück. Den Status müsste man separat auslesen, wie im Beispiel "Variable lesen".
Fragen oder Hinweise nehme ich gern entgegen!
Grüße,
Alex
Nachtrag: Was alles "geht", steht in [1]. Die Liste sieht auf den ersten Blick vollständig aus aber ich habe z.B. den Messwert des internen Feuchtefühlers und den Status der Bypassklappe nicht gefunden. Im Webinterface gibt es diese Werte allerdings...
[1] https://www.easycontrols.net/de/serv...ls-ger%C3%A4te
[2] https://www.modbusdriver.com/modpoll.html
[3] https://flows.nodered.org/node/node-red-contrib-modbus
nachdem meine Lüftungsanlage (Helios KWL EC 270 ET, gekauft 2020) jetzt ein paar Wochen in Betrieb ist und ich keine Bedienelemente dazu gekauft habe, musste ich mich mal mit der Steuerung auseinandersetzen. Da das Gerät eine Ethernet-Schnittstelle hat, ließ sich die anfängliche Konfiguration bequem über das Webinterface durchführen. Für den gelegentlichen Eingriff zur Überstimmung der Regelung war mir das aber nicht komfortabel genug. Zeit sich mit der Modbus TCP Schnittstelle zu befassen! Dazu gibt es zum Glück eine sehr gute Anleitung vom Hersteller [1], mit der die Kommunikation über das im Beispiele verwendete und freie Programm modpoll [2] auch sofort funktionierte. Auf meiner Suche nach einer bereits fertigen Lösung bin ich leider nicht fündig geworden. Es gibt da was für EDOMI aber die Entscheidung gegen EDOMI fiel schon vorher und ich bin bei OpenHAB + Node-RED gelandet.
Der nächste Schritt war dann, das Ganze in Node-RED umzusetzen. Hier habe ich auf den Node node-red-contrib-modbus [3] zurückgegriffen. Dieser kann sowohl mit einer seriellen Schnittstelle als auch mit Ethernet und TCP/IP umgehen. Ich habe nur Letzteres ausprobiert. Den Node habe ich anfangs nicht korrekt konfiguriert bekommen weil die Begriffe gänzlich anders waren als in der Dokumentation von Helios. Da ich kein Modbus-Experte bin, habe ich daher die TCP-Modbus-Kommunikation aus der Helios-Anleitung mit Wireshark aufgezeichnet. Anzeigefilter in Wireshark auf "modbus" und dann mit modpoll das Kommando abgesetzt... Damit konnte ich genug über die Kommunikation lernen und hatte quasi eine Referenz. In Node-RED habe ich dann die Parameter der entsprechenden Nodes aus dem node-red-contrib-modbus Paket so weit angepasst, bis die Daten in Wireshark genauso aussahen wie mit modpoll:
wireshark.png
Mit dem Ergebnis bin ich erst mal zufrieden, auch wenn ich noch keinerlei Fehlerbehandlung eingebaut habe. Das wäre meiner Meinung nach aber nur für den Fall relevant, dass das Gerät sich falsch verhält oder eine Störung der Kommunikation auftritt. Fehler, die das Gerät selbst erkennen kann (z.B. Sensor ausgefallen), lassen sich ja über Modbus auslesen und in Node-RED verarbeiten.
Ich möchte meine Lösung hier teilen. Den Flow findet ihr im Anhang. Während die Modbus-Nodes Modbus Flex Write und Modbus Flex Getter ja aus dem o.g. Paket stammen, habe ich die Verarbeitung der Kommunikation, also quasi den Kleber zwischen den Modbus-Nodes, gebaut. Somit lassen sich Schreib- und Lesebefehle an die Helios-Anlage relativ bequem absetzen und das Ergebnis bei Lesebefehlen kommt "hinten raus":
flow.png
Wer das auch mal ausprobieren möchte, kann den Flow in Node-RED importieren (node-red-contrib-modbus [3] installieren nicht vergessen). Vor dem Deployen muss nur der Modbus Server auf die IP-Adresse der KWL umgestellt werden. Dazu einfach in den Eigenschaften eines der Modbus Nodes unter Server die IP-Adresse ändern und Speichern. Eine Authentifizierung mit Kennwort wie beim Webinterface findet übe Modbus nicht statt!
config-modbus1.png config-modbus2.png
Der Flow soll die Kommunikation einfach verständlich aufzeigen. Natürlich würde man den jeweiligen Ablauf noch mal als Subflow kapseln um KWL Lesen/Schreiben platzsparender in andere Flows einzubauen.
Die Inject-Nodes können sofort verwendet werden. Beim Lesen sollte im Debug-Fenster von Node-RED der entsprechende Wert angezeigt werden:
get.png
Hinweis: Im Beispiel "Variable schreiben" wird am Ende zwar eine Debug-Ausgabe getätigt, die liefert allerdings nicht den Status der Variable (im Beispiel "Partymodus Aktiv") zurück. Den Status müsste man separat auslesen, wie im Beispiel "Variable lesen".
Fragen oder Hinweise nehme ich gern entgegen!

Grüße,
Alex
Nachtrag: Was alles "geht", steht in [1]. Die Liste sieht auf den ersten Blick vollständig aus aber ich habe z.B. den Messwert des internen Feuchtefühlers und den Status der Bypassklappe nicht gefunden. Im Webinterface gibt es diese Werte allerdings...
[1] https://www.easycontrols.net/de/serv...ls-ger%C3%A4te
[2] https://www.modbusdriver.com/modpoll.html
[3] https://flows.nodered.org/node/node-red-contrib-modbus
Kommentar