NEWS
Modbus RTU mit Meltem M-WRG-II über Meltem Gateway
-
Hallo zusammen,
ich habe mir 2 Meltem M-WRG-II dezentrale Lüftungsgeräte installiert und, da ich die Geräte nicht direkt per Modbus oder KNX oder ähnlichem verbinden kann, auch gleich das Gateway dazu bestellt. Die App funktioniert auch, ich würde das aber natürlich gerne in den iobroker bekommen.
Generell hat das Gateway eine RTU serial Schnittstelle per USB. Wird auch an meinem iobroker entsprechend erkannt.
Für Home Assistant wurde da schon Vorarbeit geleistet, darauf (und auf nochmalige Bestätigung vom Meltem-Support, dass das geht), hab ich mich dann gestützt: https://community.home-assistant.io/t/meltem-wrg-ii-integration-via-meltem-gateway-and-modbus/720906Ich denke, ich habe mich an alle Einstellungen gehalten und mal mit einem einzelnen Input Register getestet (auch verschiedene mit unterschiedlichen Datentypen probiert), bekomme aber immer den Fehler
FCx4: Illegal Function
Hier mal ein Beispiel für das Register 41006, die Luftfeuchte liefern soll:
debug Cleaning up request fifo. debug Clearing timeout of the current request. info Disconnected from slave warn [DevID_2] Poll error count: 1 code: {"err":"timeout","timeout":5000} error Request timed out. warn Error: undefined error Error response: Function code received in the query is not recognized or allowed by slave error Error response for FCx4: Illegal Function debug [DevID_2/inputRegs] Poll address 41006 - 11 registers debug Initialization of scale factors done! debug [DevID_2] Poll start --------------------- info Connected to slave debug connect to serial /dev/ttyACM0 with 19200 debug Initialize Objects for holdingRegs: [] debug Add inputRegisters.2.41016_Error_message: {"_id":"inputRegisters.2.41016_Error_message","type":"state","common":{"name":"","role":"value","type":"number","read":true,"write":false,"def":0,"unit":""},"native":{"regType":"inputRegs","address":41016,"deviceId":2,"type":"uint8be","len":1,"offset":0,"factor":1}} debug Add inputRegisters.2.41006_Humidity_extract_air: {"_id":"inputRegisters.2.41006_Humidity_extract_air","type":"state","common":{"name":"","role":"value.humidity","type":"number","read":true,"write":false,"def":0,"unit":"%"},"native":{"regType":"inputRegs","address":41006,"deviceId":2,"type":"uint16be","len":1,"offset":0,"factor":1}} debug Initialize Objects for inputRegs: [{"_address":41006,"deviceId":2,"name":"Humidity extract air","description":"","unit":"%","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"value.humidity","room":"enum.rooms.living_room","cw":"","isScale":"","address":41006,"id":"inputRegisters.2.41006_Humidity_extract_air"},{"_address":41016,"deviceId":2,"name":"Error message","description":"","unit":"","type":"uint8be","len":1,"factor":1,"offset":0,"formula":"","role":"value","room":"","cw":"","isScale":"","address":41016,"id":"inputRegisters.2.41016_Error_message"}] debug Initialize Objects for coils: [] debug Initialize Objects for disInputs: [] info starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.18.1, js-controller: 7.0.6
Und hier mal für den Error indicator:
debug Cleaning up request fifo. debug Clearing timeout of the current request. info Disconnected from slave warn [DevID_2] Poll error count: 1 code: {"err":"timeout","timeout":5000} error Request timed out. warn Error: undefined error Error response: Function code received in the query is not recognized or allowed by slave error Error response for FCx4: Illegal Function debug [DevID_2/inputRegs] Poll address 41016 - 1 registers debug Initialization of scale factors done! debug [DevID_2] Poll start --------------------- info Connected to slave debug connect to serial /dev/ttyACM0 with 19200 debug Remove old object modbus.0.inputRegisters.2.41006_Humidity_extract_air debug Initialize Objects for holdingRegs: [] debug Add inputRegisters.2.41016_Error_message: {"_id":"inputRegisters.2.41016_Error_message","type":"state","common":{"name":"","role":"value","type":"number","read":true,"write":false,"def":0,"unit":""},"native":{"regType":"inputRegs","address":41016,"deviceId":2,"type":"uint8be","len":1,"offset":0,"factor":1}} debug Initialize Objects for inputRegs: [{"_address":41016,"deviceId":2,"name":"Error message","description":"","unit":"","type":"uint8be","len":1,"factor":1,"offset":0,"formula":"","role":"value","room":"","cw":"","isScale":"","address":41016,"id":"inputRegisters.2.41016_Error_message"}] debug Initialize Objects for coils: [] debug Initialize Objects for disInputs: [] info starting. Version 6.3.2 in /opt/iobroker/node_modules/iobroker.modbus, node: v20.18.1, js-controller: 7.0.6
In der Home Assistant Anleitung sind noch Details zu der Slave-ID (das erste Gerät hat die ID 2, das scheint auch zu funktionieren, da ich ja eine Rückmeldung bekomme. Nehme ich eine höhere ID, bekomme ich keine Antwort/einen Timeout).
Die generellen Einstellungen habe ich sowohl mit der Home Assistant Vorlage, als auch mit der Modbus Anleitung (https://www.meltem.com/fileadmin/downloads/documents/Meltem BA-IA_M-WRG-II_P-M_E-M EN.pdf) verglichen, das sollte passen. Es gibt allerdings noch mehr Einstellungen, die ich aber im Adapter nicht wieder finde (siehe 16.3 Frame requirements im Screenshot).Ich bin in Modbus aber auch ziemlich neu unterwegs. Vielleicht hat ja jemand noch einen Hinweis für mich, was hier falsch laufen könnte. Vielen Dank
Sobald das läuft stelle ich das natürlich auch gerne im modbus templates Repository zur Verfügung
Aus der Modbus Anleitung:
Hier meine Konfiguration:
UPDATE:
Okay, ich bin schonmal einen Schritt weiter. Obwohl in der Doku als Read-Only vermerkt, hattee ich nun Erfolg, wenn ich das Register 41006 (die Luftfeuchte) nicht als "Input Register" sondern als Holding Register definiere. -
UPDATE: ich hab mittlerweile alles relativ stabil zum Laufen bekommen (das Gateway ist eine kleine Diva, aber die App von Meltem ist auch nicht geil) und auch ein recht umfangreiches Skript zur Basis-Steuerung und Interpretation der Werte erstellt. Ist hier und da noch im Feintuning, aber das meiste steht. Falls jemand Interesse hat, kann ich gerne einen Zwischenstand veröffentlichen.
Ansonsten werde ich das wenn es einen entsprechenden Stand hat mal vollständig dokumentieren und hier posten. Lasst aber gerne mal einen Kommentar da, falls ihr auch Meltem Lüftungsgeräte (M-WRG/M-WRG-II) im Einsatz habt (ohne/mit Gateway oder auch direkt per Modbus) und wie zufrieden ihr damit seit. -
@boriswerner Also cool wäre es wenn du zumindest mal sagen würdest was denn das Problem war oder auch einfach den aktuellen Stand mit dem es funktioniert zeigst.
-
@wendy2702 das hab ich für das ursprüngliche Problem im ersten Beitrag schon gemacht, ich hatte schlicht den falschen Registertyp genutzt (Reading, statt Holding, da die Register in der Anleitung als Read-Only beschrieben sind):
"Obwohl in der Doku als Read-Only vermerkt, hattee ich nun Erfolg, wenn ich das Register 41006 (die Luftfeuchte) nicht als "Input Register" sondern als Holding Register definiere."
Der Stand, mit dem es funktioniert will ich ja wie beschrieben zusammenstellen, da gibt es aber eben mehrere Dinge, auf die man achten sollte, deswegen brauche ich da etwas mehr Zeit zu, die ich im Moment lieber in die Weiterentwicklung der Funktionalität stecke, da das System bei mir im Einsatz ist, aber eben in einem Zwischenstand von "zeitgesteuert über die App", manuelle Bedienung über die App und Bedienung über iobroker. Da bin ich in erster Linie dann egoistisch, da es ja scheinbar auch keine riesige Gruppe an Nutzern gibt, die darauf warten
Aber: hast du denn auch die Meltem-Anlagen im Einsatz und was würdest du dir von einer iobroker Integration erhoffen? -
@boriswerner Nein, ich habe keine Lüftungsanlage. Finde es halt nur immer Schade wenn man eine/seine Lösung nicht der Community zur Verfügung stellt.
-
@wendy2702 das finde ich ja auch, sonst hätte ich nicht schon zwei Updates zu dem post hier gemacht und explizit geschrieben:
Falls jemand Interesse hat, kann ich gerne einen Zwischenstand veröffentlichen.
Ansonsten werde ich das wenn es einen entsprechenden Stand hat mal vollständig dokumentieren und hier posten
Wenn es aber derzeit gar keinen interessiert, mach ich das lieber erst fertig und nehme mir dann erst die Zeit das ordentlich zu dokumentieren.
Von daher sehe ich gerade keinen Bedarf und kein Problem.