ZitatIch hab das absichtlich rausgenommen, weil mir das bei meinen Tests einen deutlich ungleichmäßigeren Verlauf beim stundenwechsel gegeben hat.Ja, $fref->{ph} ist gleichmäßig und wird deswegen ja auch in der Fallentscheidung für smartPower verwendet. Parallix war dies insbesondere bei volatilen Wetterlagen zu hoch, weswegen nun optPower und smartPower gibt mit der unterschiedlichen Anwendung der Begrenzung auf Surplus. Es wird also gebraucht ... allerdings nicht für smartPower.
Das "$fref->{ph}" ist ja schon ein sehr gleichmäßiges Signal und garnicht aggresiv. Es stellt die niedrigsmögliche konstante Ladeleistungsbegrenzung dar mit der mit dem letzten Überschuss am Tag der Akku gerade noch voll wird. Das sah mir hier für beide Strategien hier am besten geeignet aus. Die Aggressivität kommt dann ja hinterher mit den Aufschlägen.
Evtl hilft hier auch schon das die aktuelle Stunde gewichtet eingerechnet wird, wodurch diesen "min" nichtmehr gebraucht wird. Falls doch müsste man $spls durch etwas besseres ersetzen, den am Ende der Stunde war das immer viel zu hoch, wodurch die Stunden-Sägezähne mit verursacht wurden.
ZitatDas zu behalten ist aber physikalisch richtig, ich hab nun auch die Lösung dazu gefunden, warum das Probleme gemacht hatte. Dazu hab ich noch eine Zeile in ___batFindMinPhWh eingefügt.Physikalisch richtig schon aber nicht zielführend. Wir wollen nicht in Schönheit sterben sondern eine Batterie laden.
for my $hod (@hods) {
my $cap = $hsurp->{$hod}{surplswh};
my $nhr = $hsurp->{$hod}{nhr};
if ($nhr eq '00') { $cap = min ($mid, $cap) / 60 * (60 - int $minute); }
$charged += $mid < $cap ? $mid : $cap;
}
for my $hod (@hods) {
my $cap = $hsurp->{$hod}{surplswh};
my $nhr = $hsurp->{$hod}{nhr};
if ($nhr eq '00') { $cap = $cap / 60 * (60 - int $minute); }
$charged += $mid < $cap ? $mid : $cap;
}
ZitatMit der Variante vor meiner Änderung wurde obwohl Überschuss vorhanden war und ein gleichmäßiges Laden mit mittlerer Leistung zum Ladeziel geführt hätte trotzdem nur mit pinreduced geladen.Das ist unverständlich. War dein SoC < lowSoC? Wenn ja, wieso passiert das bei dir? Auf welchen Wert ist der Parameter eingestellt und wird er auch im Batteriesystem so verwendet?
Zitat von: grappa24 am 30 Oktober 2025, 08:45:31Nach der Installation des Full Backup Controllers hatte ich in der Fronius Solar-API die Reservekapazität hochgesetzt (testweise auf 10%).
Dennoch wurde meine Batterie auf unter 5% entladen![]()
Zitat von: Prof. Dr. Peter Henning am 30 Oktober 2025, 10:05:18Aus verschiedenen Gründen versehe ich das aber mit einem Fragezeichen, vielleicht weiß hier jemand Genaueres.Nein, ich hab nur gelesen das BYD die Speicher HVB und HVE als Nachfolger handelt, dadurch werden die "alten" vermutlich irgendwann nicht mehr produziert.
Zitat von: DS_Starter am 31 Oktober 2025, 08:57:59Du hast es nur etwas umgemodelt. Erst das Replacement direkt ersetzt:Wunderbar, ja das ist mir auch aufgefallen, das man das vereinfachen könnte. Hab mich aber erstmal auf die Energiedaten fokusiert.
Zitat von: DS_Starter am 31 Oktober 2025, 08:57:59Also bis zu diesem Punkt sind die Versionen identisch, nur dass $total nun $RemainingSurp heißt.Ja, das hat mir etwas beim Denken geholfen das umzubenennen, ist aber ansonsten identisch
Zitat von: DS_Starter am 31 Oktober 2025, 08:57:59Es wird die gewählte Strategie bzw. Erreichbarkeit des Ziel keine Beachtung mehr geschenkt. Im OriginalIch hab das absichtlich rausgenommen, weil mir das bei meinen Tests einen deutlich ungleichmäßigeren Verlauf beim stundenwechsel gegeben hat.
Code Auswählen Erweiternmy $limpower = $achievable || $strategy eq 'optPower'wird eine Fallentscheidung vorgenommen und bei Erreichbarkeit des Ladeziels oder bei optPower Verwendung der Surplus-Wert als (zunächst) begrenzender Wert herangezogen. Achtung: wichtige Unterscheidung in der Ladeaggressivität was natürlich so bleiben soll.
? min ($fref->{ph}, $spls)
: $fref->{ph};
Zitat von: DS_Starter am 31 Oktober 2025, 08:57:59Weiterhin wird nun durch die direkte Replacement-Ersetzung in der Iteration der Überschuß der aktuellen Stunde tendienziell gegen 0 gehen mit fortschreitender Zeit. Das hatte ich schonmal drin und hat sich als kontraproduktiv gezeigt, weswegen es entfernt wurde.Das zu behalten ist aber physikalisch richtig, ich hab nun auch die Lösung dazu gefunden, warum das Probleme gemacht hatte. Dazu hab ich noch eine Zeile in ___batFindMinPhWh eingefügt. Siehe weiter unten.
Zitat von: DS_Starter am 31 Oktober 2025, 08:57:59Das ist nicht gut. Wenn die Ladung unter lowSoc gefallen ist (was eigentlich nicht vorkommen sollte) wird die Batterie ggf. durch Netzstrom geladen. Das soll nur zaghaft mit pinreduced vorgenommen werden.Mit der Variante vor meiner Änderung wurde obwohl Überschuss vorhanden war und ein gleichmäßiges Laden mit mittlerer Leistung zum Ladeziel geführt hätte trotzdem nur mit pinreduced geladen. Dadurch wurde vom Überschuss nur wenig genutzt, sobald aber dann SocMin erreicht war musste um wieder aufzuholen mit etwas höherer Leistung weitergeladen werden. Das wiederspricht dem Ziel einer schonenden Akku-Ladung und der Nutzung von Energie für den Fall von Stromausfällen.
Aus welchem Grund bist du der Meinung dies ändern zu wollen?
Zitat von: DS_Starter am 31 Oktober 2025, 08:57:59Nehmen wir an es ist ein Überschuß von 5kWh für die aktuelle Stunde prognostiziert und in der Gesamtkalkulation reicht es aus mit 1kW über diese eine Stunde zu laden, d.h. eine 1kWh in die Bat zu verbringen. Dann ist es völlig in Ordnung wenn zu Beginn der Stunde mit einer Leistung von 1kW geladen wird und am Ende dieser Stunde ebenfalls. Denn dann haben wir genau 1 kWh in der Batterie unter der Voraussetzung, dass über die gesamte Zeit mehr Überschuß als gewünschte/begrenzte Ladeleistung vorliegt.Perfekt, ich hatte genau die gleiche Vorstellung. Das hab ich erreicht indem ich noch mit einer Zeile die Zeitgewichtung der aktuellen Stunde in ___batFindMinPhWh eingebaut habe. Dadurch wurde am Ende der Stunde nichtmehr erwartet das man in deinem Beispiel 12 Minuten vor Stundenende von den 5kWh noch 1kWh Überschuss übrig hat und man denke man kann das mit 1kW Leistung reinladen. Das klappt auf 12 Minuten nicht, sondern da kriegt man nur 200Wh rein.
Zitat von: kingmathers am 31 Oktober 2025, 01:02:27Kann man (per MQTT oder anderweitig) auch einstellen was im Display angezeigt wird? Also ist ein benutzerdefinierter Text (von FHEM generiert und gesendet) zur Darstellung von Gerätezuständen möglich?Denke nicht.
<ftui-label class="size-1" [text]="AZ_HZ_T1:battery:time | toDate() | format('DD.MM.YY') | prepend(' (') | append(')')"></ftui-label>
Das bleibt aber wirkungslos, die Jahreszahl ist vierstellig ! const YY = date.getFullYear().toString().substring(-2);Da Javascript die Funktion 'substring ...' mit einem negativen Wert nicht so verarbeitet wie erwartet, müsste const YY = date.getFullYear().toString().slice(-2);Ich habe es in meiner 'ftui.helper.js' gemacht; alles funktioniert wie gewünscht; es müsste aber das nächste Update überstehen !