Skip to content
Matthias Strubel edited this page Feb 27, 2026 · 9 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 12 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

HomeAssistant Solar Forecast ML

The HomeAssistant Solar Forecast ML integration (available via HACS) provides machine learning-based solar forecasts directly from your HomeAssistant instance. This provider requires the HACS integration to be installed first.

Minimum Requirements:

  • batcontrol version: 0.7.0
  • HomeAssistant addon minimum version: V16.2.0

The minimum configuration is:

solar_forecast_provider: homeassistant-solar-forecast-ml
pvinstallations:
  - name: HA Solar ML Forecast
    base_url: ws://homeassistant.local:8123  # Your HomeAssistant URL
    api_token: eyJ...                        # Long-lived access token from HA Profile
    entity_id: sensor.solar_forecast_ml_prognose_nachste_stunde  # Forecast sensor entity

If you're running batcontrol in a HomeAssistant addon, use ws://homeassistant:8123 as the base_url. For standalone installations, use your HomeAssistant IP or hostname.

Optional Parameters

You can customize the behavior with additional parameters:

pvinstallations:
  - name: HA Solar ML Forecast
    base_url: ws://homeassistant:8123
    api_token: eyJ...
    entity_id: sensor.solar_forecast_ml_prognose_nachste_stunde
    sensor_unit: auto  # Options: 'auto' (default, auto-detect), 'Wh', or 'kWh'
    cache_ttl_hours: 24.0  # Cache duration in hours (default: 24.0)

The sensor_unit parameter:

  • auto (default): Automatically detects the unit from the sensor
  • Wh: If you know your sensor reports in Wh
  • kWh: If you know your sensor reports in kWh

Setting the explicit unit (Wh or kWh) can speed up startup by skipping auto-detection.

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