Este dashboard estima generación horaria de paneles solares a partir de radiación de onda corta y temperatura del aire de modelos meteorológicos. Arranca con una configuración residencial típica para que nadie tenga que completar un formulario completo de diseño fotovoltaico: Denver, un conjunto DC de 6 kW, una aproximación de inclinación fija, 14% de pérdidas PV totales, 96% de eficiencia del inversor y una relación DC/AC de 1.2.
El pronóstico usa datos de GFS, HRRR o NBM a través del endpoint estándar de GribStream /api/v2/[dataset]/timeseries. La variable meteorológica principal es DSWRF en superficie, el campo NOAA de flujo descendente de radiación de onda corta, combinado con temperatura del aire a 2 m para una corrección simple por temperatura del panel. El dashboard mantiene el horizonte en 24 o 36 horas para que las filas devueltas sean horarias en los modelos disponibles.
La matemática es intencionalmente liviana. Sirve para comparar patrones de producción impulsados por el clima, evaluar rápidamente una instalación propuesta y explicar cómo GribStream expressions pueden convertir campos de pronóstico en métricas de aplicación. No es un modelo fotovoltaico apto para decisiones financieras y no reemplaza PVWatts, SAM, modelado de sombras del sitio, mediciones de suciedad sobre paneles ni un modelo profesional de irradiancia en el plano del arreglo.
El control de geometría del arreglo es deliberadamente conservador. Un cálculo real de inclinación y azimut necesita posición solar, irradiancia normal directa, irradiancia horizontal difusa, albedo, orientación de módulos, geometría de filas y sombras. Este dashboard solo pide DSWRF y temperatura a 2 m desde GribStream, por lo que expone el supuesto de geometría como un multiplicador explícito en vez de esconder falsa precisión detrás de un campo de inclinación.
El dashboard calcula todos los campos derivados con GribStream expressions. Con los controles predeterminados, las ecuaciones son:
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, porque el dashboard limita la consulta a filas horarias.Las constantes más importantes son:
6.0000 es el tamaño DC predeterminado del conjunto en kW. Es editable por el usuario.1.0800 es el multiplicador predeterminado para la geometría del conjunto: una aproximación de inclinación fija aplicada a DSWRF horizontal. Otros escenarios expuestos usan 1.0000, 0.9300 y 1.1800.800.0 W/m2 y 25.0000 C forman la estimación simple de aumento de temperatura de celda. Son valores internos, no un modelo térmico calibrado al sitio.-0.3500 es el coeficiente interno de temperatura de potencia en porcentaje por C, aplicado respecto a la referencia de 25.0 C.14.0000 es el porcentaje predeterminado de pérdidas totales no meteorológicas. Es seleccionable por el usuario.1.2000 es la relación DC/AC predeterminada, por lo que un conjunto DC de 6 kW tiene un límite AC de 5 kW. Es seleccionable por el usuario.96.0000 es el porcentaje interno de eficiencia del inversor.1000.0 W/m2 normaliza la irradiancia a un nivel de referencia de potencia nominal PV.Estas constantes hacen que el pronóstico sea explicable y fácil de variar, pero no reemplazan una ficha técnica del módulo, albedo medido, mediciones de suciedad sobre paneles, geometría de sombras ni una ejecución completa de PVWatts/SAM.
Este ejemplo usa la configuración predeterminada para Denver con GFS: 6 kW con aproximación de inclinación fija. El dashboard completa los valores numéricos desde variables de Grafana y calcula las estimaciones PV en una sola llamada estándar de 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 es un campo de radiación horizontal.Contexto y referencias: GribStream expressions · GFS model inventory · HRRR model inventory · NBM model inventory · NOAA GRIB2 shortwave radiation table · PVWatts V8 API · SAM irradiance definitions · Grafana variables.