Skip to content

Overlay & temperature-source authority

Pre-release
Pre-release

Choose a tag to compare

@hiall-fyi hiall-fyi released this 12 Jun 07:01

One cohesive rework of how each zone reading is sourced. Tado CE's climate entity is a cloud + HomeKit hybrid, and until now both sides fought over the same values. This release gives each reading the one source that's right for it: the HVAC mode follows the cloud (the only side that knows you're following a schedule), the room temperature follows HomeKit (instant, the moment it changes), and a new per-zone setting lets you pick which temperature reading the dashboard shows. The overlay duration options also line up with the Tado app now, and there's a new per-device Identify button.

Theme per beta makes regressions easier to attribute when something does go wrong. beta.1 was the AC swing axis split, beta.2 the persistence reshape; this is the overlay and temperature-source half of the climate entity.

⚠️ Upgrade Notes

Upgrading from v4.0.3 (stable) or an earlier beta? Pick up via HACS, restart, no config changes needed.

"Overlay Mode" is now "Override duration", and offers three options instead of four. The labels match the Tado app: "Until you resume schedule", "Until next automatic change", and "Timer". The old "Next Time Block" was a silent duplicate of "Tado Default" since v2.1.0 (the Tado API we use only accepts three termination types), so dropping it loses nothing. Zones you've already configured keep whatever they had; if a zone was set to "Next Time Block", it now reads as "Until next automatic change", which is the same behaviour it always had.

Automations using next_time_block still work. The argument maps to "until next automatic change", so existing scripts don't need touching.

On a fresh install with Home Assistant 2026.6+, you might see some entity IDs come out with the room name doubled (sensor.lounge_lounge_temperature). That's an HA Core change, not Tado CE, and it's cosmetic, the entities work normally and friendly names are correct. Existing installs upgrading are not affected. Full details and what to do about it: Discussion #298. The new Identify button is unaffected, it uses a fixed entity ID.

Features

  • Choose which temperature reading each zone shows (#293 - @churchofnoise) — a new per-zone Temperature source setting (Configure → Zone Configuration → Temperature). Automatic prefers the fast HomeKit reading when it's fresh and falls back to the cloud; HomeKit always prefers the local reading; Cloud always shows Tado's. If you've set an external temperature sensor for the zone, it still takes precedence. This only changes what the dashboard displays; it never touches the reading Smart Valve Control uses to calibrate your TRVs.
  • Identify a specific TRV or thermostat from Home Assistant (#291 - @bobbinz) — each device now gets its own Identify button that flashes its LED, so you can tell which physical radiator is which. Multi-TRV zones get one button per device, all on the same zone card. It flashes locally over HomeKit when the bridge is connected (no API call) and falls back to the cloud otherwise. The existing identify_device service also works for TRVs and thermostats now, not just bridges.

Changes you'll notice

  • Override duration is relabelled to match the Tado app, and now offers three options instead of four. "Until you resume schedule", "Until next automatic change", and "Timer" replace the old "Tado Default" / "Next Time Block" / "Timer" / "Manual" wording. See the Upgrade Notes above for what this means for existing zones.
  • New installs and new zones now default to "Until you resume schedule". This is what a temperature change made from Home Assistant means most of the time, and it matches what a local HomeKit write produces. Zones you've already configured keep whatever setting they had.
  • The Timer cap goes from 3 hours to 12 hours, matching the Tado app.

Bug fixes

  • Fixed the heating mode and target flipping back and forth on HomeKit + cloud zones (#296 - @apilone) — on a zone with both HomeKit local control and cloud polling, the mode could oscillate because the integration accepted HomeKit's mode onto the same value the cloud derives your schedule onto. HomeKit can't express "following your schedule", so the two sides disagreed every poll. The mode now comes from the cloud only, which kills the flap. Room temperature still follows HomeKit for speed.
  • HomeKit local control now activates as soon as the zone mapping is ready — when the link between each radiator and its room built a moment late (bridge connected, but the first attempt ran before the connection settled), local control could stay off until the next restart even though the bridge was connected and mapped. It now starts listening for HomeKit updates the moment the mapping is built.
  • Resuming a zone already on schedule no longer wastes an API calltado_ce.restore_previous_state, the Resume All Schedules button, and setting a hot-water zone back to Auto all used to fire a cloud call to clear an overlay that wasn't there. They now skip zones with no active overlay, the same as resume_schedule already does.
  • Setting a zone to Auto now clears an active timer or "until next automatic change" override — previously, a zone showing Auto that still carried one of those overrides would ignore an Auto request because the mode already looked like Auto. It now clears the override so the zone genuinely returns to its schedule.

How to Update

From v4.0.3 stable, or any earlier beta: HACS → Tado CE → ⋮ → Redownload → tick "Need a different version?" → select v4.1.0-beta.3 → Restart HA. No config changes needed.

Fresh install: See Quick Start in the README.


Thanks to everyone who supported the project through Buy Me a Coffee — it genuinely helps.

Full changelog: v4.0.3...v4.1.0-beta.3