Solcast Solar Enhanced โ€” built-in history, automatic PV tuning & adaptive shading dampening (companion to ha-solcast-solar)

Hi all :waving_hand:

I've been running BJReplay's excellent ha-solcast-solar integration for a while, and wanted three things on top of it: somewhere to keep my own actual-vs-forecast history, a way to work out my real panel tilt/azimuth from that history, and shading correction that tunes itself instead of me hand-editing dampening factors. So I built a companion integration that does exactly that โ€” and figured others might find it useful.

Solcast Solar Enhanced is an add-on, not a replacement โ€” it sits alongside the base Solcast integration and reads its forecast data (zero extra Solcast API calls). All credit to BJReplay for the foundation this builds on. :folded_hands:

What it does

:file_cabinet: Built-in historical storage โ€” a zero-config SQLite database (stdlib sqlite3, lives in your HA config dir). It quietly records actual generation vs forecast every half-hour, so you finally have the history the smart features need.

:triangular_ruler: Automatic rooftop PV tuning โ€” fits your real tilt and azimuth from clear-sky history using a numpy grid search. In my case it converged to within ~1ยฐ of my actual orientation.

:sun_behind_large_cloud: Adaptive shading dampening โ€” computes per-hour dampening purely from your measured actual/forecast ratio and pushes it back to the base integration. It starts as a no-op and ramps toward the measured correction as confidence builds, so it never does anything silly with thin data.

Plus:

  • :house: Multi-site โ€” multiple arrays on one property, auto-discovered, with DC-ratio apportionment for string inverters (e.g. Fronius) that share one AC output.

  • :sun: Curtailment-aware dampening โ€” if you have an export limit, curtailed clear-sky days no longer get misread as "shading" (it clips the forecast to what was achievable).

  • :battery: Battery-aware, energy-counter or power-sensor inputs, optional history retention, OpenWeatherMap cloud cover for clear-sky filtering, and 11 languages.

Raspberry Pi friendly :strawberry:

No scipy (it has no Pi wheel and breaks under HA โ€” see ha-solcast-solar #85), so the optimiser is a pure numpy grid search. numpy already ships with HA, storage is stdlib sqlite3 โ€” so there's nothing extra to install.

Requirements

  • Home Assistant 2026.5.4+

  • The base ha-solcast-solar integration (hard dependency)

  • A free OpenWeatherMap API key (for the clear-sky cloud filter that tuning & dampening rely on)

  • A generation sensor (ideally a cumulative energy counter)

Install

Via HACS โ†’ Custom repositories โ†’ add https://github.com/JimboHamez/ha_solcast_solar_enhanced (category: Integration) โ†’ install โ†’ restart โ†’ add the integration and follow the setup wizard.

A peek at what's coming :microscope:

I'm working on hardware-based curtailment detection using per-MPPT DC telemetry โ€” when an inverter curtails, string voltage climbs toward open-circuit while current collapses, which is a direct fingerprint of being held back (independent of the forecast or export limit). The current release captures that data (opt-in) so the detector has real history to learn from; the detection itself is the next milestone.

Repo & feedback

:backhand_index_pointing_right: GitHub - JimboHamez/ha_solcast_solar_enhanced: Adds solar dampening enhancements to @BJReplay/ha-solcast-solar ยท GitHub

This scratches my own itch (a multi-array Fronius setup with an export limit here in Melbourne), but I'd love feedback, bug reports, and to hear how it behaves on other hardware/inverters. Issues and PRs welcome.

Cheers!

2 Likes

:wrench: Question about multi-site support

Hi,

your integration sounds very interesting and exactly like what I am looking for.

My setup

I currently have two separate Solcast sites:

  • Fronius Gen24 โ†’ 2 MPPT / strings
  • Fronius Symo โ†’ 1 MPPT / string

Both sites are configured independently in Solcast and have:

  • different azimuth
  • different tilt (elevation)

My question

Is your integration able to handle multiple independent Solcast sites, or is it limited to a single system / aggregated coordinator?

Specifically, is the following supported:

  • separate dampening per Solcast site
  • separate statistics sensors per site
  • multiple independent config entries

Observation during setup

I already installed the integration and tried to configure it.

However, I could only find one set of parameters for:

  • azimuth
  • tilt

So it looks like the integration assumes one system only.


Clarification

Can your integration work with my setup as-is,
or would both sites need to be combined into a single system?


Thanks!

Hey Mate,

This is still very much is development for multi sites. If you are using one API key with the base Solcast Solar component then yes my integration should work seamlessly. Please download the current beta version as it has a lot of improvements built in. If you are using 2 or more Solcast API keys across different accounts, I might lean on you for some extra data to see how your site is setup. Cheers

Hey all :waving_hand:

Quick update on Solcast Solar Enhanced, the companion to BJReplay's ha-solcast-solar that adds its own history database, auto panel-tuning, and self-adjusting shading dampening. The latest beta (1.10.0) is mostly about making things much nicer if you've got more than one array โ€” plus some quiet smarts that make the shading correction more accurate for everyone.

As always: it's an add-on, not a replacement. It sits next to the base Solcast integration, reads its forecast data, and makes zero extra Solcast API calls. All credit to BJReplay for the foundation. :folded_hands:

:sparkles: What's new

:house: Each array gets its own device & card. If you run multiple arrays (say a ground mount + a roof, or a string inverter feeding one meter), each one now shows up as its own tidy Home Assistant device instead of everything piling onto one giant card. Each array carries:

  • a PV Power sensor (that array's own generation),

  • a Shading sensor (how much that array is being held back), and

  • a Tuned Tilt sensor (the real tilt it worked out from your history).

So you can finally see "ground array vs roof array" at a glance, and even give each one a friendly name.

:sun_behind_large_cloud: Smarter shading correction. The dampening that learns your shading now picks its "clear sky" reference days using measured sunlight (via free, keyless Open-Meteo) instead of cloud-cover guesses. Cloud-cover readings tend to cry "overcast!" on perfectly clear days, which was throwing off exactly the days the correction needs most. This makes the learned correction noticeably more accurate โ€” especially on partly-cloudy days.

:bar_chart: New "PV Forecast Confidence" sensor. A simple 0โ€“100 score (high / medium / low) for how well your panels are actually tracking the forecast right now. High = the next few hours look trustworthy, so it's a good time to run the EV charger, pool pump, or hot water. Low = local conditions are drifting from the forecast, so maybe hold off. It's a decision aid, not a forecast โ€” and it's never pushed back to Solcast.

:shuffle_tracks_button: Multi-array dampening that actually engages. Previously per-array shading correction was wired up but often starved of per-array forecast data. It now works properly โ€” including across arrays that face different directions.

:strawberry: Still Raspberry Pi friendly

No scipy, nothing extra to install. The tuning is a pure numpy grid search (numpy already ships with HA), and the history database is plain stdlib SQLite. Just install and go.

:folded_hands: Give it a go โ€” feedback very welcome

This is currently a beta, and I'd love more eyes on it โ€” especially from people with different inverters and multi-array layouts than mine (I'm on a multi-array Fronius setup with an export limit here in Melbourne). If you try it, I'd genuinely love to hear how the per-array devices and the new dampening behave on your hardware.

:package: Installing the beta via HACS

Because this is a pre-release, there's one extra tick-box compared to a normal HACS install โ€” you have to tell HACS to show beta versions.

If you don't have it yet (add the repo first):

  1. In Home Assistant, go to HACS.

  2. Click the โ‹ฎ menu (top-right) โ†’ Custom repositories.

  3. Paste https://github.com/JimboHamez/ha_solcast_solar_enhanced, set Category: Integration, and click Add.

  4. Search for Solcast Solar Enhanced and open it.

Then grab the beta:

  1. Click Download (or the โ‹ฎ โ†’ Redownload if it's already installed).

  2. In the version dialog, turn on "Show beta versions" โ€” this is the important bit, or you'll only see stable releases.

  3. Pick the latest 1.10.0bX version from the dropdown and download it.

  4. Restart Home Assistant.

  5. Go to Settings โ†’ Devices & Services โ†’ Add Integration, search for Solcast Solar Enhanced, and follow the setup wizard.

:light_bulb: Already running it? Same idea โ€” just Redownload, flip on Show beta versions, pick the 1.10.0 beta, and restart. Your config and history database carry over.

Needs the base ha-solcast-solar integration and a generation sensor (a cumulative energy counter is ideal). Issues and PRs welcome โ€” cheers! :clinking_beer_mugs: