MQTT nach FHEM Adapter für Helios KWL Anlagen mit MODBUS TCP

Begonnen von markusrr, 01 Oktober 2017, 22:04:25

Vorheriges Thema - Nächstes Thema

markusrr

Hi zusammen,

um node.js zu lernen bastel seit einer Weile am Deamon helios2mqtt mit dem ich meine KWL EC220D unter anderem an FHEM anbinde.

Bisher funktioniert die Richtung HELIOS --> MQTT. Die Gegenrichtung kommt noch, wenn sie jemand braucht (sagt bescheid). Im Moment habe ich selbst noch keinen Bedarf. Gerne dürft ihr selbst Hand anlegen und pushen ;-)

Bei dem Ganzen habe ich mich am Vorbild hm2mqtt.js bzw. vor allem mqtt-smarthome orientiert. Ihr findet das ganze inklusive readme auf github https://github.com/mreschka/helios2mqtt oder direkt bei npm https://www.npmjs.com/package/helios2mqtt.

Es werden nahezu alle internen Größen der Helios Geräte gelesen. Es gibt dazu ein config-File: helios_vars.json Dort seht ihr was alles gelesen wird und wie häufig (updateinterval). Ich habe das File mittels dem Helios PDF zum Modbus und zusätzlich durch Debugging der Helios Device Website erstellt. Solltet ihr Fehler finden lasst mich das bitte wissen! Um einen Wert ab zu schalten, einfach das Interval auf 0 setzen.

Um das dann in FHEM ein zu binden hab ich ein MQTT_DEVICE angelegt:


define helios MQTT_DEVICE
attr helios retain 0
attr helios qos 0
attr helios autoSubscribeReadings helios/status/+
attr helios subscribeReading_connected helios/connected


Ich würde mich über Feedback freuen!

Viele Grüße,

Markus

corsair-hb

Hallo Markus,

vielen herzlichen Dank für dieses Script! Es tut genau das, wonach ich als Nicht-FHEM Nutzer gesucht habe! Ich nutze Dein Script dafür, die Variablen aus meiner Helios KWL 300 auszulesen und an MQTT zu schicken. Von dort aus werte ich diese mit Node-Red weiter aus, was mir nach einigem Testen von FHEM irgendwie flexibler vorkommt. Aber nichts gegen FHEM...

Ich hätte tatsächlich großes Interesse an der angekündigten Möglichkeit, auch Variablen auf die Helios KWL zu schreiben. Bei mir wäre die Anwendung, dass ich von einem bzw. mehreren NodeMCU mit angeschlossenem DHT22-Sensor die Luftfeuchtigkeit auf +/- 2 % rel. Feuchte auslese und via MQTT und Node-Red dann mit Deinem Script auf die Helios-KWL schreiben will. Damit will ich dann die Feuchteregelung nutzen. Falls Du also Beta-Tester suchst für diese Funktion, ich wäre dabei...

Beste Grüße

Felix

markusrr

Hi Felix,

freut mich dass es Dir hilft. Deine Idee ist total cool, daran hatte ich noch gar nicht gedacht, dass das auch so klappen könnte. Ich wollte bislang einen simulierten Raumsensor bauen (das Helios-Bus-"Protokoll" (Modbus RTU) habe ich schon reverse-Engineered, das ist anscheinend keine große Sache). Ich wollte dann einen Raspi an den Modbus hängen und dort dann mehrere VCO und Feuchtesensoren simulieren...

Ich werde das aber nun erst mal versuchen bald in die MQTT-Lösung ein zu bauen, leider ist die Zeit im Moment etwas knapp. Ich schreib dir dann hier.

Viele Grüße

Markus

corsair-hb

Hallo Markus,

bei mir läuft Dein helios2mqtt auf einem Raspi, bislang völlig problemlos. Mittlerweile werte ich die eingegangenen Sensordaten in NodeRed jeweils über der Zeit grafisch aus (z.B. die vier Temperaturen in einem Chart oder auch die Berechnung der Wärmerückgewinnungszahl/Wirkungsgrad).

Es würde mich total freuen, wenn Du den "Rückkanal", also das Schreiben von Werten via MQTT an den Modbus realisieren würdest. Ich werde auch mal schauen, ob es sinnvolle und günstige VOC-Sensoren gibt, die man an einen NodeMCU hängen kann. Das wäre es natürlich, so einen NodeMCU zusammen mit nem DHT22 und einem VOC-Sensor in ein Gehäude, Micro-USB von draußen dran und fertig ist der Universalsensor fürs Haus.

Beste Grüße

Felix

markusrr

Hallo Felix,

ich hab's heute endlich geschafft. Es gibt jetzt eine Version 0.0.11 die auch den set Befehl unterstützt. der Deamon macht überhaupt keine Checks auf den Daten die man per publish schickt (außer, dass die nicht zu lang sind). Bei mir geht das schon. Ich hab ein paar Libraries upgedatet, ich hoffe das macht keine Probleme.

Leider klappt das mit dem Setzen der Werte nicht :-( - die Helios akzeptiert auf den VOC und Feuchtesensoren keinen write (wird einfach ignoriert, man liest weiterhin nur ein "-"). Der Ansatz geht also leider nicht um Sensoren zu simulieren.

Viele Grüße,

Markus

corsair-hb

Hallo Markus,

super, vielen Dank! Ich sitze schon davor und probiere es aus, ob ich auch via Node-RED die Sollwerte schreiben kann. Klappt irgendwie noch nicht wie beabsichtigt, das kann aber auch an mir liegen.

Für die Sensorwerte bei VOC und Feuchte habe ich - leider - eine einfache Erklärung: Diese sind laut der Funktionsbeschreibung von Helios zum Modbus (siehe ab Seite 11) nur als Read ausgeführt. Das hast Du in den helios_vars auch völlig korrekt so eingestellt. Demnach kann das leider auch nicht funktionieren...

Man könnte nun natürlich kreativ werden: An den analogen 0-10V Eingängen der Anlage müsste die ja ungefragt die Werte akzeptieren. Wenn man also nun z.B. mit einem NodeMCU eine WLAN-fähigen Mikrocontoller nimmt, der dann die Werte von MQTT ausliest und in ein entsprechendes 0-10V-Signal (z.B. mit einem Levelshifter umsetzt), hätte man zumindest die Möglichkeit, einen oder mehrere Sensorwerte einzuspeisen.

Vielen Dank für Dein Engagement!

Beste Grüße

Felix

markusrr

Hallo Felix,

die 0-10V Variante ist auch mein Plan. Ich hab allerdings danach dann noch etwas mehr vor: Ich hab die Lüftung Sternförmig für jeden Raum eingebaut (in einer Wohnung nachgerüstet) und für jeden Raum eine Irisblende mit eingebaut. Diese werden gelegentlich dann mal elektrifiziert so dass ein Raum-weises Stoßlüften möglich werden sollte... Mal sehen.

Inzwischen habe ich die Helios über FHEM und Alexa nun auch sprachgesteuert eingebunden. Die Family ist happy damit nun endlich den Ruhemodus und die Partyfunktion per Alexa anwerfen zu können. :-) Ich hab das als "Dimmer" realisiert, so dass man sogar eine Dauer zwsischen 5 und 100 Minuten mit angeben kann.

Bei Interesse poste ich den Auszug aus der fhem.cfg gerne.

Viele Grüße,

Markus

markusrr

Hallo Felix,

leider habe ich bis heute immer wieder mal das Problem, dass die Verbindung zur Helios verloren geht und nicht mehr kommt. In der Software habe ich für diesen Fall eigentlich einige Vorkehrungen getroffen aber nichts hilft. Geht Dir das auch so?

Da ich nicht weiter wusste, das aber stabil hinbekommen wollte habe ich in Version 0.0.12 https://www.npmjs.com/package/helios2mqtt nun einen Watchdog eingebaut. Solltest Du das gleiche Problem haben wäre das eine Lösung. einfach mit z.B. -w 60 einen 60 Sekunden Watchdog einschalten und dann überwacht sich die Software selbst.

Viele Grüße

Markus

corsair-hb

Hallo Markus,

leider bin ich noch nicht weitergekommen. Mal sehen, wann ich dazu komme...

Einen Ausfall der Verbindung bzw. des Pakets konnte ich bislang nicht feststellen. Bei mir liefert helios2mqtt zuverlässig die Daten ab, ich kann über Tage die Temperaturen auslesen und darstellen (allerdings Nehme ich 15 Minuten-Mittelwerte). Falls da mal ein Wert sporadisch nicht kommt, merke ich das eigentlich nicht. Einen Watchdog / Keep Alive zu haben, ist doch in Ordnung.

Beste Grüße

Felix

igork

Hallo Markus,
Danke für dein Programm, es ist großartig. Lesen von Parametern mit mqtt ist super. Ich würde gerne raten, wie man die Lüfterdrehzahl über den node red einstellt
'Helios / set / ruhebetrieb_luefterstufe / 2'
Danke