76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

300P

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

lorisurfen

Hat sich am consumer-Schlüssel locktime etwas geändert, wenn ich ein consumuer-attribut (ohne Änderung) speichern will kommt jetzt plötzlich folgende Fehlermeldung:
ZitatThe key 'locktime=0:30' is not specified correctly. Please refer to the command reference.

300P

Da ist nichts verändert worden.
Zeig einmal den gesamten Consumer
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

lorisurfen

#5418
Zitat von: 300P am 16 März 2026, 16:31:04Da ist nichts verändert worden.
Zeig einmal den gesamten Consumer
Es hat auch schon mal funktioniert, daher war meine Vermutung dass etwas mit den letzten updates Version 2.2.3 oder davor reingekommen ist.
Shelly_UG_1 type=heater power=800 icon=IR@red pcurr=power:W etotal=energy:Wh mode=can mintime=SunPath on=on off=off interruptable=0 swoncond=calcEnergieManager:calc_surplus:{$VALUE>700?1:0;} swoffcond=calcEnergieManager:calc_surplus:{$VALUE<-500?1:0;} locktime=0:30

300P

Versuche es mal mit "auto=automatic";)
(siehe nächster Post)
Shelly_UG_1
type=heater
power=800
icon=IR@red
pcurr=power:W
etotal=energy:Wh
mode=can
mintime=SunPath
on=on
off=off
interruptable=0
swoncond=calcEnergieManager:calc_surplus:{$VALUE>700?1:0;}
swoffcond=calcEnergieManager:calc_surplus:{$VALUE<-500?1:0;}
locktime=1:30
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

300P

Hab grad erst bemerkt das
locktime=0:30
nicht funktioniert.

Ich hatte 300:300 genutzt bei der Eingabeprüfung

locktime=1:30 geht aber.


Also doch irgendwas nicht ganz okay.  :o
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Hallo zusammen,

ZitatEs hat auch schon mal funktioniert, daher war meine Vermutung dass etwas mit den letzten updates Version 2.2.3 oder davor reingekommen ist.
....
locktime=0:30
nicht funktioniert.

Ich hatte 300:300 genutzt bei der Eingabeprüfung

locktime=1:30 geht aber.


Also doch irgendwas nicht ganz okay.  :o
Mit der 2.2.3 nicht, aber mit 2.2.0 vom 15.02. sind Validierungen für Attributschlüssel hinzugekommen die bisher keine/ungenügende hatten.
Aber hier muß natürlich auch 0:0 usw. valide sein.
Das fixe ich mit der kommenden Version.

In der Zwischenzeit kannst du locktime=1:30 als Workaround nutzen. Die 1 Sekunde wirst du nicht spüren.
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

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

Bezüglich Battery_OptimumTargetSoC_XX habe ich im Wiki noch den erläuternden Satz hinterlegt der die Funktion dieses Readings gut zusammenfasst:


🎯 Kurzfazit: Was beschreibt Battery_OptimumTargetSoC_XX?

Battery_OptimumTargetSoC_XX definiert den optimalen Ziel‑SoC, den die Batterie erreichen bzw. nicht unterschreiten sollte, um prognostizierte PV‑Überschüsse aufzunehmen, ausreichende Reserven zu halten und die erforderlichen Pflegezyklen zu erfüllen.
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

Die angewendete Bias- und Driftkorrektur wird nun auch in der pvHistory und nextHours aufgezeichnet:

      22 => pvapifcraw: 0, pvfc: 0, pvrl: -, pvrlvd: -, plantderated: -, rad1h: -
            etotali01: -, etotali02: -, etotali03: -, etotali04: -, etotali05: -
            pvrl01: -, pvrl02: -, pvrl03: -, pvrl04: -, pvrl05: -
            etotalp01: -, etotalp02: -, etotalp03: -
            pprl01: -, pprl02: -, pprl03: -
            conlegfc: 650, conaifc: 779, confc: 779, conbiascorr: 10, con: -, gcons: -, conprice: -
            gfeedin: -, feedprice: -
            DoN: 0, sunaz: 310, sunalt: -29

Dadurch kann man rückwirkend erkennen inwieweit diese Korrektur die Prognose näher an den realen Verbrauch (con) herangebracht hat, oder im kontraproduktiven Fall die Differenz sogar verschlechtert hat.

Update 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

300P

Naben Heiko,

kam beim shutdown/restart nach dem Contrib update:
2026.03.16 21:06:00 1: PERL WARNING:     (in cleanup) object of class struct fann * expected at ./FHEM/76_SolarForecast.pm line 9857.
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Hmm, das ist eine Warnung aus der Laderoutine der persistierten Daten auf der Platte. Evtl. Lesefehler?
Läuft alles?

get ... valDecTree aiNeuralNetConState
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

300P

Ja läuft:

Informationen zum neuronalen Netz der Verbrauchsvorhersage

letztes KI-Training: 15.03.2026 21:04:47 / Laufzeit in Sekunden: 3781
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 61.82 ms
Verbrauchernummer Wärmepumpe:  08

=== Modellparameter ===

Normierungsgrenzen: PV=10450 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 8052 Datensätze (Training=6441, Validation=1611)
Architektur: Inputs=98, Hidden Layers=80-40, Outputs=1
Hyperparameter: Learning Rate=0.001, Momentum=0.6, BitFail-Limit=0.15
Aktivierungen: Hidden=GAUSSIAN_SYMMETRIC, Steepness=1.0, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump_active_pv
Zufallsgenerator: Mode=1, Period=20
Modellalter: 25 h

=== Trainingsmetriken ===

bestes Modell bei Epoche: 863 (max. 15000)
Training MSE: 0.002559
Validation MSE: 0.003974
Validation MSE Average: 0.007886
Validation MSE Standard Deviation: 0.000305
Validation Bit_Fail: 34
Model Bias: 90 Wh
Model Slope: 0.9
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 375.54 Wh
MedAE: 307.94 Wh
RMSE: 439.05 Wh
RMSE relative: 20 %
RMSE Rating: good
MAPE: 18.54 %
MdAPE: 15.26 %
R²: 0.68

=== Rauschen ===

Rauschen Bewertung: low
Empfehlung für Bit_Fail: 0.28 (Einstellung von aiControl->aiConBitFailLimit)

=== Drift-Kennzahlen ===

Drift Score: 2.24
Drift RMSE ratio: 2.83
Drift Slope: 0.140
Drift Bias: 970.16
Drift Bewertung: mild
Slope recalibrated: -
Bias recalibrated: -


2026.03.16 22:00:16 1: Forecast DEBUG> start add AI raw data for hour: 22
2026.03.16 22:00:16 4: Forecast DEBUG> AI raw add - idx: 2026031622, day: 16, hod: 22, sunalt: -26, sunaz: 305, rad1h: 0, pvrl: 0, con: 1966, wcc: 85, rr1c: 0.00, temp: 2.8
2026.03.16 22:00:16 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.03.16 22:00:16 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.03.16 22:00:16 1: Forecast DEBUG> DRIFT [con]: Flag=mild | Block=0 | SlopeLive=0.122 | DriftSlope=0.140 | BiasLive=1060.41 | DriftBias=970.16 | RMSErelLive=56.5 | RMSErelRatio=2.83 | BiasVarNorm=0.17 |DriftScore=2.24 | Zone3Hours=1 | Hist=[mild,mild]
2026.03.16 22:00:16 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast

Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

300P

Hab mal gesucht....war mir bislang nicht in die Augen gesprungen  :-[

Der erste dieser Perl Error erfolgte nach Update aus Contrib am 10.03.2026

2026.03.10 09:19:08 2: Forecast - start download Update Solarforecast from Contrib   ====>>> wird gestartet
2026.03.10 09:19:08 2: Forecast - end download Update Solarforecast from Contrib
2026.03.10 09:19:08 2: Forecast - attr Forecast userFn_LoadContribcUpdate 0             ====>>> wurde ausgef�hrt

Danach bei jedem restart... leider nicht gesehen weil da immer vom DoIf (Card-Nutzung) eine gleiche Reihe von Perl-Error kommt - dann den nicht gesehen... :'( .
2026.03.10 09:20:10 1: MB_CFG_SBS25: loading config from cfg file
2026.03.10 09:20:13 1: PERL WARNING:     (in cleanup) object of class struct fann * expected at ./FHEM/76_SolarForecast.pm line 9822.
2026.03.10 09:20:15 1: Zisterne: loading config from cfg file
2026.03.10 09:20:32 1: Including ./log/fhem.save
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcEnd in addition (+) at ./FHEM/98_DOIF.pm line 6402.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcBegin in addition (+) at ./FHEM/98_DOIF.pm line 6402.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcEnd in numeric gt (>) at ./FHEM/98_DOIF.pm line 6403.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcBegin in numeric gt (>) at ./FHEM/98_DOIF.pm line 6403.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcBegin in sprintf at ./FHEM/98_DOIF.pm line 6849.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcEnd in sprintf at ./FHEM/98_DOIF.pm line 6849.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcBegin in sprintf at ./FHEM/98_DOIF.pm line 6867.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $arcEnd in sprintf at ./FHEM/98_DOIF.pm line 6867.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $endAngle in numeric gt (>) at ./FHEM/98_DOIF.pm line 6438.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $startAngle in numeric gt (>) at ./FHEM/98_DOIF.pm line 6438.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $angleInDegrees in subtraction (-) at ./FHEM/98_DOIF.pm line 6394.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $startAngle in subtraction (-) at ./FHEM/98_DOIF.pm line 6445.
2026.03.10 09:20:35 1: PERL WARNING: Use of uninitialized value $endAngle in subtraction (-) at ./FHEM/98_DOIF.pm line 6445.
2026.03.10 09:20:36 1: PERL WARNING: Argument "initialized" isn't numeric in numeric gt (>) at (eval 2257) line 1.
2026.03.10 09:20:36 0: Featurelevel: 6.4
2026.03.10 09:20:36 0: Server started with 444 defined entities (fhem.pl:30719/2026-01-11 perl:5.036000 os:linux user:fhem pid:1049601)
2026.03.10 09:21:05 2: AttrTemplates: got 270 entries
2026.03.10 09:21:07 1: PERL WARNING: Use of uninitialized value in subroutine entry at ./FHEM/99_Utils.pm line 21.
2026.03.10 09:22:01 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 8751) line 1.
2026.03.10 09:27:01 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 22789) line 1.
2026.03.10 09:32:01 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 38772) line 1.
2026.03.10 09:37:01 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 53420) line 1.
2026.03.10 09:42:01 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 68552) line 1.
2026.03.10 09:47:04 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 82588) line 1.
2026.03.10 09:52:01 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 97845) line 1.
2026.03.10 09:57:02 1: PERL WARNING: Argument "" isn't numeric in sprintf at (eval 117069) line 1.
Gruß
300P

FHEM 6.4|RPi|SMAEM|SMAInverter|SolarForecast| DbLog|DbRep|MariaDB|Buderus-MQTT_EMS|
Fritzbox|fhempy|JsonMod|HTTPMOD|Modbus ser+TCP| ESP32_AI_on_the_Edge|ESP32CAM usw.

DS_Starter

Habe das Problem gefunden und beseitigt. Es war eine "Spezialität" bei der Speicherung der AI::FANN Objekte.
Update liegt 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