Skip to content

v0.4.0

Choose a tag to compare

@lnagel lnagel released this 09 Feb 06:25
24d44b0

New Features

  • Zone counting sensors and controller-level heat request (#90) — Three new controller-level sensors (zones_flowing, zones_heating, zones_window) provide granular visibility into zone states. The heat request signal has been moved from a per-zone dictionary to a single controller-level binary sensor.
  • Zone heat state (#90) — New ZoneState.heat boolean derived from flow AND supply coefficient > 10%, with a corresponding remaining_duration property for tracking remaining zone run time.
  • Deferred controller initialization (#91) — The controller now stays in INITIALIZING until all watched entities (valves, DHW, heat request, supply/outdoor temp sensors) report valid state, preventing commands from being issued to entities that haven't reported in yet. After a 120-second timeout, it logs a warning and proceeds regardless.
  • Zone remaining duration sensor (#96) — New per-zone sensor displaying the remaining time (in seconds) for the current zone operation. Uses Home Assistant's duration device class for proper formatting.

Bug Fixes

  • Preserve supply target temp during initialization (#97) — When the outdoor sensor hasn't reported yet during INITIALIZING, the controller no longer overwrites the supply target temperature restored from saved state with the static config default. The outdoor temp update is now skipped when the value is None during initialization.

Breaking Changes

Entity IDs change for existing installations (#90):

  • binary_sensor.*_blockedbinary_sensor.*_window
  • binary_sensor.*_heat_request (zone-level) → binary_sensor.*_heat
  • sensor.*_requesting_zonessensor.*_zones_flowing (+ new zones_heating, zones_window)
  • New: binary_sensor.*_heat_request (now at controller level)

Automations or dashboards referencing old entity IDs will need updating.

Refactoring / Internal

  • Weather compensation documented in README (#89) — Added heating curve / outdoor temperature compensation to the comparison table, key differentiators, and requirements sections.
  • Controller status and init tracking moved to controller (#92) — ControllerStatus and init_started_at moved from coordinator to ControllerState. New update_status() method on HeatingController handles zone status aggregation and init timeout. Coordinator reduced to a thin delegation layer.
  • Remaining coordinator business logic moved to controller (#94) — Fail-safe zone detection, DHW transition handling, and observation period transitions all moved from coordinator to HeatingController. Includes storage migration V2 → V3 for last_force_update tracking.
  • Remove unused valve_on_since field — Cleaned up unused valve_on_since field from ZoneState.

Full Changelog: v0.3.1...v0.4.0