What's new in v9.4.3
Load today no longer runs away: since v9.4.1, a load sensor that stayed flat for a while could make load_today climb every 5 minutes, reaching over 100 kWh in a day on some Solis Cloud installs (#5652). Predbat was reading its own earlier gap-fill back as measured load. It now only backfills from predbat.load_energy_h0 for the time before that sensor's history starts.
Octopus clock change: on GO, Intelligent GO and other tariffs whose off-peak window is fixed to local time, the day/night rate schedule was built wrong in the week before the clocks go back. It now stays whole across the change.
Hanchu ESS (experimental): a new native cloud integration for Hanchu ESS inverters. Predbat signs in with your Hanchu app account directly, with no Home Assistant integration needed. See templates/hanchu.yaml. Hanchu publish no API specification, so this is built from community integrations and has had only limited testing on real hardware. Please report anything that looks wrong.
Also in this release:
- Intelligent Octopus: dispatches shorter than 5 minutes no longer make a whole half hour cheap for the house battery unless the car is actually seen charging. When charging the battery during a running dispatch scores the same as waiting for the fixed off-peak window, Predbat now charges in the dispatch, in case the car is unplugged and the dispatch disappears.
- History view: shows the state Predbat actually carried out, and flags any slot that ran alongside a warning with 🚩.
Inverters
- Hanchu ESS: native cloud inverter component with monitoring, daily energy, timed charge and discharge slots, power limits, charge target and discharge floor control. Experimental, built without a vendor API specification by @mgazza in #5305
- Sigenergy: read REST power from
energyFlow, discover systems from the per-system device list instead of the throttled system list, and add--command-testand--mqtt-scandiagnostic modes by @springfall2008 in #5654 - GivTCP: treat a 200 REST response that is not a JSON object as a failed read, so one bad reply no longer stops the other inverters being read (#2828) by @chalfontchubby in #5619
Octopus
- Keep the day/night rate schedule whole across a clock change by @chalfontchubby in #5655
- Don't treat dispatches under 5 minutes as low rate unless the car is seen charging by @springfall2008 in #5657
- Prefer charging in the Intelligent dispatch run in hand by @springfall2008 in #5635
Fixes
- Load: only backfill
load_todayfromload_energy_h0before its history starts (#5652) by @springfall2008 in #5656 - History: show the carried-out state under a warning, and don't read warnings as charge/export states by @chalfontchubby in #5271
- Time parsing: reject time strings with no UTC offset on Python 3.15 as well as 3.14 by @chalfontchubby in #5653
Documentation
- Debug journal: fold the 2026-10-19 queue slice by @springfall2008 in #5624
- Debug journal: rejoin the GH#5614 passage to its Octopus table row by @springfall2008 in #5649
Project Tooling
- Tests: run the IOG planner tests on the C++ kernel, cutting the quick suite from 113s to 77s by @springfall2008 in #5662
Full Changelog: v9.4.2...v9.4.3