First stable release of the 1.5.0 line. Everything here was pre-released as v1.5.0-beta.1 through v1.5.0-beta.3, which also supersede v1.4.0-beta.1 — 1.4.0 never went stable, so its contents ship here.
@jfhautenauven built essentially all of it (#18, #20, #23, #24, #25), ran it in his own 12-valve production install throughout, confirmed the child-lock write end-to-end on real hardware, and reported beta.3 clean in normal use. Thank you — again. 🙏
Added
- Thermostat-valve entities — per-valve child lock, valve position, actual temperature and a writable calibration offset, on top of the telemetry 1.3.0 already exposed.
- Per-zone average temperature sensor — the zone-level aggregate the climate entity reports as its current temperature, now available on its own.
- Appliance status sensor —
displayCode+causeCoderesolved against a Bosch/Buderus table to a readable state, raw codes kept on the attributes. Locking and blocking faults take precedence. - Per-zone assigned-program selects — the zone's
clockProgramis now writable. - Heat demand type, optimum start state, zigbee firmware, electricity annual goal, return temperature — created only when your appliance advertises them.
Changed
- Fast/slow polling — temperatures, modes and live valve telemetry stay on the 60-second cycle;
/gateway,/energy,/solarCircuits,/programs,/system/applianceand the/devicesinventory drop to every 5 minutes, energy history to 30, discovery to daily. Noticeably less API load. bosch.update_thermostatis nowbosch.refresh_gateway. The old name still works as a deprecated alias — switch your automations over when convenient.- Device metadata — gateway manufacturer and model resolved from
/gateway/productId(Bosch CT200, Buderus TC100.2); zone devices reportEasyControl. - Boost switch renamed "Heating boost" in all seven locales.
- Zone climate preset control removed —
AUTO/HEATalready wrote the sameuserMode, so the preset was a second control for one setting. Beta-only, no stable users affected.
Fixed
- Generic services work on cloud entries —
send_custom_getandsend_custom_put_*routed through the XMPP client even on POINTTAPI entries, so they were advertised and then raised.debug_scanstays XMPP-only by design; on cloud, diagnostics plussend_custom_getcover it. - Child-lock switches attach to their own valve device instead of piling onto the gateway.
- Thermal disinfect switch reflects its real state — the path uses
on/off, nottrue/false. - Burner flame reads
actualModulationrather than parsingflameIndication's string dialect. - An ambiguous cause code no longer raises a phantom fault — a boiler that was simply lighting up could announce a 24-hour safety shutdown.
Upgrading
Update via HACS and restart Home Assistant. No configuration changes needed.
If you ran beta.2, you may have one leftover "Thermostat valve" device that no longer matches anything. Open it and use ⋮ → Delete — stale valve devices are now deletable from their own device page. Nothing is removed automatically.
A note on valve models
Thermostat-valve devices deliberately carry no model name. Per @jfhautenauven: only the Bosch RT10-RF was ever officially EasyControl-compatible (its development was outsourced to Homematic IP, which explains the naming), Bosch internal notes claim non-Bosch Homematic EQ3 support from firmware 5.4.0, and the ETRV v2 was never EasyControl-compatible at all. POINTTAPI exposes no field that identifies valve hardware, so guessing a model would be wrong for real homematicip installs. Left blank on purpose.
What's next
#22 (installation-level heating settings) targets 1.6.0, #21 (boost redesign for multi-zone/multi-valve) targets 1.7.0.