Solar
Operations
One hundred and thirty-eight commercial solar sites, each with a different inverter vendor. Every site is judged each day against modelled expected energy and an independent satellite twin, and every fault ends in a work order.
- 138
- solar sites
- 38.22 MW
- installed
- 981
- days fitted, satellite twin
- 8
- analytic views
Did each site produce what the sun delivered?
Expected energy is modelled from measured sunlight, checked per inverter, and cross-checked against an independent satellite twin.
Live output against expected
- Problem
- Each inverter brand has its own portal, so a dead inverter could go unnoticed for days.
- What I built
- Every site on one board with today's power against its expected curve, and one tile per inverter coloured by health.
- Method
- Live power against a modelled expected curve, inverter health bands
Performance ratio over time
- Problem
- A monthly PR figure hid the week a site started to slip.
- What I built
- Daily PR with alarms and inverter outages on the same axis, plus a plain-language readout of what the data says.
- Method
- Temperature-corrected PR, satellite fallback on sensor failure, glitch-day exclusion, 7-day outlook
Yield against expected
- Problem
- Owners only saw kWh produced. A cloudy day and a broken plant looked the same.
- What I built
- Each day's yield against its expected value, with the shortfall in percent on every bar.
- Method
- Expected energy modelled from measured irradiance and plant capacity, daily variance
Expected, per inverter
- Problem
- A site-level total hides one weak inverter among nine healthy ones.
- What I built
- Actual against expected for every inverter over today, 7 days or the month.
- Method
- Per-inverter model using each unit's own kWac and kWp, with clipping
Sunlight against power
- Problem
- Soiling, shading and inverter clipping all hide inside a daily total.
- What I built
- Every sample plotted as sunlight against power. A healthy plant hugs the curve; faults fall below it.
- Method
- Irradiance-power scatter on 15-minute samples, normalised PR
Satellite twin
- Problem
- If a site's own sunlight sensor is dirty or dead, its expected value is wrong as well.
- What I built
- A second opinion built from satellite data alone: satellite-expected against actual energy, with a flag when the gap widens.
- Method
- Independent model from satellite irradiance, fitted over 981 days, 7-day rolling gap
Fleet health at a glance
- Problem
- With 138 sites, nobody knew which ones needed attention today.
- What I built
- Fleet KPIs, a ranked queue of sites that need action, and one tile per site coloured by yesterday's A/E.
- Method
- Actual over expected (A/E) per site, ranked attention queue
Energy lost to downtime
- Problem
- Energy lost to outages was never measured, so it was never priced.
- What I built
- Every shutdown logged with its estimated kWh lost, ranked by site for the month.
- Method
- Lost energy estimated per event, ranked by site
Where the data comes from
The analytics work because every reading, outage and job is captured in one place.