Guten Tag,
Ich mache die ersten Schritte im OpenEms, und nach dem Durcharbeiten des Simulationslaufs im “Getting Started” versuche ich, einen GoodWe ET Inverter im lokalen Netz zu erreichen.
Was wären die minimalen Componenten und Einstellungen in der “Apache Felix Web Console Configuration”?
Ich habe bei “Bridge Modbus/TCP” die IP-Adresse des GoodWe ET eingetragen, und den “GoodWe Battery Inverter” aktiviert. Der hat die voreingetragene Modbus UnitID 247
Die Verbindung versagt aber, mit diesen Einträgen im Debug Log:
2021-06-20 16:00:51,955 [modbus0 ] WARN [bridge.modbus.api.ModbusWorker] [modbus0] FC3ReadHoldingRegisters [batteryInverter0;unitid=247;ref=35001/0x88b9;length=15] execution failed: Connection to [192.168.1.47] failed: Connection refused (Connection refused)
2021-06-20 16:00:52,058 [re.Cycle] INFO [ntroller.debuglog.DebugLogImpl] [ctrlDebugLog0] _sum[State:Fault] modbus0[State:FAULT: LAN Communication to external device failed]
Ich wäre sehr dankbar für jeden Tipp!
Robert Imhoff
Sicher, dass der GoodWe Wechselrichter über das Netzwerk (Modbus/TCP) angesprochen werden kann? Ich kenne nur die Verbindung über einen RS485-Bus (Modbus/RTU).
Vielen Dank für die Antwort! Bei der Felix-Console gibt es nur ein Modbus/RTU (serial), wo die Parameter aussehen, als seien sie für eine serielle Schnittstelle bestimmt.
Der GoodWe ET Hybrid kommuniziert aber z.B. mit einer Android App über das lokale Netzwerk. Das müsste doch mit OpenEMS dann auch gehen, oder?
Im “Felix” steht bei Bridge nur die Komponente Modbus/RTU (serial) – was es wohl bräuchte, ist ein Modbus/RTU over UDP ? (Mit Netscan hat der GoodWe ET die UDP Port 8899 und 48899 offen, und mit einem Netzwerkschnüffler scheint das Android App auch über UDP mit dem Wechselrichter zu kommunizieren.)
P.S.: Hier sind zwei Links mit Beschreibungen der Kommunikation mit Modbus over UDP:
ich hatte das gleiche Problem. Es ist tatsächlich so, dass über WLAN kein Modbus/TCP möglich ist. Für eine Kommunikation wird das LAN-Modul angeboten, welches einfach mit dem WLAN-Modul getauscht wird.
Nach dem Tauschen lässt sich der Goodwe ET problemlos über die Modbus-TCP-Bridge mit Openems betreiben.
Um den Zugriff über UDP zu testen, hab ich gestern eine minimale Installation von “www.home-assistant.io” gemacht. Die oben erwähnte Add-on von https://github.com/mletenay funktioniert tatsächlich auch über das standardmäßige WLAN-Modul.
Wenn man den Python-Code ansieht, schickt der eine Byte-Sequenz wie z.B. F7 03 89 1c 00 7d per UDP über das lokale Netzwerk und erhält die Registerdaten zurück:
Ließe sich so etwas in OpenEMS implementieren?
Es müsste theoretisch möglich sein, das Package io.openems.edge.bridge.modbus zu erweitern, dass es zusätzlich zu TCP auch über UPD kommuniziert … Ich bin allerdings zu unerfahren mit OpenEMS!
F70388b80021
0x7F -> default modbus unit id
0x03 -> function code 03 Read Holding Registers
0x88b8 -> read from register 35000
0x0021 -> length 33
Ich habe bisher noch nie mit Modbus/UDP gearbeitet. Die verwendete Bibliothek j2mod kann das aber grundsätzlich, d.h. man müsste vermutlich wirklich ‘nur’ die Modbus-Bridge entsprechend erweitern.