Releases: mavnezz/Zendure-Charge44
v0.10.15 — HA strict-type fixes
Two log errors fixed: (1) Contiguous-block switch failed to register because _attr_entity_category = 'config' (string) no longer satisfies HA's strict enum check — switched to EntityCategory.CONFIG. (2) Solar-forecast-remaining and Grid-charge-needed sensors warned about state-class/device-class mismatch — these are snapshot values not cumulative meters, dropped the ENERGY device class. No behaviour changes.
v0.10.14 — actually subscribe to packNum
Followup to v0.10.13. The packNum handler existed in the code, but the topic itself was never subscribed — so battery_capacity stayed frozen at whatever __init__ computed and ignored every live packNum message. Adding the missing subscription fixes the symptom (capacity stuck at 1.92 kWh after attaching an extension pack).
v0.10.13 — battery_capacity respects live packNum
Bugfix: when you add or remove a battery pack from the Zendure without re-running the integration setup, sensor.charge44_battery_capacity was stuck at the old SN-list value. Now the live packNum MQTT topic wins when it disagrees with the configured SN list. Default fallback is 1.92 kWh per pack (AB2000X).
v0.10.12 — battery_capacity sensor
Adds sensor.charge44_battery_capacity (diagnostic) so the auto-detected battery size is visible. Useful when verifying that a newly-attached extension pack got picked up — the value should jump from 1.92 to 3.84 kWh after a second AB2000X is plugged in. No logic changes.
v0.10.11 — Fallback Discharge safety net
New: Fallback Discharge slider
Addresses a real-world bug observed yesterday evening: the battery delivered a constant 100 W to home while grid covered the missing 70 W. Toggling Regulation off/on fixed it.
Root cause
The PI loop only ran when a Shelly RPC arrived. If the meter went silent (network blip, parse error, broker hiccup), `outputLimit` stayed frozen at its last value while real home load drifted. There was no recovery path until the next valid Shelly message arrived.
Fix
- New periodic safety tick every 10 s detects Shelly silence (>15 s without data)
- When stale, publishes `outputLimit = fallback_discharge` — a user-configurable baseline
- Once Shelly recovers, the regular PI loop in `_tick` resumes
New entity
`number.charge44_fallback_discharge` — friendly name Fallback Discharge, range 0–400 W, step 10, default 0. Set this to your typical baseline home load (e.g. 100–200 W) so even during meter silence the battery covers your idle consumption.
Safety
The safety tick respects all existing guards: temperature out of range, SOC at minimum, regulation disabled, cheap-charge active, and smart-discharge in a cheap hour all suppress the fallback as expected.
Tests
10 new tests in `test_safety_fallback.py`. Suite at 70 green.
Update
HACS → Update → reload integration. Then move the new slider to your typical idle home load (mine is around 150 W).
v0.10.10 — Zendure-Charge44 rename + new logo
Cosmetic: display name renamed to Zendure-Charge44; new minimal grey-circle logo. Domain and entity IDs unchanged.
v0.10.9 — SOC Max slider now reaches the device
Bugfix — same class of issue as v0.10.3
The SOC Max slider only updated the plugin's internal target. The Zendure's own `socSet` stayed at its default (100 %), so the device kept solar-charging past whatever the user configured.
Now `target_soc` changes are also published to `Zendure/number//socSet/set` — same fix pattern as we applied to `min_soc` in v0.10.3.
If you set SOC Max to 80 in the dashboard, the device will now actually stop charging at 80 %, regardless of source (solar, grid, manual).
Update
HACS → Update → reload integration. Then move the SOC Max slider once after the update so the new value is pushed to the device.
v0.10.8 — Price Spread slider + SOC range guards
New: Price Spread slider
`number.charge44_min_spread` (friendly: Price Spread) — adjustable from the dashboard, default 10 ct/kWh, range 0–50. Tune the profitability threshold for Cheap-Charge without editing the source. Higher value = less aggressive cheap-charging (only triggers when the day's spread is large).
SOC sliders constrained
- SOC Min now caps at 50 %
- SOC Max now starts at 51 %
Prevents accidentally setting min ≥ max, which would deadlock the regulation.
Update
HACS → Update → reload the integration.
v0.10.7 — brand icon refresh
Cosmetic only: new turquoise sticker-style '44' brand icon. No code changes.
v0.10.6 — first release
First release on the new repo. Carries over all features from charge44 v0.10.6:
- Zero-export regulation against Shelly 3EM Pro
- Cheap-Charge / Free-Charge / Manual-Charge / Smart-Discharge
- Solar-forecast smart skip via Forecast.Solar
- 58 unit tests + GitHub Actions CI
- README in English
Entity IDs are unchanged — existing automations will keep working if you migrate from the old `charge44` repo.