Repository navigation
v2.8.0
Requires Home Assistant 2025.2 or newer.
Fixes
- Peak Control / Load Control sliders now work. Changing Peak Trigger SOC, Peak Power, Relay Close/Open SOC or PV Threshold in the UI usually had no effect on what Confirm sent (the settings were registered on two platforms and the wrong copy was read). Re-check those values before your next Confirm.
- Nine duplicate entities removed automatically — nameless
number.<device>[_2-4]andtime.<device>[_2-5]entities older versions created on the wrong platform. Check dashboards/automations if you referenced them. - No more periodic "unavailable". Each API request now times out after 20 s; a slow Dyness endpoint only skips its own data for that cycle instead of failing the whole update.
- BMS Communication Status now reads Normal on a healthy battery (it was inverted).
- Battery Module Count includes every cluster (e.g. 8 on a 2 × 4 Cygni, was 4).
- Meter Type 0 now shows Not Connected.
- "Power Limit Active" is now "Export Limit" (Enabled / Disabled — whether the export limit is switched on). Existing installs keep their entity id.
- Peak Control power can be set in 10 W steps (was 100 W).
Improvements
- Drift detection: the on/off-grid discharge depth settings show what the inverter actually reports (
inverter_value,in_sync), and the Battery Stage preview flags values changed in the Dyness app. set_tou_scheduleis registered once, accepts an optionalconfig_entry_id(only needed with more than one device) and rejects times that are notHH:mm.- Moved off deprecated Home Assistant APIs (
async_timeout,hass.data,FlowResult); manifest cleaned up for hassfest.
Under the hood
- New automated test suite (pytest-homeassistant-custom-component) with real, de-identified API fixtures and synthetic data for every supported Dyness model; GitHub Actions runs tests, ruff, hassfest and HACS validation on every push.
- Integration split into
api,payloads,parsersandconstmodules with no behaviour change (verified by full data snapshots).