Solar Forecast ML – End-of-Day Workflow erklärt
Jeden Abend führt die Integration automatisch einen umfangreichen Lernprozess durch. Hier ist, was am 28.02.2026 passiert ist:
Ablauf & was jeder Schritt bedeutet
1. Start & Tagesabschluss (23:30:00)
Das End-of-Day-Workflow startet und schließt den Tag ab:
2026-02-28 23:30:00.488 INFO END-OF-DAY WORKFLOW STARTED at 2026-02-28 23:30:00
2026-02-28 23:30:00.493 INFO Excluded hours info for 2026-02-28: 2/24 (8.3%), reasons: {'unexpected_clouds': 2}
2026-02-28 23:30:00.509 INFO Day finalized: yield=6.00 kWh, consumption=12.59 kWh, accuracy=93.5%
- Ertrag heute: 6,00 kWh (Solar-Produktion)
- Verbrauch: 12,59 kWh
- Prognosegenauigkeit: 93,5% – eine sehr gute Tagesgenauigkeit
- Ausgeschlossene Stunden: 2 von 24 (8,3%) wegen unerwarteter Wolken – diese Stunden fließen nicht in das Training ein, da die Wetterdaten nicht mit der Realität übereinstimmten
- Tages-Endwert korrigiert: 5,61 → 6,00 kWh (Intraday-Schätzung vs. tatsächlicher Abschluss)
2026-02-28 23:30:00.584 INFO Day 2026-02-28 moved to history: 5.61 → 6.00 kWh
2. Tages-Zusammenfassung & Statistiken
Ein tägliches Summary wird in der Datenbank gespeichert und die historischen Statistiken aktualisiert. Der Tag wandert damit ins Langzeit-Archiv.
2026-02-28 23:30:00.570 INFO Created daily summary for 2026-02-28
2026-02-28 23:30:00.618 INFO Statistics calculated successfully
3. Wetter-Präzisionsanalyse
Die Wetter-KI vergleicht die vorhergesagten Wetterdaten mit den tatsächlich gemessenen Werten für 22 von 24 Stunden:
2026-02-28 23:30:00.619 INFO Calculating weather precision for 2026-02-28
2026-02-28 23:30:00.623 INFO Loaded actual weather for 22 hours
2026-02-28 23:30:00.625 INFO Loaded raw forecasts for 24 hours
2026-02-28 23:30:00.830 INFO Compared 22 hours successfully
2026-02-28 23:30:01.042 INFO Updated rolling factors: 8 days (clear=0, cloudy=6), solar=0.714, hourly_hours=7
2026-02-28 23:30:01.043 INFO Correction factors calculated: {'temperature_offset': -0.39, 'pressure_offset': -4.4,
'solar_radiation_wm2_factor': 0.661, 'clouds_factor': 0.748,
'humidity_factor': 0.839, 'wind_factor': 0.758, 'rain_diff': 0.0}
| Faktor | Korrekturwert | Bedeutung |
|---|---|---|
| Temperatur-Offset | −0,39 °C | Wettermodell etwas zu warm |
| Druck-Offset | −4,4 hPa | Luftdruck leicht überschätzt |
| Solarstrahlung | 0,661 | Sonne wurde um ~34% überschätzt |
| Bewölkung | 0,748 | Wolken etwas zu niedrig prognostiziert |
| Luftfeuchtigkeit | 0,839 | Trockenere Vorhersage als Realität |
| Wind | 0,758 | Wind leicht unterschätzt |
| Niederschlag | 0,0 | Kein Regen – passt |
Rolling Factors (gleitende 8-Tages-Korrektur): solar=0.714 – die Integration weiß, dass aktuelle Wetter-Rohdaten die Sonneneinstrahlung tendenziell überschätzen, und korrigiert das automatisch.
4. Weather MLP – Neuronales Netz für Wetter-Korrekturen
Ein kleines neuronales Netz (MLP) wird mit 239 Datenpunkten neu trainiert, um Wetterfehler systemisch zu erkennen:
2026-02-28 23:30:01.063 INFO Weather MLP training: 239 samples, 8 features
2026-02-28 23:30:01.429 DEBUG Weather MLP epoch 10: train_loss=0.057565, val_loss=0.108755
2026-02-28 23:30:01.773 INFO Weather MLP early stopping at epoch 20
2026-02-28 23:30:01.776 INFO Weather MLP trained: R²=0.181, RMSE=0.3298, samples=239, epochs=20
2026-02-28 23:30:01.800 INFO Weather MLP weights saved: 239 samples, R²=0.181
- R² = 0,181 – noch relativ schwach, was bedeutet: Die Wettervorhersagefehler sind aktuell noch schwer vorherzusagen. Das verbessert sich mit mehr Datentagen.
- Early Stopping bei Epoche 20 von 50 – das Modell hat sich früh stabilisiert
5. Haupt-KI-Training (Hubble-KI Ensemble)
Das ist das Herzstück des EOD – die Prognosemodelle werden neu trainiert:
Ridge-Modell (schnell, stabil):
2026-02-28 23:30:03.576 INFO Prepared 455 training samples from 59 days, 2 outputs
2026-02-28 23:30:03.589 INFO Training Ridge with 455 samples...
2026-02-28 23:30:04.054 INFO Selected alpha = 100.0 (LOO-CV MSE = 0.001825)
2026-02-28 23:30:04.597 INFO TinyRidge trained: alpha=55.0000, R²=0.961, RMSE=0.0389, samples=455, outputs=2
2026-02-28 23:30:04.598 INFO Ridge trained: R²=0.961, alpha=55.0000
- 455 Trainingsproben aus 59 Tagen
- R² = 0,961 – sehr hohe Güte, das Ridge-Modell kennt die Muster sehr gut
- Optimaler Regularisierungsparameter (Alpha) = 100.0
Hybrid KI-Modell (tiefes Lernen, 23:30:04 – 23:37:18 = ~7 Minuten Training!):
2026-02-28 23:30:04.598 INFO Training LSTM with 455 samples...
2026-02-28 23:30:04.598 INFO Training V3.0: 455 samples, 200 epochs, 2 outputs
2026-02-28 23:30:51.285 INFO Epoch 10: train=0.0009, val=0.0019, lr=0.004970
2026-02-28 23:31:37.587 INFO Epoch 20: train=0.0009, val=0.0018, lr=0.004880
2026-02-28 23:32:24.290 INFO Epoch 30: train=0.0009, val=0.0017, lr=0.004733
2026-02-28 23:33:10.648 INFO Epoch 40: train=0.0008, val=0.0017, lr=0.004532
2026-02-28 23:33:57.400 INFO Epoch 50: train=0.0008, val=0.0018, lr=0.004282
2026-02-28 23:34:43.981 INFO Epoch 60: train=0.0008, val=0.0017, lr=0.003990
2026-02-28 23:35:30.417 INFO Epoch 70: train=0.0007, val=0.0017, lr=0.003662
2026-02-28 23:36:17.123 INFO Epoch 80: train=0.0008, val=0.0018, lr=0.003307
2026-02-28 23:37:04.076 INFO Epoch 90: train=0.0007, val=0.0017, lr=0.002933
2026-02-28 23:37:17.975 INFO Early stopping at epoch 93
2026-02-28 23:37:18.474 INFO Training complete: R2=0.731, RMSE=0.083 kWh, outputs=2, layers=2, heads=4
2026-02-28 23:37:18.475 INFO LSTM trained: R²=0.731, epochs=93, layers=2, heads=4
2026-02-28 23:37:18.475 INFO Active model: LSTM (455 samples)
- 455 Proben, 200 Epochen geplant, Early Stopping bei Epoche 93
- R² = 0,731 – solider Wert, die KI lernt die zeitlichen Muster
- RMSE = 0,083 kWh – durchschnittlicher Fehler pro prognostizierte Stunde
- Architektur: 2 Schichten, 4 Attention-Heads (Transformer)
- Aktives Modell: Hybrid-KI – das bessere Modell gewinnt automatisch und wird für die Prognose genutzt
Die Gewichte werden in der Datenbank gespeichert und für die Saison Frühling/2026 archiviert.
2026-02-28 23:37:20.355 DEBUG Model weights saved to structured tables
2026-02-28 23:37:20.509 INFO Model archived for season spring/2026
2026-02-28 23:37:20.509 INFO Training complete: active=tiny_lstm, R²=0.731, RMSE=0.083kWh, samples=455, outputs=2
2026-02-28 23:37:20.514 INFO AI model trained: R²=0.731, RMSE=0.083kWh, samples=455, features=31, outputs=2, attention=ON
6. Methoden-Lernphase
Die Integration lernt, welche Vorhersagemethode unter welchen Bedingungen am besten funktioniert (Wetterlage × Tageszeit):
2026-02-28 23:37:20.543 INFO Method learning [overcast/morning]: physics_mae=0.0425, ai_mae=0.0167, advantage=2.00
2026-02-28 23:37:20.545 INFO Method learning [partly_cloudy/morning]: physics_mae=0.3592, ai_mae=0.0160, advantage=2.00
2026-02-28 23:37:20.546 INFO Method learning [partly_cloudy/midday]: physics_mae=0.2023, ai_mae=0.1553, advantage=1.30
2026-02-28 23:37:20.547 INFO Method learning [partly_cloudy/afternoon]:physics_mae=0.1037, ai_mae=0.0800, advantage=1.30
2026-02-28 23:37:20.549 INFO Method learning [clear/afternoon]: physics_mae=0.0140, ai_mae=0.0616, advantage=0.50
2026-02-28 23:37:20.556 INFO Method performance learning completed for 2026-02-28
| Szenario | Bestes Modell | Vorteil |
|---|---|---|
| Bedeckt / Morgen | KI (Hybrid) | ×2,00 besser als Physik |
| Teilbewölkt / Morgen | LSTM | ×2,00 besser |
| Teilbewölkt / Mittag | Physik/Ridge | ~gleichwertig |
| Klar / Nachmittag | Physik | Physik gewinnt knapp |
→ Bei diffusem Licht (bedeckt, morgens) ist KI klar überlegen. Bei klarem Wetter ist die Physik-Berechnung manchmal präziser – die Integration nutzt automatisch das jeweils beste Verfahren.
7. Ensemble-Gewichtung
Für jede Kombination aus Panel-Gruppe × Wetterlage × Tageszeit werden die optimalen Mischungsverhältnisse zwischen KI und Ridge berechnet:
2026-02-28 23:37:20.559 INFO Ensemble weight [Gruppe 1/overcast/morning]: lstm=0.81 ridge=0.19 (lstm_mae=0.0103, ridge_mae=0.0441)
2026-02-28 23:37:20.560 INFO Ensemble weight [Gruppe 2/overcast/morning]: lstm=0.81 ridge=0.19 (lstm_mae=0.0098, ridge_mae=0.0431)
2026-02-28 23:37:20.564 INFO Ensemble weight [Gruppe 1/partly_cloudy/midday]: lstm=0.45 ridge=0.55 (lstm_mae=0.1036, ridge_mae=0.0844)
2026-02-28 23:37:20.581 INFO Ensemble group weight learning completed: 20 buckets updated
- Beispiel: Bei Gruppe 1, bedeckt morgens → KI 81% / Ridge 19%
- Bei teilbewölkt mittags → Ridge gewinnt leicht (55% Ridge, 45% KI)
Das System passt diese Gewichte täglich an.
8. Physik-Kalibrierung
Der Physik-Simulator (der auf Sonnenbahn + GHI-Strahlung basiert) wird für beide Panel-Gruppen kalibriert:
2026-02-28 23:37:20.640 DEBUG Actual-weather physics for Gruppe 1 hour 7: 0.0054 kWh (theoretical=0.0375, ghi_ratio=0.14)
2026-02-28 23:37:20.640 DEBUG Clamping outlier: Gruppe 1 hour 7, ratio=7.43 -> 3.00
2026-02-28 23:37:20.643 DEBUG Actual-weather physics for Gruppe 2 hour 17: 0.0138 kWh (theoretical=0.0092, ghi_ratio=11.98)
2026-02-28 23:37:21.730 DEBUG Saved calibration config to database
2026-02-28 23:37:22.082 INFO Physics calibration SUCCESS for 2026-02-28: Updated 2 groups
- Einige Stunden zeigten Ausreißer (z.B. Stunde 7 mit ratio=7,43) – diese werden automatisch auf einen sinnvollen Maximalwert begrenzt (clamping → 3,00)
- Gruppe 2, Stunde 17: ghi_ratio=11,98 – sehr ungewöhnlicher Wert (evtl. Reflexion oder Sensorausreißer), ebenfalls geclampt
- Ergebnis: Physik-Kalibrierung für beide Gruppen erfolgreich aktualisiert
9. Wetter-Experten-Blending & Sichtweiten-Lernen
Die Integration nutzt mehrere Wetterquellen (ICON, GFS, ECMWF, PirateWeather) und lernt, welche bei welchen Bedingungen zuverlässiger ist:
2026-02-28 23:37:26.834 INFO Learned from 2026-02-28: 22 hours across 3 cloud types
(buckets: overcast:6h, mixed:3h, clear:13h)
2026-02-28 23:37:26.851 INFO VisibilityLearner for 2026-02-28: 2 fog, 1 fog_light hours.
Accuracy: BrightSky=0.0%, PirateWeather=0.0%
2026-02-28 23:37:26.852 INFO Weather expert learning SUCCESS for 2026-02-28
2026-02-28 23:37:26.859 DEBUG No snow predictions for 2026-02-28
- Heute: 6h bedeckt, 3h wechselhaft, 13h klar
- Nebel-Erkennung: 2 Fog-Stunden, 1 leichter Nebel erkannt
- Genauigkeit der Wetterquellen bei Nebel: 0% (beide Quellen haben Nebel nicht vorhergesagt) → wird für zukünftige Kalibrierung gespeichert
- Kein Schnee heute
10. Schattenmuster-Lernen
2026-02-28 23:37:27.350 INFO Shadow pattern learning for 2026-02-28 [_system_]:
13 hours, 0 patterns updated, 9 fixed obstructions
2026-02-28 23:37:27.351 INFO Fixed obstruction hours detected [_system_]: [6, 8, 10, 15, 16, 17, 18, 19, 20]
2026-02-28 23:37:27.355 DEBUG No shadow data for 2026-02-28/Gruppe 1 - skipping learning
2026-02-28 23:37:27.358 DEBUG No shadow data for 2026-02-28/Gruppe 2 - skipping learning
- System-Ebene: 13 Stunden gelernt, 9 feste Hindernisse erkannt (Stunden 6, 8, 10, 15–20) – z.B. Gebäude, Bäume die zu bestimmten Zeiten Schatten werfen
- Gruppe 1 & 2: Kein Schatten-Tracking-Daten für heute → übersprungen
11. Drift-Erkennung
Das System überwacht, ob das KI-Modell mit der Zeit “abdriftet” (also schlechter wird):
2026-02-28 23:37:28.245 INFO Drift detection complete: 24 metrics saved, 5 events created
2026-02-28 23:37:28.246 INFO Drift detection completed for 2026-02-28: 24 metrics, 5 events, 3 scopes
- 24 Metriken analysiert, 5 Drift-Events erkannt in 3 Bereichen
- Das bedeutet: Es gibt leichte Veränderungen im Verhalten – das System hat diese erkannt und wird entsprechend gegensteuern
Fazit
2026-02-28 23:37:28.261 INFO EOD duration saved: 447.8s for 2026-02-28
2026-02-28 23:37:28.261 INFO End-of-day workflow completed (15/15 steps, 447.8s)
Der End-of-Day-Workflow vom 28.02.2026 ist vollständig und fehlerfrei durchgelaufen – alle 15 von 15 Schritten erfolgreich in 7 Minuten 28 Sekunden (447,8s).
Was das für dich bedeutet:
| Kennzahl | Wert | Bewertung |
|---|---|---|
| Tagesgenauigkeit | 93,5% | Sehr gut |
| LSTM R² | 0,731 | Gut (wächst mit mehr Daten) |
| Ridge R² | 0,961 | Ausgezeichnet |
| Trainingsdaten | 59 Tage / 455 Proben | Wächst täglich |
| Wetter-Korrekturfaktor Solar | 0,661–0,714 | Wetterdienst überschätzt Sonne – wird automatisch korrigiert |
Die Integration lernt jeden Abend selbstständig dazu. Mit jedem weiteren Tag verbessern sich KI-R² und die Ensemble-Gewichtungen. Der Prozess läuft vollständig lokal und autonom – kein manueller Eingriff nötig → keine Daten verlassen das System!