Skip to content

v0.4.0rc6

Pre-release
Pre-release

Choose a tag to compare

@TrentHouliston TrentHouliston released this 01 Jun 03:59
575fb52

HAEO v0.4.0rc6

Pre-release covering changes merged to main since v0.4.0rc5.

Highlights (User-Facing)

  • 🗺️ Network topology Lovelace card — Add custom:haeo-topology-card to your dashboard to explore your optimization network: elements, connections, segment limits, efficiency, pricing, and policy overlays as an interactive SVG graph
  • 💰 Pricing on element config — Set battery charge/discharge costs and load pricing directly when configuring batteries and loads, without opening the standalone policy flow
  • 📊 Shadow prices in $/kWh — Shadow price sensors now use the same unit as tariffs and other energy-priced quantities, making comparisons and dashboards easier to read
  • ☀️ Volcast solar forecasts — Use Volcast solar forecast data as an optimization input via a new data extractor

⚠️ Breaking Changes

Shadow price units changed to $/kWh (#424)

All shadow price sensors are now reported in $/kWh instead of $/kW. Entity IDs are unchanged, but dashboards, templates, and automations that assumed the old unit need updating.

Migration: Review any Lovelace cards, utility meters, or automations that reference shadow price sensors. Re-scale or relabel displays to expect $/kWh. If you compare shadow prices to import/export tariffs, they now share the same unit without manual conversion.

User-Facing Changes

New Features

  • Network topology Lovelace card (#417, #453) — Backend topology serialization on the optimization status sensor, plus a dashboard card registered in the existing /haeo-static/haeo-forecast-card.min.js resource. Select a HAEO hub in the card editor; the card resolves the optimization status sensor and renders the live network graph.
  • Shared hub selection for Lovelace cards (#453) — Forecast and topology cards use Home Assistant’s built-in config entry selector and filter entities by hub via the device registry, so multi-hub setups show the correct sensors.
  • Volcast solar forecast extractor (#440) — Detects Volcast’s detailedForecast attribute (5-minute resolution, power_w in watts) for use as a solar forecast input.
  • Historic diagnostics walkthrough guide (#432) — New user guide for working through optimization diagnostics over time.

Configuration Improvements

  • Surfaced policy pricing on battery and load flows (#430, #442) — Common pricing rules appear on element config screens. Defaults apply even when the frontend omits suggested values on new elements.
  • Clearer battery partition input names (#428) — Undercharge/overcharge cost and percentage inputs now have distinct friendly names (“Undercharge cost”, “Overcharge percentage”, etc.). Entity IDs are unchanged.
  • Unit-aware entity pickers (#446) — Config flow entity selectors filter by unit compatibility and exclude entities owned by the current hub to prevent self-referential loops.
  • SOC pricing scaled by period duration (#439) — SOC pricing penalties now account for variable-width optimization periods so short and long periods are treated consistently.

Bug Fixes

  • Policy-pruned connections (#449) — Element adapters and shadow price extraction handle connections removed by policy compilation without errors.
  • Surfaced policy defaults (#442) — Pricing rules are created from field defaults when the UI does not submit optional suggested values.

Developer-Facing Changes

Developer Highlights

  • InputStore (#441) — Shared core layer for input-field data (editable vs driven modes, time-series loading, readiness) used by both optimization and surfaced policy paths, decoupled from Home Assistant entity presentation.
  • uv run sim realtime simulator (#444) — Boots a browsable Home Assistant instance, feeds time-shifted scenario inputs, optionally configures HAEO from scenario config, and tears down on Ctrl+C.

Architecture

  • InputStore extraction and unified input paths (#441) — Coordinator, adapters, and surfaced policy flows route through the shared input store.
  • Topology visualization pipeline (#417, #453, #454) — Matplotlib/networkx scenario graphs replaced by frontend SVG rendering; Lovelace card wired to optimization status topology attribute.
  • Snapshot rounding stabilization (#426) — Removed DEFAULT_TAG; snapshot output rounding is more stable for tests and tooling.
  • Scenario optimization SVG exports stabilized (#450) — Deterministic exports for scenario visualizations.

Schema/API Changes

  • Shadow price LP formulation (#424) — Dual values computed in energy-native $/kWh form throughout the model layer.
  • Battery partition translation keys (#428) — Translation keys include device_type for disambiguation (battery_undercharge_partition_cost, etc.).

Testing & Documentation

  • Guide test reliability (#448) — Event-based waiting replaces brittle timeouts in guide tests.
  • Trusted networks auth for guide tests and sim (#447) — Simpler auth setup for automated guide runs and the realtime simulator.
  • Lovelace card user guide (#453) — Documents forecast and topology card configuration, hub selection, and troubleshooting.
  • Remove Codecov token from CI (#429) — Codecov uploads use OIDC instead of a repository token.

Contributors

Full Changelog

Full diff: v0.4.0rc5...main