How accurate is Forecast.Solar?

Dear community,

We finally had our solar panels installed yesterday, and integrating the Fronius inverter into Home Assistant was very straightforward. :+1:

Our panels are oriented in three directions:

  • South-facing, 40° tilt, 10x400W
  • South-facing, 7° tilt, 2x400W
  • North-facing, 40° tilt, 8x400W

All connected to a single inverter with a maximum output of 8 kW.

I was able to add the Forecast.Solar integration three times (once per panel orientation), but the forecast does not seem to match the actual production. The forecast was too low yesterday and again today, especially around midday.
(Today’s weather was very changeable, and I’m not sure which weather data source Forecast.Solar relies on.)

What are your experiences with Forecast.Solar? Are such deviations in the curve to be expected?

I’m planning to create an automation to power our heat pump boiler whenever our surplus power exceeds 500 W.
Is Forecast.Solar accurate enough to be used for this purpose?

Thanks,
Chris

Forecast Solar is reasonably accurate for me, but it can happen weather forecasts are off a bit. So on occasion I might see somewhat similar things.

But I see you have panels of three different orientations on one single inverter? If these panels are serially in the same string and not using some micro-inverter like technology, then the total production of the installation is limited by the worst performing panel. Forecast Solar might not be geared to predict that reliably.

Hi @Edwin_D,
Thank you for your reply. There are two strings coming down from the roof and yes, there are some little boxes under the panels. (I did not yet get the detailed specification from our installation partner.)

Do you rely in your automations on the hourly forecast of the integration?

In that case it is likely some microinverter like technology that allows for panels with different yields. I think it is an hourly forecast, looking at the graph.

Not Sure about Forecast.Solar but Solcast is okay.

This data shows the daily energy forecast prediction taken just before sunrise and the end of day total actual energy produced:

The shaded area is their 10/90 probability which is quite wide at the beginning of the day but gets better as the day progresses. It gets narrower for days with more reliably predicted cloud cover.

The half hour ahead power prediction is usually quite good:

Solcast’s biggest problem is that the demand on their servers has exploded and their API often requires a repeated query (which makes things even worse).

I recently moved to Solcast, FCS was too often too far off. It may depend on your location though which one is better (less off)

Hi everyone,

thank you for your inputs.
If there is a sunny day - as it was today - forecast is very okay. Based on this, I could create an automation, which starts the heat pump water heater.

If weather conditions are a bit tricky - lots of clouds with some light rain showers and lots of wind - the forecast is not useable for automations, as it is too far off.

Thats why I have changed strategy and I have come up with an automation, which takes into account the following:

  • 20min average sensor of grid import - grid export
  • OpenWeatherMap Weather code
  • Energy tarifs (The grid charges higher prices during the day on workdays and lower prices at night and weekend)

First two days of testing just worked fine.

Automation (yaml)
alias: Boiler PV Strom Switch
description: Schaltet den Boiler ein, wenn genug PV-Überschuss vorhanden ist.
triggers:
  - trigger: state
    entity_id:
      - sensor.winterthur_weather_code
      - select.solarnet_energy_grid_import_heute
  - trigger: state
    entity_id:
      - sensor.solarnet_power_grid_average
conditions: []
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.winterthur_weather_code
            below: 800
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.boiler_pv_switch
          - delay:
              hours: 1
              minutes: 0
              seconds: 0
              milliseconds: 0
      - conditions:
          - condition: and
            conditions:
              - condition: state
                entity_id: select.solarnet_energy_grid_import_heute
                state: Hochtarif
                for:
                  hours: 0
                  minutes: 0
                  seconds: 0
              - condition: time
                before: "11:30:00"
                after: "12:00:00"
              - condition: template
                value_template: >-
                  {{ states('sensor.solarnet_power_grid_average') | float < -600
                  }}
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.boiler_pv_switch
          - delay:
              hours: 1
              minutes: 0
              seconds: 0
              milliseconds: 0
      - conditions:
          - condition: and
            conditions:
              - condition: state
                entity_id: select.solarnet_energy_grid_import_heute
                state: Hochtarif
                for:
                  hours: 0
                  minutes: 0
                  seconds: 0
              - condition: template
                value_template: >-
                  {{ states('sensor.solarnet_power_grid_average') | float <
                  -2000 }}
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.boiler_pv_switch
          - delay:
              hours: 1
              minutes: 0
              seconds: 0
              milliseconds: 0
      - conditions:
          - condition: and
            conditions:
              - condition: state
                entity_id: select.solarnet_energy_grid_import_heute
                state: Niedertarif
              - condition: template
                value_template: >-
                  {{ states('sensor.solarnet_power_grid_average') | float < -300
                  }}
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.boiler_pv_switch
          - delay:
              hours: 1
              minutes: 0
              seconds: 0
              milliseconds: 0
    default:
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.boiler_pv_switch
      - delay:
          hours: 0
          minutes: 30
          seconds: 0
          milliseconds: 0
mode: single

Yeah Forecast Solar is way off for me:

The same settings produce this in Solcast:

Still not great, but better.

1 Like