raschy / ioBroker.deyeidc

Reading out the inverter without cloud
MIT License
22 stars 5 forks source link

Rechnungsfehler im Compute #122

Open zrockyy opened 1 month ago

zrockyy commented 1 month ago

Moin. Bei mir sind die Berechnungen im Compute falsch. Als Beispiel: PV1_Leistung+PV2_Leistung (PV_Gesamtleistung) PV1_Leistung: 8000W PV2_Leistung: 4000W Nun sollte man glauben er spuckt 12000W aus, Falsch! es sind 80000000W Das heißt er multipliziert PV1_Leistung mit 10000 und setzt das ergebnis als PV_Gesamtleistung

Selben Fehler habe ich bei Hausverbrauch. Kann mir das einer begründen wieso er nicht pv1 und pv2 richtig addieren kann? Die Werte sind so komplett nutzlos, würde er wenigstens 12000000W ausgeben, könnte ich das ja /10000 teilen

Ebenso sind die ganzen GRID Werte falsch. ~63700W - Aber die logge ich nicht.

raschy commented 1 month ago

Mag sein: Die Werte sind so komplett nutzlos, Zeig mal deine Formel und stell bitte mal den Adapter auf debug. Dann sehen wir weiter.

zrockyy commented 1 month ago
deyeidc.0 2024-08-12 10:10:00.047 debug [computeData] {"values":"PV1_PV2_Leistung","key":"PV_Gesamt-Cluster","name":"PV_Gesamt-Cluster","unit":"W","factor":0}
deyeidc.0 2024-08-12 10:10:00.047 debug [computeData] {"values":"Day_PV_Power_Wh-Day_GridSell_Power_Wh","key":"Day_Eigenverbrauch","name":"Day Eigenverbrauch","unit":"kWh","factor":0}
deyeidc.0 2024-08-12 10:10:00.047 debug [computeData] {"values":"P_BACKUP_LOAD_TOTAL","key":"Hausverbrauch","name":"Hausverbrauch","unit":"W","factor":0}
deyeidc.0 2024-08-12 10:10:00.047 debug [computeData] {"values":"PV1_PV2_Leistung+P_GEN_TOTAL","key":"PV_Gesamtleistung","name":"PV - Gesamtleistung","unit":"W","factor":0}
deyeidc.0 2024-08-12 10:10:00.047 debug [computeData] {"values":"PV1_Leistung+PV2_Leistung","key":"PV1_PV2_Leistung","name":"PV1+PV2 - Leistung","unit":"W","factor":0}
deyeidc.0 2024-08-12 10:10:00.047 debug Data reception for 6 registersets completed

Es sind die Standardformeln, ich habe selber keine Erstellt.

PV1_Leistung+PV2_Leistung = PV1_PV2_Leistung (Fehlerhaft) PV1_PV2_Leistung+P_GEN_TOTAL = PV_Gesamtleistung (fehlerhaft)

Deshalb verstehe ich das nicht. PV1_Leistung ist korrekt, PV2_leistung ist korrekt. Wenn ich PV1_Leistung+PV2_Leistung ist es falsch. da muss ja die ganze mathematik nicht stimmen.

Ich habe Version 0.16 (update am Samstag) hier steht aber es gibt 0.1.0 - Ich weiß aber nicht wie ich das installieren kann. Bin jetzt nicht so der erfahrene Linux User.

EDIT: Ich habe jetzt über "install link, install from github" installiert. Was soll ich sagen. Der Fehler ist behoben oO

Dann kann das hier geschlossen werden, Sorry für die Umstände. Aber auch ein Danke für diesen Adapter!

raschy commented 1 month ago

Na, so ganz korrekt ist die Formel [computeData] {"values":"PV1_PV2_Leistung", ja nicht. Wo ist denn hier die Berechnungsvorschrift, heist das + ?? Hat sich die Debug-Ausgabe verscluckt? Ebenso bei {"values":"P_BACKUP_LOAD_TOTAL",. Was bezweckst du mit dieser 'Berechnung'?

zrockyy commented 1 month ago

Also da stand ein +0 und bei dem anderen glaube ich ein *2 hinter. Das hatte ich rausgenommen um zu schauen ob der Wert dadurch korrekt wird. - War nicht der Fall. Keine Änderung. Daher hatte ich dann hier aufgemacht. Aber es wurde ja durch das Update gehoben, ich kann mir selber nicht erklären was da schief gelaufen sein kann.

raschy commented 1 month ago

Gut zu wissen. Das Compute-Modul ist erst ab der Version 0.0.16 in der Lage, mit numerischen Werten, die nicht aus den Datenpunkten herrühren, umzugehen. Jetzt wäre auch ein "DV1*-.1" möglich, wenn man es denn braucht. Datenpunkte, die nicht vorhanden sind, geben eine Warnung aus.

MarAlMe commented 1 month ago

Ich habe genau das selbe Problem, nutze aufgrund eines Sun5K eine etwas angepasste Config, aber den Wert für PV Gesamtleistung lasse ich mir auch aus PV1 + PV2 erreichen. @raschy die Werte stammen doch aus der Config-Vorlage hier im Repo. Ich verwende diese ebenfalls, nur etwas auf meinen Sun5K angepasst.

raschy commented 1 month ago

Ich habe es gerade noch einmal getestet: Compute_add und hat richtig gerechnet.

MarAlMe commented 1 month ago

Da gerade keine Sonne scheint, habe ich die Werte Battery_Power und Total_Load genommen. Das Ergebnis ist allerdings das Selbe... Der errechnete Wert ist viel zu hoch:

image

image

Es wird offensichtlich keine mathematische Addition durchgeführt, sondern verkettet, wie bei Strings.

raschy commented 1 month ago

Welche Version ist das? Richtig addieren kann der Adapter (leider) erst ab 0.1.0.

MarAlMe commented 4 weeks ago

Da ich gerade auf einen neuen Homeserver umziehe und dafür eine komplett neue ioBroker Instanz aufgesetzt habe, war ich der Meinung, dass die aktuellste Version 0.1.0 ist. Ich bekomme allerdings nur 0.0.16 installiert. Version 0.1.0 ist also noch nicht über das stable Repo verfügbar, richtig?

Da nun beide Instanzen parallel laufen, habe ich diese direkt nebeneinander gehalten:

image

Hier ist sehr schön zu sehen, dass das Problem erst mit der Version 0.0.16 auftritt. Davor hatte die Berechnung korrekt funktioniert.

Edit: ich habe eben die Version 0.1.0 über Github installiert und die Berechnung ist jetzt wieder korrekt. Jetzt muss 0.1.0 nur noch über das stable Repo verfügbar sein.

zrockyy commented 4 weeks ago

Genau. Ich hatte auch 0.0.14 oder so.. habe dann Kumpel iobroker gezeigt und Update gemacht. Dann war die Berechnung Schrott. Hab dann Update über GitHub gemacht und es funktioniert wieder.

raschy commented 4 weeks ago

In der Version 0.016 wurde das Compute-Modul komplett überarbeitet. Da ist dann wohl die "String-Addition" reingerutscht. Die 0.1.0 ist noch etwas zu jung für Stable. Wird aber bald verfügbar sein.

sventy4 commented 3 weeks ago

Ich musste meinen iobroker neu aufsetzen und habe nun einen aktuellen iobroker mit deyeidc in Version 0.1.0. Bei mir tauchen ebenfalls die Fehlermeldungen "Compute Key 'DV1' not found!" auf; leider werden aber auch keine Datenpunkte angelegt.

Screenshot 2024-08-18 222132

Ich habe einen SUN300G3-EU-230 und habe es auch mit dem Import der deyeidc.M80G3.json probiert. Selbes Ergebnis.

Das erhalte ich als debug-Meldungen:

2024-08-18 12:32:58.554 - debug: deyeidc.0 (2046) Redis Objects: Use Redis connection: 127.0.0.1:9001
2024-08-18 12:32:58.563 - debug: deyeidc.0 (2046) Objects client ready ... initialize now
2024-08-18 12:32:58.564 - debug: deyeidc.0 (2046) Objects create System PubSub Client
2024-08-18 12:32:58.564 - debug: deyeidc.0 (2046) Objects create User PubSub Client
2024-08-18 12:32:58.569 - debug: deyeidc.0 (2046) Objects client initialize lua scripts
2024-08-18 12:32:58.571 - debug: deyeidc.0 (2046) Objects connected to redis: 127.0.0.1:9001
2024-08-18 12:32:58.578 - debug: deyeidc.0 (2046) Redis States: Use Redis connection: 127.0.0.1:9000
2024-08-18 12:32:58.580 - debug: deyeidc.0 (2046) States create System PubSub Client
2024-08-18 12:32:58.580 - debug: deyeidc.0 (2046) States create User PubSub Client
2024-08-18 12:32:58.582 - debug: deyeidc.0 (2046) States connected to redis: 127.0.0.1:9000
2024-08-18 12:32:58.618 - info: deyeidc.0 (2046) starting. Version 0.1.0 in /opt/iobroker/node_modules/iobroker.deyeidc, node: v20.16.0, js-controller: 6.0.9
2024-08-18 12:32:58.624 - debug: deyeidc.0 (2046) IP address [192.168.178.12] seems to be valid.
2024-08-18 12:32:58.625 - info: deyeidc.0 (2046) Retrieving data from the inverter will be done every 360 seconds
2024-08-18 12:32:58.625 - debug: deyeidc.0 (2046) checkUserData is ready
2024-08-18 12:32:58.625 - debug: deyeidc.0 (2046) try to connect . . .
2024-08-18 12:32:58.631 - debug: deyeidc.0 (2046) Connected to server
2024-08-18 12:32:58.642 - debug: deyeidc.0 (2046) Response: (payload) {"register":1,"modbus":{"type":"Buffer","data":[6]}}
2024-08-18 12:32:58.657 - debug: deyeidc.0 (2046) Response: (payload) {"register":2,"modbus":{"type":"Buffer","data":[6]}}
2024-08-18 12:32:58.669 - debug: deyeidc.0 (2046) Response: (payload) {"register":3,"modbus":{"type":"Buffer","data":[6]}}
2024-08-18 12:32:58.699 - debug: deyeidc.0 (2046) Response: (payload) {"register":4,"modbus":{"type":"Buffer","data":[6]}}
2024-08-18 12:32:58.699 - debug: deyeidc.0 (2046) Data reception for 4 registersets completed
2024-08-18 12:32:58.700 - debug: deyeidc.0 (2046) [computeData] {"values":"DV1*DC1","key":"DP1","name":"DC Power PV1","unit":"W","factor":0}
2024-08-18 12:32:58.700 - warn: deyeidc.0 (2046) Compute Key 'DV1' not found!
2024-08-18 12:32:58.700 - debug: deyeidc.0 (2046) [computeData] {"values":"DV2*DC2","key":"DP2","name":"DC Power PV2","unit":"W","factor":0}
2024-08-18 12:32:58.700 - warn: deyeidc.0 (2046) Compute Key 'DV2' not found!
2024-08-18 12:32:58.700 - debug: deyeidc.0 (2046) [computeData] {"values":"DV3*DC3","key":"DP3","name":"DC Power PV3","unit":"W","factor":0}
2024-08-18 12:32:58.700 - warn: deyeidc.0 (2046) Compute Key 'DV3' not found!
2024-08-18 12:32:58.700 - debug: deyeidc.0 (2046) [computeData] {"values":"DV4*DC4","key":"DP4","name":"DC Power PV4","unit":"W","factor":0}
2024-08-18 12:32:58.700 - warn: deyeidc.0 (2046) Compute Key 'DV4' not found!
2024-08-18 12:32:58.700 - debug: deyeidc.0 (2046) [computeData] ResultJson: []
2024-08-18 12:32:58.701 - debug: deyeidc.0 (2046) [subscribeWatchpoint] set to 2301126511.Power_Set
2024-08-18 12:32:58.861 - debug: deyeidc.0 (2046) Response: (checkOnlineDate) {"register":0,"modbus":{"type":"Buffer","data":[6]}}

Hat jemand eine Idee, was ich falsch mache und warum keine Daten ankommen? Und woher weiß ich, welche Register der Inverter hat, hzw. welche Konfig zu benutzen ist? Ich habe zu meinem leider keinerlei Doku gefunden.

raschy commented 3 weeks ago

Nunja, das ist ja kein Rechenfehler! Wenn es den 'DV1' nicht gibt, kann er auch nicht rechnen. So wie das aussieht, sind entweder keine Coils angelegt. {"register":1,"modbus":{"type":"Buffer","data":[6]}} oder (wahrscheinlicher) ist die Seriennummer nicht korrekt. Die Datei für den M80G3 ist nach meiner Meinung korrekt. Bitte diese beiden Punkte prüfen. Dann wird der Adpater beim nächsten Datenabruf den Datenpunkt DV1 usw. anlegen und es wird laufen.

sventy4 commented 3 weeks ago

Danke, @raschy. Ich verstehe, dass es kein Rechenfehler ist, sondern ein Symptom. Ich prüfe morgen gerne nochmals die Seriennummer. Coils sind da.

raschy commented 2 weeks ago

@sventy4 Problem gelöst ?