v0.4.1
A correctness fix to the surplus calculation, plus its observability. No breaking changes.
Fixed
- The load-compensated surplus is now sun-aware: below
PV_SUN_MIN_ELEVATION_DEG
(default 3°) the compensation is disabled, so the heat pump is released after dark instead
of being held ON on grid power. Previously the fixed+ wp_nominalcompensation could keep
the SG-Ready relay ON past sunset (observed: relay still on at ~00:00 with the WP idle).
Added
PV_SUN_MIN_ELEVATION_DEG(default3.0) to tune the elevation gate.- Gauge
surplus_control_sun_elevation_deg; the UI "why" card shows "Sun below the horizon"
when idle after dark.
[0.4.0] - 2026-06-16
Generic, vendor-neutral heat-pump telemetry. Breaking: the ViCare-specific service, DB table
and metric names are replaced by a generic contract behind a pluggable driver.
Changed
vicare-exporter→heatpump-exporterwith aHEATPUMP_DRIVER(vicare|mock) behind
aHeatPumpDriverprotocol — the heat-pump analogue ofMETER_DRIVER. ViCare is now one
driver; amockdriver renders the heat-pump card in the zero-config demo.- DB table
heatpump_vicare→heatpump_telemetry(migration003, data preserved). - Prometheus telemetry metrics
vicare_*→heatpump_*(vendor-API ops stayvicare_*). - control-ui is vendor-neutral; the heat-pump card name comes from
HEATPUMP_LABEL.
Added
docs/heatpump-interface.md— the generic telemetry contract + "bring your own driver".
Upgrade
- Apply migration
003(the composedb-migrateone-shot does this automatically). - Switch the image
vicare-exporter:0.3.x→heatpump-exporter:0.4.0withHEATPUMP_DRIVER=vicare
(keep your existingVICARE_*secrets). - Update any custom Grafana panels / external scrapers from
vicare_*/heatpump_vicareto
heatpump_*/heatpump_telemetry. SetHEATPUMP_LABEL(e.g.Vitocal 250 A06).