76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

Begonnen von DS_Starter, 11 Februar 2024, 14:11:00

Vorheriges Thema - Nächstes Thema

DS_Starter

Moin,

ZitatIch würde mir wünschen das der Battery_ChargeOptTargetPower immer wieder neu berechnet wird auf Basis des aktuellen Ladezustands und der aktuellen Prognose. So das wenn der Akku entgegen der Prognose nicht geladen wurde (hoher Verbrauch/geringe PV) die nachfolgenden Stunden eine höhere Leistung bekommen.
Genauso ist es bereits implementiert. Es schützt allerdings nicht davor am Anfang des Tages geringer als möglich zu laden (in Umsetzung des Ansatzes "so gering wie möglich") wenn die Kalkulation von genügendem Überschuß "weiter hinten" ausgeht, der dann aber nicht eintritt.

Dein Debug sieht erstmal sehr gut aus:

2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 09, Start SoC: 3168 Wh, Surplus: 1007 Wh (9 hours), OptTargetPower: 602 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 10, Start SoC: 3168 Wh, Surplus: 918 Wh (10 hours), OptTargetPower: 541 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 11, Start SoC: 3709 Wh, Surplus: 1261 Wh (8 hours), OptTargetPower: 596 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 12, Start SoC: 4305 Wh, Surplus: 2000 Wh (6 hours), OptTargetPower: 675 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 13, Start SoC: 4980 Wh, Surplus: 2000 Wh (5 hours), OptTargetPower: 648 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 14, Start SoC: 5628 Wh, Surplus: 2000 Wh (4 hours), OptTargetPower: 616 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 15, Start SoC: 6244 Wh, Surplus: 2000 Wh (3 hours), OptTargetPower: 574 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 16, Start SoC: 6818 Wh, Surplus: 2000 Wh (2 hours), OptTargetPower: 517 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 17, Start SoC: 7335 Wh, Surplus: 2000 Wh (1 hours), OptTargetPower: 414 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 18, Start SoC: 7680 Wh, Surplus: 2000 Wh (1 hours), OptTargetPower: 500 W, safety: 20 %
2025.09.12 00:07:19 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 19, Start SoC: 7680 Wh, Surplus: 1911 Wh (7 hours), OptTargetPower: 500 W, safety: 20 %

Es ist sehr gut zu sehen, wie deine Batterie bis 18:00 (ca. 18:00 ist sie dann voll) recht gleichmäßig aufgeladen wird und am Ende rein kalkulatorisch voll sein wird. Das sieht gut aus. Der gleichmäßige surplus auf 2000W über eine recht lange Zeit kommt sicherlich von dem gesetzten "pinmax". Also insgesamt völlig io. Nun ist es natürlich so, dass die Kalkulation davon ausgeht die OptTargetPower von z.B. 602W wird als Minimumleistung konstant in der Stunde in die Bat geladen. In der Realität kann sie auch mal geringer ausfallen (kein PV wegen Wolken, mehr Verbrauch usw.). Da denke ich darüber nach wie ich das verbessern, Tendiere aber jetzt schon dazu den default Safety Betrag von 20% auf 50% zu heben wie bei der anderen Optimierung.

ZitatIch hab mir nun die Grobstrategie von OptTargetPower nochmals durchgelesen. Damit sollte doch die Ladeleistung gleichmäßig über alle verfügbaren Stunden mit genügend Überschuss verteilt werden.
Ja, das zeigt das Debug auch wie zu sehen ist. Das klappt natürlich nicht immer so schön, je nach Verteilung des (prognostizierten) Überschusses über den Tag.

ZitatWarum sehe ich dann so unterschiedliche Werte wie hier? OptTargetPower ist immer deutlich niedriger wenn ChargeUnrestricted gesetzt ist!?!
Kann ich dir nicht beantworten. Beide Optimierungsstrategien werden intern durch verschiedene Subs mit unterschiedlichen Optimierungszielen berechnet.

ZitatWann wird denn OptTargetPower bestimmt? Nur einmal am Tag, oder bei jeder Berechnung wieder neu?
Mit jedem Zyklus erneuet. D.h. die Werte im Debug werden sich ständig an die realen Gegebenheiten anpassen. Wenn du in eine für dich kritische Tageszeit kommst, kannst du das Debug erneut starten und in der Auswertung sieht man wieder die Zusammenhänge.

ZitatOptTargetPower sollte bei jeder Berechnung wieder neu bestimmt werden, so das nach aktuellen Akku Ladezustand und der Rest-Tagesprognose der Akku noch voll (inkl safety) werden kann. Falls nichtmehr möglich sollte auf pinmax gestellt werden. Damit wird er zwar am Ende des Tages immer auf pinmax stehen, da ja die safety Energie nicht reinpasst, aber da sollter er auch schon voll sein und somit eh keine Ladung mehr erfolgen.
So ist es auch implementiert, wobei pinmax ein begrenzender Faktor ist (wie im Debug zu sehen) und am Ende des Tages; wenn kein Überschuß mehr oder die Bat voll ist; OTP auf setupBatteryDevXX->pinreduced und ggf. die Fallbacks gesetzt wird wie ich schon erläuterte.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Gisbert

Hallo Heiko,

die letzte Änderung, die shiftx im Energy flow Diagram betrifft, hat funktioniert.

Mir ist jetzt aber aufgefallen, dass im Attribut
graphicControl
beamWidth=100 hourCount=20 energyUnit=kWh spaceSize=10 headerDetail=all
beamWidth nicht so funktioniert, wie ich es erwarte. Die Balkenbreite ändert sich nicht, egal ob ich 20 oder 100 eingebe, oder diesen Part lösche. Die Breite der Balken ist dabei unterschiedlich breit, demnach also dynamisch.
Hab ich was übersehen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

DS_Starter

ZitatbeamWidth nicht so funktioniert, wie ich es erwarte. Die Balkenbreite ändert sich nicht, egal ob ich 20 oder 100 eingebe, oder diesen Part lösche.
Kann ich so nicht bestätigen. Klappt bei mir im Browser einwandfrei. Anbei ein Beispiel mit beamWidth=80.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

@Hadl, Parallix,

ich habe einen Fehler in der Berechnungslogik von Battery_ChargeOptTargetPower_XX erkannt und beseitigt.
Ich habe zwar sehr kontinuierlich den PV-Überschuß neu berechnet, aber bzgl. SoC fehlte der Abgleich von Prognose und Ist-SoC.
Das habbe ich jetzt korrigiert und ins contrib geladen.

Morgen wird man mehr sehen, aber das Log zeigt schon die Verbesserung. Damit dürfte sich das Problem von Hadl auch weitgehend erledigt haben.

2025.09.12 15:44:28.058 1: SolCast DEBUG> ChargeOTP - maximum OptTargetPower Bat 01: 3706 W, number relevant values: 1
2025.09.12 15:44:28.058 1: SolCast DEBUG> ChargeOTP - The limit for grid feed-in is 4800 W
2025.09.12 15:44:28.059 1: SolCast DEBUG> ChargeOTP - NOTE: The hours printed below are the estimated number of hours on the current day with at least the respective PV surplus.
2025.09.12 15:44:28.059 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 16, Start SoC: 25290 Wh, Surplus: 3706 Wh (1 hours), OptTargetPower: 3706 W, safety: 20 %
2025.09.12 15:44:28.059 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 17, Start SoC: 28416 Wh, Surplus: 986 Wh (1 hours), OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.060 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 18, Start SoC: 28416 Wh, Surplus: 400 Wh (2 hours), OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.060 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 19, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.060 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 20, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.061 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 21, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.061 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 22, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.061 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 23, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 1000 W, safety: 20 %
2025.09.12 15:44:28.062 1: SolCast DEBUG> Bat 01 ChargeOTP - hod: 24, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 1000 W, safety: 20 %

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo Chris,

das ist aber auch kein Problem mit DWD OpenData, sondern soweit ich sehen kann beide Dinge eine Sache für den SVG Thread.
Bitte poste es dort nochmal, gehört wirklich nicht hierher. Bitte um Verständnis.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Burny4600

Zitat von: DS_Starter am 12 September 2025, 16:15:15das ist aber auch kein Problem mit DWD OpenData, sondern soweit ich sehen kann beide Dinge eine Sache für den SVG Thread.
Bitte poste es dort nochmal, gehört wirklich nicht hierher. Bitte um Verständnis.

Kein Problem. Werde ich gleich machen.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

Gisbert

Zitat von: DS_Starter am 12 September 2025, 11:40:39
ZitatbeamWidth nicht so funktioniert, wie ich es erwarte. Die Balkenbreite ändert sich nicht, egal ob ich 20 oder 100 eingebe, oder diesen Part lösche.
Kann ich so nicht bestätigen. Klappt bei mir im Browser einwandfrei. Anbei ein Beispiel mit beamWidth=80.

Hallo Heiko,
dachte ich mir schon, danke fürs Nachschauen. Vermutlich grätscht der an und für sich schöne flex Style dazwischen, der leider nicht mehr maintdained wird.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Heatseeker

Moin,

Bei mir läuft der forecast schon seit langer Zeit sehr zuverlässig und nutze diesen z.B. um meinen Akku schonend prognosebasiert zu laden.

Nun bekomme ich demnächst einen neuen Zählermodul eingebaut (Huawei Emma) wegen einer Installation der wallbox, und ich weiß noch nicht ob ich die Kommunikation zu diesem ebenfalls so schnell aufgebaut bekomme.
Kann ich den forecast auch ohne lernen etc laufen lassen? Die Daten stimmen ja inzwischen sehr gut. Aber ich befürchte wenn ich dann dauerhaft null Einspeisung habe, geht mir meine ganzen angelernten Korrektur faktoren flöten....


DS_Starter

ZitatKann ich den forecast auch ohne lernen etc laufen lassen?
Ja, das geht natürlich:

set ... pvCorrectionFactor_Auto noLearning

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Hadl

Zitat von: DS_Starter am 12 September 2025, 09:01:39Nun ist es natürlich so, dass die Kalkulation davon ausgeht die OptTargetPower von z.B. 602W wird als Minimumleistung konstant in der Stunde in die Bat geladen. In der Realität kann sie auch mal geringer ausfallen (kein PV wegen Wolken, mehr Verbrauch usw.). Da denke ich darüber nach wie ich das verbessern, Tendiere aber jetzt schon dazu den default Safety Betrag von 20% auf 50% zu heben wie bei der anderen Optimierung.
Ein gewisser safety Betrag ist gut, mir kommt 50% aber schon zu viel vor. Ich denke wir sollten lieber versuchen an der Strategie zu arbeiten um nach einem ungeplanten Energiemangel die hoffentlich noch verfügbare Energie am Rest des Tages zu nutzen.
Nach alldem was ich hier verstehe hätte eigentlich das hier nicht auftreten dürfen. Warscheinlich wird das durch deinen SOC fix behoben.

Zitat von: DS_Starter am 12 September 2025, 09:01:39
ZitatWarum sehe ich dann so unterschiedliche Werte wie hier? OptTargetPower ist immer deutlich niedriger wenn ChargeUnrestricted gesetzt ist!?!
Kann ich dir nicht beantworten. Beide Optimierungsstrategien werden intern durch verschiedene Subs mit unterschiedlichen Optimierungszielen berechnet.

Ich hab mir dazu mal den Code angesehen und folgendes gefunden:
$crel = Battery_ChargeUnrestricted
          $socwh   += $crel       ? ($fceff > 0 ? $fceff * STOREFFDEF : $fceff / STOREFFDEF) :
                      ($fceff > 0 ? 0 : $fceff / STOREFFDEF);                                    # PV Überschuß (d.h. Aufladung) nur einbeziehen wenn Ladefreigabe
...
sub __batChargeOptTargetPower {
...
          my $runwh       = defined $hsurp->{$shod}{$sbn}{fcnextwh} ?                                            # Auswahl des zu verwenden Prognose-SOC (Wh)
                            $hsurp->{$shod}{$sbn}{fcnextwh} :
                            $hsurp->{$shod}{$sbn}{socwh};
...
          my $runwhneed   = $sbatinstcap - $runwh;
          my $needraw     = $sphrs ? $runwhneed / $sphrs : $runwhneed;                                           # Ladeleistung initial

Es sieht also so aus als ob die Abhängigkeit $crel => §socwh => $runwh => $runwhneed => $needraw die Beobachtung erklären könnte.
Wenn die Strategien wirklich unabhängig sein sollen, sollten wir auch die Abhängigkeiten dazwischen entfernen. Sprich $socwh für beide Fälle individuell berechnen mit der Annahme das diese Strategie auch genutzt wird.

Zitat von: DS_Starter am 12 September 2025, 16:10:07ich habe einen Fehler in der Berechnungslogik von Battery_ChargeOptTargetPower_XX erkannt und beseitigt.
Ich habe zwar sehr kontinuierlich den PV-Überschuß neu berechnet, aber bzgl. SoC fehlte der Abgleich von Prognose und Ist-SoC.
Das habbe ich jetzt korrigiert und ins contrib geladen.

Herzlichen Dank, ich werds gleich mal aktualisieren und sehen wie's läuft

LG
Hadl
FHEM: Rpi 5 + SSD / WR: Fronius Symo Gen24 10.0 Plus + BYD HVS 7.7, Fronius Symo Gen24 12.0 SC (60%) PV: (Ost=3.5 West=6.6 Nord=9.9 Ost=4.5) / Homematic BidCoS / Shelly / Viessmann

Hadl

Ich hab die neue Version angetestet. Als erste Auffälligkeit hab ich das Battery_ChargeOptTargetPower_01 zweimal direkt hintereinander geschrieben wird. Einmal mit nem echten Wert, einmal ohne Wert. Siehe screenshot vom Eventlog
Du darfst diesen Dateianhang nicht ansehen.

Im Ergebnis steht dann nur die Einheit ohne Wert im Reading
Du darfst diesen Dateianhang nicht ansehen.

Hier der debug dazu:
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step1 - basics -> Battery share factor of total capacity: 1
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step1 - basics -> Expected energy for charging raw: 64192 Wh
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step1 - basics -> Expected energy for charging after application Share factor: 64192 Wh
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step1 - compare with SoC history -> preliminary new Target: 35 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step2 - basics -> Energy expected for charging: 64192 Wh, need until maxsoc: 438 Wh
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step2 - calc care SoC -> docare: 0, care SoC: 35 %, use preliminary Target: 35 % (care SoC calculation & activation postponed to after 13.09.2025 17:59:00)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step3 - basics -> cantarget: -736 %, newtarget: -736 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step3 - charging probability -> docare: 0, Target: 35 % (new target < current Target SoC 40)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step4 - basics -> docare: 0, lowSoc: 40 %, upSoc: 60 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step4 - observe low/up limits -> Target: 40 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step5 - rounding the SoC to steps of 5 % -> Target: 40 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 SoC Step6 - force charging request: no (Battery is sufficiently charged)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeMgmt - Inverter 'Fronius_Symo1' cap: 10000 W, Power limit: 100 % -> Pmax eff: 10000 W
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeMgmt - Inverter 'Fronius_Symo2' cap: 12000 W, Power limit: 100 % -> Pmax eff: 12000 W
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeMgmt - Summary Power limit of all Inverter (except feed 'grid'): 22000 W
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeMgmt - The limit for grid feed-in is: 18800 W
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeMgmt - General load termination condition: 0
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeMgmt - control time Slot - Slot start: 00:00, Slot end: 23:59
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeMgmt - Installed Battery capacity: 7680 Wh, Percentage of total capacity: 100.0 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeMgmt - The PV generation, consumption and surplus listed below are based on the battery's share of total installed capacity!
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR - used safety margin: 50 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/00 -> 0 (CurrSoc: 74.3 %, SoCfc: 5457 Wh, whneed: 1974, pvfc: 0, rodpvfc: 71123, confcss: 6707, SurpDay: 64416 Wh, CurrPV: 0 W, CurrCons: 297 W, Limit: 22000 W, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/01 -> 0 (SoCfc: 68.0 % / 5219 Wh, whneed: 2223, pvfc: 0, rodpvfc: 71123, confcss: 6493, SurpDay: 64630 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/02 -> 0 (SoCfc: 64.9 % / 4986 Wh, whneed: 2461, pvfc: 0, rodpvfc: 71123, confcss: 6283, SurpDay: 64840 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/03 -> 0 (SoCfc: 61.9 % / 4752 Wh, whneed: 2694, pvfc: 0, rodpvfc: 71123, confcss: 6072, SurpDay: 65051 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/04 -> 0 (SoCfc: 58.9 % / 4525 Wh, whneed: 2928, pvfc: 0, rodpvfc: 71123, confcss: 5868, SurpDay: 65255 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/05 -> 0 (SoCfc: 55.9 % / 4294 Wh, whneed: 3155, pvfc: 0, rodpvfc: 71123, confcss: 5660, SurpDay: 65463 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/06 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3386, pvfc: 18, rodpvfc: 71105, confcss: 5406, SurpDay: 65699 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/07 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 988, rodpvfc: 70117, confcss: 4444, SurpDay: 65673 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/08 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 4180, rodpvfc: 65937, confcss: 3434, SurpDay: 62503 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/09 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 3261, rodpvfc: 62676, confcss: 3096, SurpDay: 59580 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/10 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 5527, rodpvfc: 57149, confcss: 2756, SurpDay: 54393 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/11 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 4344, rodpvfc: 52805, confcss: 2358, SurpDay: 50447 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/12 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 13472, rodpvfc: 39333, confcss: 1632, SurpDay: 37701 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/13 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 8675, rodpvfc: 30658, confcss: 919, SurpDay: 29739 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/14 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 9719, rodpvfc: 20939, confcss: 320, SurpDay: 20619 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/15 -> 0 (SoCfc: 52.5 % / 4032 Wh, whneed: 3648, pvfc: 8800, rodpvfc: 12139, confcss: 0, SurpDay: 12139 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/16 -> 1 (SoCfc: 75.9 % / 5832 Wh, whneed: 3648, pvfc: 6890, rodpvfc: 5249, confcss: 0, SurpDay: 5249 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/17 -> 1 (SoCfc: 99.4 % / 7632 Wh, whneed: 1848, pvfc: 3475, rodpvfc: 1774, confcss: 0, SurpDay: 1774 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/18 -> 0 (SoCfc: 99.4 % / 7632 Wh, whneed: 48, pvfc: 1561, rodpvfc: 213, confcss: 0, SurpDay: 213 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/19 -> 1 (SoCfc: 98.3 % / 7553 Wh, whneed: 48, pvfc: 213, rodpvfc: 0, confcss: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/20 -> 1 (SoCfc: 92.1 % / 7075 Wh, whneed: 127, pvfc: 0, rodpvfc: 0, confcss: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/21 -> 1 (SoCfc: 88.0 % / 6759 Wh, whneed: 605, pvfc: 0, rodpvfc: 0, confcss: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/22 -> 1 (SoCfc: 84.0 % / 6453 Wh, whneed: 921, pvfc: 0, rodpvfc: 0, confcss: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 13/23 -> 1 (SoCfc: 79.9 % / 6140 Wh, whneed: 1227, pvfc: 0, rodpvfc: 0, confcss: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/00 -> 0 (SoCfc: 76.7 % / 5891 Wh, whneed: 1540, pvfc: 0, roTomPV: 66960, roTomCON: 9528, SurpDay: 57432 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/01 -> 0 (SoCfc: 73.6 % / 5653 Wh, whneed: 1789, pvfc: 0, roTomPV: 66960, roTomCON: 9314, SurpDay: 57646 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/02 -> 0 (SoCfc: 70.6 % / 5420 Wh, whneed: 2027, pvfc: 0, roTomPV: 66960, roTomCON: 9104, SurpDay: 57856 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/03 -> 0 (SoCfc: 67.5 % / 5186 Wh, whneed: 2260, pvfc: 0, roTomPV: 66960, roTomCON: 8893, SurpDay: 58067 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/04 -> 0 (SoCfc: 64.6 % / 4959 Wh, whneed: 2494, pvfc: 0, roTomPV: 66960, roTomCON: 8689, SurpDay: 58271 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/05 -> 0 (SoCfc: 61.6 % / 4728 Wh, whneed: 2721, pvfc: 0, roTomPV: 66960, roTomCON: 8481, SurpDay: 58479 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/06 -> 0 (SoCfc: 58.0 % / 4456 Wh, whneed: 2952, pvfc: 9, roTomPV: 66951, roTomCON: 8227, SurpDay: 58724 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/07 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3224, pvfc: 555, roTomPV: 66396, roTomCON: 7265, SurpDay: 59131 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/08 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 2830, roTomPV: 63566, roTomCON: 6255, SurpDay: 57311 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/09 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 3580, roTomPV: 59986, roTomCON: 5917, SurpDay: 54069 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/10 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 3409, roTomPV: 56577, roTomCON: 5577, SurpDay: 51000 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/11 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 11318, roTomPV: 45259, roTomCON: 5179, SurpDay: 40080 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/12 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 8947, roTomPV: 36312, roTomCON: 4453, SurpDay: 31859 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/13 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 9958, roTomPV: 26354, roTomCON: 3740, SurpDay: 22614 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/14 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 6813, roTomPV: 19541, roTomCON: 3141, SurpDay: 16400 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/15 -> 0 (SoCfc: 52.1 % / 4004 Wh, whneed: 3676, pvfc: 10252, roTomPV: 9289, roTomCON: 2737, SurpDay: 6552 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/16 -> 1 (SoCfc: 75.6 % / 5804 Wh, whneed: 3676, pvfc: 3326, roTomPV: 5963, roTomCON: 2217, SurpDay: 3746 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/17 -> 1 (SoCfc: 99.0 % / 7604 Wh, whneed: 1876, pvfc: 4068, roTomPV: 1895, roTomCON: 1893, SurpDay: 2 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/18 -> 1 (SoCfc: 100.0 % / 7680 Wh, whneed: 76, pvfc: 1696, roTomPV: 199, roTomCON: 1555, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/19 -> 1 (SoCfc: 98.8 % / 7586 Wh, whneed: 0, pvfc: 199, roTomPV: 0, roTomCON: 1271, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/20 -> 1 (SoCfc: 92.6 % / 7108 Wh, whneed: 94, pvfc: 0, roTomPV: 0, roTomCON: 841, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/21 -> 1 (SoCfc: 88.4 % / 6792 Wh, whneed: 572, pvfc: 0, roTomPV: 0, roTomCON: 557, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/22 -> 1 (SoCfc: 84.5 % / 6486 Wh, whneed: 888, pvfc: 0, roTomPV: 0, roTomCON: 282, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 14/23 -> 1 (SoCfc: 80.4 % / 6173 Wh, whneed: 1194, pvfc: 0, roTomPV: 0, roTomCON: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/00 -> 0 (SoCfc: 77.1 % / 5924 Wh, whneed: 1507, pvfc: 0, roTomPV: 60658, roTomCON: 9528, SurpDay: 51130 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/01 -> 0 (SoCfc: 74.0 % / 5686 Wh, whneed: 1756, pvfc: 0, roTomPV: 60658, roTomCON: 9314, SurpDay: 51344 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/02 -> 0 (SoCfc: 71.0 % / 5453 Wh, whneed: 1994, pvfc: 0, roTomPV: 60658, roTomCON: 9104, SurpDay: 51554 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/03 -> 0 (SoCfc: 68.0 % / 5219 Wh, whneed: 2227, pvfc: 0, roTomPV: 60658, roTomCON: 8893, SurpDay: 51765 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/04 -> 0 (SoCfc: 65.0 % / 4992 Wh, whneed: 2461, pvfc: 0, roTomPV: 60658, roTomCON: 8689, SurpDay: 51969 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/05 -> 0 (SoCfc: 62.0 % / 4761 Wh, whneed: 2688, pvfc: 0, roTomPV: 60658, roTomCON: 8481, SurpDay: 52177 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/06 -> 0 (SoCfc: 58.3 % / 4479 Wh, whneed: 2919, pvfc: 0, roTomPV: 60658, roTomCON: 8227, SurpDay: 52431 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/07 -> 0 (SoCfc: 54.6 % / 4192 Wh, whneed: 3201, pvfc: 704, roTomPV: 59954, roTomCON: 7265, SurpDay: 52689 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/08 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3488, pvfc: 798, roTomPV: 59156, roTomCON: 6255, SurpDay: 52901 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/09 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 2910, roTomPV: 56246, roTomCON: 5917, SurpDay: 50329 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/10 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 3732, roTomPV: 52514, roTomCON: 5577, SurpDay: 46937 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/11 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 7041, roTomPV: 45473, roTomCON: 5179, SurpDay: 40294 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/12 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 8389, roTomPV: 37084, roTomCON: 4453, SurpDay: 32631 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/13 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 10730, roTomPV: 26354, roTomCON: 3740, SurpDay: 22614 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/14 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 10262, roTomPV: 16092, roTomCON: 3141, SurpDay: 12951 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/15 -> 0 (SoCfc: 51.5 % / 3956 Wh, whneed: 3724, pvfc: 7581, roTomPV: 8511, roTomCON: 2737, SurpDay: 5774 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/16 -> 1 (SoCfc: 74.9 % / 5756 Wh, whneed: 3724, pvfc: 4530, roTomPV: 3981, roTomCON: 2217, SurpDay: 1764 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/17 -> 1 (SoCfc: 98.4 % / 7556 Wh, whneed: 1924, pvfc: 2362, roTomPV: 1619, roTomCON: 1893, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/18 -> 1 (SoCfc: 100.0 % / 7680 Wh, whneed: 124, pvfc: 1429, roTomPV: 190, roTomCON: 1555, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/19 -> 1 (SoCfc: 98.6 % / 7576 Wh, whneed: 0, pvfc: 190, roTomPV: 0, roTomCON: 1271, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/20 -> 1 (SoCfc: 92.4 % / 7098 Wh, whneed: 104, pvfc: 0, roTomPV: 0, roTomCON: 841, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/21 -> 1 (SoCfc: 88.3 % / 6782 Wh, whneed: 582, pvfc: 0, roTomPV: 0, roTomCON: 557, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/22 -> 1 (SoCfc: 84.3 % / 6476 Wh, whneed: 898, pvfc: 0, roTomPV: 0, roTomCON: 282, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeUR 15/23 -> 1 (SoCfc: 80.2 % / 6163 Wh, whneed: 1204, pvfc: 0, roTomPV: 0, roTomCON: 0, SurpDay: 0 Wh, inTime: 1)
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeOTP - maximum OptTargetPower Bat 01: 500 W, number relevant values: 11
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeOTP - The limit for grid feed-in is 18800 W
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> ChargeOTP - NOTE: The hours printed below are the estimated number of hours on the current day with at least the respective PV surplus.
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 01, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 02, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 03, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 04, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 05, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 06, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 07, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 08, Start SoC: 4032 Wh, Surplus: 26 Wh (11 hours), OptTargetPower: 26 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 09, Start SoC: 4058 Wh, Surplus: 2000 Wh (9 hours), OptTargetPower: 483 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 10, Start SoC: 4541 Wh, Surplus: 2000 Wh (8 hours), OptTargetPower: 471 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 11, Start SoC: 5012 Wh, Surplus: 2000 Wh (7 hours), OptTargetPower: 457 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 12, Start SoC: 5469 Wh, Surplus: 2000 Wh (6 hours), OptTargetPower: 442 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 13, Start SoC: 5911 Wh, Surplus: 2000 Wh (5 hours), OptTargetPower: 425 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 14, Start SoC: 6336 Wh, Surplus: 2000 Wh (4 hours), OptTargetPower: 403 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 15, Start SoC: 6739 Wh, Surplus: 2000 Wh (3 hours), OptTargetPower: 376 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 16, Start SoC: 7115 Wh, Surplus: 2000 Wh (2 hours), OptTargetPower: 339 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 17, Start SoC: 7454 Wh, Surplus: 2000 Wh (1 hours), OptTargetPower: 271 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 18, Start SoC: 7680 Wh, Surplus: 2000 Wh (1 hours), OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 19, Start SoC: 7632 Wh, Surplus: 1223 Wh (10 hours), OptTargetPower: 6 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 20, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 21, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 22, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 23, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %
2025.09.13 00:26:29 1: PV_SolarForecast DEBUG> Bat 01 ChargeOTP - hod: 24, Start SoC: - Wh, Surplus: 0 Wh , OptTargetPower: 500 W, safety: 20 %

zusammen mit diesem Perl Fehler:
2025.09.13 00:00:04 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/76_SolarForecast.pm line 11960.
und diesem, der aber warscheinlich nicht damit zusammenhängt:
2025.09.12 23:40:54 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/76_SolarForecast.pm line 11516.
FHEM: Rpi 5 + SSD / WR: Fronius Symo Gen24 10.0 Plus + BYD HVS 7.7, Fronius Symo Gen24 12.0 SC (60%) PV: (Ost=3.5 West=6.6 Nord=9.9 Ost=4.5) / Homematic BidCoS / Shelly / Viessmann