Skip to content

Solar Forecast

Matthias Strubel edited this page Feb 4, 2026 · 11 revisions

The following providers are currently available:

Multiple Installations can be entered, like this:

solar_forecast_provider: fcsolarapi
pvinstallations:
  - name: Haus #name
    lat: 48.4334480
    lon: 8.7654968
    declination: 32 #inclination toward horizon 0..90 0=flat 90=vertical (e.g. wallmounted)
    azimuth: -90 # -90:East, 0:South, 90:West -180..180
    kWp: 15.695 # power in kWp
  - name: Garage  #... further installations
    lat: 48.4334480
    lon: 8.7654968
    declination: 32
    azimuth: 87
    kWp: 6.030

The name must be a unique value.

If a solar forecast provider is not available, batcontrol is running on cached values. It stops working if less then 18 hours of forecast are available. That should be enough to overcome outages.

Forecast.Solar (Default)

Forecast Solar allows a limited amount of free requests with no subscription or account.

The minimum configuration block is are:

  - name: Haus #name
    lat: 48.4334480
    lon: 8.7654968
    declination: 32 #inclination toward horizon 0..90 0=flat 90=vertical (e.g. wallmounted)
    azimuth: -90 # -90:East, 0:South, 90:West -180..180
    kWp: 15.695 # power in kWp

In addtion you can register and use an api key with adding:

  - name: Haus #name
    lat: 48.4334480
    lon: 8.7654968
    declination: 32 #inclination toward horizon 0..90 0=flat 90=vertical (e.g. wallmounted)
    azimuth: -90 # -90:East, 0:South, 90:West -180..180
    kWp: 15.695 # power in kWp
    api: ffff-ffff-fff-ffff

If you have an obstructed horizon, you can add a horizon modifier:

  - name: Haus #name
    lat: 48.4334480
    lon: 8.7654968
    declination: 32 #inclination toward horizon 0..90 0=flat 90=vertical (e.g. wallmounted)
    azimuth: -90 # -90:East, 0:South, 90:West -180..180
    kWp: 15.695 # power in kWp
    horizon: 30,30,30,0,0,0  # leave empty for default PVGIS horizon, only modify if solar array is shaded by trees or houses

Solarprognose.de

Solarprognose offers a free tier for installations below 10KW. Currently, larger tiers are available for free, but this may change. The provider is asking for donations. You need to register on their website and enter you installation. With using the provided API key, you can run batcontrol with following configuration:

solar_forecast_provider: solarprognose
pvinstallations:
  - name: Haus #name
    apikey: 44k4j5j5j5j5j6j6j6j6j6j6j6j6j6j6j6j6

This configuration delivers the forecast for the first defined location. The API provider asks to add project: <your@email.com> as an additional parameter, that he can contact a person in case of issues.

In addition you can change the algorithm using:

pvinstallations:
  - name: Haus #name
    apikey: 44k4j5j5j5j5j6j6j6j6j6j6j6j6j6j6j6j6
    algorithm: own-v1 # (Default is 'mosmix')

If you run multiple installations with you account or want to split up forecasts for reasons, you can use the ITEM and ID syntax.

  • item: <location|inverter|module_field>
  • token:

For further details see: [API description|(https://www.solarprognose.de/web/de/solarprediction/page/api)

Local evcc instance

evcc is able to collect its own PV forecast, which can be obtained via REST API. batcontrol can make use of that.

solar_forecast_provider: evcc-solar
pvinstallations:
  - name: Haus #name
    url: http://evcc.local:7070/api/tariff/solar

If evcc is running under HomeAssistant, you should you either http://homeassistant:7070/api/tariff/grid or http://<homeassistant-ip>:7070/api/tariff/grid

Adjusting Production Forecasts

production_offset_percent

If your actual solar production systematically differs from the forecast (e.g., winter snow coverage, panel degradation, or consistently higher performance), you can adjust the entire forecast using the production_offset_percent parameter in the battery_control_expert section:

battery_control_expert:
  production_offset_percent: 0.8  # Use 80% of the forecast (20% reduction)

This multiplier is applied to all forecasted values:

  • 1.0 = no adjustment (default)
  • 0.8 = 80% of forecast (useful for winter/snow conditions)
  • 1.1 = 110% of forecast (for systems that consistently outperform)

For detailed information, see Battery Control Expert - production_offset_percent.

Clone this wiki locally