Ce tableau de bord estime la production horaire de panneaux solaires à partir du rayonnement à ondes courtes et de la température de l'air fournis par les modèles météorologiques. Il démarre avec une configuration résidentielle typique pour éviter un formulaire complet de conception photovoltaïque : Denver, une installation PV de 6 kW DC, une approximation à inclinaison fixe, 14% de pertes PV totales, 96% de rendement de l'onduleur et un rapport DC/AC de 1.2.
La prévision utilise GFS, HRRR ou NBM via /api/v2/[dataset]/timeseries. L'entrée météorologique principale est DSWRF en surface, le champ de rayonnement descendant à ondes courtes de la NOAA, combiné à la température à 2 m pour une correction simple liée à la température des panneaux. L'horizon reste limité à 24 ou 36 heures afin que les lignes retournées restent horaires.
Le calcul est volontairement léger. Il aide à comparer des profils de production pilotés par les conditions météorologiques, à évaluer rapidement une installation proposée et à montrer comment les expressions GribStream transforment des champs de prévision en métriques utilisables par une application. Ce n'est pas un modèle photovoltaïque suffisant pour une décision financière et cela ne remplace pas PVWatts, SAM, la modélisation de l'ombrage du site, les mesures d'encrassement des panneaux ni un modèle professionnel d'irradiance dans le plan des modules.
Le contrôle de géométrie des modules est volontairement conservateur. Un vrai calcul d'inclinaison et d'azimut nécessite position solaire, irradiance normale directe, irradiance horizontale diffuse, albédo, orientation des modules, géométrie des rangées et ombrage. Ici, le tableau de bord ne demande que DSWRF et la température à 2 m depuis GribStream ; la géométrie est donc exposée comme un multiplicateur explicite au lieu de cacher une fausse précision derrière un champ d'inclinaison.
Le tableau de bord calcule tous les champs dérivés avec GribStream expressions. Avec les contrôles par défaut, les équations sont :
temp_c = temp_k - 273.15poa_wm2 = ghi_wm2 * 1.0800cell_temp_c = temp_c + (poa_wm2 / 800.0) * 25.0000temperature_factor = max(0, 1 + (-0.3500 / 100) * (cell_temp_c - 25.0))loss_factor = max(0, 1 - 14.0000 / 100)dc_power_kw = 6.0000 * poa_wm2 / 1000.0 * temperature_factor * loss_factorac_limit_kw = 6.0000 / 1.2000ac_power_kw = min(dc_power_kw * 96.0000 / 100, ac_limit_kw)hourly_energy_kwh = ac_power_kw, car le tableau de bord limite la requête à des lignes horaires.Les constantes les plus importantes sont :
6.0000 est la puissance DC par défaut de l'installation en kW, modifiable par l'utilisateur.1.0800 est le multiplicateur par défaut de la géométrie des modules : une approximation à inclinaison fixe appliquée au DSWRF horizontal. Les autres scénarios utilisent 1.0000, 0.9300 et 1.1800.800.0 W/m2 et 25.0000 °C forment l'estimation simple d'augmentation de température de cellule. Ce sont des valeurs internes, pas un modèle thermique calibré au site.-0.3500 est le coefficient interne de température de puissance en pourcentage par °C.14.0000 est le pourcentage par défaut de pertes non météorologiques.1.2000 est le rapport DC/AC par défaut ; une installation DC de 6 kW a donc une limite AC de 5 kW.96.0000 est le rendement interne de l'onduleur.1000.0 W/m2 normalise l'irradiance sur une référence de puissance nominale PV.Ces constantes rendent la prévision explicable et facile à modifier, mais ne remplacent pas une fiche technique de module, un albédo mesuré, des mesures d'encrassement, une géométrie d'ombrage ou une simulation complète PVWatts/SAM.
Cet exemple utilise la configuration par défaut pour Denver avec GFS : 6 kW avec approximation à inclinaison fixe. Le tableau de bord remplit les valeurs numériques depuis les variables Grafana et calcule les estimations PV dans un seul appel GribStream /timeseries.
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" }
]
}'
DSWRF est un champ de rayonnement horizontal.Contexte et références : expressions GribStream · inventaire GFS · inventaire HRRR · inventaire NBM · table NOAA GRIB2 du rayonnement à ondes courtes · API PVWatts V8 · définitions d'irradiance SAM · variables Grafana.