76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

300P

Versuche jetzt mal auch den standart ;)


Ergebnis
letztes KI-Training: 15.01.2026 16:47:09 / Laufzeit in Sekunden: 2384
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 52.16 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 7075 Datensätze (Training=5660, Validierung=1415)
Architektur: Inputs=45, Hidden Layers=64-32, Outputs=1
Hyperparameter: Learning Rate=0.001, Momentum=0.2, BitFail-Limit=0.35
Aktivierungen: Hidden=GAUSSIAN, Steilheit=1.5, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_common_pv
Zufallsgenerator: Mode=1, Periode=15

=== Trainingsmetriken ===

bestes Modell bei Epoche: 955 (von max. 15000)
Training MSE: 0.003565
Validation MSE: 0.011193
Validation MSE Average: 0.016926
Validation MSE Standard Deviation: 0.001334
Validation Bit_Fail: 1
Model Bias: 801 Wh
Model Slope: 0.4
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 628.19 Wh
MedAE: 470.50 Wh
RMSE: 805.37 Wh
RMSE relative: 34 %
RMSE Rating: good
MAPE: 26.09 %
MdAPE: 24.69 %
R²: 0.09


Versuche es jetzt nochmals mit - Standart >>SIGMOID_SYMMETRIC

Ergebnis dazu:

letztes KI-Training: 15.01.2026 17:55:42 / Laufzeit in Sekunden: 2370
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 54.03 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 7076 Datensätze (Training=5660, Validierung=1416)
Architektur: Inputs=45, Hidden Layers=64-32, Outputs=1
Hyperparameter: Learning Rate=0.001, Momentum=0.2, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID_SYMMETRIC, Steilheit=1.5, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_common_pv
Zufallsgenerator: Mode=1, Periode=15

=== Trainingsmetriken ===

bestes Modell bei Epoche: 1079 (von max. 15000)
Training MSE: 0.003558
Validation MSE: 0.012007
Validation MSE Average: 0.018184
Validation MSE Standard Deviation: 0.001309
Validation Bit_Fail: 1
Model Bias: 607 Wh
Model Slope: 0.5
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 649.00 Wh
MedAE: 500.49 Wh
RMSE: 835.33 Wh
RMSE relative: 36 %
RMSE Rating: good
MAPE: 26.18 %
MdAPE: 24.05 %
R²: 0.02
Gruß
300P

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

DS_Starter

#4921
Ich würde es wirklich zunächst nah am Standard trainieren und schauen was herauskommt:

aiConHiddenLayers=80-40-20
aiConTrainAlgo=INCREMENTAL
aiConLearnRate=0.005
aiConMomentum=0.4
aiConSteepness=1.2
aiConShuffleMode=2
aiConActivate=1
aiConShufflePeriod=10
aiConActFunc=SIGMOID
aiConProfile=v1_heatpump_active_pv_test

oder

aiConHiddenLayers=60-30-15
aiConTrainAlgo=INCREMENTAL
aiConLearnRate=0.005
aiConMomentum=0.4
aiConSteepness=1.2
aiConShuffleMode=2
aiConActivate=1
aiConShufflePeriod=10
aiConActFunc=SIGMOID
aiConProfile=v1_heatpump_active_pv_test

Und wenn es nicht befriedigt, nur einen Paramer ändern - trainieren - und erreichte Kennzahlen sowie visuelles Ergebnis prüfen.
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

Gruß
300P

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

300P

Hab grad mal in den neueren Code geschaut.  :o

Dort hast du ja ganz schön viel "Neues" für die "WP-ler"  ;D in die heutige Version mit WW / Tageszeit / Temperatur etc. eingebaut !

Du willst wohl zukünftig auch anscheinend eine WP als nächste Heizung einbauen ?!?  ???
Gruß
300P

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

DS_Starter

Ja, ist so einiges dazu gekommen. Aber weiß noch nicht wie es wirkt.
Deswegen auch der Zusatz "test" in dem Profil. Vermutlich wirkt es auch nicht bei jeder WP-Umgebung gleich -> verschiedene Profile möglich.
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

klaus.schauer

Der KI-Algorithmus bei mir liefert inzwischen wirklich gute Ergebnisse bei der Verbrauchsprognose mit Abweichungen von derzeit weniger als -4 %. Beim Frost letzte Woche gab es Abweichungen von um -10 %.

Parameter:
aiConActivate=1
aiConAlpha=1
aiConTrainStart=1:2
aiConActFunc=SIGMOID
aiConMomentum=0.6
aiConProfile=v1_heatpump_active_pv_test
aiConShuffleMode=1
aiConSteepness=1.2
aiConTrainAlgo=INCREMENTAL
Beim letzten Training mit aiConProfile=v1_heatpump_active_pv_test gab es als Ergebnis:
last AI training: 2026-01-15 17:37:20 / Runtime in seconds: 2077
AI query status: ok
last AI result generation time: 15.25 ms
Consumer number Heat pump: 01

=== Modellparameter ===

Normierungsgrenzen: PV=13585 Wh, Hausverbrauch: Min=0 Wh / Max=13384 Wh
Trainingsdaten: 2869 Datensätze (Training=2295, Validierung=574)
Architektur: Inputs=94, Hidden Layers=80-40-20, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.6, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=1.2, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump_active_pv_test
Zufallsgenerator: Mode=1, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 7290 (von max. 15000)
Training MSE: 0.000228
Validation MSE: 0.001434
Validation MSE Average: 0.001551
Validation MSE Standard Deviation: 0.000093
Validation Bit_Fail: 0
Model Bias: 109 Wh
Model Slope: 0.9
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 345.04 Wh
MedAE: 219.83 Wh
RMSE: 442.55 Wh
RMSE relative: 27 %
RMSE Rating: good
MAPE: 24.19 %
MdAPE: 18.81 %
R²: 0.88

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -
Das finde ich insgesamt als sehr beachtlich. Was man aber nicht erwarten darf, ist eine hohe Treffergenauigkeit bei den Stundenwerten, siehe Diagramm. Die Unterschiede waren in der letzten Woche bei sehr hohem und stark schwankenden stündlichen Energiebedarf der Wärmepumpe noch deutlicher.
Das m. E. aber auch nicht so wichtig. Für Entscheidungen, z. B. ob die Batterie zum Nachttarif nachgeladen werden soll, sollte der Trend über mehrere Stunden halbwegs verlässlich sein. Das ist der Fall.

Die neue Funktion hat inzwischen einen sehr hohen Reifegrad erreicht, wenn nicht sogar das in diesem Kontext optimale Ergebnis. Danke für die Arbeit daran!

Ich hatte letztlich noch einen Hinweis zu etotal geschrieben, siehe https://forum.fhem.de/index.php?topic=137058.msg1355282#msg1355282.
Zitat von: klaus.schauer am 07 Januar 2026, 17:06:24
Zitat von: DS_Starter am 07 Januar 2026, 14:39:05(*) Für Verbrauchertyp heatpump sind Besonderheiten zu beachten:

    power    maximale Leistungsaufnahme der Wärmepumpe in W. Der Wert darf nicht! 0 sein.
    etotal    Reading:Einheit (Wh/kWh) des Consumer Device, welches die Summe der verbrauchten Energie liefert. Die Angabe ist verpflichtend.
    pcurr    Reading:Einheit (W/kW) welches den aktuellen Energieverbrauch liefert. Die Angabe ist verpflichtend.
    comforttemp    Solltemperatur (Komforttemperatur) in den Wohnräumen in °C. Die Angabe ist verpflichtend.
Ein Hinweis zu etotal: Bei der Vaillant Wärmepumpe, die hier in Betrieb ist, wird etotal nur einmal am Tag kurz nach Mitternacht aktualisiert. Wenn etotal für die stündliche Berechnung der Energie gebraucht wird, müsste man dies aus den Leistungsdaten aufsummieren.
Die damit verbundene Frage, ob eine tägliche Aktualisierung ausreicht, ist vielleicht untergegangen. Ich kann mich jedenfalls daran nicht erinnern. Die Ergebnisse bei mir sprechen eher dafür, dass es für die Prognose unerheblich ist.

nextHours -> windspeed nutze ich inzwischen für meine deterministische Verbrauchsprognosen. Danke auch dafür.

Wegen der guten KI-Prognosen werden wir wahrscheinlich diese Berechnungsvariante nicht weiter betrachten müssen. Sie bildet Trends gut ab, Schwankungen durch das Betriebsverhalten der Wärmepumpe aber eben auch nicht. Ich habe mal das Diagramm mit den Leistungs- und Energieverbräuchen bei starkem Frost von letztem Sonntag herausgeholt.

DS_Starter

Danke für die umfangreiche Rückmeldung Klaus. Es bestärkt mich insgesamt auch bezüglich des neuen Profils v1_heatpump_active_pv_test damit auf dem richtigen Weg zu sein.

So langsam aber sicher werde ich den Blick Richtung EV Integration lenken und auch auch solche Dinge wie das angekündigte Attr setupEnvironment um reale Sensoren einbinden zu können. Dann denke ich auch mal daran den Stand ins Repo zu bringen. 
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

klaus.schauer

Zitat von: DS_Starter am 15 Januar 2026, 18:47:00Ja, ist so einiges dazu gekommen. Aber weiß noch nicht wie es wirkt.
Deswegen auch der Zusatz "test" in dem Profil. Vermutlich wirkt es auch nicht bei jeder WP-Umgebung gleich -> verschiedene Profile möglich.
Meine Konfiguration hat eine Besonderheit. Die Verbrauchszweige
- Heizung
- Warmwasser
- Zusatzheizung (Heizstab)
- Zusatzaggregate
sind in SolarForecast logisch getrennt und jeweils einem Verbraucher zugeordnet, die Heizung als heatpump, der Rest als heater.   

DS_Starter

Das hatte ich vergessen:

ZitatDie damit verbundene Frage, ob eine tägliche Aktualisierung ausreicht, ist vielleicht untergegangen. Ich kann mich jedenfalls daran nicht erinnern. Die Ergebnisse bei mir sprechen eher dafür, dass es für die Prognose unerheblich ist.
etotal hatte ich vor bei WP zu erfassen um diesen Wert in geeigneter Weise als Lerninhalt der KI zur Verfügung zu stellen. Deswegen im Gegensatz zu "normalen" Verbrauchern als verpflichtend definiert. Bis dato ist es aber nicht nötig, vllt. aber doch in ZUkunft weswegen ich den Key so drin lasse.
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