Skip to content

Wechselrichter: Hybrid-Korrektur nicht erneut anwenden, wenn kein neuer Wert gesetzt wurde - #4048

Open
s0170071 wants to merge 1 commit into
openWB:masterfrom
s0170071:fix/inverter-state-reuse
Open

s0170071 wants to merge 1 commit into
openWB:masterfrom
s0170071:fix/inverter-state-reuse

Conversation

@s0170071

@s0170071 s0170071 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Problem

PurgeInverterState.update() korrigiert den zuletzt gesetzten InverterState in-place (fix_hybrid_values aendert power und exported) und schreibt ihn zurueck in den Store. update_values() ruft store.update() auch dann auf, wenn der Wechselrichter in diesem Zyklus nicht gelesen werden konnte (z.B. Modbus-Timeout), also ohne vorheriges set(). Die Korrektur wird dann erneut auf den bereits korrigierten Wert angewendet.

Betroffen sind Hybrid-Wechselrichter (Speicher als child des Wechselrichters): bei jedem Lesefehler wird die Speicherleistung erneut von power abgezogen und exported erneut um bat.imported - bat.exported - imported verändert. Der Zählerstand springt dadurch fuer einen Zyklus und kann im Werte-Log zu falschen Tageserträgen führen.

Lösung

Der letzte Wert wird in set() gemerkt und update() korrigiert nur eine Kopie davon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant