solar by numbers

7 June 2026

First tune-up: three small fixes from a config review

Predbat’s been watching the house for three days now. Planning every half-hour slot but not yet allowed to touch anything. Before handing it the keys, we did a full review of the config. Every entity reference, every automation, every tuning knob, checked against what’s actually running on the box rather than what we think we set up. It found three things worth fixing.

Fix 1: a race condition in the bridge automations

Two of the three automations that translate Predbat’s wishes into Sigenergy register writes ran in mode: single. That means if a second trigger arrives while the automation is still mid-flight, the second one is silently dropped, and the inverter is left holding a stale charge or discharge limit until the next write comes along. The window’s tiny, but Agile charging is exactly the kind of thing that fires rapid back-to-back updates.

mode: restart is the right semantics for “always mirror the latest value”: a new trigger cancels the in-flight run and starts over with fresh state. One word changed, one failure mode gone. The configs page copy is updated too, so if you cribbed our bridge automations, take the new version.

Fix 2: a safety buffer on the battery floor

best_soc_keep was 0, meaning Predbat was free to plan the battery right down to the 4% hardware reserve with zero margin for error. That’s fine when the forecast is perfect. When Solcast is optimistic by a couple of kWh, and it will be, the difference arrives as peak-rate Agile import at 35p+.

This matters more for us than for most Predbat users because we still earn nothing for export. There’s no export income to offset a miss. Every kWh short at the evening peak is charged at full price. We set the buffer to 0.5 kWh. It costs pennies of extra cheap-slot charging and takes the worst case off the table.

Fix 3: stop pretending the inverter is faster than it is

A leftover scaling factor (battery_rate_max_scaling_discharge: 1.05) was telling Predbat the battery discharges 5% faster than the sensor reports. Given what’s actually on the wall is a 6 kW inverter reporting an honest 6.6 kW limit, that optimism was just wrong. Reset to 1.0. Plans should be consistent and slightly conservative, not flattering.

What the review didn’t find

Pleasingly little. The live config on the box matches the published copies, every sensor reference resolves, the Octopus and Solcast feeds are healthy, and the nightly stats pipeline that feeds the stats page has all its dependencies in place.

One log warning remains, and it sorts itself out: Predbat can’t model the battery’s charge taper near 100% because the battery’s never actually been to 100% at full rate. The first controlled charge test, next on the list and aimed at a cheap overnight slot, fixes that and clears the way to flip Predbat from Monitor to Control charge. Not “Control charge & discharge”: until the export certification clears, exporting stored energy earns precisely nothing, so discharge control stays off the table on purpose.

The lesson, if there is one: review the running system, not your notes about it. Two of the three fixes were things we’d have sworn were already right.


All diary entries · Today's numbers