NEWS
FoxEss H3 Wechselrichter per Modbus in ioBroker
-
geht es anscheinend um die ID
Probier mal mit einem Modbus-Tester, ob die ID 247 überhaupt erreichbar ist - z.B.

@fuzzy1955
192.168.178.80 ist die Adresse des Waveshare RS4852ETH.
192.168.178.99 die Adresse des Wechselrichters.
-
@Int17 sagte in FoxEss H3 Wechselrichter per Modbus in ioBroker:
danach als String definiert:
was?
dem log nach
@Int17 sagte in FoxEss H3 Wechselrichter per Modbus in ioBroker:
task add for ID undefined:
geht es anscheinend um die ID!
Lösch diese nochmal,ggf. zwischenspeichern, und erneut eintragen.
Ansonsten mal ein downgrade des Adapters. die 8.0.3 dürfte nicht stable sein. wo hast du due her?
@Homoran
Ok, ich hatte die Model number als ID verstanden, da im Kommentar steht Model number of the inverter (8 chars, space padded). Daher im 2. Versuch die Model Number als String definiert."Ansonsten mal ein downgrade des Adapters. die 8.0.3 dürfte nicht stable sein. wo hast du due her?"
Ich folge dem Beta-Repo.

Habe jetzt die aus dem Stable Repo installiert.
Versuch mit Waveshare (.80):2026-02-21 22:04:43.371 - info: modbus.0 (157715) starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v22.22.0, js-controller: 7.1.0 2026-02-21 22:04:43.412 - error: modbus.0 (157715) Invalid holdingRegisters address: -10001 2026-02-21 22:04:43.412 - debug: modbus.0 (157715) Initialize Objects for disInputs: [] 2026-02-21 22:04:43.412 - debug: modbus.0 (157715) Initialize Objects for coils: [] 2026-02-21 22:04:43.413 - debug: modbus.0 (157715) Initialize Objects for inputRegs: [] 2026-02-21 22:04:43.413 - debug: modbus.0 (157715) Initialize Objects for holdingRegs: [{"_address":"30000","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":-10001,"deviceId":247}] 2026-02-21 22:04:43.413 - error: modbus.0 (157715) Invalid data holdingRegisters/0: {"_address":"30000","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":-10001,"deviceId":247,"fullId":"modbus.0.0"} 2026-02-21 22:04:43.413 - error: modbus.0 (157715) Invalid object: {"type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":-10001,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-21 22:04:43.413 - debug: modbus.0 (157715) Add undefined: {"type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":-10001,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-21 22:04:43.458 - info: modbus.0 (157715) Can not execute task add for ID undefined: Parameter "id" needs to be of type "string" but type "undefined" has been passed 2026-02-21 22:04:43.493 - info: modbus.0 (157715) Connected to slave 192.168.178.80 2026-02-21 22:04:43.493 - debug: modbus.0 (157715) [DevID_247] Poll start --------------------- 2026-02-21 22:04:43.667 - debug: modbus.0 (157715) No current request. 2026-02-21 22:04:44.017 - debug: modbus.0 (157715) No current request. 2026-02-21 22:04:44.367 - debug: modbus.0 (157715) No current request.Versuch mit H3 (IP .99):
2026-02-22 16:25:39.657 - info: modbus.0 (260646) starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v22.22.0, js-controller: 7.1.0 2026-02-22 16:25:39.700 - error: modbus.0 (260646) Invalid holdingRegisters address: -10001 2026-02-22 16:25:39.700 - debug: modbus.0 (260646) Initialize Objects for disInputs: [] 2026-02-22 16:25:39.700 - debug: modbus.0 (260646) Initialize Objects for coils: [] 2026-02-22 16:25:39.700 - debug: modbus.0 (260646) Initialize Objects for inputRegs: [] 2026-02-22 16:25:39.700 - debug: modbus.0 (260646) Initialize Objects for holdingRegs: [{"_address":"30000","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":-10001,"deviceId":247}] 2026-02-22 16:25:39.700 - error: modbus.0 (260646) Invalid data holdingRegisters/0: {"_address":"30000","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":-10001,"deviceId":247,"fullId":"modbus.0.0"} 2026-02-22 16:25:39.700 - error: modbus.0 (260646) Invalid object: {"type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":-10001,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-22 16:25:39.700 - debug: modbus.0 (260646) Add undefined: {"type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":-10001,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-22 16:25:39.746 - info: modbus.0 (260646) Can not execute task add for ID undefined: Parameter "id" needs to be of type "string" but type "undefined" has been passed 2026-02-22 16:25:39.782 - info: modbus.0 (260646) Connected to slave 192.168.178.99 2026-02-22 16:25:39.782 - debug: modbus.0 (260646) [DevID_247] Poll start --------------------- 2026-02-22 16:25:40.833 - debug: modbus.0 (260646) [DevID_247] Poll start --------------------- -
Also ich bin ein Stück weitergekommen.
Invalid holdingRegisters address: -10001
Hier ist mir aufgefallen, dass sich die Adresse ändert, wenn man das Holding Register verändert. Trägt man da 40001 ein, so kommt der Fehler nicht mehr und auch die ID-Fehlermeldung kommt nicht mehr.2026-02-22 16:42:41.507 - info: modbus.0 (262572) starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v22.22.0, js-controller: 7.1.0 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for disInputs: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for coils: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for inputRegs: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for holdingRegs: [{"_address":"40001","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":0,"deviceId":247,"id":"holdingRegisters.40001_Inverter_Model"}] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Add holdingRegisters.40001_Inverter_Model: {"_id":"holdingRegisters.40001_Inverter_Model","type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":0,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-22 16:42:41.633 - info: modbus.0 (262572) Connected to slave 192.168.178.99 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) [DevID_247] Poll start --------------------- 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) Initialization of scale factors done! 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) [DevID_247/holdingRegs] Poll address 0 - 1 registers 2026-02-22 16:42:46.634 - warn: modbus.0 (262572) Error: undefined 2026-02-22 16:42:46.634 - error: modbus.0 (262572) Request timed out. 2026-02-22 16:42:46.634 - error: modbus.0 (262572) Client in error state. 2026-02-22 16:42:46.634 - warn: modbus.0 (262572) Poll error count: 1 code: {"err":"timeout","timeout":5000}Gleicher Ablauf mit der Adresse des Wavshares.
-
Also ich bin ein Stück weitergekommen.
Invalid holdingRegisters address: -10001
Hier ist mir aufgefallen, dass sich die Adresse ändert, wenn man das Holding Register verändert. Trägt man da 40001 ein, so kommt der Fehler nicht mehr und auch die ID-Fehlermeldung kommt nicht mehr.2026-02-22 16:42:41.507 - info: modbus.0 (262572) starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v22.22.0, js-controller: 7.1.0 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for disInputs: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for coils: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for inputRegs: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for holdingRegs: [{"_address":"40001","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":0,"deviceId":247,"id":"holdingRegisters.40001_Inverter_Model"}] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Add holdingRegisters.40001_Inverter_Model: {"_id":"holdingRegisters.40001_Inverter_Model","type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":0,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-22 16:42:41.633 - info: modbus.0 (262572) Connected to slave 192.168.178.99 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) [DevID_247] Poll start --------------------- 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) Initialization of scale factors done! 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) [DevID_247/holdingRegs] Poll address 0 - 1 registers 2026-02-22 16:42:46.634 - warn: modbus.0 (262572) Error: undefined 2026-02-22 16:42:46.634 - error: modbus.0 (262572) Request timed out. 2026-02-22 16:42:46.634 - error: modbus.0 (262572) Client in error state. 2026-02-22 16:42:46.634 - warn: modbus.0 (262572) Poll error count: 1 code: {"err":"timeout","timeout":5000}Gleicher Ablauf mit der Adresse des Wavshares.
-
Also ich bin ein Stück weitergekommen.
Invalid holdingRegisters address: -10001
Hier ist mir aufgefallen, dass sich die Adresse ändert, wenn man das Holding Register verändert. Trägt man da 40001 ein, so kommt der Fehler nicht mehr und auch die ID-Fehlermeldung kommt nicht mehr.2026-02-22 16:42:41.507 - info: modbus.0 (262572) starting. Version 5.0.11 in /opt/iobroker/node_modules/iobroker.modbus, node: v22.22.0, js-controller: 7.1.0 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for disInputs: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for coils: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for inputRegs: [] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Initialize Objects for holdingRegs: [{"_address":"40001","name":"Inverter Model","description":"Model number of the inverter (8 chars, space padded)","unit":"","type":"int16be","len":1,"factor":1,"offset":0,"formula":"","role":"","room":"","poll":true,"wp":"","cw":"","isScale":"","address":0,"deviceId":247,"id":"holdingRegisters.40001_Inverter_Model"}] 2026-02-22 16:42:41.550 - debug: modbus.0 (262572) Add holdingRegisters.40001_Inverter_Model: {"_id":"holdingRegisters.40001_Inverter_Model","type":"state","common":{"name":"Model number of the inverter (8 chars, space padded)","role":"","type":"number","read":true,"write":true,"def":0,"unit":""},"native":{"regType":"holdingRegs","address":0,"deviceId":247,"type":"int16be","len":1,"offset":0,"factor":1,"poll":true}} 2026-02-22 16:42:41.633 - info: modbus.0 (262572) Connected to slave 192.168.178.99 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) [DevID_247] Poll start --------------------- 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) Initialization of scale factors done! 2026-02-22 16:42:41.633 - debug: modbus.0 (262572) [DevID_247/holdingRegs] Poll address 0 - 1 registers 2026-02-22 16:42:46.634 - warn: modbus.0 (262572) Error: undefined 2026-02-22 16:42:46.634 - error: modbus.0 (262572) Request timed out. 2026-02-22 16:42:46.634 - error: modbus.0 (262572) Client in error state. 2026-02-22 16:42:46.634 - warn: modbus.0 (262572) Poll error count: 1 code: {"err":"timeout","timeout":5000}Gleicher Ablauf mit der Adresse des Wavshares.
@Int17 sagte in FoxEss H3 Wechselrichter per Modbus in ioBroker:
Invalid holdingRegisters address: -10001
das klingt nach falschen Grundeinstellungen!
Alias verwenden aktiviert?
-
@Int17 sagte in FoxEss H3 Wechselrichter per Modbus in ioBroker:
Invalid holdingRegisters address: -10001
das klingt nach falschen Grundeinstellungen!
Alias verwenden aktiviert?
@Homoran
Ja, die Selektion ist Standard. Jetzt deaktiviert.
Die ersten beiden Register laut Doku sind Model und SN:

die habe ich jetzt eingetragen:

Ergebnis:

Hier die Ausgabe vom GModbus:

Also scheint die FW des H3 Modbus über TCP (LAN-Kabel) zu unterstützen und das RS4852ETH ist überflüssig.
Hatte hier gelesen, dass nach dem Eintrag von ein paar Register, die restlichen automatische gelesen wurden. Stimmt das?
-
@Homoran
Ja, die Selektion ist Standard. Jetzt deaktiviert.
Die ersten beiden Register laut Doku sind Model und SN:

die habe ich jetzt eingetragen:

Ergebnis:

Hier die Ausgabe vom GModbus:

Also scheint die FW des H3 Modbus über TCP (LAN-Kabel) zu unterstützen und das RS4852ETH ist überflüssig.
Hatte hier gelesen, dass nach dem Eintrag von ein paar Register, die restlichen automatische gelesen wurden. Stimmt das?
@Int17 sagte in FoxEss H3 Wechselrichter per Modbus in ioBroker:
Hatte hier gelesen, dass nach dem Eintrag von ein paar Register, die restlichen automatische gelesen wurden. Stimmt das?
im Modbus Adapter? nein!
in deinem Tool? möglich, aber kenn ich nicht -
Ich melde mich nochmal, weil ich hier gelesen habe, dass das Auslesen per TCP nicht empfohlen wird. Daher habe ich mir Waveshare RS485 TO ETH Converter

installiert. Hier bekam ich aber keine Verbindung zu H3 Smart. Der Wechselrichter geht in einen Fehlerstatus, wenn man in den Einstellungen "Meter 1" oder "2" aktiviert und trennt die PV-Seite sofort.
Dann habe ich den beim WR mitgelieferten Chint-DTSU666 mit einer Phase und dem Modbus-Kabel (ID 147) verbunden.
Am WR habe ich den COM-Port genommen.

Die ID 247 im WR unverändert gelassen.


Alles zusammengebaut und "Meter 1" wieder aktiviert. Aber auch hier zeigt der WR sofort den obigen Fehler an.
Um zu sehen, ob er überhaupt ansprechbar ist, habe ich mir das Interface USB2Modbus von Waveshare gekauft. Aber auch damit habe ich keine Daten auslesen können bzw. auch damit zeigt der WR den Fehler.D:\>modpoll -b 9600 -p none -m rtu -a 247 -r 30000 -c 32 COM9 modpoll 3.16 - FieldTalk(tm) Modbus(R) Master Simulator Copyright (c) 2002-2025 proconX Pty Ltd Visit https://www.modbusdriver.com for Modbus libraries and tools. Protocol configuration: Modbus RTU, FC3 Slave configuration...: address = 247, start reference = 30000, count = 32 Communication.........: COM9, 9600, 8, 1, none, t/o 1.00 s, poll rate 1000 ms Data type.............: 16-bit register, holding register table -- Polling slave... (Ctrl-C to stop) Reply time-out!Der Smartmeter (147) antwortet mir darüber.

Weiß jemand, was ich vergessen habe zu konfigurieren bzw. welchen Fehler ich gemacht habe?
Im Menübaum sehe ich keine weiteren Einstellungen zu diesem Thema.

-
Ich melde mich nochmal, weil ich hier gelesen habe, dass das Auslesen per TCP nicht empfohlen wird. Daher habe ich mir Waveshare RS485 TO ETH Converter

installiert. Hier bekam ich aber keine Verbindung zu H3 Smart. Der Wechselrichter geht in einen Fehlerstatus, wenn man in den Einstellungen "Meter 1" oder "2" aktiviert und trennt die PV-Seite sofort.
Dann habe ich den beim WR mitgelieferten Chint-DTSU666 mit einer Phase und dem Modbus-Kabel (ID 147) verbunden.
Am WR habe ich den COM-Port genommen.

Die ID 247 im WR unverändert gelassen.


Alles zusammengebaut und "Meter 1" wieder aktiviert. Aber auch hier zeigt der WR sofort den obigen Fehler an.
Um zu sehen, ob er überhaupt ansprechbar ist, habe ich mir das Interface USB2Modbus von Waveshare gekauft. Aber auch damit habe ich keine Daten auslesen können bzw. auch damit zeigt der WR den Fehler.D:\>modpoll -b 9600 -p none -m rtu -a 247 -r 30000 -c 32 COM9 modpoll 3.16 - FieldTalk(tm) Modbus(R) Master Simulator Copyright (c) 2002-2025 proconX Pty Ltd Visit https://www.modbusdriver.com for Modbus libraries and tools. Protocol configuration: Modbus RTU, FC3 Slave configuration...: address = 247, start reference = 30000, count = 32 Communication.........: COM9, 9600, 8, 1, none, t/o 1.00 s, poll rate 1000 ms Data type.............: 16-bit register, holding register table -- Polling slave... (Ctrl-C to stop) Reply time-out!Der Smartmeter (147) antwortet mir darüber.

Weiß jemand, was ich vergessen habe zu konfigurieren bzw. welchen Fehler ich gemacht habe?
Im Menübaum sehe ich keine weiteren Einstellungen zu diesem Thema.

@Int17 sagte in FoxEss H3 Wechselrichter per Modbus in ioBroker:
Waveshare RS485 TO ETH
Hi,
wenn du den Waveshare RS485 TO ETH nimmst, was hast du da genau eingestellt - ist es das?

Und wie schauen die Einstellungen im IOBroker Modbus-Adapter genau aus? Bitte Screenshots.
[EDIT] Bevor beim Waveshare RS485 TO ETH die grüne LED nicht leuchtet, steckt der Fehler höchstwahrscheinlich zwischen IOB-Adapter und Waveshare.