76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

Parallix

#7005
Da mein FHEM auf einem Banana Pro läuft und es gelegentlich bei Modbus-Abfragen zu einem Timeout kommt, versuche ich gerade Problemfälle in Sachen CPU- und Speichernutzung sowie Blockierungen zu identifizieren.

Hierbei ist mir nachfolgendes DEAD aufgefallen:
GMFRUNNING:
       abortFn    FHEM::SolarForecast::_abortGetMessageFile
       bc_pid     30
       finishFn   FHEM::SolarForecast::_processMessageFile
       fn         FHEM::SolarForecast::_retrieveMessageFile
       loglevel   3
       pid        DEAD:26054
       telnet     telnetForBlockingFn_1789889458.07661_127.0.0.1_39932
       terminated 1
       timeout    30
       abortArg:
       arg:
         block      1
         name       SF
         tsnext     1789896826 

Auch frage ich mich, ob folgende Info
    NOTIFYDEV  GW25,EnO_FSVA_1_M,EnO_FSVA_2_M,WebastoNext,EnO_FMS61NP_KlBadHeiz_Ch1,BydBat1,BydBat2bedeutet, dass jeglicher Event einer der o.g. Devices zu einer Verarbeitung in SF führt. Wenn ja, so interessiert mich, ob sich das ändern lässt, ohne das ich in den jeweiligen Devices mittels event-on-... konfiguriere. Gerade was z.B. den Wechselrichter (GW25) angeht, gibt es nämlich eine Vielzahl von Readings, die ich an anderer Stelle benötige, die aber nicht unbedingt zu einem Verarbeitung seitens SF führen (müssen).
FHEM auf Debian/Testing BananaPro in täglich aktualisierter Version - AVM: 7490 (7.62) und 7591 (8.25) - Goodwe: GW25K-ET (DSP V10 / ARM V12) - Trina TSM 405: (#East, #South, #West) = (12,16,12) - BYD: 2 x HVS 7.7 (BMS V3.31-B, BMU V3.26-B) - EnOcean - Z-Wave - FS20/HMS

DS_Starter

#7006
ZitatAuch frage ich mich, ob folgende Info
    NOTIFYDEV  GW25,EnO_FSVA_1_M,EnO_FSVA_2_M,WebastoNext,EnO_FMS61NP_KlBadHeiz_Ch1,BydBat1,BydBat2
bedeutet, dass jeglicher Event einer der o.g. Devices zu einer Verarbeitung in SF führt.
Nein.
Es bedeutet zunächst, dass SF grundsätzlich nur Events der dort angegebenen Devices vom FHEM-Kern durchgereicht bekommt. Es ist ein Filter der die generelle Last im System (durch SF) reduziert. Abhängig davon ob ein Entwickler NOTIFYDEV in seinen Modulen integriert hat, wirst du dieses Internal auch in anderen Devices finden.

Ob ein empfangener Event zu einer Verarbeitung in SF führt, ist von der asynchron-Einstellung des jeweiligen Consumers, Inverters etc. abhängig. Wenn asynchron=1 wird eine SF-Verarbeitung gestartet. asynchron=0 ist der Default.

Mit ctrlDebug=notifyHandling kannst du dir die Eventverarbeitung durch SF ansehen. Weiterhin kannst du dir mit
get ... stepTimes ...
einen Überblick über die Verarbeitungsgeschwindigkeit der Bestandteile innerhalb SF verschaffen.
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

Hallo,
ich nutze die Batteriesteuerung mit OTP schon länger, aber seit ca. 2 Wochen klappt das nichtmehr.
Jeweils zum Ende einer Stunde bekomme ich "target likely achievable? no" und einen sehr geringen "Ratio of remaining surplus", und dadurch eine hohe Ladeleistung.
Zum Beginn der neuen Stunde ist dann wieder Überschuss vorhanden und die Ladeleistung wird wieder beschränkt.
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ######################### Start Battery Management DebugLog #########################
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> setup values: lowSoc=5 %, upSoc=20 %, maxSoc=100 %, stepSoc=5 %, careCycle=25
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> pvHistory values: yesterday=19, batymaxsoc=94.9 %, batysetsoc=100 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> current values: SoC=83.3 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> Battery share factor of total required load: 1.00
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> today -> PV fc: 53900 Wh, con till sunset: 24 Wh, Surp: 53876 Wh
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> tomorrow -> PV fc: 64569 Wh, con till sunset: 2096 Wh, Surp: 62997 Wh (75% con)
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> selected energy for charging (the higher positive Surp value from above): 62997 Wh
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - basics -> expected energy for charging after application Share factor: 62997 Wh
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step1 Bat 01 - compare with SoC history -> preliminary new Target: 100 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step2 Bat 01 - basics -> Energy expected for charging: 62997 Wh, need until maxsoc: 1283 Wh
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step2 Bat 01 - calc care SoC -> docare: 1, care SoC: 100 %, remain days until care SoC: 0, Target: 100 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - basics -> max SOC so that predicted PV can be stored: -720 %, newtarget: -720 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step3 Bat 01 - charging probability -> docare: 1, Target: 100 % (no change)
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step4 Bat 01 - basics -> docare: 1, lowSoc: 5 %, upSoc: 20 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step4 Bat 01 - observe low/up limits -> Target: 100 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step5 Bat 01 - rounding the SoC to steps of 5 % -> Target: 100 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> SoC Step6 Bat 01 - force charging request: yes (battery charge is below minimum SoC)
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt - Inverter 'Fronius_Symo1' cap: 10000 W, Power limit: 100 % -> Pmax eff: 10000 W
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt - Inverter 'Fronius_Symo2' cap: 12000 W, Power limit: 100 % -> Pmax eff: 12000 W
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt - Summary Power limit of all Inverter (except feed 'grid'): 22000 W
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt - The limit for grid feed-in is: 18800 W
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - selected charging strategy: smartPower
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - general load termination condition: 0
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - control time Slot - Slot start: 00:00, Slot end: 23:59
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - control barrier SoC: 50 % / 3840 Wh
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - control barrier Parameter: set:4444
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - Battery efficiency used: 87 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - weighted self-consumption: 0 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - Target load and target time: 100 % / 7680 Wh / -
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeMgmt Bat 01 - Percentage of the total amount of charging energy required: 100.0 %
2026.09.20 10:59:52 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!
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - used safety margin: 20 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - charging target: 7680 Wh, E requirement incl. efficiency: 1475 Wh -> target likely achievable? no
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - Ratio of remaining surplus 130 Wh / energy requirement to achieve the load target: 8.82 %
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 20/10 - hod:11/00, lr/lc:1/1, SocS/E:6397/7680 Wh, SurpH/D:7794/130 Wh, OTP:3000/149 W
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 20/11 - hod:12/01, lr/lc:0/1, SocS/E:7680/7680 Wh, SurpH/D:0/0 Wh, OTP:0/- W
2026.09.20 10:59:52 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 20/12 - hod:13/02, lr/lc:0/1, SocS/E:7680/7680 Wh, SurpH/D:0/0 Wh, OTP:0/- W

...

2026.09.20 11:00:04 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - used safety margin: 20 %
2026.09.20 11:00:04 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - charging target: 7680 Wh, E requirement incl. efficiency: 1475 Wh -> target likely achievable? yes
2026.09.20 11:00:04 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 - Ratio of remaining surplus 8933 Wh / energy requirement to achieve the load target: 605.75 %
2026.09.20 11:00:04 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 20/11 - hod:12/00, lr/lc:1/1, SocS/E:6397/7680 Wh, SurpH/D:8933/8933 Wh, OTP:1768/1473 W
2026.09.20 11:00:04 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 20/12 - hod:13/01, lr/lc:0/1, SocS/E:7680/7680 Wh, SurpH/D:0/0 Wh, OTP:0/- W
2026.09.20 11:00:04 1: PV_SolarForecast DEBUG> ChargeOTP Bat 01 20/13 - hod:14/02, lr/lc:0/1, SocS/E:7680/7680 Wh, SurpH/D:0/0 Wh, OTP:0/- W
Du darfst diesen Dateianhang nicht ansehen.
Die Ladeleistung OTP wird daher zum Ende der Stunde immer ans Maximum gezogen und es wird "not Acchievable" angezeigt.
Heute war für PV sogar ein sehr guter Tag, es war reichlich Überschuss vorhanden.

An der SF Config habe ich seit einiger Zeit nichtsmehr geändert, woran könnte das liegen?
Auffällig ist das "SurpH/D" für alle Stunden außer der aktuellen immer 0 ist und "con till sunset" sehr gering ist.


Vielen Dank

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

Nabend Hadl,

Schön mal wieder von dir zu lesen.  ;) Es gibt zwei Punkte die ich sehe ...

1. Die Debug-Meldung ist irreführend formuliert

Die Zeile
SoC Step6 Bat 01 - force charging request: yes (battery charge is below minimum SoC)
Der Code vergleicht dort nicht mit dem lowSoc (5 %), sondern mit dem berechneten Ziel-SoC (target). Da der target in deinem Fall auf 100 % liegt und 83,3 % < 100 % ist, wird die Ladeanforderung korrekt gesetzt. Der Text "below minimum SoC" ist irreführend, das korrigiere ich in der nächsten Version.

2. Der eigentliche Punkt des Verhaltens (m.M. nach): careCycle und stepSoc

Im Log steht:
calc care SoC -> docare: 1, care SoC: 100 %, remain days until care SoC: 0, Target: 100 %
remain days until care SoC: 0 bedeutet, dass der Pflegezyklus dauerhaft als überfällig gilt. Dadurch wird docare=1 gesetzt, was den Target-SoC auf 100 % erzwingt — unabhängig von Überschuss oder Tageszeit. Das hält die $soc < $target-Bedingung dauerhaft wahr und zieht in der OTP-Logik zum Stundenende die Ladeleistung ans Maximum, sobald der verbleibende Überschuss der aktuellen Stunde gegen null geht.

Die wahrscheinliche Ursache dafür:
Die Werte stepSoc=5 % und careCycle=25 verletzen eine interne Constraint, die vorschreibt dass stepSoc × careCycle = 100 sein muss (also z.B. 5 × 20 oder 4 × 25). Bei 5 × 25 = 125 ist die Berechnung des Pflegeintervalls nicht mehr stimmig.


Welche Version von SolarForecast ist bei dir aktiv? In der aktuellen Version wird diese Kombination bereits bei der Eingabe geprüft und bei Verletzung der Bedingung abgelehnt.
Korrigiere testweise entweder careCycle auf 20 (bei stepSoc=5) oder stepSoc auf 4 (bei careCycle=25).

Das sollte das Verhalten (vermutlich) normalisieren.

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

@all,

ich habe soben die V 2.10.4 eingecheckt.
Möglicherweise habe ich ein potentielles Speicherleck bei Verwendung von AI::FANN entdeckt und beseitigt.

Morgen wie gewöhnlich im Update enthalten.
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