NEWS
[Adapter] cloudfreie Auslesung von Deye-Invertern
-
@rene55
Das sind schon Fehler :deyeidc.0 2024-09-05 10:45:00.289 error TypeError: Cannot read properties of undefined (reading 'registerStart') | TypeError: Cannot read properties of undefined (reading 'registerStart') at idcCore.readCoils (/opt/iobroker/node_modules/iobroker.deyeidc/lib/idc-core.js:149:56) at Deyeidc.onData (/opt/iobroker/node_modules/iobroker.deyeidc/main.js:176:37) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.deyeidc/main.js:154:10) at Socket.emit (node:events:519:28) at addChunk (node:internal/streams/readable:559:12) at readableAddChunkPushByteMode (node:internal/streams/readable:510:3) at Readable.push (node:internal/streams/readable:390:5) at TCP.onStreamRead (node:internal/stream_base_commons:191:23)
Steht auch als ERROR im Log :
-
@romeleitis Da muss ich dir recht geben. Die waren aber oben nicht zu sehen! Seit wann kommen die Fehler? Denn oben sah alles ganz hervorragend aus.
-
@rene55
Moin Rene!
Ich bräuchte noch ein wenig Nachhilfe bei IoBroker.
Wo finde ich das Log, welches Ihr immer im Code Fenster vorstellt?
Nichts für ungut, danke. -
@henry-3 Meinst du das von z.B. romeleitis? Dann kannst du im Expertenmodus in den Instanzen den Loglevel vom deyeidc auf 'debug' stellen. Dann spuckt der Adapter viele hilfreiche Dinge aus.
-
Ah ha
-
Die Fehler habe ich jetzt schon eine ganze Weile.
Ursprünglich hatte ich einen Deye Sun 800 und bin nun auf einen Deye Sun 2000 gewechselt.
Irgend eine Idee, was das sein könnte? -
@romeleitis Bei den spärlichen Angaben etwas schwierig. Keine Ahnung welche Register abgefragt werden und wie hoch das Intervall ist. Eventuell fragst du den Inverter zu oft ab und der verschluckt sich.
-
Hallo @Rene55
Hab seid längerem diesen Fehler:
Der WR ist Online, erreichbar und liefert alle Daten, wie es sein soll.
Hab noch zwei weitere Instancen von dem Adapter am laufen, kommt da auch hin und wieder so vor.
Hast du eine Idee wo das her kommt ?
Gruß Stephan
-
@stephanh Um die Uhrzeit sollte ja genug produziert werden damit der WR aktiv ist. Der Meldung nach kann der WR nicht erreicht werden. Daher würde ich tippen, dass das Netzwerk ein wenig spinnt. Natürlich ist die Verbindung zum Adapter empfindlicher als die Verbindung zur Cloud. Daher ist da scheinbar alles ok und hier gibt es den Fehler. Kannst du bitte mal prüfen, ob der WR wirklich dauerhaft erreichbar ist (ping 192.168.178.233 -t).
-
@rene55 Ja es ist der WR, schein wohl nee Macke zu haben. Hab nee 70Mbit verbindung über WLAN. Der Shelly, der den WR ebenfalls mist. Zeigt Produktion an.
Danke für deinen Hinweis.
-
@rene55 Ich frage alle 60 Sekunden ab. Als Register habe ich die im deyeidc.Sun2000.json vorgegebenen verwendet. Passt da ggf. etwas mit dem Sun2000 G4 nicht?
-
@romeleitis 60 Sekunden sollten für den Sun2000 kein Problem sein. Wo stehen wir derzeit? Ich hab da gerade die Übersicht bei dir verloren.
-
@Rene55 Ich hatte ursprünglich einen Deye Sun 600. Dann bin ich auf einen Deye Sun 2000 G4 gewechselt. Die installierte Instanz hatte ich so in IOBroker belassen und habe nur die Register und Spulen so angepasst, wie es das deyeidc.Sun2000.json vorgibt.
Ich habe seitdem permanent die Meldungen im Log :deyeidc.0 2024-09-05 10:45:00.289 error TypeError: Cannot read properties of undefined (reading 'registerStart') | TypeError: Cannot read properties of undefined (reading 'registerStart') at idcCore.readCoils (/opt/iobroker/node_modules/iobroker.deyeidc/lib/idc-core.js:149:56) at Deyeidc.onData (/opt/iobroker/node_modules/iobroker.deyeidc/main.js:176:37) at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.deyeidc/main.js:154:10) at Socket.emit (node:events:519:28) at addChunk (node:internal/streams/readable:559:12) at readableAddChunkPushByteMode (node:internal/streams/readable:510:3) at Readable.push (node:internal/streams/readable:390:5) at TCP.onStreamRead (node:internal/stream_base_commons:191:23)
Stimmt da ggf. etwas nicht mit den Register und Spuleneinstellungen? Sind die beim G4 ggf. anders als im Vorgänger?
-
@romeleitis Ich bin nicht sicher, ob es einen grundsätzlichen Unterschied zwischen G3 und G4 gibt. Hardwaremäßig bestimmt, aber Firmwareseitig? Wir können ja mal die spasseshalber Versionsstände vom WR vergleichen.
Ich kann diesen Fehler tatsächlich produzieren, wenn zwei Instanzen auf den WR einwirken. Kann das bei dir auch sein? Muss ja nicht der Adapter sein, kann auch ein anderes Gerät sein, was darein 'fuscht'. -
Nach ca. 5 Monaten Betrieb der zwei Deye Sun-12K-SG04LP3-EU habe ich jetzt einige Daten sammeln können. Meine aktuellen Register sehen so aus:
{ "ipaddress": "192.168.100.4", "port": 8899, "logger": 2791138173, "pollInterval": 60, "registers": [ { "registerStart": 99, "registerEnd": 130 }, { "registerStart": 500, "registerEnd": 541 }, { "registerStart": 586, "registerEnd": 680 } ], "coils": [ { "register": 99, "rules": 1, "key": "Battery Equalization V", "name": "Equalization V", "unit": "V", "factor": 2, "nullable": false }, { "register": 100, "rules": 1, "key": "Battery Absorption V", "name": "Absorption V", "unit": "V", "factor": 2, "nullable": false }, { "register": 101, "rules": 1, "key": "Battery Float V", "name": "Float V", "unit": "V", "factor": 2, "nullable": false }, { "register": 104, "rules": 1, "key": "Zero Export power", "name": "Zero Export power", "unit": "", "factor": 0, "nullable": false }, { "register": 108, "rules": 1, "key": "Max A Charge", "name": "Max A Charge", "unit": "A", "factor": 0, "nullable": false }, { "register": 109, "rules": 1, "key": "Max A discharge", "name": "Max A discharge", "unit": "A", "factor": 0, "nullable": false }, { "register": 114, "rules": 1, "key": "Battery charging efficiency", "name": "Battery charging efficiency", "unit": "%", "factor": 1, "nullable": false }, { "register": 115, "rules": 1, "key": "Battery capacity ShutDown", "name": "battery capacity ShutDown", "unit": "%", "factor": 0, "nullable": false }, { "register": 116, "rules": 1, "key": "Battery capacity Restart", "name": "battery capacity Restart", "unit": "%", "factor": 0, "nullable": false }, { "register": 117, "rules": 1, "key": "Battery capacityLowBatt", "name": "battery capacityLowBatt", "unit": "%", "factor": 0, "nullable": false }, { "register": 127, "rules": 1, "key": "grid charging capacity point", "name": "grid charging capacity point", "unit": "%", "factor": 0, "nullable": false }, { "register": 128, "rules": 1, "key": "Grid charge the battery current", "name": "Grid charge the battery current", "unit": "A", "factor": 0, "nullable": false }, { "register": 130, "rules": 1, "key": "Grid is charged to enable", "name": "Grid is charged to enable", "unit": "", "factor": 0, "nullable": false }, { "register": 500, "rules": 1, "key": "health_state", "name": "run state", "unit": "", "factor": 0, "nullable": false }, { "register": 516, "rules": 1, "key": "Total charge of the battery", "name": "Gesamtladung der Batterie", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 518, "rules": 1, "key": "Total discharge of the battery", "name": "Gesamtentladung der Batterie", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 520, "rules": 1, "key": "Day_GridBuy_Power_Wh", "name": "gekaufte Leistung", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 521, "rules": 1, "key": "Day_GridSell_Power_Wh", "name": "Einspeisung", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 522, "rules": 1, "key": "Total_GridBuy_Power", "name": "Total_GridBuy_Power", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 524, "rules": 1, "key": "Total_GridSell_Power", "name": "Total_GridSell_Power", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 526, "rules": 1, "key": "Day_Load_Power_Wh", "name": "Electricity consumption for the day", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 527, "rules": 1, "key": "Total_Load_Power", "name": "Total_Load_Power", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 529, "rules": 2, "key": "Day_PV_Power_Wh", "name": "Total PV generation on the day", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 534, "rules": 1, "key": "Total_PV_power_low", "name": "Erzeugte PV-Leistung", "unit": "kWh", "factor": 1, "nullable": false }, { "register": 540, "rules": 6, "key": "Temperature_DC_Transformer", "name": "Temperature DC Transformer", "unit": "°C", "factor": 1, "nullable": false }, { "register": 541, "rules": 6, "key": "Temperature_Heat_Sink", "name": "Temperature Heat Sink", "unit": "°C", "factor": 1, "nullable": false }, { "register": 586, "rules": 6, "key": "Temperature_Battery", "name": "Temperatur Battery", "unit": "°C", "factor": 1, "nullable": false }, { "register": 587, "rules": 1, "key": "Battery_Voltage", "name": "Battery Voltage", "unit": "V", "factor": 2, "nullable": false }, { "register": 588, "rules": 1, "key": "Battery_Level", "name": "Battery SOC", "unit": "%", "factor": 0, "nullable": false }, { "register": 590, "rules": 2, "key": "Battery_Output_Power", "name": "Battery Power", "unit": "W", "factor": 0, "nullable": false }, { "register": 591, "rules": 2, "key": "Battery_output_current", "name": "Battery Current", "unit": "A", "factor": 2, "nullable": false }, { "register": 598, "rules": 1, "key": "Grid phase voltage1", "name": "L1 Spannung", "unit": "U", "factor": 1, "nullable": false }, { "register": 599, "rules": 1, "key": "Grid phase voltage2", "name": "L2 Spannung", "unit": "U", "factor": 1, "nullable": false }, { "register": 600, "rules": 1, "key": "Grid phase voltage3", "name": "L3 Spannung", "unit": "U", "factor": 1, "nullable": false }, { "register": 607, "rules": 2, "key": "P_GRID_LD_TOTAL", "name": "Total active power from side to side of the grid", "unit": "W", "factor": 0, "nullable": false }, { "register": 610, "rules": 1, "key": "grid side inner current A", "name": "Strom L1", "unit": "A", "factor": 2, "nullable": false }, { "register": 611, "rules": 1, "key": "grid side inner current B", "name": "Strom L2", "unit": "A", "factor": 2, "nullable": false }, { "register": 612, "rules": 1, "key": "grid side inner current C", "name": "Strom L3", "unit": "A", "factor": 2, "nullable": false }, { "register": 613, "rules": 1, "key": "grid Out-of current A", "name": "Out-of-grid - current A", "unit": "A", "factor": 2, "nullable": false }, { "register": 619, "rules": 2, "key": "P_GRID_CT_TOTAL", "name": "Out-of-grid – total power", "unit": "W", "factor": 0, "nullable": false }, { "register": 630, "rules": 1, "key": "grid Inverter output phase", "name": "Inverter output phase", "unit": "A", "factor": 2, "nullable": false }, { "register": 643, "rules": 1, "key": "P_UPS_LOAD_TOTAL", "name": "UPS load-side total power", "unit": "W", "factor": 0, "nullable": false }, { "register": 653, "rules": 1, "key": "P_BACKUP_LOAD_TOTAL", "name": "Load total power", "unit": "W", "factor": 0, "nullable": false }, { "register": 672, "rules": 1, "key": "PV1_Leistung", "name": "PV1 - Leistung", "unit": "W", "factor": 0, "nullable": false }, { "register": 673, "rules": 1, "key": "PV2_Leistung", "name": "PV2 - Leistung", "unit": "W", "factor": 0, "nullable": false }, { "register": 676, "rules": 1, "key": "PV1_Spannung", "name": "PV1 - Spannung", "unit": "V", "factor": 1, "nullable": false }, { "register": 677, "rules": 1, "key": "PV1_Strom", "name": "PV1 - Strom", "unit": "A", "factor": 1, "nullable": false }, { "register": 678, "rules": 1, "key": "PV2_Spannung", "name": "PV2 - Spannung", "unit": "V", "factor": 1, "nullable": false }, { "register": 679, "rules": 1, "key": "PV2_Strom", "name": "PV2 - Strom", "unit": "A", "factor": 1, "nullable": false }, { "register": 535, "rules": 1, "key": "Total_PV_power_high", "name": "Erzeugte PV-Leistung", "unit": "kWh", "factor": 0, "nullable": false } ], "computes": [ { "values": "PV1_Leistung+PV2_Leistung", "key": "PV1_PV2_Leistung", "name": "PV1+PV2 - Leistung", "unit": "W", "factor": 0 }, { "values": "Day_PV_Power_Wh-Day_GridSell_Power_Wh", "key": "Day_Eigenverbrauch", "name": "Day Eigenverbrauch", "unit": "kWh", "factor": 0 } ] }
Grundsätzliche stellt der Master keine Summen zur Verfügung, d.h. jeder WR zeigt nur an, was er alleine ausgegeben hat.
Nicht alle Register machen sin, so geben die Register P_GRID_CT_TOTAL und P_GRID_LD_TOTAL sowie P_UPS_LOAD_TOTAL und P_BACKUP_LOAD_TOTAL die gleichen Werte aus.
Interessant schaut es bei den Total_xy_high und Total_xy_low aus. Diese zwei 16bit-Register sind eigentlich ein 32bit-Register nur das die Hälfte vertauscht ist, d.h. das low-Bit kommt vor dem high-Bit. -
@elektrofix-ol Das ist ja schön, dass mal Rückmeldungen kommen, die mir einfach nicht auffallen.
@elektrofix-ol sagte in [Adapter] cloudfreie Auslesung von Deye-Invertern:
Grundsätzliche stellt der Master keine Summen zur Verfügung
Ist das ist WR-spezifisch oder gibt es dafür keine Register?
@elektrofix-ol sagte in [Adapter] cloudfreie Auslesung von Deye-Invertern:
Diese zwei 16bit-Register sind eigentlich ein 32bit-Register
Welche Regel wendest du dafür an? Evtl muss ich Regeln anpassen oder hinzufügen.
Versuche hier mal auf Register 534 die Regel 3 oder 4 anzuwenden. -
@rene55 jeder WR (Master oder Slave) gibt nur die Werte raus, die bei ihm auch gemessen wurden.
Du hast sogar unterschiedliche Werte, so hat der Slave den Akku mehr geladen als der Master also ist die Total_charge_of_the_battery beim Slave höher als bei MasterDie Regel 3 und 4 passen nicht, das hatte ich schon im Mai ausprobiert. Die Regeln nehmen [16-High].[16Low] und der Daye gibt [16Low].[16High] raus. Der Daye müsst die Register 535 und 534 tauschen, dann würde es mit der Regel 3 oder 4 gehen.
Ich habe es jetzt mit einer Berechnung gelöst:
{ "values": "Total_PV_power_high*10000", "key": "Total_PV_power", "name": "PV Gesamtertrag WR", "unit": "kWh", "factor": 0 }, { "values": "Total_PV_power+Total_PV_power_low", "key": "Total_PV280", "name": "PV Gesamtertrag", "unit": "kWh", "factor": 0 }
Das High-Register*10000 ==> ZwischenSpeicher + low-Register ==> Total_PV280
Eleganter wäre, wenn Du das als Regel einbinden könntest, aber so geht's auch.Edit: Noch einmal ausprobiert mit der Regel 3+4: Es wir ein Wert von 7830,1 kWh ausgegeben es hätte aber 11276,5 kWh sein müssen.
-
@elektrofix-ol Bei den 'Summen' hatten wir uns wohl missverstanden. Klar kommt nur das raus, was drin ist. Ich dachte da mehr an die Aufsummierten Leistungen.
Zum Thema 16-bit-low/16-bit-high. Kannst du den Adapter bitte mal direkt von Github runterladen und dann für das Register 534 die Regel 13 versuchen. Vllt. kommt dann was sinnvolles raus.
-
@Rene55 Ich verstehe es nicht mehr. Ich hatte nun den Deye Adapter inkl. Instanzen gelöscht. Dann IOBroker neu gestartet. Adapter wieder installiert und nur IP und Seriennummer eingetragen. Abfrageintervall auf default (330 Sekunden).
Trotzdem tauchen weiterhin alle 30 Sekunden Fehler im Log auf (30 Sekunden hatte ich vor dem Löschen eingestellt) :
-
@romeleitis Dazu brauche ich mehr Infos. Welche Version, woher installiert, welche .json ist importiert?