76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

DS_Starter

Wenn du aiControl->aiConBitFailLimit weiter hochziehst und dadurch BitFail <= 5 bekommst, könntest du auch deinen Retrain-Status loskriegen. Ausprobieren...
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

Hab grad den Consumer vor dem Update angefasst -
Jetzt wars doch nicht "egal" ;)

No Consumer type 'heatpump' is defined. Please define it with the consumerXX attribute first.

Also erst Update...
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

Zitat von: DS_Starter am 04 Juli 2026, 09:18:03Wenn du aiControl->aiConBitFailLimit weiter hochziehst und dadurch BitFail <= 5 bekommst, könntest du auch deinen Retrain-Status loskriegen. Ausprobieren...

aiConBitFailLimit=0.25  ->> 46
aiConBitFailLimit=0.28  ->> 32
aiConBitFailLimit=0.32  ->> 16
aiConBitFailLimit=0.36  ->>  9
aiConBitFailLimit=0.37  ->>  7

Wechsel auf RPROP    alles schlechter.... :(
Zurück auf INCREMENTAL ;) und lasse laufen - sieht ja visuell auch ganz okay aus und bitFail ist nicht alles



Bewertungsüberblick
Trainingsbewertung: Retrain (bitfail=7 > 5)
Data-Parameter-Ratio Bewertung: ok (ok)
Lernverhalten: ok gesundes Lernverhalten (8.3 % Epochenausnutzung)
Einstellhinweise:
Trainingsalgorithmus wechseln: RPROP statt INCREMENTAL verwenden - RPROP passt seine Schrittweite automatisch an und kommt ohne manuelle Lernraten-Einstellung aus was bei langsamer Konvergenz oft deutlich schneller zum Ziel führt (aiControl->aiConTrainAlgo)

Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
Drift Bewertung: fresh_model
Empfehlung für Retrain: keine

externe Bewertung: Google Gemini (Es werden Trainingsmetriken an Google Gemini übertragen (sichtbar im Log mit ctrlDebug=apiCall))

Modellparameter
Normierungsgrenzen: PV=9975 Wh, Hausverbrauch: Min=0 Wh / Max=6970 Wh
Trainingsdaten: 10672 Datensätze (Training=8537, Validation=2135)
Architektur: Inputs=114, Hidden Layers=12, Outputs=1
Hyperparameter: Learning Rate=0.0001, Momentum=0.6, BitFail-Limit=0.37
Aktivierungen: Hidden=ELLIOT_SYMMETRIC, Steepness=0.7, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv
Zufallsgenerator: Mode=1, Period=25
Modellalter: 0 h

Trainingsmetriken
bestes Modell bei Epoche: 1249 (max. 15000)
Training MSE: 0.008316
Validation MSE: 0.006925
Validation MSE Average: 0.006971
Validation MSE Standard Deviation: 0.000010
Validation Bit_Fail: 7
Data Parameter Ratio: 7.661
Model Bias: 450 Wh
Model Slope: 0.63
Trainingsbewertung: Retrain

Fehlermaße der Prognosen
MAE: 396.60 Wh
MedAE: 263.80 Wh
RMSE: 494.90 Wh
RMSE relative: 51 %
RMSE Rating: acceptable
MAPE: 35.76 %
MdAPE: 25.62 %
R²: 0.51



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

Der Hinweis:

"Trainingsalgorithmus wechseln: RPROP statt INCREMENTAL verwenden - RPROP passt seine Schrittweite automatisch an und kommt ohne manuelle Lernraten-Einstellung aus was bei langsamer Konvergenz oft deutlich schneller zum Ziel führt (aiControl->aiConTrainAlgo)"

ist in diesem Kontext unrichtig. Du hast keine langsame Konvergenz, sondern gesundes Lernverhalten.
Ich habe das Hinweissystem nachgebessert und im contrib upgedated.
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

#6589
Zitat von: TheTrumpeter am 03 Juli 2026, 10:20:07Und ergänzend noch ein kleiner Feature-Wunsch:
Es wäre schön, wenn die Wärmepumpe mehrere Icons zulassen würde, sodass je nach Betriebsmodus das richtige angezeigt wird. (Oder zumindest unterschiedliche Farben je nach Modus.)
Zitat von: DS_Starter am 03 Juli 2026, 10:33:12Ich schaue mal was ich hinbekomme.

Hier schon mal was als Anregung (Codeschnipsel für die userExitFn) :)


ACHTUNG !!!!
WARNUNG !!!!

SF-intervall-Laufzeit wird ca 0.3 -.5 Sekunden länger ->>> bei 7 "Wechselicons" und - schlimmer - SMA-WR haben Broadcast-Empfangsprobleme durch den langen Intervall...

Habe den Code nur als Anregung hier stehen lassen !!!!!

# ==============================================================================
# START: Icon-Wechsel via SolarForecast-API
# ==============================================================================
my $mySelf = "Forecast";

# 1. Nur noch die zweistellige Nummer und die Wunsch-Icons eintragen
my @myConsumers = (
    { num => "09", icon_off => "fts_sunblind\@green",          icon_on => "fts_sunblind\@yellow" },
    { num => "07", icon_off => "sani_heating_heatpump\@green", icon_on => "sani_heating_heatpump\@blue" },
);

# 2. Schleife nutzt direkt die internen Modul-Funktionen
foreach my $c (@myConsumers) {
    my $id = "consumer" . $c->{num};

    # Werte direkt via ConsumerVal aus dem Modulspeicher lesen
    my $power     = ConsumerVal($mySelf, $id, "currpower", 0);
    my $threshold = ConsumerVal($mySelf, $id, "powerthreshold", 0);
    my $current   = ConsumerVal($mySelf, $id, "icon", "");

    # Ziel-Icon anhand des gelesenen Schwellenwerts bestimmen
    my $target = ($power <= $threshold) ? $c->{icon_off} : $c->{icon_on};

    # Nur umschalten, wenn sich der Zustand tatsächlich geändert hat
    if ($current ne $target) {
        fhem("set $mySelf attrKeyVal $id icon=$target");
        Log3($mySelf, 2, "$mySelf - $id Icon-Wechsel auf $target (Leistung: $power W / Schwelle: $threshold W)");
        # Log später mal abschalten nicht vergessen - oder auf 3 setzen :)
    }
}
# ==============================================================================
# ENDE: Icon-Wechsel (Dein nachfolgender Code schließt hier an)
# ==============================================================================


EDIT :
PS:
Ich hab meinen Codeschnipsel für die dynamische Icons wieder entfernt. O:-)
SF-intervall-Laufzeit wird ca 0.3 -.5 Sekunden länger ->>> bei 7 "Wechselicons" und - schlimmer - SMA-WR haben Broadcast-Empfangsprobleme durch den langen Intervall...
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

#6590
Hallo zusammen,

im contrib liegt ein Update der 2.8.1.
Ich habe jetzt den Wunsch von TheTrumpeter umgesetzt.

- der Consumertyp 'heatpump' ist nun für Planung und automatisches Schalten durch SF geöffnet.
  Es gelten also die üblichen Schlüssel und Funktionalitäten. Um eine Planung auszuschließen, setzt
  mode=mustNot explizit. Wie schon diskutiert, vermeidet parallele Steuerungen durch SF und den nativen
  WP-Controller.

- die Gründe für einen Retrainstatus sieht man im KI con-Statusdashboard

- mit dem Schlüssel plantControl->writeForceType kann man eine Datenspeicherung im Filesystem erzwingen statt configDB (wenn verwendet).

- NEU: heatpump-Consumer können für jeden Betriebsmodus ein separates Icon und ggf. Farbe zugewiesen werden. Dazu gibt des den
      spezifischen Schlüssel opmodeIcons. Man kann die zu übergebende Komma getrennte Liste mehrzeilig eingeben, muß dann
      aber die gesamte Liste in " " einschließen, z.B.:

  opmodeIcons="heating->sani_heating_heatpump@red, 
              cooling->sani_cooling@blue,
              hotwater->sani_water_hot@red,
              defrost->sani_cooling_temp@orange,
              off->sani_heating_heatpump@grey"


Für eine bessere Übersicht führe ich alle Neuigkeiten der V 2.8.1 auf, auch wenn sie evtl. bereits bekannt sind.

@300P ...  :)

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

PS:
Der Codeschnipsel geht auch für die anderen ;) (consumerXX die keine "heatpump" sind) - solange der Schwellwert vorhanden ist  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

Wenn du keine roten Fragezeichen sehen willst, die zwangsläufig durch:

CommandAttr(undef, "$mySelf $id $current_attr");
erscheinen, kannst du besser den Setter attrKeyVal verwenden um Schlüssel in ConsumerXX zu setzen/aktualisieren.
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

Stimmt ja - Danke !!


EDIT
Codeschnipsel angepaßt - Danke dafür
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

Kleiner Fehlerteul ist unterwegs  ;)

Iconanzeige ->> opmodeIcons=..... bei den heatpump


unten in dem Flussbild okay.  ;D
ganz oben bei dem consumerXX nicht sichtbar.  ???

shellypro3em_01
aliasshort=AC
etotal=air_etotal:Wh
mode=mustNot
modulation=shellypro3em_01:air_modulation
noshow=0
opmode=shellypro3em_01:air_hpactivity
opmodeIcons="heating->sani_heating_heatpump@red,
              hotwater->sani_water_hot@deeppink,
              cooling->sani_cooling_temp@blue,
              off->sani_heating_heatpump@grey"
pcurr=air_total_pac:W:40
power=2300
swstate=shellypro3em_01:air_hpactivity:heating|cooling:off
type=heatpump

SMA_Elgris_EM2
type=heatpump
power=3020
pcurr=Bezug_Wirkleistung:W:100
etotal=Bezug_Wirkleistung_Zaehler:kWh
noshow=0
switchdev=MQTT_EMSwp
swstate=boiler_data_hpactivity:heating|cooling|hot.*|defrost:off
opmode=Forecast:user_wpmodus
opmodeIcons="heating->sani_heating_heatpump@red,
              cooling->sani_heating_heatpump@blue,
              hotwater->sani_heating_heatpump@deeppink,
              defrost->sani_cooling_temp@orange,
              off->air_water_heating_pump@grey"
modulation=MQTT_EMSwp:boiler_data_heatingpumpmod
aliasshort=WP
mode=mustNot

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

#6595
Du kannst die aktuelle Leistung, Icon und Threshold direkt aus ConsumerVal lesen und brauchst nicht das ganze Attr mit Regex behandeln.

ConsumerVal ($mySelf, $id, 'currpower', 0);
ConsumerVal ($mySelf, $id, 'powerthreshold', 0);
ConsumerVal ($mySelf, $id, 'icon', 0);

Dann nur noch deine Vergleiche ausführen und mit Setter attrKeyVal setzen.
Das kürzt das Script und braucht keine Regex.

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

Zitatunten in dem Flussbild okay.  ;D
ganz oben bei dem consumerXX nicht sichtbar.  ???
Meinst du das Consumerpaneel damit?
Wenn ja, arbeitet es wie zur Zeit umgesetzt. Müsste ich noch 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

300P

Ist nicht 1. Prio - aber irritiert evtl. den ein oder anderen (das dies dort GANZ weg 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.

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.

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