PV Strings - per-string PV forecasting with pvlib, looking for testers

TL;DR — Forecasts each PV string on its own instead of the plant total, with pvlib physics plus a learning layer. Works from day one, no training period. Draws a shading map of your actual sky per string. Optional dashboard installs with zero configuration. Needs one measurement channel per string (MPPT-per-string inverter or micro-inverters). Runs on three plants so far — looking for testers, especially battery-coupled, export-limited, or far from central Europe.

Home Assistant is not short of PV forecasts. Solcast and Forecast.Solar give you a number for the plant and give it well — if that is what you need, use those.

The question here is a different one: not how much arrives today, but which of my strings is losing what, and where. At plant level that has no answer, because the strings are summed before anyone gets to ask.

So PV Strings forecasts each string separately. pvlib turns the irradiance forecast into an expected potential per string, from that string’s own azimuth, tilt and nameplate — so it works on day one, no training period. A learning layer then corrects only what the physics still gets wrong. Over a few weeks it also builds a shading map per string, cell by cell across the sky, from the gap between what a string should have produced and what it did.

It needs one measurement channel per string: an MPPT-per-string inverter, or micro-inverters. Size doesn’t matter — a balcony pair and a 30 kWp roof across three faces both carry detail a plant total hides.

The dashboard is a separate, optional repository — and it is genuinely no work: install it, add the strategy, and you get a full dashboard for however many strings you have, without ever opening a card editor. It draws the one thing Home Assistant cannot draw by itself, which is the sky: a grid over sun position per string, showing where each loses what. On my roof two strings with identical azimuth and tilt read 0.3 % and 67.7 % loss in the same cell.

What I am posting for: it runs on three plants — two in northern Germany, one in Sydney. That is not enough to trust it. The Sydney one already surfaced a timezone bug that broke daypart learning everywhere east of about UTC+7, which no amount of testing in Europe would have found. I expect there are more of those.

So I am looking for people willing to run it on a roof unlike mine and say when the numbers look wrong. Especially: battery-coupled systems, plants under an export limit, anything far from central Europe, more than two orientations. There is a diagnostics download, so a bug report is usually one file and a sentence.

Still in the HACS queue, so for now both install as custom repositories:
HACS → ⋮ → Custom repositories → paste the URL → pick Integration / Dashboard

Integration: GitHub - doccodyblue/ha-pvstrings: Per-string PV forecasting for Home Assistant: pvlib physics plus a learned correction of the residual · GitHub
Dashboard: GitHub - doccodyblue/ha-pvstrings-dash: Cards and a zero-config dashboard strategy for the PV Strings Home Assistant integration · GitHub

Questions and complaints both welcome.

2 Likes