Skip to content

v2.8.0

Choose a tag to compare

@aistuartai aistuartai released this 22 Oct 23:51
· 5 commits to main since this release

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] and time.<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_schedule is registered once, accepts an optional config_entry_id (only needed with more than one device) and rejects times that are not HH: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, parsers and const modules with no behaviour change (verified by full data snapshots).