Skip to content

Forecast GET

The Forecast API endpoint provides near-term, high-resolution 15-minute time-series data spanning +7 days and #30 days from the current day for photovoltaic (PV) systems based on their site's location and installation characteristics. This endpoint supports GET requests that require latitude, longitude, as well as the slope and orientation of the PV system.

INFO

For users on the free plan, forecast data is limited to +1 day (includes today and tomorrow) and no days in the past

Base URL

The Base URL for this endpoint is:

https://api.pvnode.com/v1/forecast/

Example Request

The following examples demonstrate how to pass the required parameters and include the API key for authentication. The example uses a slope of 30 degrees, an orientation of 180 degrees (south-facing), and the location is set to Rosenheim, Germany with coordinates latitude: 47.84812, longitude: 12.06231.

python
import requests

url = 'https://api.pvnode.com/v1/forecast/'
body = {
    "latitude": 47.84812,
    "longitude": 12.06231,
    "slope": 30,
    "orientation": 180
}
headers = {
    'Authorization': 'Bearer ' + YOUR_API_KEY
}
response = requests.get(url, headers=headers, params=body)
data = response.json()
Rate-Limits

The Rate-Limits for this endpoint are 10 requests per second. If more requests are sent, a 429 response is returned.

Required parameters

ParameterTypeDescription
latitudefloatLatitude of the site's location.
longitudefloatLongitude of the site's location.
slopefloatSlope of the PV array in degrees, ranging from 0 to 90.
orientationfloatOrientation of the PV array in degrees from north. 180 is south, and 270 is west.

Optional parameters

query parametertypedescription
pv_onlybooleanIndicates if the calculations should only consider photovoltaic output, excluding auxiliary systems like air conditioning and heat pumps. Default: True.
forecast_daysintNumber of forecast days considered for generating forecasts. Default: 7 days.
past_daysintNumber of past days considered for generating forecasts. Default: 10 days.
required_datastringRequired data columns formatted as a comma-separated list, specifying the types of data and metrics needed for analysis. All Data Columns
pv_power_kwfloatStandard test condition (STC) power in kWp of the first PV array. Must be specified if second_array_power_kw > 0. Default is 0.
pv_technology_typestringPV model used for spectral mismatch calculations. Options include monosi, multisi, cdte, perc and topcon. Default: perc.
temperature_coefficient_powerfloatTemperature coefficient (%/K) of PV module efficiency. Default is -0.42.
diffuse_radiation_modelstringModel used for diffuse radiation calculations. Options include perez and haydavies. Default: haydavies.
panel_age_yearsfloatAge of the PV modules in years. Assumes a degradation of 0.5% per year. Default is 1.
elevationfloatHeight above sea level in meters. Default is -999, which uses elevation from high-resolution terrain data.
installation_heightfloatInstallation height of the PV array. Default is 0.
mounting_typestringMounting type of the PV array: open (open mounting), isol (isolated back, close rooftop installation), or mix. Default is open.
ground_albedofloatGround albedo, ranging from 0 to 1. Default is 0.2.
ground_coverage_ratiofloatGround coverage ratio for row shading, typically ranges from 0 to 1. Default is 0 (no row shading). GCR calculator
tracker_system_typeintTracker system configuration: 0 (no tracking), 1 (one-axis tracker), or 2 (two-axis tracker). Default is 0. Only applies on the first string.
single_axis_tracker_configstringConfiguration details for a one-axis tracker. Detailed description.
inverter_clip_max_threshold_percentfloatPercentage limit for AC output as a percentage of the nominal power (of the PV array). Default: 120.
inverter_clip_min_threshold_percentfloatMinimum AC output as a percentage of the nominal power (of the PV array). Default: 0.1.
sky_obstruction_configstringConfiguration that covers the sky dome obstructions (like mountains). Detailed description.
terrain_based_horizon_coverageboolIf activated, the horizon cover is obtained from our high precision terrain data. Default is false.
shading_configstringShading configuration for the first PV array. Default is '', indicating no shading considered. Detailed description.
snow_slide_coefficientfloatCoefficient used for snow calculations on PV arrays. Recommended to use 0.1-0.3 for rooftop installations and 0.3 - 0.6 for open mounting. Default: 0.14.
second_array_slopefloatSlope of the second PV array in degrees, ranging from 0 to 90. Must be specified if second_array_power_kw > 0.
second_array_orientationfloatOrientation of the second PV array in degrees from north. 180 is south, 270 is west. Must be specified if second_array_power_kw > 0.
second_array_ground_coverage_ratiofloatGround coverage ratio for the second PV array. Default is 0. GCR calculator
second_array_shading_configstringShading configuration for the second PV array. Default is '', indicating no shading considered. Detailed description.
second_array_power_kwfloatSTC power in kWp of the second PV array. Requires pv_power_kw > 0.
cable_loss_ratefloatPercentage loss expected due to cable resistance, impacting overall system efficiency. Default: 0.015 (1.5%).
conversion_loss_ratefloatDirect current to alternating current conversion loss rate, affecting the efficiency of power output from storage or solar panels. Default: 0.025 (2.5%).
yearly_energy_consumptionfloatYearly electrical energy consumption excluding the heat pump, measured in MWh/year. Default: 4.0 MWh.
yearly_heat_pump_consumptionfloatYearly electrical energy consumption for the heat pump, measured in MWh/year. Default: 5.0 MWh.
battery_capacityfloatTotal capacity of the power storage system, measured in kWh. Default: 10 kWh.
air_cool_configstringConfiguration string for optional air conditioning systems, left empty by default (''). Detailed description.
air_cool_temperature_thresholdfloatTemperature threshold (mean daily temperature) for activating air conditioning, measured in degrees Celsius. Default: 21.0°C.
air_cool_peak_powerfloatPeak power consumption of the air conditioning system, measured in kW. Default: 1.0 kW.
charge_power_ratiofloatMaximum charge power relative to the battery capacity; for example, 0.5 corresponds to 50% of the battery's capacity being usable for charging. Default: 0.5.
discharge_power_ratiofloatMaximum discharge power relative to the battery capacity, indicating how much power can be drawn at one time. Default: 0.5.
battery_efficiencyfloatEfficiency of the power storage system, accounting for losses due to self-discharge and DC to AC conversion; 0.94 means 94% efficiency, with a 6% loss.
demand_profilestringSpecifies the yearly load profile for electrical demand (excluding the heat pump), which defines how energy consumption is distributed over time. Default: h0_dyn.
timezonestringTime zone setting for all timestamped data entries. Default: 'UTC'.

Additional Notes

Ground Coverage Ratio for intra row shading

The Ground Coverage Ratio (GCR) quantifies the density of solar panels within a given area and is calculated using the formula:

GCR=LR

where:

  • L represents the length of the solar panel array.
  • R is the distance between consecutive rows of panels.

GCR Calculator

Please use our GCR calculator to calculate the GCR for your site.

Enter the length of the PV array (L):

Enter the row distance (R):

The Ground Coverage Ratio (GCR) is: 0.00

GCR visualized

The GCR helps in understanding how tightly panels are packed on the installation site, influencing potential shading and energy production efficiency.

/gcr.png

Tracker configuration of the PV Array

The tracker1config parameter specifies the configuration of a one-axis solar tracker using four values separated by colons :.

  • Axis Azimuth (degrees): Specifies the compass direction of the tracker's axis of rotation, ranging from 0 to 360 degrees. A value of 180 indicates south, with increasing angles moving towards the west.
  • Axis Tilt (degrees): Defines the tilt of the tracker’s axis relative to the horizontal plane, ranging from 0 to 90 degrees.
  • Maximum Rotation Angle (degrees): Sets the limits of the tracker's rotation, from 0 to 90 degrees. Negative angles equal in magnitude are implicitly included, allowing movement in the opposite direction.
  • Backward Tracking (boolean): The T (true) or F (false) value indicates whether the tracker employs backward tracking to prevent row shading during mornings and evenings.
python
single_axis_tracker_config = "180:0:90:T"

This configuration describes a one-axis tracker with:

  • Axis oriented south (180 degrees).
  • No tilt (0 degrees).
  • Capable of rotating from -90 to +90 degrees.
  • Backward tracking enabled.

Sky Obstruction Configuration

  • sky_obstruction_config: This parameter configures obstructions that block parts of the sky dome, such as buildings, trees, or mountains. Configurations are represented by strings of three integers separated by colons :, with up to 10 such strings concatenated using underscores _.
  • Each string specifies:
    • Start Azimuth Angle: The beginning angle in degrees from north where the obstruction starts.
    • End Azimuth Angle: The angle in degrees from north where the obstruction ends.
    • Elevation Angle: The maximum angle in degrees above the horizon that the obstruction covers.

Example Configurations:

  • sky_obstruction_config = 0:90:20 describes an obstruction covering the north to east segment of the sky from 0° to 20° elevation.
  • sky_obstruction_config = 0:90:20_180:270:30 extends the coverage to include both the north-eastern segment from 0° to 20° elevation and a south-western segment from 0° to 30° elevation.

Shading Configuration

  • shading_config: This parameter defines the shading on the PV array throughout different times of the day and seasons, using strings of four integers separated by colons :.

  • Each integer represents shading as a percentage (multiplied by 10) for each season—winter, spring, summer, and autumn.

  • Strings are concatenated using underscores _ to represent different times of the day:

    • Morning (6 AM - 10 AM): Defined by the first set of numbers, e.g., 7:2:3:1 indicates 70% shading in winter, 20% in spring, 30% in summer, and 10% in autumn.
    • Midday (11 AM - 2 PM): Defined by the second set of numbers, e.g., 1:1:0:0 indicates 10% shading throughout winter and spring, with no shading during summer and autumn.
    • Afternoon/Evening (3 PM - 8 PM): Defined by the third set of numbers, e.g., 0:0:0:0 would mean that no shading occurs between 3 PM and 8 PM in any season.

Example Configuration:

  • shading_config = 7:2:3:1_1:1:0:0_0:0:0:0 indicates varying levels of shading across different times and seasons:
    • Strong morning shading in winter (70%), decreasing to no shading by the evening.
    • Consistent mild shading at midday in winter and spring (10%), with none in the hotter months.

Available Data Columns

The following table displays all available data columns in the dataset. Each value in the time series represents the average value over a 15-minute interval:

datadescriptionunit
GHIGlobal Horizontal Irradiation measured on horizontal planeW/m²
BNIBeam Normal IrradiationW/m²
DHIDiffuse Horizontal IrradiationW/m²
GTIGlobal Tilted Irradiation on a PV panel in the plane (unshaded)W/m²
GTI_shadedGlobal Tilted Irradiation on a PV panel in the plane (after all shading calculations)W/m²
tempTemperature measured 2 meters above ground°C
RHRelative Humidity%
precipTotal precipitationmm
vwindwind speed measured 10 meters above groundm/s
weather_codeWeather Code, see table above-
snow_heightSnow Height on ground as water equivalentmm
spec_wattsGenerated Specific Watts of the PV-array/sW/kWp
pv_wattsGenerated Watts of the PV-array/sW
battery_stateCharge state of the batteryWh
external_energyExternal Energy used to satisfy total electric loadWh
feed_inExcess Energy which is fed in gridWh
battery_chargeEnergy used for charging the batteryWh
total_elec_demTotal electric demandW
load_jvElectric demand specified by demand profileW
load_hpElectric demand used by heat pumpW
air_cond_loadElectric demand used by air conditioningW

Weather Codes

Interpretation of weather codes:

codedescription
0clearsky
1,2,3mainly clear, partly cloudy, overcast
45,48fog and depositing rime fog
51,53,55drizzle: light, moderte, dense intensity
56,57freezing drizzle: light and intense density
61,63,65rain: slight, moderate, heavy intensity
66,67freezing rain: light and heavy intensity
71,73,75snow fall: slight, moderate, heavy intensity
77snow grains
80,81,82rain showers: slight, moderate, violent
85,86snow showers: slight and heavy
95thunderstorm
96,99thunderstorm with slight and heavy hail

Air Conditioner Configuration

The air_cond_config parameter configures the operational schedule of an air conditioning system using a 12-digit binary string. Each digit represents a 2-hour block within a 24-hour day, where '1' indicates the air conditioner is turned on and '0' signifies it is off.

For example:

  • air_cool_config = 000110001100

This configuration means the air conditioning is active from 6 a.m. to 10 a.m. and from 4 p.m. to 8 p.m.

The operational efficiency of the air conditioning is modeled as a step function starting at 50% of the peak power at the temperature threshold set by air_cool_temperature_threshold. It then linearly increases to 100% peak power as the mean outside temperature rises to air_cool_temperature_threshold + 8 K.

Demand Profile

The demand_profile parameter defines the electric load profile based on typical consumption patterns, normalized to a demand of 1 MWh per year. This demand is then scaled by the yearly electrical energy consumption parameter yearly_energy_consumption.

ProfileDescription
g0General trade/business/commerce (weighted average of profiles g1-g6)
g1Business, typical office hours from 8 a.m. to 6 p.m. on weekdays
g2Businesses with heavy consumption primarily in the evening
g3Continuous operations, e.g., cold stores, pumps, sewage treatment plants
g4Shops or services like barber shops with day-time operating hours
g5Bakeries, typically early morning to afternoon
g6Weekend operations, e.g., cinemas
g7Mobile phone transmitter stations with continuous load
l0General farms (weighted average of profiles l1 and l2)
l1Farms with dairy operations
l2Other types of farms
h0Typical household load
h0_dynHousehold with a dynamic consumption profile varying across seasons