NEWS
Test Adapter sun2000 v0.1.x - Huawei Wechselrichter
-
@bolliy Dafür weiss ich jetzt auch, woher die TimeOuts kommen. Während dem ich im Büro am Windows PC die Anwendung weiter entwickle, läuft in der Küche meine Raspberry Pi Anwendung unbemerkt weiter. So entsteht ein Parallel-Zugriff auf die Register, das verursacht die Timeouts. Sobald ich das Raspberry Pi ausstecke, sind die TimeOuts auf dem PC weg.
2025-03-04 12:34:18.471 - info: sun2000.0 (11584) starting. Version 1.0.1 in C:/ProgramData/ioBroker/node_modules/iobroker.sun2000, node: v20.18.3, js-controller: 7.0.6 2025-03-04 12:34:18.516 - info: sun2000.0 (11584) Adjustment: It starts for the Modbus connection... 2025-03-04 12:34:18.526 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:34:23.665 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:34:23.907 - info: sun2000.0 (11584) Identified a Huawei SUN2000-12KTL-M5 model 473 for modbus ID 2 2025-03-04 12:34:26.169 - info: sun2000.0 (11584) Adjustment: It has reached the step 1 with delay value 0 ms 2025-03-04 12:34:37.059 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 38284, Len: 10, modbusID: 2] with: Timed out 2025-03-04 12:34:37.076 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:34:43.085 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:34:46.234 - info: sun2000.0 (11584) Adjustment: It has reached the step 1 with delay value 600 ms 2025-03-04 12:34:58.070 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 37100, Len: 38, modbusID: 2] with: Timed out 2025-03-04 12:34:58.072 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:35:04.090 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:35:06.778 - info: sun2000.0 (11584) Adjustment: It has reached the step 2 with delay value 488 ms 2025-03-04 12:35:18.106 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 38368, Len: 10, modbusID: 2] with: Timed out 2025-03-04 12:35:18.108 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:35:24.177 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:35:26.407 - info: sun2000.0 (11584) Control: Service queue initialized 2025-03-04 12:35:27.168 - info: sun2000.0 (11584) Adjustment: It has reached the step 3 with delay value 425 ms 2025-03-04 12:35:40.456 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 32064, Len: 2, modbusID: 2] with: Timed out 2025-03-04 12:35:40.460 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:35:45.471 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:35:50.388 - info: sun2000.0 (11584) Adjustment: It has reached the step 4 with delay value 389 ms 2025-03-04 12:36:10.325 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 32080, Len: 2, modbusID: 2] with: Timed out 2025-03-04 12:36:10.329 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:36:16.380 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:36:30.189 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 32080, Len: 2, modbusID: 2] with: Timed out 2025-03-04 12:36:30.193 - info: sun2000.0 (11584) Open Connection... 2025-03-04 12:36:35.214 - info: sun2000.0 (11584) Connected Modbus TCP to 192.168.1.162:502 2025-03-04 12:36:50.659 - warn: sun2000.0 (11584) Error while reading from 192.168.1.162 [Reg: 32064, Len: 2, modbusID: 2] with: Timed out
-
@fredi-wiegisser der gleichzeitiger Zugriff auf die modbus Schnittstelle ist über den internen mobus-proxy des Adapters möglich.
Toll, dass du die Ursache der Timeouts eigenständig herausgefunden hast.
LG Stephan
-
@bolliy vielleicht noch etwas Kleines zur Info. Die Register 32091 und 32093 meines Sun2000 12KTL M5 weisen eine falsche Uhrzeit aus für die Inverter Start- und Stopzeit, obschon GMT+1 korrekt eingetragen ist. Angezeigt wird aktuell die Sommerzeit, also 1h zu viel. Ich gehe davon aus, dass die Register unbehandelt im Adapter zur Verfügung stehen und direkt vom Inverter ausgelesen werden. Falls das so ist, plane ich einen Service Request bei Huawei.
-
@bolliy Hallo Stephan, nachdem ich diesen Winter nun mit Auswertungen/Zusammenlegungen über zwei Instanzen-mit drei M1 WR- über Blockly deinen Adapter (DANKE!) erfolgreich genutzt habe, stellt sich nun im beginnenden Frühjahr ein Problem, das ich nicht selbst lösen konnte :
ich versuche über die Batterie-Regelung zeitlich unterschiedliche Ladegrößen in Abhängigkeit von SOC zu schalten - Blockly funktioniert - Datenpunkte werden geändert ABER mein führender M1-8K (mit zwei Battreiblöcken - alles richtig dargestellt)
nimmt die Daten nicht an ?!?
Mir fällt im Moment nichts mehr dazu ein - der WR ist lokal über sein eigenes WLAN eingebunden - paßt seit drei Monaten.
Danke schon einmal und viele Frühlingsgrüße Michael -
@michael-birr diese Dinge sind zu beachten:
-
Bitte den blockly Funktionsblock steuere anstatt aktualisieren verwenden. Siehe https://forum.iobroker.net/post/1244554 und https://github.com/bolliy/ioBroker.sun2000/wiki/Verarbeitung-der-Sollwerte
-
Falls die Luna schläft (SLEEP_MODE), muss der Speicher erst "aufgeweckt" werden. https://github.com/bolliy/ioBroker.sun2000/wiki/Speichersystem-aufwecken-(wake-up-Luna)
Ob der Adapter die Controls zum WR schreibt kannst du im Log verfolgen - hier wird MinSoc auf 5 % gesetzt:
2025-03-06 07:15:41.218 - info: sun2000.0 (1015299) Control: Event - state: battery.dischargeCutoffCapacity changed: 5 ack: false 2025-03-06 07:15:46.084 - info: sun2000.0 (1015299) Control: write state inverter.0.control.battery.dischargeCutoffCapacity : 5 ack: true
LG Stephan
-
-
@bolliy Ich denke, dass ich diese Anregungen schon beachtet habe - siehe CC. Vieleicht erkennst du daraus mehr
2025-03-06 10:00:00.026 - info: javascript.0 (7292) script.js.common.Batteriesteuerung.Skript_1: getState(id=sun2000.0.inverter.0.battery.SOC, timerId=undefined) => {"val":57,"ack":true,"ts":1741251580239,"q":0,"from":"system.adapter.sun2000.0","user":"system.user.admin","lc":1741251580239} 2025-03-06 10:00:00.030 - info: javascript.0 (7292) script.js.common.Batteriesteuerung.Skript_1: getState(id=sun2000.0.inverter.0.battery.ratedCapacity, timerId=undefined) => {"val":25000,"ack":true,"ts":1741105021840,"q":0,"from":"system.adapter.sun2000.0","user":"system.user.admin","lc":1726907980177} 2025-03-06 10:00:00.030 - info: javascript.0 (7292) script.js.common.Batteriesteuerung.Skript_1: setForeignState(id=sun2000.0.inverter.0.control.battery.maximumChargingPower, state={"val":2687.5000000000005,"ack":false,"ts":1741251600030,"q":0,"from":"system.adapter.javascript.0","lc":1741251600030,"c":"script.js.common.Batteriesteuerung.Skript_1"}) 2025-03-06 10:00:00.030 - info: javascript.0 (7292) script.js.common.Batteriesteuerung.Skript_1: setStateDelayed(id=sun2000.0.inverter.0.control.battery.maximumChargePower, state=2687.5000000000005, isAck=undefined, delay=500, clearRunning=false) 2025-03-06 10:00:00.045 - info: sun2000.0 (21396) Control: Event - state: battery.maximumChargingPower changed: 2687.5000000000005 ack: false 2025-03-06 10:00:00.385 - warn: sun2000.0 (21396) Error while writing to 192.168.200.1 [Reg: 47075, Len: 2, modbusID: 0] with: Modbus exception 128: Unknown error 2025-03-06 10:00:00.385 - info: sun2000.0 (21396) Control: Event is discarded because it could not be processed. inverter.0.control.battery.maximumChargingPower 2025-03-06 10:00:00.539 - info: javascript.0 (7292) script.js.common.Batteriesteuerung.Skript_1: setForeignState(id=sun2000.0.inverter.0.control.battery.maximumChargePower, state={"val":2687.5000000000005,"ack":false,"ts":1741251600539,"q":0,"from":"system.adapter.javascript.0","lc":1741251600539,"c":"script.js.common.Batteriesteuerung.Skript_1"}) 2025-03-06 10:00:00.555 - info: sun2000.0 (21396) Control: Event - state: battery.maximumChargePower changed: 2687.5000000000005 ack: false 2025-03-06 10:00:20.544 - warn: sun2000.0 (21396) Control: maximumChargePower is deprecated use "maximumChargingPower" instead 2025-03-06 10:00:20.648 - warn: sun2000.0 (21396) Error while writing to 192.168.200.1 [Reg: 47075, Len: 2, modbusID: 0] with: Modbus exception 128: Unknown error 2025-03-06 10:00:20.648 - info: sun2000.0 (21396) Control: Event is discarded because it could not be processed. inverter.0.control.battery.maximumChargePower 2025-03-06 10:14:58.097 - info: admin.0 (19984) ==> Connected system.user.admin from ::ffff:192.168.188.71 2025-03-06 10:15:41.848 - info: admin.0 (19984) ==> Connected system.user.admin from ::ffff:192.168.188.71 Danke und Gruß Michael EIN NEUER VERSUCH Gruß Michael
-
@michael-birr keine 'Float' (Gleitkommazahl) verwenden! Der Inverter erwartet den Datentyp 'Integer' (ganze Zahl) . Du mußt die Zahl runden (Math.round())
Ich werde die Gleitkommzahlen in der nächsten Version einfach runden.
LG Stephan -
@bolliy Vielen Dank, da bin ich nicht drauf gekommen - Test folgt !
-
Hi bolliy, zuerst einmal ein großes Lob für diesen mega Adapter.
Jetzt hätte ich aber eine Frage bzw. ein Anliegen.
Ich habe folgende Hardware-Konfiguration:10,53 kWp mit SUN2000 10ktl-m1
10kW LUNA2000
SDongleA-05
DTSU666-H -> Modbus-ID 11zusätzlich läuft bei mir aber auch noch ein Balkonkraftwerk mit 840 Wp und Hoyemiles-800.
Bisher habe ich mit einem shelly-1em die Werte des BK abgefragt. Ich wollte aber die Daten auch gerne auf Fusionsolar.
Dazu habe ich mir noch einen DDSU666-H zugelegt. Dieser ist einphasig!
Habe ihn gemäß Anleitung Vernetzung Fremdwechselrichter von Huawei ins System eingebunden.
Da habe ich dem DDSU die ModBusadresse 19 gegeben.
Der DDSU ist über den Dongle eingebunden.
Funktioniert auch alles super. Werte passen auf Fusionsolar. es wird nur nicht der DDSU angezeigt, sondern die Werte sind saldierend. Stört mich aber nicht.
Jetzt würde ich aber gerne mit Deinem Adapter die Daten des DDSU seperat abfragen wollen. er ließt ja den Modbus aus.
Bei Integration-Settings im Adapter ist aber die ModBus-Adresse für den SmartLogger fest verankert. Lässt sich nicht ändern bzw erweitern.
Besteht vielleicht die Möglichkeit das man noch eine zweite SmartLogger Abfrage integriert?
Also z.B. so?
Da wo auch die Möglichkeit besteht die Modbus-ID manuell einzugeben?Wäre mega wenn sowas gehen würde!
Gruß
Johnny -
@prinzeisenherz1 die Abfrage der DDSU erfolgt durch den Smart Logger eigenständig. Du hast aber eine SDongle als Integration gewählt ?!
Man müsste also den 2ten SmartMeter über die Modbus id 19 auslesen. Das bedeutet allerdings die Erstellung eines weiteren Treibers. Das wird leider nicht ohne größeren Aufwand funktionieren.Es gibt aber einen Fork zu meinem Projekt. Vielleicht wäre diese Anpassung ein Ansatz um dein Anliegen umzusetzen. https://github.com/edyso/ioBroker.sun2000
Ansonsten kannst du gerne ein issue hier https://github.com/bolliy/ioBroker.sun2000/issues anlegen. Dann können wir schauen ob sich weitere Interessenten finden, die dein Anliegen unterstützen.
LG Stephan
-
Hi bolliy danke für Deine Antwort.
Welche Anpassung ist denn in dem Fork?
Ich habe gestern mal ein issue auf github angelegt, mit der Hoffnung das diese Option vielleicht doch noch einzug in Deinem Adapter hält!Wäre super!!
Gruß Johnny -
@prinzeisenherz1 das steht im github repository: "this fork reads meter-data directly from comunication between inverter and smartmeter by a rs485-adapter"
-
Hallo zusammen,
ich hatte per Blockly versucht den Wert für den "sun2000.0.inverter.0.battery.dischargeCutoffCapacity" zu setzen. Leider scheint das nicht zu funktionieren. Hat jemand einen Tipp für mich? Muss ich da noch etwas beachten, um den Wert zu setzen?
<block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="3g`Uj6f2os+y,26H.+)!" x="88" y="63"> <field name="SCHEDULE">59 23 14 10 *</field> <statement name="STATEMENT"> <block type="control" id="v0!u]czk1PE^j_W+r~0t"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sun2000.0.inverter.0.battery.dischargeCutoffCapacity</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="U*N?9F7L;1L0hMZo}(H1"> <field name="NUM">5</field> </block> </value> </block> </statement> </block>
-
@surfer09 du musst den entsprechenden Control state ändern: sun2000.0.inverter.0.control.battery.dischargeCutoffCapacity
Stephan
-
@bolliy Mensch, super! Danke dir!
-
@surfer09 alle Einstellungen stehen im Wiki: https://github.com/bolliy/ioBroker.sun2000/wiki/Battery-control
-
@fredi-wiegisser laut Huawei Service Request, sehen sie hier keinen Fehler bei sich. Schade, dann bleibt die Uhrzeit halt falsch bis Huawei merkt, dass die Register fehlerhafte Inhalte haben.
-
@bolliy Also ich habe diese Warnmeldung jetzt auch wieder im log,
obwohl der SDongle aktivert ist, und ID1 hat ??Error while reading from 10.79.1.255 [Reg: 37100, Len: 38, modbusID: 1] with: Timed out
Modbus Timing auto-adjust ist auch aktiviert ?
Der Adapter läuft sonst super, aber immer diese Meldungen.
Was kann man denn noch anpassen ? -
@martink wie viele timeout Fehler treten am Tag auf?
Sofern diese bei der Änderung des Betriebszustands auftreten, ist dieses tolerierbar.Ansonsten bitte dieses beachten: https://github.com/bolliy/ioBroker.sun2000/wiki/Fehlerprotokollierung-und-Fehlerbehebung-(troubleshooting)
Stephan
-
@bolliy Also in den letzten 24 Std waren es Insgesamt 273 Warnmeldungen. Alle beziehen sich auf den selben Timeout-Fehler beim Lesen von Daten von der IP-Adresse 10.79.1.255 über Modbus. Immer nur dieser Code:
[Reg: 37113, Len: 2, modbusID: 1] with: Timed out
Reg: 32064, Reg: 32080 Reg: 37100
Reg: 37113, Reg: 47415