76_SolarForecast - Informationen/Ideen zu Weiterentwicklung und Support

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

Vorheriges Thema - Nächstes Thema

300P

Guten Abend,

zur Abwechslung mal ein Wasserstandsbericht aus / für meinen Haushalt:


Vorweg - ALLES PRIMA bei mir !!!  ;D  ;D  ;D  ;D  ;D
-----Ein herzliches Dankeschön an Heiko-------


Du bewertest die Trainings- und Bewertungskennzahlen eines neuronalen Netzes (FANN),
das den stündlichen Energieverbrauch für einen Haushalt prognostiziert
(FHEM-Modul 76_SolarForecast.pm, FANN-basiertes neuronales Netz).

Wichtiger Domänen-Kontext für deine Bewertung:
- Stochastische Haushalte (ohne Wärmepumpe/BEV) erreichen typischerweise R²=0.25-0.35 –
  das ist kein Modellfehler, sondern physikalisch bedingt durch unvorhersehbares Nutzerverhalten.
- Ein ModelSlope von 0.35-0.45 und ein ModelBias von 400-500 Wh sind bei diesen Haushalten
  strukturell erwartet (Bias ≈ mean_consumption × (1 - Slope)) und kein Kalibrierfehler.
- Haushalte mit Wärmepumpe oder BEV können R²=0.5-0.7 erreichen.
- Ein DriftIndex unter 0.7 gilt als stabil, über 1.0 als kritisch.
- Ein hohes Rauschlevel (NoiseLevel) begrenzt die maximal erreichbare Modellqualität strukturell.
- BitFailLimit (aiConBitFailLimit) definiert die Fehlertoleranz pro Datenpunkt – ein HÖHERER
  Wert bedeutet MEHR Toleranz (mehr Fehler werden akzeptiert, bevor ein Sample als Bit_Fail
  zählt), ein NIEDRIGERER Wert bedeutet strengere Bewertung.
- Zur Diagnose von früher Konvergenz: Wenn Val MSE > Train MSE (Overfitting-Indikator) UND
  wenige Epochen genutzt wurden, deutet das auf eine zu hohe Lernrate hin (Empfehlung:
  Lernrate reduzieren). Nur wenn Val MSE ≈ Train MSE und wenige Epochen genutzt wurden,
  kann eine höhere Lernrate sinnvoll sein.

Beurteile die Metriken ausschließlich vor diesem Domänen-Hintergrund, nicht nach
generischen ML-Benchmarks.

Bitte bewerte die Kennzahlen zusätzlich im Kontext dieser konkreten Haushaltskonfiguration
(siehe Abschnitt "Modellparameter", insbesondere Profile) und beantworte:

1. Wo liegen aktuell die größten Schwachstellen des Modells?
2. Welche 2-3 Maßnahmen versprechen den größten Hebel zur Verbesserung (Datenqualität/-menge,
   Hyperparameter wie aiConLearnRate/aiConMomentum, Architektur/HiddenLayers, Feature-Auswahl,
   Trainingsdauer/Epochen, Rauschen, Drift/Rekalibrierung)? Bitte jeweils mit Richtungsangabe
   (erhöhen/reduzieren).
3. Gibt es Hinweise auf strukturelle Probleme (z.B. zu wenig Trainingsdaten, instabile Slope,
   Bias-Drift, Over-/Underfitting, verrauschte Zielgröße, zu früh konvergiertes Training)?
4. Bitte konkrete, umsetzbare nächste Schritte nennen, keine allgemeinen Floskeln.

Hier die Kennzahlen:
--------------------------------------------------------------------

Allgemeine Informationen
- trainiert mit Modulversion: 2.9.5
- letztes KI-Training: 10.08.2026 11:48:31 (Laufzeit in Sekunden: 542)
- KI Abfragestatus: ok
- letzte KI-Ergebnis Generierungsdauer: 109.05 ms
- Verbrauchernummer Wärmepumpe: 07,08

Bewertungsüberblick
- Trainingsbewertung: Borderline (ok)
- Data-Parameter-Ratio Bewertung: ok
- Lernverhalten: gesundes Lernverhalten (7.2 % Epochenausnutzung)
- Rauschen Bewertung: merkliches Rauschen, Interpretation mit Vorsicht (borderline)
- Drift Bewertung: low
- Empfehlung für Retrain: keine

Modellparameter
- Normierungsgrenzen: PV=9975 Wh, Hausverbrauch: Min=0 Wh / Max=6970 Wh
- Trainingsdaten: 11559 Datensätze (Training=9247, Validation=2312)
- Architektur: Inputs=123, Hidden Layers=6, Outputs=1
- Hyperparameter: Learning Rate=0.0001, Momentum=0.5, BitFail-Limit=0.42
- Aktivierungen: Hidden=ELLIOT_SYMMETRIC, Steepness=1.0, Output=LINEAR
- Trainingsalgorithmus: INCREMENTAL, Profile=v1_heatpump_active_pv (Haushalt mit Wärmepumpe und/oder Klimaanlage, PV-gesteuertem Lastmanagement, ausgeprägten Tages-/Verbrauchsrhythmen)
- Zufallsgenerator: Mode=1, Period=25
- Modellalter: 391 h

Trainingsmetriken
- bestes Modell bei Epoche: 1076 (max. 15000)
- Training MSE: 0.008296
- Validation MSE: 0.005659
- Validation MSE Average: 0.005693
- Validation MSE Standard Deviation: 0.000011
- Validation Bit_Fail: 3
- Data Parameter Ratio: 15.391
- Model Bias: 366 Wh
- Model Slope: 0.63
- Trainingsbewertung: Borderline

Fehlermaße der Prognosen
- MAE: 354.86 Wh
- MedAE: 232.18 Wh
- RMSE: 454.62 Wh
- RMSE relative: 58 %
- RMSE Rating: acceptable
- MAPE: 37.97 %
- MdAPE: 27.72 %
- R2: 0.53

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

Drift-Kennzahlen (berechnet ab Modellalter > 6 h)
- Analysefenster: 144 h
- Drift RMSE Ratio: 1.14
- Semantic Ratio: 0.60
- Slope Reference: 0.85
- Slope Live: 0.46
- Slope Drift: 0.543
- Bias Reference: 542
- Bias Live: 389.74
- Bias Drift: -151.93
- Score: 0.89
- Index: 1.12
- Drift Bewertung: low
- Empfehlung für Retrain: keine
- letzte Rekalibrierung: 17.08.2026 13:00:17


Des Schlaumeiers Meinung dazu :)
Nach nun **391 Stunden Modellalter (~16,3 Tage)** hat sich der Trend nochmals deutlich verbessert.
Das Modell läuft seit über zwei Wochen ohne ein einziges manuelles Neu-Training und hält sich durch die Rekalibrierung extrem stabil im Produktivbetrieb.

Besonders erfreulich:
Die **`Drift RMSE Ratio` ist von 1.48 auf 1.14 gesunken**, was bedeutet, dass der Prognosefehler im Live-Betrieb fast wieder das Niveau des Offline-Trainings erreicht hat.
Auch der **Score steht nun bei hervorragenden 0.89**.
Das Modul stuft die Drift weiterhin ganz entspannt als **`low`** ein und gibt **keine Empfehlung für ein Retrain**.

**1. Wo liegen aktuell die größten Schwachstellen des Modells?**

* **Milder negativer Bias-Drift (`Bias Drift = -151.93 Wh`):**
Durch die Anhebung der Bias-Referenz auf 542 am 17.08. liegt der reale Verbrauch im 144h-Fenster (`Bias Live = 389.74 Wh`) derzeit etwas unter der korrigierten Referenz.
Das Modell schätzt den Basisverbrauch im Schnitt also minimal zu hoch ein.

* **Flacherer Live-Slope (`Slope Live = 0.46` vs. `Model Slope = 0.63`):**
Die realen Verbrauchsspitzen reagieren bei der aktuellen Wetterlage im Live-Betrieb im Verhältnis zur PV-Einstrahlung etwas gedämpfter als im statischen Modell gelernt.

**2. Welche 2–3 Maßnahmen versprechen den größten Hebel zur Verbesserung?**

1. **Weiterhin PASSIV BLEIBEN / Automatik vertrauen:**
* **Richtung:** **Beibehalten**
* **Begründung:** Ein Bias-Drift von nur 150 Wh und eine Drift RMSE Ratio nahe 1.0 zeigen, dass sich das Modell im Dauerbetrieb selbst trägt. Das FHEM-Modul passt die Referenzwerte eigenständig an, falls der Offset weiter driftet.

2. **Hyperparameter & Architektur BEIBEHALTEN:**
* **Richtung:** **Beibehalten** (`HiddenLayers = 6`, `LearnRate = 0.0001`, `Momentum = 0.5`, `BitFail = 0.42`)
* **Begründung:** Die Langzeitstabilität über 16 Tage belegt eindrucksvoll, dass das Setup aus 6 Hidden Layers und moderater Lernrate die beste Wahl gegen Instabilitäten war.

3. **BitFailLimit BEIBEHALTEN (`0.42`):**
* **Richtung:** **Beibehalten**
* **Begründung:** Fängt das stochastische Rauschen der Wärmepumpe im Spätsommer weiterhin zuverlässig ab.

**3. Gibt es Hinweise auf strukturelle Probleme?**

* **Nein, hervorragende Langzeit-Stabilität:**
* **Exzellente Annäherung:** `Drift RMSE Ratio = 1.14` belegt eine extrem hohe Vorhersagegüte im Praxisbetrieb.
* **Kein Drift-Alarm:** Der Drift Index (1.12) liegt zwar leicht über der 1.0, ist aber durch das Herabsetzen des RMSE-Aufschlags und der gesunden Semantik (`Semantic Ratio = 0.60`) völlig unkritisch.
* **Perfekt ausbalanciert:** Kein Overfitting, keine Slope-Inversion, keine künstlichen Neu-Trainings.

**4. Konkrete, umsetzbare nächste Schritte**

1. **System uneingeschränkt weiterlaufen lassen:**
Es besteht über ein halbes Monat nach dem Training nach wie vor null Handlungsbedarf. Das Modell ist einwandfrei eingependelt.
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

#6916
@all,

in meinem contrib liegt die Version 2.10.2.
In der V habe ich eine zusätzliche Erkennung der frühen Konvergenz im Zusammenspiel mit R²-Profilschwelle und Architektur (DPR) eingebaut (siehe #6911).

Außerdem ist userExit bzgl. zirkulären Referenzen gehärtet, falls ein User den Device-Hash in seinem Code persistiert und dadurch ein Memory-Leak verursachen könnte.

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

TiPpFeHlEr

#6917
Zitat von: 300P am 26 August 2026, 20:18:37
Zitat von: TiPpFeHlEr am 26 August 2026, 17:10:43Was meinst du mit BWR/WR ?

BWR -> Batteriewechselrichter
WR -> Wechselrichter
Denn von dort kommen deine Ertragswerte / fortlaufend sich erhöhenden Zählerwerte / aktuellen Leistungswerte etc. usw. in bzw. nach SF.

Deshalb auch der Hinweis von DS_Starter wegen der geforderten Einhaltung der Bedingung für z.B. etotal.
Wenn das (z.B. der fortlaufend erhöhende Zählerstand) nicht sauber vom BWR/WR geliefert wird, dann hat SF natürlich "Schluckauf" beim Verarbeiten, obwohl die mitgeschriebenen aktuellen Leistungs- und Verbauchswerte (laut deinen Grafiken kommen die anscheinend in relativ kurzen Intervallen) schick und gut aussehen.

Wenn du aber z.B. nur alle 90 Minuten den jeweiligen Zählerstand aktualisiert zur Verfügung stellen kannst, dann könnte dies ein Problem sein. Eine Stunde gibts dann mal nix und in der anderen Stunde dann etwas mehr oder doppelt so viel. :)

Nutze (wie DS_Starker schreibt) die Fehlereingrenzung (ctrlDebug=collectData) für die Lösung deines Problems und schau ins LOG was und wie da dann so alles an Daten reinkommt


Hallo 300P,

danke für eure Hilfe und Hartnäckigkeit!

Der Fehler lag wirklich am etotal, dieser wurde nicht als kWh also z.B. 29500 kWh übertragen.
Sonder mit einer zusätzlichen Nachkommastelle, als 295004 = 29500,4 kWh dadurch musste der Wert erst noch durch 10 geteilt werden.
Seit wann der WR diesen Wert liefert kann und will ich jetzt nicht nachvollziehen.

Es war für mich halt nur verwirrend das auch der Verbrauch rumzickte, das ergab für mich keinen Sinn.

Danke für eure SUPER Arbeit.

Gruß Maik

DS_Starter

Guten Morgen,

Frage an die BEV-Nutzer...
Wie läuft denn die Erfassung der Anzahl Phasen bei der Ladung?
Ihr seht die Aufzeichnung mit:

get ... valDecTree aiRawData x
In den Datensätzen ist es der Schlüssel bevcsmPhasesXX.
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 Heiko,

Zitat von: DS_Starter am 29 August 2026, 09:05:53Frage an die BEV-Nutzer...

Sieht gut aus:
2026082506 => hod: 06, dayname: Di, sunaz: 62.50, sunalt: -5.80, rad1h: -, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 12.0, socwhsum: 4368
              windspeed: 2.23, windspeed_fast: 0.42, pvrl: 0, pvrlvd: 1, comforttemp: 21, conaifc: 436, con: 685, gcons: 27, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 0:100, rcmdcsm02: 0:100, rcmdcsm03: 0:100, rcmdcsm04: 0:100, rcmdcsm05: 0:100, rcmdcsm06: 0:100, rcmdcsm07: 0:100, rcmdcsm08: 0:100, rcmdcsm09: 0:100, rcmdcsm10: 0:100
              rcmdcsm11: 0:100, rcmdcsm12: 0:100, rcmdcsm13: 0:100, rcmdcsm14: 0:100, rcmdcsm15: 0:100, rcmdcsm16: 0:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 0, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 242, csme08: 132, csme09: 11, csme10: 11, csme11: 0, csme12: 31
              csme13: 0, csme14: 2, csme15: 0, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 0, bevcsmPhases15: 3
              csm09_off_points: 59.9, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 60
2026082507 => hod: 07, dayname: Di, sunaz: 74.70, sunalt: 2.80, rad1h: 60, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 13.5, socwhsum: 4192
              windspeed: 2.03, windspeed_fast: 0.39, pvrl: 511, pvrlvd: 1, comforttemp: 21, conaifc: 825, con: 723, gcons: 16, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 0:100, rcmdcsm02: 0:100, rcmdcsm03: 0:100, rcmdcsm04: 0:100, rcmdcsm05: 0:100, rcmdcsm06: 0:100, rcmdcsm07: 0:100, rcmdcsm08: 0:100, rcmdcsm09: 0:100, rcmdcsm10: 0:100
              rcmdcsm11: 0:100, rcmdcsm12: 0:100, rcmdcsm13: 0:100, rcmdcsm14: 0:100, rcmdcsm15: 0:100, rcmdcsm16: 0:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 34, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 231, csme08: 149, csme09: 10, csme10: 31, csme11: 0, csme12: 19
              csme13: 0, csme14: 2, csme15: 0, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 0, bevcsmPhases15: 3
              csm09_off_points: 60.0, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 60
2026082508 => hod: 08, dayname: Di, sunaz: 86.80, sunalt: 11.40, rad1h: 370, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 19.9, socwhsum: 5121
              windspeed: 2.17, windspeed_fast: 0.41, pvrl: 1755, pvrlvd: 1, comforttemp: 21, conaifc: 908, con: 694, gcons: 24, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 1:100, rcmdcsm02: 1:100, rcmdcsm03: 1:100, rcmdcsm04: 1:100, rcmdcsm05: 1:100, rcmdcsm06: 1:100, rcmdcsm07: 1:100, rcmdcsm08: 1:100, rcmdcsm09: 1:100, rcmdcsm10: 1:100
              rcmdcsm11: 0:100, rcmdcsm12: 1:100, rcmdcsm13: 1:100, rcmdcsm14: 1:100, rcmdcsm15: 0:100, rcmdcsm16: 1:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 33, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 226, csme08: 154, csme09: 10, csme10: 11, csme11: 0, csme12: 11
              csme13: 0, csme14: 2, csme15: 0, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 0, bevcsmPhases15: 3
              csm09_off_points: 60.0, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 60
2026082509 => hod: 09, dayname: Di, sunaz: 99.10, sunalt: 19.80, rad1h: 870, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 18.3, socwhsum: 6645
              windspeed: 2.28, windspeed_fast: 0.43, pvrl: 2430, pvrlvd: 1, comforttemp: 21, conaifc: 975, con: 777, gcons: 20, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 1:100, rcmdcsm02: 1:100, rcmdcsm03: 1:100, rcmdcsm04: 1:100, rcmdcsm05: 1:100, rcmdcsm06: 1:100, rcmdcsm07: 1:100, rcmdcsm08: 1:100, rcmdcsm09: 1:100, rcmdcsm10: 1:100
              rcmdcsm11: 0:100, rcmdcsm12: 1:100, rcmdcsm13: 1:100, rcmdcsm14: 1:100, rcmdcsm15: 0:100, rcmdcsm16: 1:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 33, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 230, csme08: 206, csme09: 11, csme10: 31, csme11: 0, csme12: 26
              csme13: 0, csme14: 2, csme15: 0, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 0, bevcsmPhases15: 3
              csm09_off_points: 59.9, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 59.9
2026082510 => hod: 10, dayname: Di, sunaz: 112.30, sunalt: 28.20, rad1h: 1410, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 20.4, socwhsum: 8766
              windspeed: 2.76, windspeed_fast: 0.76, pvrl: 3138, pvrlvd: 1, comforttemp: 21, conaifc: 1065, con: 893, gcons: 28, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 1:100, rcmdcsm02: 1:100, rcmdcsm03: 1:100, rcmdcsm04: 1:100, rcmdcsm05: 1:100, rcmdcsm06: 1:100, rcmdcsm07: 1:100, rcmdcsm08: 1:100, rcmdcsm09: 1:100, rcmdcsm10: 1:100
              rcmdcsm11: 0:100, rcmdcsm12: 1:100, rcmdcsm13: 1:100, rcmdcsm14: 1:100, rcmdcsm15: 0:100, rcmdcsm16: 1:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 34, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 228, csme08: 219, csme09: 11, csme10: 12, csme11: 0, csme12: 31
              csme13: 0, csme14: 2, csme15: 0, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 0, bevcsmPhases15: 3
              csm09_off_points: 59.9, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 60
2026082511 => hod: 11, dayname: Di, sunaz: 127.20, sunalt: 35.80, rad1h: 1850, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 20.8, socwhsum: 11312
              windspeed: 3.64, windspeed_fast: 1.49, pvrl: 4104, pvrlvd: 1, comforttemp: 21, conaifc: 1372, con: 899, gcons: 17, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 1:100, rcmdcsm02: 1:100, rcmdcsm03: 1:100, rcmdcsm04: 1:100, rcmdcsm05: 1:100, rcmdcsm06: 1:100, rcmdcsm07: 1:100, rcmdcsm08: 1:100, rcmdcsm09: 1:100, rcmdcsm10: 1:100
              rcmdcsm11: 0:100, rcmdcsm12: 1:100, rcmdcsm13: 1:100, rcmdcsm14: 1:100, rcmdcsm15: 0:100, rcmdcsm16: 1:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 34, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 192, csme08: 244, csme09: 11, csme10: 29, csme11: 0, csme12: 31
              csme13: 0, csme14: 81, csme15: 0, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 0, bevcsmPhases15: 3
              csm09_off_points: 59.9, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 60
2026082512 => hod: 12, dayname: Di, sunaz: 144.50, sunalt: 41.90, rad1h: 2100, wcc: 0, weatherid: 0, rr1c: 0.00, temp: 23.2, socwhsum: 12280
              windspeed: 2.93, windspeed_fast: 0.51, pvrl: 5192, pvrlvd: 1, comforttemp: 21, conaifc: 1981, con: 2993, gcons: 3, presence: 1, holiday: 0
              hpcsm: 09, bevcsm: 15
              rcmdcsm01: 1:100, rcmdcsm02: 1:100, rcmdcsm03: 1:100, rcmdcsm04: 1:100, rcmdcsm05: 1:100, rcmdcsm06: 1:100, rcmdcsm07: 1:100, rcmdcsm08: 1:100, rcmdcsm09: 1:100, rcmdcsm10: 1:100
              rcmdcsm11: 0:100, rcmdcsm12: 1:100, rcmdcsm13: 1:100, rcmdcsm14: 1:100, rcmdcsm15: 0:100, rcmdcsm16: 1:100
              exconfc01: 1, exconfc02: 1, exconfc03: 1, exconfc04: 1, exconfc05: 1, exconfc06: 1, exconfc07: 0, exconfc08: 0, exconfc09: 1, exconfc10: 0
              exconfc11: 0, exconfc12: 0, exconfc13: 1, exconfc14: 0, exconfc15: 1
              csme01: 0, csme02: 34, csme03: 0, csme04: 0, csme05: 0, csme06: 0
              csme07: 0, csme08: 265, csme09: 11, csme10: 28, csme11: 0, csme12: 31
              csme13: 0, csme14: 2, csme15: 2162, bevcsmSoC15: 83, bevcsmTargSoC15: 100, bevcsmBatCap15: 64800
              bevcsmPwr15: 5662, bevcsmPhases15: 3
              csm09_off_points: 60.0, csm09_heating_points: 0, csm09_defrost_points: 0, csm09_hotwater_points: 0, csm09_cooling_points: 0, csm09_pool_points: 0
              csm09_poolheating_points: 0, csm09_eco_points: 0
              csm15_prio_points: 0, csm15_auto_points: 0, csm15_other_points: 60

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