Skip to content

v0.3.0

Choose a tag to compare

@lnagel lnagel released this 04 Feb 13:17
438bf1b

New Features

  • Heating curve for outdoor temperature compensation (#76) — Dynamically calculates supply target temperature based on outdoor conditions using two-point linear interpolation. When an outdoor temperature sensor is configured, the system adjusts the supply target between warm and cold design points instead of using a fixed value. Includes a new controller-level supply target sensor entity.
  • Heat accounting with supply temperature normalization (#64) — Zones now accumulate quota weighted by actual heat delivery via a supply coefficient. When supply temperature is below target, zones consume quota slower and stay open longer. Includes a new supply coefficient sensor per zone and a flow binary sensor per zone. Configurable via a new "Heat Accounting" options flow step.
  • Quickstart guide (#68) — New task-oriented guide (docs/quickstart.md) walking users from installation to a working first zone.

Bug Fixes

  • Fix crash on config entry unload after in-place config reload (#65) — Stale listener callbacks caused ValueError: list.remove(x): x not in list on entry unload. Fixed by adding a dedicated shutdown() method registered once during setup.
  • Fix flaky test due to EMA floating-point precision (#81, #86) — Use pytest.approx() for float assertions where values pass through EMA smoothing.

Improvements

  • PID error icons changed to plus/minus (#66) — Replaced chevron icons (too similar to check icon) with mdi:thermometer-plus (cold) and mdi:thermometer-minus (warm).
  • Zone diagnostic entities hidden from dashboards — Zone sensors and binary sensors now have entity_registry_visible_default = False. Mode select and flush switch remain visible.
  • Entity recreation on config change — Changing supply temp, outdoor temp, or DHW entity in config now triggers a
    full reload to recreate affected entities.

Refactoring / Internal

  • Storage format V2 (#78) — Coordinator state restructured with controller data nested under a controller key. PID keys renamed for consistency. Includes automatic V1 → V2 migration.
  • Entity declarations refactored to description-based patterns (#77) — All entity metadata and behavior defined in entity descriptions with generic entity classes using callbacks.
  • PIDState fields renamed (#82) — p_termproportional, i_termintegral, d_termderivative.
  • TimingParams renamed to TimingConfig throughout codebase.
  • Test reorganization (#63) — Moved pure controller/zone tests from integration/ to unit/.

Full Changelog: v0.2.1...v0.3.0