Erklärung SFML: Der MDC - die Midday Correction

Solar Forecast ML – Adaptive Forecast

Was passiert wenn ich Adaptive Forecast in den Optionen ausgewählt habe?

Jeden Mittag um 12:30 Uhr führt Solar Forecast ML einen besonderen Forecast-Lauf durch – den Adaptive Forecast. Er ist der einzige Forecast-Lauf des Tages, der die echte Produktion des heutigen Vormittags kennt und gezielt nutzt.

2026-03-01 06:07:50.601 INFO  • Adaptive forecast: Daily at 12:30

Das Konzept dahinter ist einfach aber wirkungsvoll: Um 12:30 Uhr ist der Vormittag vorbei. Das Modell weiß jetzt, wie viel die Anlage heute wirklich produziert hat – und kann diese Information nutzen, um die Nachmittagsprognose deutlich zu verbessern.

Warum reicht die Morgenprognose nicht für den ganzen Tag?

Der Final Forecast um 06:25 Uhr (30 Minuten vor Sonnenaufgang) ist die beste Prognose, die mit den Wetterläufen am Morgen möglich ist. Er basiert auf:

  • Wetterdaten vom frühen Morgen
  • Historischen Produktionsmustern
  • Gestrigem Ertrag als Referenz

Wetter ist unberechenbar – eine Wolkenfront kann früher oder später als vorhergesagt ankommen, Nebel kann länger anhalten als erwartet, oder der Morgen war überraschend sonniger als prognostiziert. Um 06:25 Uhr sind das alles noch Unbekannte.

Um 12:30 Uhr ist das anders:

Morgenproduktion Stunden 7–12 → echte Messwerte vorhanden
Nachmittagsproduktion Stunden 13–19 → noch Prognose

Der Adaptive Forecast kombiniert echte Messwerte mit aktuellen Wetterdaten und berechnet daraus eine deutlich präzisere Prognose für den restlichen Tag.


Was passiert konkret um 12:30 Uhr?

Schritt 1 – Morgendliche Ist-Produktion einlesen

Das System liest die tatsächlich gemessene Produktion seit Sonnenaufgang aus der Datenbank:

Adaptive Forecast: Loading actual production for hours 7–12...
  Hour 07:  0.05 kWh  (actual measured)
  Hour 08:  0.44 kWh  (actual measured)
  Hour 09:  1.06 kWh  (actual measured)
  Hour 10:  0.28 kWh  (actual measured)
  Hour 11:  0.32 kWh  (actual measured)
  Hour 12:  0.49 kWh  (actual measured)
  → Morning total: 2.64 kWh (forecast was: 2.91 kWh)

Das ist der entscheidende Unterschied zu allen anderen Forecast-Läufen: Hier fließen keine Schätzungen für den Vormittag ein – nur echte, gemessene Werte.


Schritt 2 – Morning Deviation Check (MDC): 5 Kriterien

Bevor das System irgendetwas anpasst, prüft der Morning Deviation Check fünf Kriterien. Nur wenn alle erfüllt sind, wird die Nachmittagsprognose korrigiert. Das verhindert unnötige Korrekturen bei normalen Schwankungen.


Kriterium 1 – Abweichung über Schwellenwert

Die Abweichung zwischen tatsächlicher und prognostizierter Morgenproduktion muss zwei Bedingungen gleichzeitig erfüllen:

  • Die prozentuale Abweichung muss den konfigurierten Schwellenwert überschreiten
  • UND die absolute Abweichung muss über einem dynamischen Mindestwert liegen

Der dynamische Schwellenwert ist wichtig: An einem schwachen Wintertag mit 1,5 kWh Tagesprognose würde eine Abweichung von 0,1 kWh prozentual groß wirken, ist aber für Automationen irrelevant. An einem starken Sommertag mit 8 kWh Prognose wäre 0,1 kWh hingegen bedeutungslos. Das System skaliert den Schwellenwert automatisch mit der Anlagengröße.

Beispiel:
  Morgenprognose:    2.91 kWh
  Ist-Produktion:    2.64 kWh
  Abweichung:       -0.27 kWh (-9.3%)
  → Prozentual: 9.3% > Schwellenwert ✓
  → Absolut:   0.27 kWh > dynamischer Mindestwert ✓
  → Kriterium 1: ERFÜLLT

Kriterium 2 – Keine aktive Sondersituation

Ist eine Special Situation aktiv (z.B. Schnee auf den Panels, Wartungsarbeiten, manuell gesetzter Override), findet keine Korrektur statt.

Der Grund:
In solchen Situationen ist die Morgenabweichung nicht durch das Wetter erklärbar, sondern durch einen externen Einfluss. Eine Korrektur auf Basis dieser Daten würde das Modell in die falsche Richtung ziehen.

Beispiel:
  Special Situation: None
  → Kriterium 2: ERFÜLLT

  Special Situation: snow_on_panels (aktiv)
  → Kriterium 2: NICHT ERFÜLLT → keine Korrektur

Kriterium 3 – Genug Restzeit bis Sonnenuntergang

Es müssen noch mindestens X- Stunden bis Sonnenuntergang verbleiben.

Wenn es um 12:30 Uhr bereits fast dunkel wäre (z.B. sehr kurze Wintertage in nördlichen Breiten), lohnt sich eine Korrektur nicht mehr – die Nachmittagsprognose betrifft dann nur noch minimale Produktionsmengen, die für Automationen kaum relevant sind.

Beispiel (01.03.2026):
  Aktuelle Zeit:    12:30
  Sonnenuntergang:  17:45
  Verbleibend:      5.25 Stunden > Mindeststunden ✓
  → Kriterium 3: ERFÜLLT

Kriterium 4 – Frische Wetterdaten verfügbar

Es muss ein neuerer Wetter-Modelllauf vorliegen als derjenige, der für die Originalprognose (Final Forecast @ 06:25) verwendet wurde.

Das ist ein Qualitätsgatter: Wenn die Wetterdienste seit dem Morgen keine neuen Modelldaten geliefert haben, wäre eine Neuberechnung auf Basis alter Wetterdaten irreführend. Die Nachmittagskorrektur soll auf aktuelleren Informationen basieren – nicht auf denselben Daten wie der Morgenforecast.

Beispiel:
  Final Forecast verwendete: Run 2026-03-01 06:00 UTC
  Aktuell verfügbar:                 Run 2026-03-01 12:00 UTC
  → Neuerer Run vorhanden ✓
  → Kriterium 4: ERFÜLLT

Kriterium 5 – Signifikante Bewölkungsänderung

Die Differenz zwischen der prognostizierten Morgen-Bewölkung und der aktuell gemessenen Bewölkung muss größer sein als Jahrezeiten-Prozentpunkte.

Das verhindert Korrekturen bei Prognosen, die eigentlich korrekt waren – nur die Produktion schwankte leicht aus anderen Gründen (z.B. kurze Schattenwürfe, Temperaturschwankungen).

Bypass bei extremer Produktionsabweichung:
Wenn die tatsächliche Produktion mehr als 100% von der Prognose abweicht UND die absolute Differenz > 0,5 kWh beträgt, wird dieses Kriterium automatisch übersprungen.

Die Begründung:
Wenn die reale Produktion so drastisch von der Prognose abweicht, beweist das von selbst, dass die Prognose falsch war – unabhängig davon, was die Bewölkungsdaten sagen.

Beispiel A (Kriterium erfüllt):
Prognostizierte Bewölkung Morgen: 55%
Gemessene Bewölkung aktuell: 82%
Differenz: 27 Prozentpunkte > Schwellenwert ✓
→ Kriterium 5: ERFÜLLT

Beispiel B (Bypass):
Abweichung: +130% (Anlage produziert doppelt so viel wie erwartet)
Absolute Differenz: 1.2 kWh > 0.5 kWh
→ Extremfall: Kriterium 5 wird übersprungen ✓


---

### Schritt 3 – Nachmittagsprognose adaptieren

**Sind alle fünf Kriterien erfüllt**, berechnet das Modell die Nachmittagsprognose neu – **unter Berücksichtigung der Morgenabweichung** und der aktuell frischen Wetterdaten

**Wichtig:** 
Die Morgenabweichung wird **nicht 1:1 auf den Nachmittag übertragen**. Das Modell gewichtet den Faktor und berücksichtigt, ob die aktuellen Wetterdaten für den Nachmittag eine Verbesserung oder Verschlechterung gegenüber dem Morgen signalisieren.

### Schritt 4 – Tagesprognose aktualisieren

Adaptive Forecast complete:
Today revised: 5.52 kWh (was: 5.76 kWh at 06:25)
Morning actual: 2.64 kWh (locked – nicht überschreibbar)
Afternoon forecast: 2.88 kWh (updated)
Method: AI + Physics (adaptive mode)
Lock: Morning hours LOCKED, afternoon hours UPDATED

Die Morgenstunden bleiben gesperrt – sie sind Messungen, keine Prognosen, und werden nicht verändert.
Nur die Nachmittagsstunden (ab aktueller Stunde) werden mit den neuen Werten überschrieben. Das Dashboard und alle Automationen sehen sofort die aktualisierte Tagesprognose.

Warum 12:30 Uhr?

Der Zeitpunkt ist kein Zufall – er ist der optimale Kompromiss:

Früher wäre schlechter: Um 10:00 Uhr sind erst 2–3 Stunden Produktion bekannt. Zu wenig Datenpunkte für eine zuverlässige Trendanalyse – der Mittelwert schwankt noch stark.

Später wäre nutzloser: Um 15:00 Uhr ist der Großteil der Tagesproduktion bereits geschehen. Eine aktualisierte Prognose für die letzten 2–3 Sonnenstunden bringt kaum noch Mehrwert für Automationen.

12:30 Uhr ist ideal, weil:

  • Die Hälfte der Tagesproduktion liegt als echte Messung vor (Stunden 7–12)
  • Die andere Hälfte liegt noch in der Zukunft (Stunden 13–18)
  • Wetterdaten aus dem Mittag sind frisch und präzise
  • Automationen (Batterieladen, Einspeisung) haben noch genug Zeit zu reagieren

Adaptive Forecast vs. die anderen Forecast-Läufe

Forecast Uhrzeit Datenbasis Stärke
Early Morning 00:30 Nur historisch + Wetter vom Vorabend Erste Orientierung für den Tag
Final Forecast 06:25 Frische Wetterdaten vor Sonnenaufgang Beste Prognose vor Produktionsbeginn
Adaptive Forecast 12:30 Echte Morgenproduktion + aktuelle Wetterdaten Präziseste Nachmittagsprognose
Hourly Update jede :05 Live-Sensordaten Feine Anpassung Stunde für Stunde

Der Adaptive Forecast ist damit der präziseste Einzelforecast des Tages – nicht weil das Modell besser ist, sondern weil es mehr echte Informationen hat als alle anderen Läufe.

Und was ist mit dem Hourly Update?

Eine häufige Frage: Wenn es jeden Stunde ein Update gibt – wozu dann noch ein Mittags-Forecast?

Der Unterschied liegt in der Tiefe der Anpassung:

  • Hourly Update (jede :05): Aktualisiert die Prognose auf Basis frischer Sensordaten – schnell, leichtgewichtig, kein vollständiges Modell-Reranking
  • Adaptive Forecast (12:30): Führt einen vollständigen Forecast-Durchlauf mit LSTM + Physik durch, analysiert die Morgenabweichung systematisch und passt die Ensemble-Gewichtung für den Nachmittag an

Der Adaptive Forecast ist also kein “größeres Hourly Update” – er ist ein eigenständiger, vollständiger Neubewertungs-Durchlauf mit echter Produktionshistorie des Tages.

Fazit

Der Adaptive Forecast @ 12:30 ist der Realitätscheck des Tages. Er beantwortet die Frage: “War der heutige Morgen wie erwartet – und was bedeutet das für den Nachmittag?”

Was er nutzt Was er verbessert
Echte Morgenproduktion (Stunden 7–12) Nachmittagsprognose (Stunden 13–19)
Aktuelle Mittags-Wetterdaten Tagesgesamtprognose
Morgenabweichung als Korrektursignal Automations-Reaktionsfähigkeit

Kein manueller Eingriff nötig – der Adaptive Forecast läuft vollständig autonom. Keine Daten verlassen das System.

3 „Gefällt mir“

Hallo,

ich habe hierzu eine Frage.
Wie oft kam es in deinen Test und bei den anderen dazu, das dieses Kriterium tatsächlich eingetreten ist?
Bei mir ist es so, das seit dem dieses Feature eingeführt wurde, nie eingetreten ist.
Nur Abweichungen von 1-3 Prozentpunkte.

Beispiel heute.
(live System)

INFO - === Adaptive Forecast Check ===
INFO - Time: 12:30:00
INFO - Collecting analysis data...
INFO - Morning analysis (06:50-12:30): Actual=2.54 kWh, Predicted=1.53 kWh, Deviation=+66% (+1.01 kWh)
INFO - Criterion 1: Daily forecast=3.08 kWh, Dynamic threshold=0.31 kWh, Deviation=1.01 kWh
INFO - Criterion 2 (No special situation): MET
INFO - Criterion 3 (>= 3h until sunset): MET (5.9h)
DEBUG - Weather data freshness: last_updated=2026-03-10T11:00:22+01:00, age=1.5h, fresh=True
INFO - Criterion 4 (Fresh weather data): MET (06:00 UTC)
INFO - Criterion 5 (Cloud cover diff > 25pp): NOT MET - Morning=69%, Current=69% (-1pp)
INFO - == Result: NO CORRECTION ==
INFO - Reason: Weather data nearly unchanged (Diff: -1pp)

TestSystem

INFO - === Adaptive Forecast Check ===
INFO - Time: 12:30:00
INFO - Collecting analysis data...
INFO - Morning analysis (06:50-12:30): Actual=2.54 kWh, Predicted=1.40 kWh, Deviation=+82% (+1.14 kWh)
INFO - Criterion 1: Daily forecast=2.69 kWh, Dynamic threshold=0.27 kWh, Deviation=1.14 kWh
INFO - Criterion 2 (No special situation): MET
INFO - Criterion 3 (>= 3h until sunset): MET (5.9h)
DEBUG - Weather data freshness: last_updated=2026-03-10T11:00:23+01:00, age=1.5h, fresh=True
INFO - Criterion 4 (Fresh weather data): MET (06:00 UTC)
INFO - Criterion 5 (Cloud cover diff > 25pp): NOT MET - Morning=72%, Current=71% (-1pp)
INFO - == Result: NO CORRECTION ==
INFO - Reason: Weather data nearly unchanged (Diff: -1pp)

Die aktuellen Werte sehen so aus.

Soll (live): 3,08 kWh
Soll (Test): 2,69 kWh
Ist (bis jetzt): 4,611 kWh

Vielleicht kannst du Licht in mein dunkel bringen und vielleicht interessiert es auch andere User.

Liegt es an meinen Standort, wo die Wetterdaten schwierig sind?
Es war den ganzen Tag fast Wolkenlos.(siehe Graph) Aber nicht 69% Bewölkung?

Vielen Dank und viele Grüße

Kay

Vielen Dank für die Mühe die Du dir gemacht hast! Bei näherer Betrachtung hast Du einen Fehler in meiner eigenen Logik entdeckt.. die Sperre " Abweichung von 0,5 kWh" die kann vermutlich von BKW nicht überwunden werden!
Ich schaue es mir noch einmal an und muss mir da etwas anderes überlegen, z.b. einen Wert der auf dem hinterlegten kWP beruht. DANKE!!!

PS:
Zu den Wolken, das muss man etwas anders “lesen” auch hier habe ich lange drüber nachgedacht wie ich es “nenne”. aktuell sind es bei vielen Usern keine “Wolken” im klassischen Sinne, sondern Sahara-Staub.
Ich hatte erst solche Situationen (Staub, Pollenflug, Luftverschmutzung, Sichtweitenbegrenzung,..) auch genauso zu benennen. Allerdings ist es sehr komplex und die Wetterrohdaten nicht immer eindeutig (in der kostenlosen Version) sie fassen es alles unter dem Code 71 zusammen. - Daher sind mir hier etwas die Hände gebunden und auch der KI. Sie bekommt ebenfalls nur den Code 71 was für sie " Wolken" bedeutet.. obwohl es auch Sahara-Staub sein könnte bzw. aktuell ist. Das führt dann zu fehlinterpretationen. Die feder ich mit dem Rolling Window ab, damit sie es nicht falsch lernt.

2 „Gefällt mir“

Danke, für die Erklärung.

Die ist doch überwunden?

INFO - Morning analysis (06:50-12:30): Actual=2.54 kWh, Predicted=1.53 kWh, Deviation=+66% (+1.01 kWh)
INFO - Criterion 1: Daily forecast=3.08 kWh, Dynamic threshold=0.31 kWh, Deviation=1.01 kWh

Oder wo versteckt sich die 0,5 kWh?

Der Dynamic threshold ist schon ein guter Ansatz, ist die Frage ob man die “Himmelstrübung” wirklich als Grenze nehmen kann?

Bist du hier wieder an die Vorgaben/Ausdruck-Katalog von HA gebunden? Ansonsten wäre eventuell “Trübung”, “nicht klar” oder “milchig” eventuell etwas, was weniger Fragen aufwirft.

Hallo @nobbilie,

nein das hat ausnahmsweise :wink: nichts mit Ha zu tun. Du musst dir das so vorsttellen: Die Wetterdaten kommen als “Codes” oder Zahlenwerte.
Diese Codes fassen bestimmte ereigenisse zusammen, möchte man “feinerer” Abstufungen, dann kostet es Geld. :frowning:

1 „Gefällt mir“

Heute erstmalig die Benachrichtigung bzgl. Korrektur erhalten. Top!

2 „Gefällt mir“