NEWS
Test Adapter sun2000 v0.1.x - Huawei Wechselrichter
-
@gelbwichtel aus dem WR kann man keine EnergyYield-Werte nach strings auslesen. Zumal der dailyEnergyYield die Batterie-lade-/entlade-Energiewerte beinhalten. https://github.com/bolliy/ioBroker.sun2000/wiki/Energieertrag-(Yield-today)
Ggf. würde eine Riemann Summierung (Intergral) über die Stringpowerwerte (sun2000.0.inverter.0.string.PV[1|2]Power) die Lösung sein. Dann erhält man aber eher den SolarYield der Strings und nicht den EnergieYield der Strings.
LG Stephan
@bolliy Vielen Dank für die Info. Wäre auch zu schön gewesen
LG Gelbwichtel -
@bolliy ich habe ioBroker und Node.js komplett neu installiert auf meinem Windows Rechner, und die Admin Credentials neu aufgesetzt. Nun habe ich ioBroker wieder verfügbar. Aber nun lässt ich dein Adapter 1.0.1 nicht mehr korrekt installieren, es fehlen die Inverter und Meter Objekte usw., und das Protokoll sagt u.A. "Adapter Settings incomplete". Wenn ich den Adapter laufen lassen will, geht er sofort wieder auf Stop. Hast du eine Ahnung an was das liegen könnte?
-
@fredi-wiegisser bitte die Main Settings des Adapters zeigen.
-
@fredi-wiegisser sagte in Test Adapter sun2000 v0.1.x - Huawei Wechselrichter:
und das Protokoll sagt u.A. "Adapter Settings incomplete".
Protokolle und Logs bitte NICHT als Screenshot, sondern als Text, eingebettet in Code-Tags (</>) in den Post hängen.
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge
-
@bolliy hatte ich vergessen sorry. Ich habe v1.0.1 via NPM installiert. Ausser der Modbus ID habe ich alle Settings auf ihren Default Werten belassen. Mein OS ist Win 11 64 Bit, Browser ist Edge. Admin Adapter ist auf v7.4.10. Und wie gesagt, ist bis gestern alles immer gut gelaufen, bis zum Punkt wo ich den Admin Zugang verloren hatte (wegen Admin Adapter Update) und heute alles neu installieren musste. Node.js: v20.18.3 und NPM: 10.8.2.
Und hier noch das aktuelle Log vom Issue, wenn ich den Adapter starte stop er sogleich wieder.
2025-03-04 12:24:43.831 - info: host.Fredi-NB instance system.adapter.sun2000.0 in version "1.0.1" started with pid 10828 2025-03-04 12:24:44.722 - info: sun2000.0 (10828) 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:24:44.748 - error: sun2000.0 (10828) *** Adapter deactivated, Adapter Settings incomplete! *** 2025-03-04 12:24:44.749 - info: host.Fredi-NB instance "system.adapter.sun2000.0" disabled via .alive 2025-03-04 12:24:44.751 - info: host.Fredi-NB "system.adapter.sun2000.0" disabled 2025-03-04 12:24:44.751 - info: host.Fredi-NB stopInstance system.adapter.sun2000.0 (force=false, process=true) 2025-03-04 12:24:44.752 - info: host.Fredi-NB stopInstance system.adapter.sun2000.0 send kill signal 2025-03-04 12:24:44.754 - info: sun2000.0 (10828) Got terminate signal TERMINATE_YOURSELF 2025-03-04 12:24:44.755 - info: sun2000.0 (10828) cleaned everything up... 2025-03-04 12:24:44.756 - info: sun2000.0 (10828) terminating 2025-03-04 12:24:44.756 - info: sun2000.0 (10828) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason 2025-03-04 12:24:45.258 - info: sun2000.0 (10828) terminating 2025-03-04 12:24:45.288 - info: host.Fredi-NB instance system.adapter.sun2000.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)``` code_text
code_text
-
@bolliy Schande über mich, ich hatte die IP vergessen, jetzt läuft es wieder. Manchmal sieht man vor lauter Bäume den Wald nicht mehr. Bitte sehr um Entschuldigung.
-
@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 !