Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Verhindern der YieldDay Rücksetzung bei Neustart bis Tagesende #848

Closed
knickohr opened this issue Apr 2, 2023 · 23 comments
Assignees
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed question Further information is requested resolved issue resolved

Comments

@knickohr
Copy link

knickohr commented Apr 2, 2023

Seit ein paar Tagen fällt mir auf das der Yield Day hin und wieder Abends zurück gesetzt wird wenn sich ein Inverter ausschaltet und dann doch nochmal aufwacht.

Das Ganze ist wetterbedingt. Hin und wieder kommt es Abends vor das die Sonne durch Wolken abgeschattet wird, der Inverter geht offline. Kommt die Sonne dann noch nochmal durch die Wolken, dann startet der Inverter neu und resettet dabei sein YieldDay.

Das Rücksetzen des YieldDay der einzelnen Inverter sollte verhindert werden bis zum Tagesende, meinetwegen Mitternacht.

Ich könnte mir auch vorstellen das es Morgens auftritt, da fällt es halt nur weniger auf.

CBF82B3B-B26F-4A4C-998B-9E605988A2A8

@knickohr knickohr changed the title Verhindern der YieldDay Rücksetzung bis Tagesende Verhindern der YieldDay Rücksetzung bei Neustart bis Tagesende Apr 2, 2023
@beegee3
Copy link
Contributor

beegee3 commented Apr 3, 2023

der YieldDay Reset kommt vom Inverter selbst, wenn er sich ausschaltet und dann doch nochmal aufwacht.
Das wurde in #773 schon mal angesprochen. Eine Korrektur seitens Ahoy ist wahrscheinlich sehr aufwändig (wegen der variablen "Reset" Möglichkeiten).

@knickohr
Copy link
Author

knickohr commented Apr 3, 2023

Verdammt, ich habe mir fast schon sowas gedacht 😢 ich muß das mal beobachten ob der Inverter dann nur wirklich bei 0 anfängt oder ob er doch noch zum alten Wert dazu addiert, falls er wieder richtig aufwacht am selben Tag.

Letzteres wäre ideal, dann könnte ich einfach per Max. Wert abfragen und mir es zu Mitternacht selbst resetten.

@lumapu lumapu added the question Further information is requested label Apr 4, 2023
@sumerland
Copy link

Ich habe gestern das gleiche Problem beobachtet, als bei schlechtem Wetter der Himmel zu lange zu dunkel war.

Könnte man nicht in einem regelmäßigem Intervall eine Kopie des vorigen YieldDay Werts mit dem aktuellen vergleichen, und im Fall des Resets eine Kopie des alten Werts in einer Variablen (beispielsweise YieldDayMax, die zu Beginn des Tages zu Null gesetzt wird) aufaddieren? Über MQTT könnte man dann eine alternative YieldDay Variante anbieten, die die Summe aus aktuellem YieldDay (vom Inverter) und dem Wert von YieldDayMax ist. Um Mitternacht wird YieldDayMax dann wieder genullt.

@knickohr
Copy link
Author

Im Node-Red mache ich das schon. Einfach nur den Max-Wert halten. Mir geht es weniger darum das da nachdem ein Inverter aussteigt und wieder neu anfängt, sondern eher darum das eben das Total weg ist. So habe ich zumindest das aufsummierte über den Tag. Die paar Wattstunden die dann am Abend fehlen machen das Kraut nicht fett. Und wenn es frühmorgens passiert ist es erst gar nicht schlimm.

Schön wäre halt, wenn es aus der DTU halt korrekt raus kommt. Dann wäre auch der Wiedereinstieg mit Hilfe einer Variable leicht machbar, denn die DTU weiß ja ganz genau welche Inverter einen kurzen Blackout hatten. Aber das muß halt jemand programmieren der etwas von diesem C, C++ und weißgottwas versteht.

@lumapu lumapu self-assigned this Jul 28, 2023
lumapu added a commit that referenced this issue Jul 28, 2023
* merge PR #1048 version and hash in API, fixes #1045
* fix: no yield day update if yield day reads `0` after inverter reboot (mostly on evening) #848
* try to fix Wifi override #1047
* added information after NTP sync to WebUI #1040
@knickohr
Copy link
Author

knickohr commented Aug 18, 2023

Ich rolle das Thema nochmal auf und stresse es etwas 😅

Kann man die YieldDay Rücksetzung der einzelnen Inverter nicht unterbinden bis die DTU am Tagesende in den Status offline geht ? So würde selbst bei einem Inverterausfall, Inverter-Reboot (Restart), oder Gewitter das YieldDay des Inverters bei Neustart dort weitergezählt werden wo es aufhörte.

@lumapu
Copy link
Owner

lumapu commented Sep 16, 2023

besteht das Problem immer noch? Oder hat die neue Statemachine jetzt hier für Ruhe gesorgt oder gar die Heuristik der Kanalvorhersage?

@knickohr
Copy link
Author

Das Problem wird immer bestehen solange die Inverter unter Tags offline gehen, bzw. sogar die komplette DTU (alle Inverter). Ich denke das Problem kann man so nicht lösen, außer man bindet die Rücksetzung an den Night Behavour oder Mitternacht. Wie man das aber am sinnvollsten macht und wie es dann allen Recht ist, steht auf einem anderen Blatt.

@sumerland
Copy link

Ich bin auf 0.7.36 unterwegs und heute Abend wurde YieldDay wieder wetterbedingt vorzeitig resettet.

@lumapu
Copy link
Owner

lumapu commented Sep 18, 2023

wie viele Wh wurden danach noch geloggt? Evtl. macht es Sinn ab diesem reset einfach nicht mehr zu loggen (kein MqTT mehr)

@sumerland
Copy link

sumerland commented Sep 18, 2023

Leider gar keine mehr. Es war eh schon kurz vor Tagesende. Ich finde knickohrs Vorschlag eigentlich gut - Rücksetzen zum Sonnenuntergang oder Mitternacht (ggf. als Option in der GUI anwählbar).

@knickohr
Copy link
Author

knickohr commented Sep 18, 2023

Das Problem ist das halt der Inverter zurück setzt und wieder bei Null anfängt. Somit müßte man sich in der DTU den alten Wert speichern und was dann noch kommt aufaddieren.

Mit MQTT kann man sich das ja zusammen basteln, aber in der DTU ist es halt doch ein Programmieraufwand, vor allem wenn man viele Inverter da dran hängen hat.

@lumapu
Copy link
Owner

lumapu commented Sep 18, 2023

stimmt, die DTU lebt ja noch, daher weiß die ja Bescheid. Das klingt machbar, damit wären wir für die nächste Sonnenfinsternis gerüstet 😊

Am 12.08.2026 in München 😂

@sumerland
Copy link

Keine Scherze bitte :-) Ein dunkler Gewitterhimmel reicht schon. Oder gestern der Regen am späten Nachmittag und das kurze Aufklaren danach.

@beegee3
Copy link
Contributor

beegee3 commented Sep 19, 2023

@lumapu: folgende Idee, um das in den Griff zu bekommen:
was man braucht, sind für jeden channel von jedem Inverter für YieldDay ein Offset und den letzten Messwert (kann man vielleicht als zusätzliche Felder in deviceFieldAssignment einbauen). Nenne sie hier mal offYD und lastYD.
Wenn ich das richtig sehe, werden neue Werte in addValue bzw. setValue (bei MI Invertern) verarbeitet.
Im Fall FLD_YD müsste man nun den aktuellen Wert (hier actYD) mit lastYD vergleichen. Ist lastYD > actYD, so wird offYD um lastYD erhöht (so werden auch mehrere Inverter Neustarts am Tag berücksichtigt). Als YieldDay wird offYD + actYD eingetragen, hier mal für addValue:

...
} else if (FLD_YD == rec->assign[pos].fieldId) {
    float actYD = (REC_TYP)(val) / (REC_TYP)(div) * generalConfig->yieldEffiency;
    if (lastYD > actYD)
        offYD += lastYD;
    lastYD = actYD;
    rec->record[pos] = offYD + actYD;
} else {
...

Bei einem gewünschten YieldDay Reset müssen offYD und lastYD natürlich auch auf 0 gesetzt werden.

Damit sollten die einzelnen channel der Inverter immer den korrekten YieldDay Wert haben und alle darauf basierenden Berechnungen ohne weitere Anpassungen richtig sein.

@knickohr
Copy link
Author

Ja, so habe ich das auch in Node-Red realisiert 😉

@beegee3
Copy link
Contributor

beegee3 commented Sep 19, 2023

@knickohr: hast du wohl schon mal beschrieben und ich hab' die Idee da geklaut 😆

@lumapu
Copy link
Owner

lumapu commented Sep 19, 2023

braucht man wirklich zwei Variablen - bin hier ein Sparfuchs?
Wohl nur bei mehreren Neustarts an Tag oder, sonst könnte man einfach pauschal lastYd + den aktuellen Messwert rechnen, unter der Bedingung, das lastYd größer ist.

Werde es wohl wie beschrieben umsetzen, finde ich gut 😀

@beegee3
Copy link
Contributor

beegee3 commented Sep 19, 2023

Wohl nur bei mehreren Neustarts

ja, genau! ... und ich wette, irgendjemanden passiert genau das 😁

@LeSpocky
Copy link
Contributor

LeSpocky commented Oct 8, 2023

Wir hatten das letztens auch schon mal im Discord diskutiert. Ich find es nur nicht wieder. Letztlich war mein Vorschlag aber ähnlich. Man merkt sich einen Offset und den letzten Wert vom Inverter. Der Offset wird um 0:00 Uhr auf 0 gesetzt. Kommt ein neuer Wert vom Inverter, vergleicht man ihn mit dem letzten. Ist der neue Wert kleiner als der letzte, dann addiert man den letzten Wert auf den Offset. Der aktuelle Wert ist dann immer Offset plus Wert vom Inverter. So müsste es passen, oder? 🤔

(Und ja, ich fände das Feature ganz nett, weil dieses "Inverter weg" bei dunklen Wolken auch tagsüber auftreten kann und nicht erst kurz vor Sonnenuntergang. Hatte ich jetzt dieses Jahr aber auch nur eine Hand voll Male.)

@stefan123t
Copy link
Collaborator

Eine Korrektur seitens Ahoy ist wahrscheinlich sehr aufwändig (wegen der variablen "Reset" Möglichkeiten).

Ich denke das sollte doch relativ einfach möglich sein: man muß sich nur um 0:00 Uhr den YieldTotal des Inverters merken und kann dann den ganzen Tag über die Differenz vom aktuellen_YieldTotal - _YieldTotal_0:00_Uhr als YieldDay ausgeben.
Dumm natürlich nur wenn der ESP mal für kleine Entwickler neu booten muß 😉

@LeSpocky
Copy link
Contributor

LeSpocky commented Oct 9, 2023

Ich denke das sollte doch relativ einfach möglich sein: man muß sich nur um 0:00 Uhr den YieldTotal des Inverters merken und kann dann den ganzen Tag über die Differenz vom aktuellen_YieldTotal - _YieldTotal_0:00_Uhr als YieldDay ausgeben.
Dumm natürlich nur wenn der ESP mal für kleine Entwickler neu booten muß 😉

Oder wegen Watchdog neu startet. Kam bei mir häufiger vor bevor es "Reboot @ midnight" gab.

lumapu added a commit that referenced this issue Nov 9, 2023
* fix yield day reset during day #848
* add total AC Max Power to WebUI
* fix opendtufusion build (GxEPD patch)
@stefan123t stefan123t added the enhancement New feature or request label Dec 21, 2023
@stefan123t stefan123t added help wanted Extra attention is needed good first issue Good for newcomers labels Dec 21, 2023
@stefan123t stefan123t changed the title Verhindern der YieldDay Rücksetzung bei Neustart bis Tagesende Feature Request: Verhindern der YieldDay Rücksetzung bei Neustart bis Tagesende Dec 21, 2023
@stefan123t
Copy link
Collaborator

Siehe tbnobody/OpenDTU#1397 für das Feature / Problem in OpenDTU.

@lumapu lumapu added the resolved issue resolved label Mar 2, 2024
@knickohr
Copy link
Author

knickohr commented Jun 2, 2024

Zwar nicht resolutes, aber anscheinen programmtechnisch nicht so einfach umsetzbar. Werde trotzdem schließen da ich das Problem mit Node-Red „umschifft“ habe.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed question Further information is requested resolved issue resolved
Projects
None yet
Development

No branches or pull requests

6 participants