🏠 HomeKit Local Control — Looking for Early Testers #219
Replies: 57 comments 103 replies
-
|
Absolutely, I'm on it! |
Beta Was this translation helpful? Give feedback.
-
HomeKit Polling Optimization — Live LogsBefore Deploy (old code — no skip logic)Every poll cycle fetches zoneStates from Tado cloud, even though HomeKit is providing live local data: Deploy + Restart (11:56)After Deploy (new code — skip logic active)Cloud data only fetched once every 30 minutes. Between fetches, HomeKit provides live local data: HomeKit Local Activity (running throughout)Cache refresh every 2 minutes keeps local data fresh, bridge pushes temperature changes in real-time: Summary
|
Beta Was this translation helpful? Give feedback.
-
|
Quick update on how things are looking after ~28 hours of HomeKit running on the live setup. I pulled the actual API call history and the numbers are pretty telling. Here's the last week side by side:
April 10 is a split day — the skip logic was deployed around 11:00 UTC. You can literally see it in the call history: every 5 minutes before deploy, then immediately drops to every 30 minutes after. April 11 is the first full day with HomeKit active and it's sitting at 29 calls so far. The HomeKit sensor is reporting 171 reads and 22 writes handled locally today alone. That's 193 API calls that never left the local network. And the writes are the interesting part — every single overlay change (temperature adjustments, mode switches) went through HomeKit locally. Zero write calls to the Tado API. For context, the March daily average was ~394 calls. We're now looking at maybe 50–80 calls for a full day once things settle. That's roughly an 80–85% reduction in API usage, and the data is actually fresher — HomeKit pushes temperature changes in real-time instead of waiting for the next 5-minute poll. Still early days, but the gut feeling is solid. HomeKit local control is doing exactly what we hoped — keeping the Tado bridge conversation local and only touching the cloud for things that genuinely need it (schedules, geofencing, hot water, etc.). What if Tado drops the API limit to 100 calls/day?Here's what the two worlds look like. Without HomeKit — it gets tight. The integration's adaptive polling would kick into Smart Day/Night mode to stretch the quota across 24 hours. Realistically you'd be looking at polling every 13–18 minutes during the day and every 2 hours at night. That's your temperature data being up to 18 minutes stale during the day. And every manual adjustment (changing temperature, switching modes) eats into that same 100-call budget — 10 adjustments across the day means 10 fewer temperature polls. If you have weather or mobile device tracking enabled, each poll costs 2–3 API calls instead of 1, which pushes the interval to 36–55 minutes between updates. At that point you're basically flying blind for long stretches. Automations that react to temperature changes would be working with data that's potentially 15–20 minutes old. Not great if you're doing anything time-sensitive. With HomeKit — you barely notice. Temperature and humidity still arrive in real-time via the local bridge connection. The cloud sync (for schedules, overlay status, geofencing) drops to once every 30–120 minutes depending on your setting, using maybe 12–48 of those 100 calls. The rest is headroom for writes and other operations. The key difference: writes go local. Setting temperature, switching heat on/off — those don't touch the API at all for heating zones. So your 100 daily calls are purely for cloud-only data, not for basic climate control. Here's the rough comparison:
The short version: without HomeKit, 100 calls/day means your HA dashboard is showing temperatures that could be 15–20 minutes old and every thermostat adjustment makes it worse. With HomeKit, your temperatures are still real-time and you've got plenty of API budget left over for the cloud-only stuff. It's the difference between "barely functional" and "you wouldn't even know there's a limit." I'm still doing final code revisions — cleaning up logging, cache handling, persistent storage, and the timeline target is still Monday 13 April or Tuesday 14 April for the dev build. Hang tight! |
Beta Was this translation helpful? Give feedback.
-
|
The dev build is up — v4.0.0-beta.1 is available now as a pre-release on GitHub. What's in itEverything from the earlier posts plus a few extras that came together this week:
One heads-up: connection sensors and the hot water power sensor have moved from How to install
If you're already paired with Apple Home, you'll need to unpair from there first — HomeKit only allows one controller at a time. You can re-expose climate entities to Apple Home via the HA HomeKit Bridge integration afterwards. Debug logginglogger:
default: warning
logs:
custom_components.tado_ce: debugWhat I'm looking forSame as before — different zone counts, bridge restarts, long-term stability, AC zones. Any feedback is gold. I'll be away tomorrow (birthday 🎂) so won't be responding until Tuesday. But don't let that stop you from posting — I'll catch up on everything when I'm back. cc @donnie-darko @hapklaar @ChrisMarriott38 @tonicb78 — the build you've been waiting for! |
Beta Was this translation helpful? Give feedback.
-
|
@hiall-fyi in doing testing of the beta with my window mode blueprint I think I may have found an issue in updating the climate entity state: These are the logs I get when calling the I can see that the device updates correctly in the tado app to show the 5.0°C overlay, however the Tado CE home assistant entity states don't change to reflect this - is it expected that they would reflect an overlay is active? state: attributes: When calling I have HomeKit paired successfully and I can see it is using it as the source for the temperature and humidity values. |
Beta Was this translation helpful? Give feedback.
-
|
@hiall-fyi Happy birthday! Hope you have a great day celebrating! So just to confirm in HA i have the Tado bridge added to the HomeKit integration.
So do i need to Delete it like this?
Then Add it via Tado CE? Does it have the option and create the same naming conventions? My thinking is the existing heating controller system i setup is based on the names. So i'm wondering if TADO CE lets you change the names in again so i can match them up so it all works as it does now? Going from 5 minute updates to 1s updates will be incredible. I think the Biggest of all bonus's here. Will be FAR FAR FAR superior open window detection. Actually far better than Tado's own implementation. And if there was a sensitivity option given the update speed is faster it would be a really responsive system. I noticed the Temp is faster updates. By any chance is Humidity faster also? |
Beta Was this translation helpful? Give feedback.
-
|
24 hours in, it looks like overnight the integration wasn't making use of the more timely HomeKit updates for sensor data: I'll see if I an pull some logs for the next overnight period/bring it forward with config. Current state ( |
Beta Was this translation helpful? Give feedback.
-
|
Interesting.... I'm noticing the Humidity updating far less than before actually.
I've noticed API calls reduce also.
|
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.2 is up — this one fixes the real-time update issue that @jeverley and @ChrisMarriott38 spotted. What changedThe core problem was that HomeKit events were updating an internal cache but not pushing those values to your entities until the next coordinator poll. So even though the bridge was sending temperature changes in real-time, your dashboard only picked them up every 5–30 minutes. That step pattern you were both seeing? Gone. Entities now get their own direct line to the HomeKit cache. When the bridge pushes a temperature or humidity change, the entity updates within a couple of seconds — no coordinator poll needed. Environment sensors (mold risk, dew point, comfort level, condensation, surface temp) all benefit from this too. I also fixed the service refresh gap @jeverley found — And the silent HomeKit write failure I mentioned to @ChrisMarriott38 — the integration now detects when a local write doesn't reach Tado's servers, clears the stale state, and falls back to the cloud API automatically. How to updateHACS → Tado CE → overflow menu (⋮) → Redownload → tick "Need a different version?" → select v4.0.0-beta.2 → download → restart HA. If you're already on beta.1, just update and restart — no config changes needed. What to look forThe big one is the temperature and humidity graphs. Where beta.1 showed steps every 5–30 minutes, you should now see smooth curves that track real-time changes from the bridge. Check your climate entity attributes — @hapklaar you mentioned pausing testing until beta.2 — this is the one. Your entities should now follow the real Tado status properly. Full changelog: https://github.com/hiall-fyi/tado_ce/releases/tag/v4.0.0-beta.2 cc @jeverley @ChrisMarriott38 @hapklaar @donnie-darko @tonicb78 |
Beta Was this translation helpful? Give feedback.
-
|
Already updated big grin. About to do some testing!! |
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.3 is up — this one addresses the issues @hapklaar and @ChrisMarriott38 reported. What changed
How to updateHACS → Tado CE → overflow menu (⋮) → Redownload → tick "Need a different version?" → select v4.0.0-beta.3 → download → restart HA. What to look for
Full changelog: https://github.com/hiall-fyi/tado_ce/releases/tag/v4.0.0-beta.3 cc @ChrisMarriott38 @jeverley @hapklaar @donnie-darko @tonicb78 @jeromewir |
Beta Was this translation helpful? Give feedback.
-
|
I already have the HA HomeKit integration configured, prior to Tado CE, and I have a lot of entities from it on dashboards already displaying homekit values. Do I really have to remove the homekit integration to reconnect to it in CE, or could CE not use those already existing HomeKit entities? |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.4 is up — mostly HomeKit data quality improvements and better diagnostics. What changedThe thermal analytics sensors (Heating Acceleration and Approach Factor) were showing wild values when HomeKit was connected — things like -20°C/h² when it should be around 5. Turned out HomeKit and cloud data arriving within the same second created duplicate temperature readings that threw off the math. Fixed with deduplication and sane-value bounds. Your actual heating behaviour was never affected — just those two diagnostic display sensors. On the improvements side:
How to updateHACS → Tado CE → overflow menu (⋮) → Redownload → tick "Need a different version?" → select v4.0.0-beta.4 → download → restart HA. No config changes needed if you're already on beta.3. As a reminder, v4.x requires Home Assistant 2025.11 or later (needed for the What to look for
Full changelog: https://github.com/hiall-fyi/tado_ce/releases/tag/v4.0.0-beta.4 cc @ChrisMarriott38 @jeverley @hapklaar @donnie-darko @tonicb78 @jeromewir @Si-Hill |
Beta Was this translation helpful? Give feedback.
-
|
Folks, quick heads-up on what's coming in beta.5 — it's mostly behind-the-scenes work, but it should make things noticeably more reliable. What's changing: 🗄️ Cleaner data storage — Tado CE used to save your data in three different ways depending on what it was (zone temperatures, rate limits, settings, etc.). Beta.5 moves everything into one consistent system — Home Assistant's built-in storage. This means:
🔄 Smooth upgrade from any version — Whether you're on v3.5.3 or any of the v4 betas, your data migrates automatically the first time you start beta.5. Old files are kept as backups just in case. 🏠 HomeKit mapping is more resilient — If your bridge connects before the cloud has synced (common on first install or after a restart), Tado CE now retries the zone mapping automatically instead of giving up. One less thing to worry about. 🐛 Bug fix — Fixed a startup warning about blocking I/O when schedule data hasn't been fetched yet (thanks @ChrisMarriott38 for flagging this in the discussion). Still investigating one thing before releasing — @ChrisMarriott38 spotted some humidity sensors that might not be updating as expected through HomeKit (#224). Want to make sure that's sorted (or confirmed as a known limitation) before pushing beta.5 out. Stay tuned! |
Beta Was this translation helpful? Give feedback.
-
|
I found a problem always related to the presence mode. |
Beta Was this translation helpful? Give feedback.
-
|
Sorry if I've missed it, has select.tado_ce_hub_ce_overlay_mode gone in v4? EDIT - I see zone control is moved to centralised Options Flow, but still not sure how to achieve the below I'm trying to set the HVAC mode of my home office to 'OFF' when I'm in the (work) office, but leave the rest of the house on normal schedule as others are home. The issue I run into is that if I have previously made a change in the Tado app e.g. temp change for 20 mins, then "climate.set_hvac_mode" uses 20mins, rather than until I revert the settings. I was hoping to use this overlay command to overcome this. Other options I considered is to use the "tado_ce.set_climate_timer" and set the overlay or tado_ce.set_open_window_mode set to indefinite, however if the others go out and AWAY mode is set, this sets an annoying notification from the Tado app that some rooms are being manually controlled. Is there another option I'm missing? |
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.11 is out 🔧
|
Beta Was this translation helpful? Give feedback.
-
|
I'm loving local control with HomeKit, however, this weekend was warmer than usual and the heating was still on in some rooms. My wife turned off the heating in all rooms via the Tado App but the heating continued running. Do I need to change something so that Tado CE responds to the manual change in the Tado app quicker? |
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.12 is out 🔧 This one fixes three bugs reported by you lot during beta.11 testing, plus better logging for Smart Valve Control troubleshooting. Bug fixes: 🔧 Overlay mode now respected when changing HVAC mode — @mpartington reported that setting overlay mode to "Manual" had no effect when using 🔧 Climate entities no longer stuck at null after HA restart — @Newreader found that some climate entities would show blank temperature and controls for up to 3 hours after a restart. An automation firing during startup was marking entities as "fresh" before they had any data, which blocked the first update from populating them. The freshness check now lets updates through when an entity has no data yet. 🔧 "Invalid repairs platform" error gone — @simonotter spotted this in the startup logs. HA was trying to register an internal module as a repairs platform. Renamed so HA no longer picks it up. Improvements: 📊 Smart Valve Control now logs at info level — @simonotter was having trouble seeing SVC logs because debug output from 16 zones filled the log buffer too fast. All SVC state changes, write decisions, and startup status now appear at info level. You no longer need debug logging enabled to see what the controller is doing. After updating, you can remove any Upgrade notes:
To update: HACS → Tado CE → ⋮ → Redownload → tick "Need a different version?" → select v4.0.0-beta.12 → Restart HA cc @ChrisMarriott38 @jeverley @hapklaar @dragorex71 @Si-Hill @wrowlands3 @donnie-darko @tonicb78 @jeromewir @simonotter @driagi @mpartington @Newreader |
Beta Was this translation helpful? Give feedback.
-
|
Hi @hiall-fyi , there is still a problem with presence mode but i think it is related to a localization issue. |
Beta Was this translation helpful? Give feedback.
-
|
Hei @hiall-fyi
|
Beta Was this translation helpful? Give feedback.
-
|
Ok I have found the problem. But every attempt to change manually the PRESET in a climate card fails. It accepts only Home |
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.13 is out 🔧 Three fixes from your reports in this thread, plus a new startup event for automations. Bug fixes: 🔧 Presence changes now stick — @dragorex71 reported that switching to Away via the Hub select or climate card preset would flash briefly then snap back to "Home". The API call was going through fine, but the automatic refresh that fires right after was reading stale cached data and overwriting the change. Both the Hub select and climate card preset paths now update the internal cache so the refresh picks up the correct value. 🔧 Presence labels now match across the UI — @dragorex71 also spotted that the Hub select showed "Casa"/"Via" in Italian while the climate card showed "In casa"/"Fuori casa". Labels are now aligned to match HA core's climate preset translations across all 6 languages. 🔧 Smart Valve Control cloud writes fixed — @simonotter's "cloud write failed" warnings in #221 turned out to be a missing field in the API request. The controller was running and evaluating but every cloud write was silently rejected by Tado's servers. If you're using SVC without HomeKit, it should actually work now. New: 🆕 Upgrade notes:
To update: HACS → Tado CE → ⋮ → Redownload → tick "Need a different version?" → select v4.0.0-beta.13 → Restart HA cc @ChrisMarriott38 @jeverley @hapklaar @dragorex71 @Si-Hill @wrowlands3 @donnie-darko @tonicb78 @jeromewir @simonotter @driagi @mpartington @Newreader |
Beta Was this translation helpful? Give feedback.
-
|
Just released v4.0.0-beta.14. Here's what's in it: New: Offset Sync — a second Smart Valve Control mode. Instead of adjusting the TRV's target temperature (Valve Target mode), it writes a device offset so the Tado app shows your external sensor's reading directly. Tado's own modulation then works with accurate data. Pick between Off / Valve Target / Offset Sync per zone in your External Sensors settings. Fixed: SVC now watches the schedule while active — if your schedule goes to OFF or changes target, the controller responds immediately instead of continuing with the old value (#251). Also fixed SVC crashing on startup when a zone's schedule is OFF (#252), HomeKit not pushing target temp / mode changes from the Tado app to HA (#253), Weather Compensation going "Unknown" during brief outdoor sensor gaps (#249), and the floating point decimals in valve_target (pulse-card#45). Improved: SVC reports its state even when idle (so Pulse Card can show it), logging is visible without debug mode, and bridge serial is now redacted from diagnostics. This should be the last beta before GA. The plan is to release 4.0.0 on 22 May if no blockers come up in the next two weeks. After that I'll be away for a couple of weeks on holiday, so if you spot anything weird on beta.14 please shout sooner rather than later. Massive thanks to everyone who's been testing and reporting through the beta cycle. Fourteen releases, dozens of bug reports, countless logs and screenshots — this integration is genuinely better because of your feedback. Full credits in CREDITS.md. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
Just released v4.0.0-beta.15. Two things in this one: a Settings UX reorganisation, and a big reliability pass from a full pre-GA audit — 40+ latent issues fixed across Smart Valve Control, Offset Sync, HomeKit interactions, auth, and storage. Settings UX revamp
New: Offset Sync sensitivity is now configurable per zone (0.5–3.0°C). Higher values = fewer TRV writes = better battery life, at the cost of slightly less precise temperature display in the Tado app. Find it in Zone Configuration → External Sensors → Offset Sync Sensitivity (only shows when Offset Sync is selected). Offset Sync fixes (all from this thread)
Smart Valve Control fixes
HomeKit fixes
Climate control
Weather Compensation
Auth & storage resilience
Data integrity & privacy
Performance & storage
Log output
Still targeting GA for late May. If you spot anything off on beta.15, let me know — this is the "soak test" release before the final cut. |
Beta Was this translation helpful? Give feedback.
-
|
This is absolutely amazing work. I updated about 4hrs ago and so far, just from a SVC and Offset Sync point of view, it's working much better. I'll let a few days and heat cycles pass for more testing. |
Beta Was this translation helpful? Give feedback.
-
|
v4.0.0-beta.16 is out 🐛 Small follow-up release after beta.15. Two issues surfaced this week: #261 (@apilone) — A zone state desync (turning a zone OFF/HEAT from the Tado app didn't reflect in HA) turned out to be hiding a second, bigger problem: when the HomeKit bridge went unreachable, the integration's setup-retry loop re-fetched every zone's schedule from the cloud each time, draining ~500 calls in two idle hours. Both fixed — the merge gate now distinguishes legitimate user actions from stale bridge echoes (using the bridge's last-changed timestamp, not just last-observed), and schedule fetch reuses the local cache on retry plus skips entirely under low API quota. #262 (@simonotter) — A chart showing Offset Sync pegged at +10°C kicked off a cache-poisoning audit. Three related bugs in the offset write path:
While auditing the rest of the cache write paths for similar shapes, I caught one more — picking Presence Mode "Auto" used to force the cached home presence to "Home" regardless of what geofencing actually had it set to, so the climate card's Home/Away chip read wrong for one poll cycle when you flipped to Auto from outside. Fixed; the cache now waits for the next poll to fill in the real value. Also fixed: Early Start and Child Lock switches not rolling back the dashboard state when an API write failed during a rate-limit window. And the HomeKit bridge's 2-minute keepalive poll no longer masquerades as a real value change — target temperature and HVAC mode now correctly fall back to cloud when the bridge hasn't actually seen an event in the last 5 minutes. GA target is still late May. If you spot anything off on beta.16, please shout — comment on this thread or open an issue. Thanks again to @apilone and @simonotter for the detailed reports and follow-up logs that made this round of fixes possible. |
Beta Was this translation helpful? Give feedback.
-
v4.0.0 — GA cut 🎯That's the 4.0 cycle done. Sixteen betas of work landing as one stable tag — thanks to everyone in this thread who reported bugs, posted screenshots, ran debug logs across multiple rounds, and tolerated the back-and-forth. The release exists in shippable form because of the data and patience you brought. Headline changes since v3.5.3: 🎯 HomeKit Local Control — Pair your Tado Internet Bridge over HomeKit and temperature / mode changes go through your local network, with sensor pushes arriving within ~2 seconds. Cloud-only mode is bound by your polling interval (typically 5–30 min), so this is a meaningful shift in responsiveness for anything that reacts to room temperature. Cloud fallback runs automatically if HomeKit drops, and the integration tracks how many API calls HomeKit saves you per day. 🌡️ Smart Valve Control — Two modes for compensating inaccurate TRV readings, picked per zone:
Adjustments go via HomeKit when available (no API cost), with cloud as fallback. The controller backs off on manual changes and resumes on the next schedule block. 🌤️ A quieter integration — Token refreshes ~50% less often, weather and zone polling stretch when HomeKit has live data, insight history writes drop ~50%, boiler flow temperature polls the bridge directly (no Tado quota), and the API call history attribute caps at 10 entries instead of 100. Daily API usage on a home with HomeKit connected and a 60-min Cloud Refresh should sit comfortably below the Tado limit. Plus a Last-mile polish since beta.16A few things landed between beta.16 and the GA cut:
To update: HACS → Tado CE → ⋮ → Redownload → tick "Need a different version?" → select v4.0.0 → Restart HA. If you spot anything off after upgrading — please open a fresh issue or comment on this thread. The thread will stay open as a 4.x soak-test channel for a while; standalone reports get tracked better as separate issues. Thanks to everyone who supported the project through Buy Me a Coffee — it genuinely helps. |
Beta Was this translation helpful? Give feedback.




























Uh oh!
There was an error while loading. Please reload this page.
-
HomeKit local control for Tado CE is in solid working condition. We've verified it on a live setup with 9 heating zones — reads, writes, and cloud outage resilience all working. We're looking for a few more people to test it over the next week or two before releasing v4.0.0.
Related: Discussion #200, Discussion #29, Discussion #151, Issue #201, Issue #124, Issue #4
Our approach
Everything is built into one integration — no extra servers, no second integration to manage, no manual entity matching. You enable HomeKit in the settings, enter your PIN, and you're done. Cloud and local data are merged automatically, and fallback between the two is seamless.
How it works
Reads
Temperature and humidity come from your bridge over the local network. Each climate entity shows where its data is coming from via the
temperature_sourceattribute:homekit,cloud, orexternal(if you've configured an external HA sensor in Zone Configuration). Priority: external > HomeKit > cloud.Writes
The integration tries the local path first for temperature and HVAC mode changes. If that fails, it falls back to the cloud. The
last_write_sourceattribute shows which path was used.AC fan and swing controls aren't available via HomeKit, so those always go through the cloud. Heating power, battery, schedules, hot water, geofencing, and open window detection also remain cloud-only.
Live test results
Tested on HA 2026.4.1 with 9 heating zones:
Cloud outage test
We blocked all Tado cloud traffic at the firewall and reloaded the integration. 0 out of 9 zones became unavailable — all continued reporting live temperature and humidity via the local HomeKit connection.
What's still in progress
We're fine-tuning the config flow UI and implementing adaptive polling optimisation to save even more API calls when HomeKit is connected. Target: dev build ready by Monday 13 April or Tuesday 14 April.
How to try it
Requirements
IB)Setup
123-45-678). Digits only without dashes won't work.Debug logging
Add this to your
configuration.yamlso we can diagnose any issues:You can remove it once the stable release is out.
What we'd like feedback on
Drop a comment if you're interested.
cc @ChrisMarriott38 @chinezbrun @wrowlands3 @hapklaar @thefern69 @StreborStrebor @donnie-darko — you've all shown interest in local control or HomeKit in past discussions. Would love to have you try this out!
Beta Was this translation helpful? Give feedback.
All reactions