76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

300P

Zitat von: TheTrumpeter am 09 Januar 2026, 13:00:31Hab' das grad durchgeschaut, finde aber nirgends einen Hinweis was/wie ich die WP konfigurieren/bekanntmachen muss.

Zusatzinstallierung notwendig:
Zuerst versuch es mal so in der Reihenfolge - bei meinem RPI4 hat es so geklappt.

sudo su
apt-get update && apt-get upgrade
sudo apt-get install gcc
sudo apt-get install libfann-dev
sudo cpan AI::FANN

Bei mir lief es dann so sauber durch.

Dann Contrib - Version laden / 1 x restart FHEM

Dies (o.ä.) zum "attr Forecast aiControl" hinzufügen
aiConActivate=1\
aiConAlpha=1\
aiConTrainStart=1:2\
aiConActFunc=SIGMOID\
aiConHiddenLayers=80-40-20\
aiConLearnRate=0.005\
aiConMomentum=0.8\
aiConShuffleMode=2\
aiConSteepness=0.5\
aiConTrainAlgo=INCREMENTAL

Jetzt noch bei "attr Forecast ctrlDebug" 
aiProcess
anklicken damit du was siehst.

und dann hiermit deine Wärmepumpe (ab V2.0.0.) an SF bekanntgeben


EDIT:
Ach ganz vergessen - dann must du erstmalig ein langandauerndes  AI-Training anwerfen ehe du etwas siehst...
set <SF> aiDecTree runConTrain

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

Hallo zusammen,

die Version in meinem contrib ist upgedated.

- die Perl Warnungen sind beseitigt

Weiterhin unterstützt der "Train Only" Mode (aiConActivate=2) die zeitsparende Austestung von AI Einstellungen indem dieser Mode maximal 1 Wieholung des Trainings ausführt unabhängig von den erreichten Kennwerten. Dadurch ist es leichter sein individuelles Optimum zu finden

Das Attr aiControl hat nun auch einen Key "aiConProfile". Die Haushalte sind stark unterschiedlich gestaltet. Über diesen Key kann man ein passendes Profil auswählen, mit dem man die besten Ergebnisse erzielt.
Die Motivation ist folgende ... es gibt Haushalte mit großen PV-Anlagen oder auch nur Balkonanlagen. Beide Varianten beeinflussen ganz unterschiedlich stark das Verbrauchsverhalten im Haushalt. Durch die Profile kann ich unterschiedlich starke Semantiken zusammenstellen, sodass sich die Trainingsergebnisse besser zu dem  Haushalt passen.

Zu Zeit gibt es diese Profile:

aiConProfile    
Auswahl der Eigenschaften des Haushalts. Die auswählbaren Profile verstärken bzw. betonen bestimmte Spezifika im Haushalt.
   Die Versionsbezeichnung ist lediglich ein Anhaltspunkt. Man sollte die Version einstellen, mit der die besten Ergebnisse erzielt werden.
   Ist aiConProfile nicht gesetzt, erfolgt durch das System eine automatische Auswahl der wahrscheinlich zutreffendsten Registry.
   
    - v1_common - Standardhaushalt
    - v1_common_active - Standardhaushalt mit weiteren Semantiken
    - v1_common_pv - Haushalt mit stärkerer Gewichtung der PV-Anlage
    - v1_common_active_pv - Haushalt mit weiteren Semantiken und stärkerer Gewichtung der PV-Anlage
    - v1_heatpump - Haushalt mit stärkerer Gewichtung der durch eine Wärmepunpe verursachten Charakteristiken
    - v1_heatpump_pv - Haushalt mit stärkerer Gewichtung von PV und Wärmepunpen Charakteristika


@300P, wenn v1_heatpump oder v1_heatpump_pv bei dir nicht einem vergleichbaren Ergebnis wie mit dem letzten Update führt, benutze v1_common oder v1_common_pv.

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

@TheTrumpeter,

deinen Consumer:

attr mySolarForecast consumer03 Mythz type=noSchedule power=2100 asynchron=1 pcurr=cur_power_hc:kW:1 etotal=sElectrHCTotal:kWh swstate=HeatingHC:1:0 icon=sani_heating noshow=solarforecast_hc_show
könnstest du m.M. nach gut als WP-Device kennzeichnen. Einfach type=noSchedule ersetzen durch type=heatpump. Dieser Consumertyp ist automatisch nicht planbar (noSchedule). Alle anderen Keys sollten so bleiben können. Zu ergänzen wäre nur noch comforttemp wie 300P im Wiki beschrieben hat.
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.

grappa24

Zitat von: DS_Starter am 09 Januar 2026, 21:16:21aiConProfile   
Auswahl der Eigenschaften des Haushalts. Die auswählbaren Profile verstärken bzw. betonen bestimmte Spezifika im Haushalt.
    Die Versionsbezeichnung ist lediglich ein Anhaltspunkt. Man sollte die Version einstellen, mit der die besten Ergebnisse erzielt werden.
    Ist aiConProfile nicht gesetzt, erfolgt durch das System eine automatische Auswahl der wahrscheinlich zutreffendsten Registry.
   
    - v1_common - Standardhaushalt
    - v1_common_active - Standardhaushalt mit weiteren Semantiken
    - v1_common_pv - Haushalt mit stärkerer Gewichtung der PV-Anlage
    - v1_common_active_pv - Haushalt mit weiteren Semantiken und stärkerer Gewichtung der PV-Anlage
    - v1_heatpump - Haushalt mit stärkerer Gewichtung der durch eine Wärmepunpe verursachten Charakteristiken
    - v1_heatpump_pv - Haushalt mit stärkerer Gewichtung von PV und Wärmepunpen Charakteristika
welches Profil wäre denn für meine 11 kWp PV Anlage mit 7.7 kWh Speicher sinnvoll (keine WP, dafür aber PHEV mit 12 kWh, keine weiteren Semantiken)
Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

Wolle02

Zitat von: grappa24 am 10 Januar 2026, 09:04:35welches Profil wäre denn für meine 11 kWp PV Anlage mit 7.7 kWh Speicher sinnvoll (keine WP, dafür aber PHEV mit 12 kWh, keine weiteren Semantiken)


Also ich habe für meine 6,4 kWp Anlage mit 10 kWh Speicher ohne WP aber mit EV momentan mal v1_common_pv zum Testen eingestellt. Mal schauen was passiert. Mir ist allerdings nicht so ganz klar, was mit "weiteren Semantiken" gemeint ist.

DS_Starter

Moin zusammen,

bei der Profilauswahl kommt es auf Tests an. Wie der E-Verbrauch im Haushalt tickt, kann man vorab nicht sagen. Bei Dachanlagen würde ich v1_common_pv bzw. v1_heatpump_pv probieren.

@grappa24, EV habe ich noch nicht als Consumer intergriert. Da wird noch einiges fehlen.

ZitatMir ist allerdings nicht so ganz klar, was mit "weiteren Semantiken" gemeint ist.
Ja, ich weiß nicht wie ich es besser ausdrücken soll. Vermutlich muß ich mal im Wiki etwas darüber schreiben.

Diese Profile stellen bestimmte Verknüpfungen von Deltas und Trends her, die im Code in Form von mathematischen Verknüpfungen ausgedrückt werden. Nur mal als Beispiel:

# --------------------------------------------------------
# Semantik: Menschlicher Tagesrhythmus (PV-unabhängig)
# --------------------------------------------------------
semantics_human_rhythm => sub {
    my ($f) = @_;
    return [
        # --- MORGEN ---
        sqrt($f->{delta1_norm_pos} * $f->{hour_class_morning}),             # Aufstehen / Geräte an

        # --- MITTAG ---
        sqrt($f->{delta1_norm_pos} * $f->{hour_class_noon}),                # Kochen / Haushalt

        # --- ABEND ---
        sqrt($f->{delta1_norm_pos} * $f->{hour_class_evening}),             # Kochen / Abendaktivität

        # --- SPÄTER ABEND ---
        sqrt($f->{delta1_norm_neg} * $f->{hour_class_lateevening}),         # Geräte gehen aus
    ];
},


# --------------------------------------------------------
# PV-Semantik
# --------------------------------------------------------
semantics_pv => sub {
    my ($f) = @_;
    return [
        # --- PV-Dynamik ---
        $f->{pv_jump},                                                              # Plötzlicher PV-Anstieg (Wolkenloch)
        $f->{pv_drop},                                                              # Plötzlicher PV-Abfall (Wolke)

        # --- PV-Level ---
        $f->{pv_norm},                                                              # PV-Erzeugung – Grundsignal

        # --- PV + Tageszeit ---
        sqrt($f->{pv_norm}) * $f->{hour_class_noon},                                # PV-Lastverschiebung mittags

        # --- PV + Verbrauchsdynamik ---
        sqrt($f->{pv_norm} * $f->{trend_up_strength}),                              # PV + steigender Trend
        sqrt($f->{pv_norm} * $f->{delta1_norm_pos}),                                # PV + Verbrauchsanstieg

        # --- PV-Drop + Verbrauchsdynamik ---
        sqrt($f->{pv_drop} * $f->{delta1_norm_neg}),                                # Lastabfall durch PV-Wegfall

        # --- PV + Temperatur ---
        sqrt($f->{pv_norm} * $f->{temp_delta_1h_neg}),                              # Kälte + PV -> Heizer + Batterie
        sqrt($f->{pv_drop} * $f->{temp_delta_1h_neg}),                              # Kälte + PV-Drop -> Lastabfall

        # --- PV + Temperatur + Trend ---
        sqrt($f->{pv_norm} * $f->{temp_delta_1h_neg} * $f->{trend_up_strength}),    # Kälte + PV + steigender Trend -> Peak                                                                                   
    ];
},

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

Hier meine 2 (3) neuesten Ergebnisse:
(PV -> 14.5 kWp / WP ->> 7 kw

1--- Normale alte Vorhersage:
2--- v1_heatpump_pv - Haushalt mit stärkerer Gewichtung von PV und Wärmepunpen Charakteristika
3--- v1_heatpump - Haushalt mit stärkerer Gewichtung der durch eine Wärmepunpe verursachten Charakteristiken

Leider nur zu 3-- 
( bei 2 hab ich das Kopieren leider vergessen )

Informationen zum neuronalen Netz der Verbrauchsvorhersage
letztes KI-Training: 10.01.2026 10:40:47 / Laufzeit in Sekunden: 6762
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 58.42 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 6947 Datensätze (Training=5557, Validierung=1390)
Architektur: Inputs=61, Hidden Layers=80-40-20, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.8, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=0.5, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump
Zufallsgenerator: Mode=2, Periode=10

=== Trainingsmetriken ===

bestes Modell bei Epoche: 4687 (von max. 15000)
Training MSE: 0.003686
Validation MSE: 0.008438
Validation MSE Average: 0.011097
Validation MSE Standard Deviation: 0.001267
Validation Bit_Fail: 0
Model Bias: 913 Wh
Model Slope: 0.5
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 527.61 Wh
MedAE: 388.05 Wh
RMSE: 649.57 Wh
RMSE relative: 30 %
RMSE Rating: weak
MAPE: 24.23 %
MdAPE: 20.32 %
R²: 0.35

=== Drift-Kennzahlen ===

Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -

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

Wenn ich deine Ergebnisse / Visualisierung richtig interpretiere, ist das Profil v1_common am zutreffendsten, das Profil v1_heatpump_pv ist stark gedämpft und v1_heatpump liegt irgendwo dazwischen. Richtig?

Zur Zeit habe ich wegen Schnee etc. keine oder nur äußerst minimale PV. Damit fällt PV als Leistungsmultiplikator weg und dämpft auch bei mir die Verbrauchsprognose. Wenn meine Einschätzung stimmt, würde dein Ergebnis mit meinen Beobachtungen übereinstimmen.
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

Parallix

#4839
Zitat von: DS_Starter am 10 Januar 2026, 11:21:59Zur Zeit habe ich wegen Schnee ...

Der Schnellfall als solcher wird ja über die Wetterdienste prognostiziert und könnte unter Beachtung der Temperaturen der nachfolgenden Tage sowie der in SF hinterlegten Anstellwinkel der Solarpaneele hinsichtlich seiner wahrscheinlichen Auswirkungen in den nächsten Tagen (z.B. Solarpaneele bleiben bedeckt) - auch ohne KI - in der PV-Erzeugungsprognose berücksichtigt werden. Ist dies angedacht?

Edit: Aktuell sehe ich nur aufgrund der schneebedeckten Module eine PV-Deviation von rund 100%
FHEM: Debian/Testing BananaPro - AVM: 7490 (7.60) und 7591 (8.20) - 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

#4840
ZitatDer Schnellfall als solcher wird ja über die Wetterdienste prognostiziert und könnte unter Beachtung der Temperaturen der nachfolgenden Tage sowie der in SF hinterlegten Anstellwinkel der Solarpaneele hinsichtlich seiner wahrscheinlichen Auswirkungen in den nächsten Tagen (z.B. Solarpaneele bleiben bedeckt) - auch ohne KI - in der PV-Erzeugungsprognose berücksichtigt werden. Ist dies angedacht?
Hättest du einen konkreten Vorschlag zur mathematischen Abbildung eines solchen Zustandes?

ZitatEdit: Aktuell sehe ich nur aufgrund der schneebedeckten Module eine PV-Deviation von rund 100%
Ist bei mir auch so. Es ist Winter ... tja was soll man da machen.
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

ZitatEdit: Aktuell sehe ich nur aufgrund der schneebedeckten Module eine PV-Deviation von rund 100%
Als einzig realistische Variante sehe ich die Einbindung eines "Schneesensors" in das geplante Attr "setupEnvironment". Schlägt er an, wird die Prognose gesenkt, im Worst Case bis auf 0.
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