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

Im contrib liegt die V 1.60.4.

Für das Reading Battery_ChargeOptTargetPower_XX ist eine Glättungsfunktion eingebaut. Das bedeutet, dass nicht jede kleinste Änderung des Leistungslimits im Reading upgedated wird, sondern erst wenn ein Schwellenwert der Änderung überschritten wird. Diesen Wert habe ich (vorerst) auf 10W empirisch definiert. Dadurch werden Änderungen erst dann an die reale Batteriesteuerung übertragen, wenn diese Änderungsschwelle überschritten wird.

Außerdem habe ich die oben erwähnte Behandlung der Batterie-Effizienz ausgebaut und wieder konzentriert an exponierten Stellen eingesetzt.

Leider wird der Praxistest bei mir längere Zeit nichts bringen weil die nächsten Tage unterirdische PV vorhersagen. Vielleicht habt ihr eher die Möglichkeit dazu. Wäre super  :).

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 09 November 2025, 00:00:46Für das Reading Battery_ChargeOptTargetPower_XX ist eine Glättungsfunktion eingebaut
Herzlichen Dank für deine Mühe!

Zitat von: DS_Starter am 09 November 2025, 00:00:46Außerdem habe ich die oben erwähnte Behandlung der Batterie-Effizienz ausgebaut und wieder konzentriert an exponierten Stellen eingesetzt.
Danke, aber ich glaub so ganz passts auch jetzt noch nicht. "runwhneed" ist jetzt nur noch die Netto-Zielenergie im Akku die wir brauchen, aber nichtmehr die Brutto Energie zum Akkuladen.
Das "Achievable" und die Suche ___batFindMinPhWh rechnet jetzt nur mit der niedrigeren Netto Energie und Ladeleistung.
Im Anschluss wird die Leistung zur gefundenen Netto Leistung dann zwar in ___batAdjustEfficiencyAndLimits erhöht, aber einige Stunden am Tag können das evtl. garnicht leisten, oder wir sind über dem Limit. Damit haben wir am Ende des Tages warscheinlich zu wenig Energie geladen oder mussten Leistung nachträglich erhöhen.
Wir sollten aus der Netto Energie die der Akku benötigt zuerst die Brutto Energie (Netto / Efficiency) berechnen und mit dieser dann den Achievable und ___batFindMinPhWh berechnen.

Zitat von: DS_Starter am 09 November 2025, 00:00:46Leider wird der Praxistest bei mir längere Zeit nichts bringen weil die nächsten Tage unterirdische PV vorhersagen. Vielleicht habt ihr eher die Möglichkeit dazu. Wäre super  :).
Ja, selbst bei meiner Anlagengröße reichts gerade nicht um den Akku voll zu bekommen. Aber evtl. reichts wieder in den nächsten Tagen.
Gestern hatte ich das erste mal ein "hochzählen" von Battery_OptimumTargetSoC von 5% auf 10%.
Allerdings hab ich incl. heute den dritten Tag in folge meinen MaxSoc nicht erreicht. Ich hatte also schon drei Erhöhungen erwartet. Dann aber das komische: Gestern Abend geht er wieder auf 5% runter, obwohl heute auch mies ist.
Hier die beiden Log's zu den Veränderungen
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Battery share factor of total required load: 1.00
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Expected energy for charging raw: 6405 Wh
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Expected energy for charging after application Share factor: 6405 Wh
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - compare with SoC history -> preliminary new Target: 10 %
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step2 Bat 01 - basics -> Energy expected for charging: 6405 Wh, need until maxsoc: 5967 Wh
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step2 Bat 01 - calc care SoC -> docare: 0, care SoC: 5 %, Remaining days until care SoC: 24, Target: 10 %
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - basics -> cantarget: 17 %, newtarget: 10 %
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - charging probability -> docare: 0, Target: 10 % (new target > 5 % and Sunset has passed)
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step4 Bat 01 - basics -> docare: 0, lowSoc: 5 %, upSoc: 20 %
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step4 Bat 01 - observe low/up limits -> Target: 10 %
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step5 Bat 01 - rounding the SoC to steps of 5 % -> Target: 10 %
2025.11.08 17:29:23 1: PV_SolarForecast DEBUG> SoC Step6 Bat 01 - force charging request: no (Battery is sufficiently charged)

2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Battery share factor of total required load: 1.00
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Expected energy for charging raw: 8571 Wh
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Expected energy for charging after application Share factor: 8571 Wh
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - compare with SoC history -> preliminary new Target: 10 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step2 Bat 01 - basics -> Energy expected for charging: 8571 Wh, need until maxsoc: 7212 Wh
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step2 Bat 01 - calc care SoC -> docare: 0, care SoC: 5 %, Remaining days until care SoC: 24, Target: 10 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - basics -> cantarget: -12 %, newtarget: -12 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - charging probability -> docare: 0, Target: 5 % (new target < current Target SoC 10)
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step4 Bat 01 - basics -> docare: 0, lowSoc: 5 %, upSoc: 20 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step4 Bat 01 - observe low/up limits -> Target: 5 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step5 Bat 01 - rounding the SoC to steps of 5 % -> Target: 5 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step6 Bat 01 - force charging request: no (Battery is sufficiently charged)
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt - Inverter 'Fronius_Symo1' cap: 10000 W, Power limit: 100 % -> Pmax eff: 10000 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt - Inverter 'Fronius_Symo2' cap: 12000 W, Power limit: 100 % -> Pmax eff: 12000 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt - Summary Power limit of all Inverter (except feed 'grid'): 22000 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt - The limit for grid feed-in is: 18800 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - selected charging strategy: smartPower
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - General load termination condition: 0
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - control time Slot - Slot start: 00:00, Slot end: 23:59
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - control barrier SoC: 40 % / 3072 Wh
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - control barrier Parameter: set:4444
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - Battery efficiency used: 87 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - weighted self-consumption: 0 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - charging target: 100 % / 7680 Wh
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - Percentage of the total amount of charging energy required: 100.0 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - The PV generation, consumption and surplus listed below are based on the battery's share of the total amount of charging energy required!
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - used safety margin: 20 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - charging target: 7680 Wh, remaining: 7212 Wh -> target likely achievable? no
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - current Ratio of surplus / energy requirement to achieve the load target: 0 %
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 08/23 - hod:24/00, lr/lc:1/1, SocS/E:468/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/00 - hod:01/01, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/01 - hod:02/02, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/02 - hod:03/03, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/03 - hod:04/04, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/04 - hod:05/05, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/05 - hod:06/06, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/06 - hod:07/07, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/07 - hod:08/08, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/08 - hod:09/09, lr/lc:1/1, SocS/E:384/768 Wh, SurpH/D:108/0 Wh, OTP:3000/476 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/09 - hod:10/10, lr/lc:1/1, SocS/E:768/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/10 - hod:11/11, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/11 - hod:12/12, lr/lc:1/1, SocS/E:384/798 Wh, SurpH/D:476/0 Wh, OTP:3000/476 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/12 - hod:13/13, lr/lc:1/1, SocS/E:798/1141 Wh, SurpH/D:394/0 Wh, OTP:3000/394 W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/13 - hod:14/14, lr/lc:1/1, SocS/E:1141/1093 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/14 - hod:15/15, lr/lc:1/1, SocS/E:1093/1071 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/15 - hod:16/16, lr/lc:1/1, SocS/E:1071/768 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/16 - hod:17/17, lr/lc:1/1, SocS/E:768/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W
2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 09/17 - hod:18/18, lr/lc:1/1, SocS/E:384/384 Wh, SurpH/D:0/0 Wh, OTP:3000/- W

Viele Grüße

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

DS_Starter

Im Parameter ctrlBatSocManagementXX->loadTarget kann man neben dem SoC-Ziel nun auch eine Zielzeit mitgeben, wobei auch eine (negative) Relativzeit zum Sonnenuntergang verwendet werden kann:

loadTarget
   
        Optionaler Ziel-SoC (%), Zielzeit zur Berechnung der Ladefreigabe und optimalen Ladeleistung.
   Der angegebene Ziel-SoC muß größer als der Wert von 'lowSoC' sein. Ein höherer Wert im Reading
   Battery_OptimumTargetSoC_XX gegenüber der Parametervorgabe hat Vorrang.
   Eine angegebene Zielzeit ist die volle Stunde (1..20) oder als negativer Wert (-20..-1) die
   letzte volle Stunde vor dem Sonnenuntergang abzüglich diesem Wert.
   Syntax: <Ziel-SoC>[:<Zielzeit>]
   Wertebereich Ziel-SoC: lowSoc..100, default: 100
   Wertebereich Zielzeit: -20..20 (ohne führende Null), default: undefiniert


Update liegt wieder im Contrib.
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

#4473
ZitatDanke, aber ich glaub so ganz passts auch jetzt noch nicht. "runwhneed" ist jetzt nur noch die Netto-Zielenergie im Akku die wir brauchen, aber nichtmehr die Brutto Energie zum Akkuladen.
Das "Achievable" und die Suche ___batFindMinPhWh rechnet jetzt nur mit der niedrigeren Netto Energie und Ladeleistung.
Im Anschluss wird die Leistung zur gefundenen Netto Leistung dann zwar in ___batAdjustEfficiencyAndLimits erhöht, aber einige Stunden am Tag können das evtl. garnicht leisten, oder wir sind über dem Limit. Damit haben wir am Ende des Tages warscheinlich zu wenig Energie geladen oder mussten Leistung nachträglich erhöhen.
Man wird sehen...
In jedem Zyklus wird der gesamte Tag durchlaufen, nicht nur eine Stunde. D.h. das Nettoergebnis aus ___batFindMinPhWh und nachgelagerten Subs wird sowohl für die Weiterschreibung (Prognose) für jede einzelne betrachtete Stunde als auch für die aktuelle Stunde am Ende immer auf den Bruttowert gebracht und mit den max/min Grenzen behandelt. Damit sollte das passen.
Aber der Praxistest wird es zeigen. Die Devise ist "So einfach wie möglich - so kompliziert wie nötig".

ZitatJa, selbst bei meiner Anlagengröße reichts gerade nicht um den Akku voll zu bekommen. Aber evtl. reichts wieder in den nächsten Tagen.
Gestern hatte ich das erste mal ein "hochzählen" von Battery_OptimumTargetSoC von 5% auf 10%.
Allerdings hab ich incl. heute den dritten Tag in folge meinen MaxSoc nicht erreicht. Ich hatte also schon drei Erhöhungen erwartet. Dann aber das komische: Gestern Abend geht er wieder auf 5% runter, obwohl heute auch mies ist.

Entweder war mal für heute mehr Überschuß als benötigt angezeigt oder (wahrscheinlich) ist morgen wieder genügend Überschuß in der Prognose. Deswegen wird Platz frei gemacht und die Energie in das Haus geliefert:

2025.11.08 23:33:36 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - basics -> cantarget: -12 %, newtarget: -12 %

Hier kann die Bat mehr als voll geladen werden. Bei cantarget steht sonst irgendein höherer Wert wie bei mir:

2025.11.09 15:29:00.444 1: SolCast DEBUG> SoC Step3 Bat 01 - basics -> cantarget: 69 %, newtarget: 15 %
-> SoC Opt wurde auf 15% gesetzt, wird morgen weiter auf 20% steigen wenn kein Wunder geschieht.  ;)
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