Ships release 0.14.0 (02ed120, merged via #169) to master, which Home Assistant installs from.
Owner go: 2026-10-03 ("Go deploy").
Pinned to 02ed120 through the branch deploy-0.14.0, so nothing merged into release/1.0 after the cut comes along.
predeploy_check.py --deployed-version 0.13.0 with a fresh export of the live options (83, Watchdog on): CLEARED.
With one inverter, control is the same as 0.13.0; two inverters are now supported (SAFETY-91, SAFETY-93). Stage 5 for inverter B follows after this deploy.
Changelog: ## 0.14.0 in goodwe_controller/CHANGELOG.md.
Ships release 0.14.0 (`02ed120`, merged via #169) to `master`, which Home Assistant installs from.
Owner go: 2026-10-03 ("Go deploy").
- Pinned to `02ed120` through the branch `deploy-0.14.0`, so nothing merged into `release/1.0` after the cut comes along.
- `predeploy_check.py --deployed-version 0.13.0` with a fresh export of the live options (83, Watchdog on): **CLEARED**.
- With one inverter, control is the same as 0.13.0; two inverters are now supported (SAFETY-91, SAFETY-93). Stage 5 for inverter B follows after this deploy.
- Changelog: `## 0.14.0` in `goodwe_controller/CHANGELOG.md`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
At N>=2 a battery at or under its own peak reserve now weighs 0 whenever
the site gives (not only for the peak), a draining battery's pin becomes
a floor at its drain rate so it rises before the held one gives, and a
quarter's edge is graded on the next quarter when its first telegram is
late. SAFETY-25 option A stays: the held battery is still drawn once the
others are full. N=1 unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A SoC reading flipping across the reserve swapped ~1000 W between the
batteries on each flip (grid +-500 W with unequal lags). Also grades
next_quarter()'s staleness boundary (29.5 / 30.5 s).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
At N>=2, when a battery's maintenance charge ended, its watts stayed in the
loop's start point and landed on the other battery (B 0 -> -1600 W in one
cycle, charging from the grid at a 6000 W house). On the cycle a charge
ends, the loop now starts from what the others stood at plus that
battery's new command. N=1 and all identity digests unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A battery still in CHARGE but dropped by the allocator (stale link, or a
SAFETY-73 refusal contradicting its charge) left its -2000 W in the loop's
start point, and B went 0 -> -1600 W in one cycle. The end is now noted
after the unit claims are filed: in CHARGE, live and not contradicted.
Tests: part 6 (stale link, refusal) and a spy on the guard suspension.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two inverters are now supported for maintenance and the peak guard
(SAFETY-91, SAFETY-93). No option changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Slew step not one house's 400 W; three two-inverter known issues, not
four; commissioning reference covers a new install; SoC example holds
for decimal sensors; SAFETY-95 states the jump, not the export.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Ships release 0.14.0 (
02ed120, merged via #169) tomaster, which Home Assistant installs from.Owner go: 2026-10-03 ("Go deploy").
02ed120through the branchdeploy-0.14.0, so nothing merged intorelease/1.0after the cut comes along.predeploy_check.py --deployed-version 0.13.0with a fresh export of the live options (83, Watchdog on): CLEARED.## 0.14.0ingoodwe_controller/CHANGELOG.md.🤖 Generated with Claude Code