What's Changed
This release fixes several cases where the plan could go wrong: a spurious high-load reading cancelling an export window, battery balancing handing load to a nearly empty battery, and Octopus Intelligent charger targets being misread. It also adds a way to install a branch directly from the update menu.
Plan and battery behaviour
- Short load spikes no longer move export windows. Some inverters (notably Solis) report a load counter that only moves in whole kWh. A single step could look like a spike of up to 12 kW and trigger a re-plan. In real cases this pushed back an export window and lost the end of a Saving Session or Axle event. A high reading must now be confirmed by the live
load_powerbefore it counts. @springfall2008 in #5851 - Fixed inverter balancing with a high reserve. The balancer was given each inverter's reserve in kWh but compared it as a percentage. With a high reserve (common when one battery is kept for backup), a nearly empty battery could be chosen to take over the house load. @chalfontchubby in #5836, fixes #5835
- Octopus Intelligent linked to a charger now works properly. When Intelligent is linked to the charger rather than the car, its target means "add X%" rather than "charge to X%". Predbat now detects this and adds the target to the SoC at plug-in, so cars are no longer wrongly treated as already charged and their slots dropped. @chalfontchubby in #5822, fixes #3034 and #3060
- Load ML now leaves out iBoost/diverter energy when building its training data, so diverted solar is no longer learnt as house load. @springfall2008 in #5829, fixes #5825
Inverters and integrations
- AlphaESS:
batUseCapnow has a 10% minimum, so a low reserve no longer makes the inverter reject every discharge command. @chalfontchubby in #5838 - Kraken (EDF/E.ON): the rates request now only asks for the dates Predbat uses. On long fixed contracts the full history grew without limit and, after about 15 days, hit the page cap, which logged "pagination capped" on every fetch. @chalfontchubby in #5843, fixes #5572
- Battery scaling: when
battery_scalingkeeps reading invalid (for example a Solis Cloud inverter reporting 0% health), Predbat now warns once, not every cycle. @chalfontchubby in #5841, fixes #5368 - History: a sensor that rarely changes no longer loses its history when old records are cleared out. In #5456 this left Predheat with no history and fell back to a 20 °C target for up to a day. @chalfontchubby in #5837, fixes #5456
New features
- Install a branch from the update menu. A new
predbat_branchoption inapps.yaml(one name or a list) adds branches toselect.predbat_update. They install frompredbat_repository, or from the official repository if that isn't set. This is useful for testing a fix before it is released. Both options are now documented in apps-yaml.md. @gcoan in #5828 - Manual API:
inverter_limit_exportcan now be overridden, like the other inverter limits. @chalfontchubby in #5839, fixes #4116
Web UI
- Annual tab: a solar array entered as a number of panels now shows its kWp instead of 0. @chalfontchubby in #5842, fixes #4395
Documentation
- Removed sensor configuration that isn't needed for Sigenergy Sigenstore inverters. @iangregory in #5824
- Debug journal updated with recent investigations. @springfall2008 in #5830
For developers and hosted deployments
update_pred()is split intoplan_once()andexecute_once(), so planning and execution can be scheduled separately. Behaviour is unchanged. @mgazza in #4186- New optional
oauth_refresh_providerhook, so a host that runs Predbat as a library can handle OAuth token refresh itself. @mgazza in #5819 - New test rig and tests for setups with several inverters of different types. @chalfontchubby in #5833, for #4856
Full Changelog: v9.6.2...v9.6.3