GribStream

Prognose der Solarerzeugung

Dieses Dashboard schätzt die stündliche Solar-PV-Erzeugung aus kurzwelliger Strahlung und Lufttemperatur von Wettermodellen. Es startet mit einer typischen Wohngebäude-Voreinstellung, damit kein vollständiges PV-Planungsformular nötig ist: Denver, eine 6-kW-DC-Anlage, eine Näherung für feste Neigung, 14% PV-Gesamtverluste, 96% Wirkungsgrad des Wechselrichters und ein DC/AC-Verhältnis von 1.2.

Die Prognose nutzt GFS, HRRR oder NBM über den Standard-Endpoint von GribStream /api/v2/[dataset]/timeseries. Die zentrale Wettergröße ist DSWRF an der Oberfläche, das NOAA-Feld für abwärts gerichtete kurzwellige Einstrahlung, kombiniert mit 2-m-Lufttemperatur für eine einfache temperaturbedingte Leistungsreduktion der Module. Das Dashboard hält den Prognosehorizont bei 24 oder 36 Stunden, damit die zurückgegebenen Datenzeilen bei den verfügbaren Modellen stündlich bleiben.

Was die Bedienelemente bewirken

Wie die Panels gelesen werden

Die Mathematik ist absichtlich leichtgewichtig. Sie hilft, wettergetriebene Produktionsmuster zu vergleichen, vorgeschlagene Installationen schnell einzuschätzen und zu zeigen, wie GribStream Expressions Prognosefelder in Anwendungsmetriken verwandeln. Sie ist kein bankfähiges PV-Planungsmodell und ersetzt nicht PVWatts, SAM, Verschattungsmodellierung am Standort, gemessene Verschmutzung der Module oder ein professionelles Einstrahlungsmodell auf Modulebene.

Die Anlagengeometrie ist bewusst konservativ. Eine echte Berechnung von Neigung und Azimut braucht Sonnenstand, direkte Normalstrahlung, diffuse Horizontalstrahlung, Albedo, Modulausrichtung, Reihenabstände und Verschattung. Dieses Dashboard fragt nur DSWRF und 2-m-Temperatur von GribStream ab, deshalb legt es die Geometrieannahme als expliziten Multiplikator offen, statt falsche Präzision hinter einem Neigungsfeld zu verstecken.

Mathematik und Konstanten

Das Dashboard berechnet alle abgeleiteten Felder mit GribStream Expressions. Mit den Standardeinstellungen lauten die Gleichungen:

  1. temp_c = temp_k - 273.15
  2. poa_wm2 = ghi_wm2 * 1.0800
  3. cell_temp_c = temp_c + (poa_wm2 / 800.0) * 25.0000
  4. temperature_factor = max(0, 1 + (-0.3500 / 100) * (cell_temp_c - 25.0))
  5. loss_factor = max(0, 1 - 14.0000 / 100)
  6. dc_power_kw = 6.0000 * poa_wm2 / 1000.0 * temperature_factor * loss_factor
  7. ac_limit_kw = 6.0000 / 1.2000
  8. ac_power_kw = min(dc_power_kw * 96.0000 / 100, ac_limit_kw)
  9. hourly_energy_kwh = ac_power_kw, weil das Dashboard die Abfrage auf stündliche Zeilen begrenzt.

Die wichtigsten Konstanten sind:

Diese Konstanten machen die Prognose erklärbar und leicht variierbar, ersetzen aber kein Modul-Datenblatt, gemessenes Albedo, gemessene Modulverschmutzung, Verschattungsgeometrie oder einen vollständigen PVWatts/SAM-Modelllauf.

Repräsentative GribStream-Anfrage

Dieses Beispiel nutzt die Standardkonfiguration für Denver mit GFS: 6 kW mit Näherung für feste Neigung. Das Dashboard füllt die numerischen Werte aus Grafana-Variablen und berechnet die PV-Schätzungen in einem standardmäßigen GribStream /timeseries API-Aufruf.

curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
  -H 'Content-Type: application/json' \
  -H 'Accept: text/csv' \
  -H 'Authorization: Bearer [API_TOKEN]' \
  -d '{
    "fromTime": "2026-05-03T12:00:00Z",
    "untilTime": "2026-05-05T00:00:00Z",
    "minLeadTime": "0h",
    "maxLeadTime": "36h",
    "coordinates": [
      { "lat": 39.7392, "lon": -104.9903, "name": "Denver, CO" }
    ],
    "variables": [
      { "name": "DSWRF", "level": "surface", "alias": "ghi_wm2" },
      { "name": "TMP", "level": "2 m above ground", "alias": "temp_k" }
    ],
    "expressions": [
      { "expression": "temp_k - 273.15", "alias": "temp_c" },
      { "expression": "ghi_wm2 * 1.0800", "alias": "poa_wm2" },
      { "expression": "temp_c + (poa_wm2 / 800.0) * 25.0000", "alias": "cell_temp_c" },
      { "expression": "func.Max(0.0, 1 + (-0.3500 / 100.0) * (cell_temp_c - 25.0))", "alias": "temperature_factor" },
      { "expression": "func.Max(0.0, 1 - 14.0000 / 100.0)", "alias": "loss_factor" },
      { "expression": "6.0000 * poa_wm2 / 1000.0 * temperature_factor * loss_factor", "alias": "dc_power_kw" },
      { "expression": "6.0000 / 1.2000", "alias": "ac_limit_kw" },
      { "expression": "func.Min(dc_power_kw * 96.0000 / 100.0, ac_limit_kw)", "alias": "ac_power_kw" },
      { "expression": "ac_power_kw", "alias": "hourly_energy_kwh" },
      { "expression": "func.Max(0.0, (6.0000 - ac_power_kw) / 6.0000 * 100.0)", "alias": "unused_capacity_pct" }
    ]
  }'

Warum die Standardwerte sinnvoll sind

Hintergrund und Referenzen: GribStream Expressions · GFS-Modellinventar · HRRR-Modellinventar · NBM-Modellinventar · NOAA GRIB2 shortwave radiation table · PVWatts V8 API · SAM irradiance definitions · Grafana variables.