Skip to content
All articlesEnergy

Tado in Home Assistant without a subscription: local via HomeKit

Without Auto-Assist you get just 100 Tado cloud calls a day. Here is how to drive your heating locally over HomeKit and stay well under that limit.

Published
Reading time
3 min read
Level
Intermediate
Tested on HA
2026.10
Lees in het Nederlands

Somewhere around four in the afternoon, your heating stops responding to anything. No error, no red cross in Home Assistant, just a thermostat quietly ignoring your automations. You have hit your limit.

Tado throttles calls to its cloud API: without an Auto-Assist subscription you get 100 a day, with one you get 20,000. The cloud integration in Home Assistant polls for status on a schedule, so with a handful of zones you are through your budget long before evening. The odd part is that you do not need that subscription at all. Move the day-to-day control local, and keep the cloud for the few things that genuinely require it.

Connecting locally over HomeKit

The Tado V3 and V3+ Internet Bridge speaks HomeKit, and Tado itself points you at that local route. Home Assistant talks to it directly through the HomeKit Device integration: no cloud, no limit.

  1. Unpair the bridge in Apple's Home app if it is already paired there. A HomeKit accessory accepts only one controller at a time, so as long as Apple is holding it, Home Assistant cannot get in.
  2. Home Assistant then discovers the bridge automatically under Settings → Devices and services.
  3. Enter the HomeKit code printed on the bridge.

You get a climate entity per zone with the current temperature, the setpoint and the mode.

Cloud as a supplement only

A few things only arrive over the cloud, such as account details and the open-window alert. If you want to keep those, leave the Tado cloud integration in place but disable polling in its system options. It then stops asking anything on its own and burns no calls in the background.

Keeping automations frugal

  • Only drive a zone when the new state differs from the current one. A single condition on hvac_mode saves you dozens of pointless calls a day.
  • Bundle your changes. Switch every zone off in one automation when you leave, rather than one automation per zone with its own trigger.
  • Work with groups per room instead of individual radiator valves. If a room has two valves, name them <room>_tado_valve_1 and _2 and address only the room.
- alias: Verwarming uit bij vertrek
  triggers:
    - trigger: state
      entity_id: group.iedereen
      to: not_home
      for: '00:15:00'
  actions:
    - action: climate.set_hvac_mode
      target:
        entity_id: >
          {{ states.climate | selectattr('state', 'ne', 'off')
             | map(attribute='entity_id') | list }}
      data:
        hvac_mode: 'off'

What it gets you

Since switching over, my heating runs an entire day without a single cloud call for ordinary control. The daily budget stays fully available for the handful of things that really do need the cloud, and in the evening the thermostat simply responds again.

Frequently asked questions

Should I remove the Tado cloud integration? Not necessarily. Leave it for what cannot be done locally, but turn polling off. You then only spend calls when an automation actually asks for something.

Does this work with Tado X? Tado X goes local over Matter rather than HomeKit. The principle is identical: local control for the daily work, cloud as a supplement.

How do I switch my heating off and back on intelligently? Read restoring heating after you get home. It covers switching zones off on departure without overwriting your own choices.