ioBroker.deyeidc icon indicating copy to clipboard operation
ioBroker.deyeidc copied to clipboard

Rechnungsfehler im Compute

Open zrockyy opened this issue 1 year ago • 16 comments

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.

zrockyy avatar Aug 11 '24 09:08 zrockyy

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

raschy avatar Aug 11 '24 15:08 raschy

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!

zrockyy avatar Aug 12 '24 08:08 zrockyy

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'?

raschy avatar Aug 12 '24 09:08 raschy

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.

zrockyy avatar Aug 13 '24 16:08 zrockyy

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.

raschy avatar Aug 13 '24 20:08 raschy

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.

MarAlMe avatar Aug 14 '24 06:08 MarAlMe

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

raschy avatar Aug 14 '24 08:08 raschy

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.

MarAlMe avatar Aug 14 '24 19:08 MarAlMe

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

raschy avatar Aug 14 '24 20:08 raschy

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.

MarAlMe avatar Aug 15 '24 08:08 MarAlMe

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.

zrockyy avatar Aug 15 '24 09:08 zrockyy

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.

raschy avatar Aug 15 '24 09:08 raschy

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.

sventy4 avatar Aug 18 '24 20:08 sventy4

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.

raschy avatar Aug 18 '24 20:08 raschy

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

sventy4 avatar Aug 18 '24 20:08 sventy4

@sventy4 Problem gelöst ?

raschy avatar Aug 27 '24 15:08 raschy