76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

tomcat.x

Zitat von: DS_Starter am 28 Juni 2026, 15:47:33Deswegen würde ich gern vorab in die Runde fragen wer ebenfalls OpenMeteo mit mehr als 2 Strings nutzt und seine Erfahrungen damit berichtet.

Bei mir sind es auch 3, ohne Probleme.
FHEM: 6.4 auf Raspi 4B, Raspbian (noch Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 8.25), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

DS_Starter

#6526
Hallo zusammen,

ich habe mir weitere Gedanken gemacht, wie die Anwender noch intensiver bei der Einstellung bzw. Optimierung der Trainingsparamter unterstützen kann. Mit der Autokonfigurationsfunktion und dem internen "Berater" gibt es bereits eine gute Unterstützung.
Nun kann man aus dem Status-Dashboard heraus über einen Link die externe Analyse der Google Gemini KI requesten.
Man braucht dazu einen kostenlosen API-Key.

Update liegt im Contrib.

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

300P

Guten Morgen,

3 Tage nach dem Einbau des Shelly 3EMPRO bin ich mir sicher, das meine CON-Forecast zwar bislang schon gut waren, aber mit der Einbindung als ConsumerXX von den Geräten der Klimaanlage auf der Phase 3 und dem Elektrogrill auf Phase 2 werde ich mich wohl noch gut bei der Prognose steigern können.  8)

Gestern wars etwas kühler:
Phase 2/B Grillen / Terrassenverbrauch
Da haben wir 3 kleine Würstchen gegrillt und anschließend noch den Grill "ausgebrannt" - war mal wieder fällig.
->> 3.3 kWh

Phase 3/C Klima
Da bekommt man große Augen was bei 37 Grad so verbraucht wird (Samstag 17.4 kWh /Sonntag 25.0 kWh) :o
Am Montag nur Silentmodus ab dem Mittag :)
siehe Grafik


Mal schauen was ich im Verteilerkasten noch an Phase 1/A überwachen / greifen könnte..... 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

#6528
Moin,

Zitat...aber mit der Einbindung als ConsumerXX...
Ja, das wird sich dann auswirken wenn ich FANN die Verbrauchsdaten _aller_ Consumer (nicht nur HP/BEV) als zusätzliche Info bereitstelle -> ein ToDo.

Ansonsten habe ich bzgl. Gemini noch einige Traingsinfos hinzugefügt und zur Transparenz werden mit ctrlDebug=apiCall die übermittelten Daten im Log ausgedruckt.
Damit ihr wißt was an Google Gemini zur Analyse übermittelt wird. Nutzt Gemini natürlich nur, wenn ihr nichts gegen die Datenübertragung einzuwänden habt.
Ein Hinweis in der Hilfe dazu ist auch eingebaut.

Edit: Aktuell bin ich mit der CON-Prognose bei mir schon sehr zufrieden. Es geht sicherlich noch besser ... aber ich denke damit kann man schon etwas anfangen.

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

300P

Na, da ist erst mal heute "Warten" seit ein paar Stunden angesagt....:
API-Error 503: This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.
API-Fehler 503: Dieses Modell ist derzeit sehr gefragt. Nachfragespitzen sind in der Regel vorübergehend. Bitte versuchen Sie es später noch einmal.
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

Nach dem download/shutdown/restart habe ich die Einträge und Perl-Warnings
2026.06.30 11:52:43 0: Featurelevel: 6.4
2026.06.30 11:52:43 0: Server started with 449 defined entities (fhem.pl:31310/2026-05-28 perl:5.036000 os:linux user:fhem pid:574840)
2026.06.30 11:52:47 1: Forecast DEBUG> start add AI raw data for hour: 1
2026.06.30 11:52:47 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:47 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:48 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.510 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:48 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=203.28 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.62 | DriftScore=1.33 | Zone3Hours=7 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:48 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:48 1: Forecast DEBUG> start add AI raw data for hour: 2
2026.06.30 11:52:48 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:48 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:49 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.510 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:49 1: Forecast DEBUG> DRIFT [con]: Flag=recalibrated | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=203.28 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.62 | DriftScore=1.33 | Zone3Hours=0 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (just_recalibrated)
2026.06.30 11:52:49 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:49 1: Forecast DEBUG> start add AI raw data for hour: 3
2026.06.30 11:52:49 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:50 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:51 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:51 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=1 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:51 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:51 1: Forecast DEBUG> start add AI raw data for hour: 4
2026.06.30 11:52:51 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:51 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:52 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:52 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=2 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:52 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:52 1: Forecast DEBUG> start add AI raw data for hour: 5
2026.06.30 11:52:52 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:52 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:53 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:53 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=3 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:53 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:53 1: Forecast DEBUG> start add AI raw data for hour: 6
2026.06.30 11:52:53 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:53 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:55 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:55 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=4 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:55 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:55 1: Forecast DEBUG> start add AI raw data for hour: 7
2026.06.30 11:52:55 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:55 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:56 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:56 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=5 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:56 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:56 1: Forecast DEBUG> start add AI raw data for hour: 8
2026.06.30 11:52:56 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:56 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:57 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:57 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=6 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:57 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:57 1: Forecast DEBUG> start add AI raw data for hour: 9
2026.06.30 11:52:57 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:57 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:52:58 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:52:58 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=7 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:52:58 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:52:58 1: Forecast DEBUG> start add AI raw data for hour: 10
2026.06.30 11:52:58 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:52:59 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:53:00 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.341 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:53:00 1: Forecast DEBUG> DRIFT [con]: Flag=recalibrated | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=136.19 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.60 | DriftScore=1.33 | Zone3Hours=0 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (just_recalibrated)
2026.06.30 11:53:00 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:53:00 1: Forecast DEBUG> start add AI raw data for hour: 11
2026.06.30 11:53:00 1: Forecast DEBUG> AI raw add - 1 entities added to raw data pool (set verbose 4 for output more detail)
2026.06.30 11:53:00 1: Forecast DEBUG> AI raw data saved into file: ./FHEM/FhemUtils/AIraw_SolarForecast_Forecast
2026.06.30 11:53:01 1: Forecast DEBUG> DRIFT SAFETY [con]: block=none
  -- RMSE Analysis --
     rmse_rel_ratio=2.170 | dynamic_limit=4.754 | margin=2.583 ok
     Limit Composition: base=4.0 | peak_part=0.222 (peak_ratio=0.222) | sem_part=0.342 (sem_ratio=0.694) | var_part=0.190 (slope_var=0.37960)
  -- Slope Analysis --
     slope_live=0.456 | slope_drift=0.536 | slope_rel_drift=0.464 | slope_var=0.37960
     slope_var_limit=10.08781 | var_ratio=0.04 ok
  -- Bias Analysis --
     bias_live=573.0 | bias_limit=770.4 | bias_ratio=0.74 ok
     quant30=642.0 | quant90=2440.0 | median_load=709.5
  -- Context --
     drift_score=1.331 | bias_drift_norm=0.207 | bias_var_norm=0.305
     peak_ratio=0.222 | sem_ratio=0.694
2026.06.30 11:53:01 1: Forecast DEBUG> DRIFT [con]: Flag=mild | WindowSize=96 | Block=0 | SlopeLive=0.456 | DriftSlope=0.536 | BiasLive=572.96 | DriftBias=82.52 | RMSErelLive=106.3 | RMSErelRatio=2.17 | BiasVarNorm=0.31 | DriftIndex=1.59 | DriftScore=1.33 | Zone3Hours=1 | Zone3Reset=0 | Hist=[mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild,mild] | Retrain=none (-)
2026.06.30 11:53:01 1: Forecast DEBUG> AI FANN drift data type 'con' successfully written to file: ./FHEM/FhemUtils/NeuralNet_SolarForecast_Forecast
2026.06.30 11:53:01 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 2388) line 73.
2026.06.30 11:53:02 1: SMAInverter SB25 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SBS37 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SBS25_2 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SB30 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SB40 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:07 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 3034) line 73.
2026.06.30 11:53:10 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 3454) line 1.
2026.06.30 11:53:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 4489) line 73.
2026.06.30 11:53:33 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 5842) line 1.
2026.06.30 11:53:33 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 5862) line 1.
2026.06.30 11:53:34 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 6011) line 1.
2026.06.30 11:53:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 6052) line 73.
2026.06.30 11:53:36 1: PERL WARNING: Argument "1754.45 W" isn't numeric in sprintf at (eval 6199) line 1.
2026.06.30 11:53:40 1: PERL WARNING: Argument "1754.45 W" isn't numeric in sprintf at (eval 6425) line 1.
2026.06.30 11:53:46 1: PERL WARNING: Argument "1754.45 W" isn't numeric in sprintf at (eval 6870) line 1.
2026.06.30 11:53:51 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 7057) line 73.
2026.06.30 11:53:52 1: PERL WARNING: Argument "86.85 W" isn't numeric in sprintf at (eval 7337) line 1.
2026.06.30 11:54:00 1: PERL WARNING: Argument "86.85 W" isn't numeric in sprintf at (eval 7587) line 1.
2026.06.30 11:54:00 1: PERL WARNING: Argument "86.85 W" isn't numeric in sprintf at (eval 7606) line 1.
2026.06.30 11:54:06 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 7646) line 73.
2026.06.30 11:54:08 1: PERL WARNING: Argument "435.75 W" isn't numeric in sprintf at (eval 7852) line 1.
2026.06.30 11:54:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 8238) line 73.
2026.06.30 11:54:24 1: PERL WARNING: Argument "834.15 W" isn't numeric in sprintf at (eval 8546) line 1.
2026.06.30 11:54:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 9256) line 73.
2026.06.30 11:54:40 1: PERL WARNING: Argument "799.35 W" isn't numeric in sprintf at (eval 9471) line 1.
2026.06.30 11:54:51 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 9984) line 73.
2026.06.30 11:54:51 2: AttrTemplates: got 272 entries
2026.06.30 11:54:54 1: PERL WARNING: Use of uninitialized value in subroutine entry at ./FHEM/99_Utils.pm line 21.
2026.06.30 11:54:56 1: PERL WARNING: Argument "4194.55 W" isn't numeric in sprintf at (eval 10620) line 1.
2026.06.30 11:55:01 1: PERL WARNING: Argument "4194.55 W" isn't numeric in sprintf at (eval 10782) line 1.
2026.06.30 11:55:01 1: PERL WARNING: Argument "4194.55 W" isn't numeric in sprintf at (eval 10801) line 1.
2026.06.30 11:55:06 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 10892) line 73.
2026.06.30 11:55:12 1: PERL WARNING: Argument "4131.45 W" isn't numeric in sprintf at (eval 11506) line 1.
2026.06.30 11:55:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 12154) line 73.
2026.06.30 11:55:28 1: PERL WARNING: Argument "4042.95 W" isn't numeric in sprintf at (eval 13397) line 1.
2026.06.30 11:55:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 13736) line 73.
2026.06.30 11:55:45 1: PERL WARNING: Argument "4136.12 W" isn't numeric in sprintf at (eval 14315) line 1.
2026.06.30 11:55:51 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 14767) line 73.
2026.06.30 11:56:01 1: PERL WARNING: Argument "3847.62 W" isn't numeric in sprintf at (eval 15478) line 1.
2026.06.30 11:56:01 1: PERL WARNING: Argument "3847.62 W" isn't numeric in sprintf at (eval 15519) line 1.
2026.06.30 11:56:01 1: PERL WARNING: Argument "3847.62 W" isn't numeric in sprintf at (eval 15538) line 1.
2026.06.30 11:56:06 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 15617) line 73.
2026.06.30 11:56:17 1: PERL WARNING: Argument "3994.62 W" isn't numeric in sprintf at (eval 19388) line 1.
2026.06.30 11:56:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 19648) line 73.
2026.06.30 11:56:32 1: PERL WARNING: Argument "4293.72 W" isn't numeric in sprintf at (eval 20842) line 1.
2026.06.30 11:56:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 20944) line 73.
2026.06.30 11:56:48 1: PERL WARNING: Argument "3973.02 W" isn't numeric in sprintf at (eval 21787) line 1.
2026.06.30 11:56:51 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 21962) line 73.
2026.06.30 11:57:01 1: PERL WARNING: Argument "4007.82 W" isn't numeric in sprintf at (eval 22428) line 1.
2026.06.30 11:57:01 1: PERL WARNING: Argument "4007.82 W" isn't numeric in sprintf at (eval 22447) line 1.
2026.06.30 11:57:03 1: PERL WARNING: Argument "4007.82 W" isn't numeric in sprintf at (eval 22553) line 1.
2026.06.30 11:57:06 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 22634) line 73.
2026.06.30 11:57:19 1: PERL WARNING: Argument "4041.42 W" isn't numeric in sprintf at (eval 23428) line 1.
2026.06.30 11:57:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 23618) line 73.
2026.06.30 11:57:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 24439) line 73.
2026.06.30 11:57:45 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25064) line 1.
2026.06.30 11:57:46 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25276) line 1.
2026.06.30 11:57:46 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25285) line 1.
2026.06.30 11:57:49 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25445) line 1.
2026.06.30 11:57:49 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25452) line 1.
2026.06.30 11:57:49 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25467) line 1.
2026.06.30 11:57:49 1: PERL WARNING: Argument "4053.85 W" isn't numeric in sprintf at (eval 25514) line 1.
2026.06.30 11:57:51 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 25535) line 73.
2026.06.30 11:57:51 1: PERL WARNING: Argument "3378.95 W" isn't numeric in sprintf at (eval 25615) line 1.
2026.06.30 11:58:01 1: PERL WARNING: Argument "3378.95 W" isn't numeric in sprintf at (eval 26177) line 1.
2026.06.30 11:58:01 1: PERL WARNING: Argument "3378.95 W" isn't numeric in sprintf at (eval 26196) line 1.
2026.06.30 11:58:06 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 26353) line 73.
2026.06.30 11:58:07 1: PERL WARNING: Argument "4056.65 W" isn't numeric in sprintf at (eval 26893) line 1.
2026.06.30 11:58:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 27600) line 73.
2026.06.30 11:58:23 1: PERL WARNING: Argument "4068.75 W" isn't numeric in sprintf at (eval 28118) line 1.
2026.06.30 11:58:29 1: PERL WARNING: Argument "4068.75 W" isn't numeric in sprintf at (eval 28512) line 1.
2026.06.30 11:58:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 28719) line 73.
2026.06.30 11:58:45 1: PERL WARNING: Argument "4060.55 W" isn't numeric in sprintf at (eval 30139) line 1.
2026.06.30 11:58:51 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 30523) line 73.
2026.06.30 11:59:01 1: PERL WARNING: Argument "3829.15 W" isn't numeric in sprintf at (eval 30909) line 1.
2026.06.30 11:59:01 1: PERL WARNING: Argument "3829.15 W" isn't numeric in sprintf at (eval 30938) line 1.
2026.06.30 11:59:01 1: PERL WARNING: Argument "3829.15 W" isn't numeric in sprintf at (eval 30949) line 1.
2026.06.30 11:59:06 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 31117) line 73.
2026.06.30 11:59:17 1: PERL WARNING: Argument "4022.45 W" isn't numeric in sprintf at (eval 31925) line 1.
2026.06.30 11:59:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 32104) line 73.
2026.06.30 11:59:34 1: PERL WARNING: Argument "4009.95 W" isn't numeric in sprintf at (eval 33246) line 1.
2026.06.30 11:59:36 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 33378) line 73.
2026.06.30 11:59:50 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 34746) line 73.
.....................


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

#6531
Ich kann bei mir keine Probleme sehen. Das sieht mir bei dir auch nicht nach einem normalen Restart aus.

Diese Ausgaben und Warnungen:
2026.06.30 11:53:01 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 2388) line 73.
2026.06.30 11:53:02 1: SMAInverter SB25 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SBS37 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SBS25_2 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SB30 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:02 1: SMAInverter SB40 -> BlockingCall SMAInverter_getstatusDoParse Timeout: process terminated
2026.06.30 11:53:07 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 3034) line 73.
2026.06.30 11:53:10 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 3454) line 1.
2026.06.30 11:53:21 1: PERL WARNING: Argument "30.06.2026 11:52:46" isn't numeric in sprintf at (eval 4489) line 73.
2026.06.30 11:53:33 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 5842) line 1.
2026.06.30 11:53:33 1: PERL WARNING: Argument "1636.75 W" isn't numeric in sprintf at (eval 5862) line 1.
...
kommen mit ziemlicher Sicherheit nicht aus SolarForecast.
global stacktrace=1 setzen, restarten und im Log sieht man dann was abläuft.

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

300P

Zur Rückinfo:

Einige der Zeilen kommt ursprünglich von Solarforecast und kommen dann in meinen User_Readings bzw. deren Bildung als das Problem hoch.
z.B. diese :    ....Argument "30.06.2026 11:52:46" isn't numeric....
Wird daher von meinen ctrlUserExitFn kommen: ->> Also muss ich mir da wohl selber an die Nase packen.

Die anderen ploppen als komische Werte in einem DoIf und den enthaltenen "Card" die ich nutze. Der/die ursprünglichen Wert/e kommt von SMAEM / SMAINVERTER und nicht von SF.

Warum das jetzt (erst wieder mal) hochklappt ?????


Sobald ich mal Ruhe dafür finde suche ich was der Grund ist....
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.

Flachzange

Hallo DS_Starter,

ich habe jetzt seit 3 Wochen SolarForecast installiert und bin schwer begeistert vom Funktionsumfang. Vielen Dank dafür! Wenn ich dann irgendwann genug AI-Trainingsdaten habe kann ich auch fachlich mitreden. Mir ist jedoch beim Debuggen eines anderen Problems mit apptime aufgefallen, dass SolarForecast vergleichsweise lange blockiert bei allen File*-Funktionen also insbesondere dem regelmäßigen Speichern des Modells (ca. 1,5 Sekunden). Ursächlich scheint zu sein, dass ich configDB nutze und dadurch alle File*-Operationen dadurch laufen und die Dateien somit in die Datenbank geschrieben werden. Das ja nicht wirklich sinnvoll. Ich habe daraufhin umgestellt auf erzwungenes Speichern im Dateisystem und siehe da, das Speichern dauert nur noch wenige Millisekunden. Vielleicht ist das ja etwas, was du im Modul übernehmen möchtest.

Grüße

Chris aka Flachzange

DS_Starter

Hallo Chris,

danke für die Info. Ich würde vermutlich eine Wahlmöglichkeit über plantControl vorsehen.
Tatsächlich hätte ich vermutet, dass eine Speicherung in der Datenbank wegen Caching-Mechanismen eher schneller als die native Filesystemspeicherung abläuft.
Gut zu wissen.

Ich würde es in einer der nächsten Releases mit vorsehen.

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

Bezüglich externer Gemini-Unterstützung habe ich noch etwas gefeilt.
Gemini meldet mir eine hilfreiche Einschätzung zur weiteren Vorgehensweise für mein schon sehr gutes Modell:

------------------------------------------------
Gesamtbewertung:
Ihr SolarForecast-Modell zeigt für einen stochastischen Haushalt eine erwartungsgemäße Leistung. Der R²-Wert von 0.265 liegt am unteren Ende des typischen Bereichs (0.25-0.35), was angesichts des "borderline" Rauschlevels und des stochastischen Verhaltens absolut plausibel ist. Slope (0.35) und Bias (446 Wh) liegen perfekt innerhalb der strukturell erwarteten Bereiche (0.35-0.45 bzw. 400-500 Wh). Dies deutet darauf hin, dass das Modell die Grundcharakteristik des Verbrauchs gut erfasst, auch wenn die Feinheiten aufgrund des Rauschens und der inhärenten Unvorhersehbarkeit begrenzt sind.

Auffälligkeiten:

R² am unteren Ende: Obwohl im erwarteten Bereich, könnte hier noch etwas Potenzial bestehen, insbesondere da das BitFailLimit unter der Empfehlung liegt.

BitFailLimit: Der aktuelle Wert von 0.28 ist strenger als die interne Empfehlung von 0.34. Dies könnte dazu führen, dass das Modell zu viele "Fehler" sieht und sich schwerer tut, Muster zu generalisieren.

Epochen: Nur 14.7% der maximalen Epochen wurden genutzt. Es besteht die Möglichkeit, dass das Modell noch nicht vollständig konvergiert ist.

Drift-Analyse: Das Fehlen von DriftIndex/Score verhindert eine Aussage zur aktuellen Stabilität des Modells.

Empfehlung:

Um die Prognosequalität potenziell zu verbessern, ohne die strukturellen Grenzen eines stochastischen Haushalts zu überschreiten, empfehle ich folgende experimentelle Anpassungen:


aiConBitFailLimit erhöhen: Erhöhen Sie den Wert schrittweise in Richtung der internen Empfehlung (z.B. auf 0.32 oder 0.34). Ein toleranteres Limit könnte dem Modell helfen, die Muster im verrauschten Datensatz besser zu erkennen und zu generalisieren, was den R²-Wert leicht anheben könnte.

Weitere Trainingsepochen: Lassen Sie das Modell länger trainieren, um zu sehen, ob sich R² noch verbessert. Die aktuelle Nutzung von nur 14.7% der Epochen lässt hier Spielraum.

aiConLearnRate (Lernrate) reduzieren: Die aktuelle Lernrate von 0.0002 ist bereits niedrig. Eine leichte Reduzierung (z.B. auf 0.0001) könnte dem Modell helfen, feiner zu justieren und ein besseres Minimum zu finden, insbesondere wenn Sie das BitFailLimit erhöhen.

aiConMomentum (Momentum) erhöhen: Ein leicht höheres Momentum (z.B. 0.6 oder 0.7) könnte dem Modell helfen, lokale Minima zu überwinden und schneller zu einem besseren globalen Minimum zu konvergieren, besonders in Kombination mit einer reduzierten Lernrate.

Architektur/HiddenLayers: Die Architektur 12 ist eine feste Größe. Experimente mit anderen Architekturen (z.B. 11 oder 13) könnten theoretisch minimale Verbesserungen bringen, sind aber bei diesem Rauschlevel oft weniger wirksam als die Anpassung der Lernparameter.

---------------------------

Auch die vorsichtige Ausdrucksweise "experimentelle Anpassungen" gefällt mir, da der User sensibilisiert wird vorsichtig und beobachtend Änderungen vorzunehmen.

Die V2.0.8 hat jetzt einen runden Stand, den ich ins Repo stellen werde.

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

peterboeckmann

Hallo zusammen,

Zitat von: DS_Starter am 30 Juni 2026, 00:50:51Nun kann man aus dem Status-Dashboard heraus über einen Link die externe Analyse der Google Gemini KI requesten.

Ein sehr schönes Feature!
Gerade eben habe ich zum ersten Mal eine Antwort von Gemini bekommen und möchte diese hier mit euch teilen:
Gesamtbewertung:
Das Modell zeigt eine sehr gute Leistung für einen Haushalt mit Wärmepumpe. Der R²-Wert von 0.676 liegt im oberen Bereich dessen, was für diese Haushaltstypen als erreichbar gilt (0.5-0.7). Der MAE von 341.9 Wh ist ebenfalls erfreulich niedrig und deutet auf präzise Vorhersagen hin. Der Slope von 0.76 und der Bias von 360.2 Wh sind für einen Haushalt mit Wärmepumpe und PV-Anlage plausibel und deuten auf eine gute Anpassung an das Verbrauchsverhalten hin.

Auffälligkeiten:
Der DriftIndex von 1.31 ist mit "kritisch" einzustufen. Dies deutet darauf hin, dass sich das Verbrauchsverhalten des Haushalts über die Zeit verändert hat und das Modell möglicherweise nicht mehr optimal auf die aktuellen Muster abgestimmt ist. Der DriftScore von 1.56 bestätigt diese kritische Einschätzung.

Empfehlung:
Die Prognosequalität ist grundsätzlich gut, aber der kritische DriftIndex erfordert Aufmerksamkeit.


Drift-Behandlung: Priorisieren Sie eine Neubewertung oder ein Nachtraining des Modells, um den Drift zu adressieren. Möglicherweise ist eine Anpassung der `aiConLearnRate` (ggf. leicht reduzieren, um zu verhindern, dass das Modell zu stark auf kurzfristige Schwankungen reagiert) oder eine Erhöhung der `aiConMomentum` (um stabilere Lernschritte zu ermöglichen) sinnvoll.

Architektur: Da der R²-Wert bereits gut ist, könnten weitere Anpassungen der Architektur (z.B. `HiddenLayers`) vorsichtig getestet werden. Eine Erhöhung der Anzahl der Hidden Layers könnte potenziell komplexere Muster erfassen, birgt aber auch die Gefahr des Overfittings. Eine Reduzierung könnte die Generalisierung verbessern, falls Overfitting vorliegt.

Feature-Engineering: Überprüfen Sie, ob neue, relevante Features (z.B. Wetterdaten, Feiertage, Schulferien) das Modell weiter verbessern könnten, insbesondere im Hinblick auf die Erfassung von saisonalen oder ereignisbedingten Verbrauchsschwankungen.

Klingt doch hervorragend.
Auch ich bin mit der Prognose sehr zufrieden.

Viele Grüße,
Peter
MQTT,Modbus,HTTPMod,DbLog,LaCrosse,SolarForecast,TelegramBot,Twilight,vitoconnect,withings
fhem,fhempy,debmatic
Debian
RaspberryPi5,HomeMatic,HomeMaticIP,Shelly,JeeLink,SignalDuino,ZWDongle,SONOS,alexa,Hue,tradfri,MobileAlerts,Siemens Home Connect,Roborock S50,Wallbox,Harmony,Tuya Smartlife

DS_Starter

#6537
@Peter, würde ich auch sagen.

ZitatFeature-Engineering: Überprüfen Sie, ob neue, relevante Features (z.B. Wetterdaten, Feiertage, Schulferien) das Modell weiter verbessern könnten, insbesondere im Hinblick auf die Erfassung von saisonalen oder ereignisbedingten Verbrauchsschwankungen.
Könnte man antworten, würden wir mitteilen dass weitere WP-Features bereits in Arbeit sind.  ;)

Edit: Ein Hinweis zum Gemini. Die kostenlose Nutzung der API unterliegt Beschränkungen. Man kann bei starker Nutzung den HInweis bekommen, dass das Limit aufgebraucht ist und man warten muß. Also nicht wundern. Wenn wir eine API finden die kostenlos UND nicht beschränkt ist bei guter LLM-Leistung, können wir ja mal umstellen.
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