Persistence reshape + State Restore atomicity + UX consistency
Pre-releaseThis beta tackles three connected things: caches survive Tado-side re-pairing, restoration snapshots only persist after the cloud confirms the change applied, and every user action gives the dashboard an immediate response with a clean rollback on failure. It also fixes device-state sensors freezing at boot until restart, makes the Refresh AC Capabilities button actually refresh again, and gets tado_ce_ready to boot-time automations instead of firing before their triggers register. It's the foundation work the rest of the v4.1.0 cycle builds on.
v4.1.0-beta.1 (the AC swing axis split) shipped one focused change. Beta.3 takes the adaptive polling rework, beta.4 the drift refresh round-robin, and so on. Theme per beta makes regressions easier to attribute when something does go wrong.
If you're already on v4.1.0-beta.1, this beta supersedes it. v4.0.1 stable users joining the beta train pick up beta.1's swing axis split as part of upgrading to beta.2.
⚠️ Upgrade Notes
Upgrading from v4.0.1 (stable) or v4.1.0-beta.1? Pick up via HACS, restart, no config changes needed. The new persistence behaviour and the user-action consistency layer turn on automatically.
Service-call automations from v4.0.x continue to work. The tado_ce.turn_off_all_zones, resume_schedule, set_open_window_mode, and restore_previous_state services keep the same call shape; only their internal write path changed.
Mold Risk sensor name change: the numeric humidity sensor's friendly name changes from Mold Risk % to Mold Risk Indicator across all seven locales. Existing installs are unaffected on the data side: entity_id, unique_id, device_class=HUMIDITY, and all attribute names stay the same. Only the UI label changes. If you've titled a dashboard card by typing the name out, you'll want to retype it. Fresh installs from this beta onward also get a clean auto-generated slug without the _2 suffix.
Persistence
- Auto-detect Tado-side zone changes (Discussion #280 - @Trebor87) — re-pair, hardware swap, and zone add/remove on the Tado side now triggers cache invalidation automatically. The integration picks up the change on the next quick poll (5–30 min depending on cadence) and refetches the affected entries. The Refresh AC Capabilities hub button stays as a manual escape hatch.
- Stale zone cleanup — when a zone is removed in the Tado app, the integration now drops every cached reference to it on the next poll rather than carrying stale data until the next HA restart.
- Device state stays current (#286 - @Fred224) — the Connection, firmware version, and battery sensors used to freeze at boot-time values until you restarted HA. They now refresh on a periodic cadence (hourly on paid Auto-Assist tiers, every 4 hours on the free tier), so an AC controller that drops Tado's cloud uplink (E04 errors, mains blip, Wi-Fi flap) actually shows up as Disconnected within the cycle, and reconnections clear it the same way.
Bug fixes
tado_ce_readyevent now reaches boot-time automations (#287 - @Newreader) — the event was firing as soon as the integration finished its setup, which on a cold HA start happens before automation triggers register their listeners. Anyone with an automation triggered bytado_ce_readysaw it never run after a restart, only after a manual reload. Fixed by deferring the fire until HA has fully started; reload behaviour is unchanged.- Refresh AC Capabilities button now actually refreshes — since v4.0.0-beta.5's storage migration, the button was deleting a legacy file path that no longer exists, so the cache stayed populated and the re-fetch was silently skipped. Pressing the button now properly invalidates the cache and forces a fresh fetch from Tado, which is what you needed it to do all along after re-pairing a Smart AC controller.
State Restore
- Captures only persist on successful cloud writes (#278 - @Newreader, root-cause companion to v4.0.1's defensive 2-poll gate) — previously a snapshot was saved before the cloud write fired, so a failed write left a stale entry that could be replayed by a later overlay-cleared event. Captures now correspond to known-applied state changes only.
User-action consistency
- Every user action updates the dashboard immediately and rolls back on failure — temperature sliders already worked this way; HVAC mode dropdowns, timer buttons, water-heater on/off, boost/smart-boost buttons, and the
tado_ce.turn_off_all_zones,tado_ce.resume_schedule,tado_ce.set_open_window_mode, andtado_ce.restore_previous_stateservices now match. The dashboard updates the moment you click. If the cloud rejects or times out, the dashboard rolls back and an error toast surfaces in the UI.
i18n
- Mold Risk % renamed to Mold Risk Indicator (#90 - @ChrisMarriott38) — the numeric humidity sensor (added in v2.0.1) used to display as
Mold Risk %, which read like "percentage of mold risk" but is actually surface relative humidity. The trailing%also caused a slug collision on fresh installs because HA's slugify drops it, so the entity was landing assensor.<zone>_mold_risk_2. The friendly name is nowMold Risk Indicatoracross all seven locales (DE, ES, FR, IT, NL, PT translated via DeepL).
Home Assistant compatibility
- Removed a HA Core deprecation warning — Tado CE was using a device-tracker import path that HA Core marked deprecated and is removing in HA 2027.6. Switched to the current path. The "deprecated alias TrackerEntity was used from tado_ce" warning that appeared on every startup is gone. No behavioural change.
How to Update
From v4.0.1 stable, or any earlier beta: HACS → Tado CE → ⋮ → Redownload → tick "Need a different version?" → select v4.1.0-beta.2 → 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.1...v4.1.0-beta.2