Erst mal wie gewünscht das Diagramm und ein Logauszug bis 11:00 Uhr.
Sowie die Lade-/Entladeleistung der Batterie:
Wie im Log zu sehen hat der Regelzeitraum um 9:22:39 Uhr begonnen und meiner Meinung nach hätte hier oder spätestens um 9:45 Uhr geladen werden sollen. Leider konnte ich mich erst etwas später im Detail mit dem Skript und der Suche nach der passenden Stelle im Code auseinandersetzen.
Meine Änderungen habe ich dann um 10:33 Uhr in das Skript eingefügt und dieses wurde durch die Änderung neugestartet. Zu diesem Zeitpunkt lief gerade die Wärmepumpe und es war nicht genügend PV-Ertrag vorhanden um über den unteren Ladekorridor zu kommen, daher wurde nicht direkt die Batterie geladen, um 10:51 Uhr hat das Laden dann aber begonnen. Deswegen habe ich den Pull Request erstellt.
Was mir im Diff zwischen 1.2.10 und 1.2.11 aufgefallen ist und wie ich auf die Stelle im Codee gekommen bin (der Fokus liegt jetzt auf Schritt 2 "Nach Regelbeginn vor Regelende"):
Wenn wir uns im Regelzeitraum befinden (Zeile 477) wird in Zeile 484 M_Power berechnet und auch die in meinem Log vorhandene Meldung generiert (Zeile 485).
Unter 1.2.10 has du nun geprüft ob (M_Power < UntererLadekorridor_W) ist oder ob (M_Power < 0) ist. Falls ja wurde der zwei Zeilen weiter oben berechnete Wert in M_Power wieder überschrieben und das Laden deaktiviert.
In 1.2.11 wird aber geprüft ob ((M_Power < UntererLadekorridor_W) ist oder ob (M_Power < 0) ist) UND ob (PV_Leistung_Summe_W -Power_Home_W > 0) ist. Falls ja wurde der zwei Zeilen weiter oben berechnete Wert in M_Power wieder überschrieben und das Laden deaktiviert. Dann kommt aber noch der Meiner Meinung nach problematische Abschnitt:
else{
M_Power = 0;
}
Da hier keine weitere Bedingung geprüft wird bedeutet das zum Beispiel wenn (M_Power GRÖßER 0) UND (PV_Leistung_Summe_W -Power_Home_W > 0) wird M_Power auch auf "0" gesetzt, aber genau dann soll doch geladen werden.
Oder habe ich hier einen Denkfehler?