Sync Windows Sensors with tado Thermostat in Home Assistant
tado's built-in Window-Open-Detection never works. So I installed windows contacts and connected them to tado with Home Assistant.
tado Thermostats have a built-in Window-Open-Detection mechanism, which is based on a temperature sensor inside the thermostat to detect a sudden drop in temperature as an open window. Unfortunately, this never works. So I installed windows contacts and connected them to tado with Home Assistant.
tado's built-in Window-Open-Detection comes with several flaws:
- Very unreliable
- Requires a paid subscription
- Cannot detect, when a window got closed
Although the tado community has been requesting window contacts from tado for years, the company refused to offer some. So I had to come up with a self-made solution: I've built a Blueprint for Home Assistant, which observes one or many window sensors from any manufacturer (I chose the Aqara Door & Window sensor). If one of these windows gets opened, the heating in the room will be disabled. When the last open window got closed, the heating will continue.

Here is the blueprint:
blueprint:
name: Open window heating sync
description: Turns heating off, when any of the selected windows got opened
domain: automation
input:
window_entities:
name: Windows
description: The window sensores in the room to observe
default: []
selector:
entity:
domain: binary_sensor
device_class: opening
multiple: true
heating_entity:
name: Heating
description: The heating system in the room to turn on or off
selector:
entity:
domain: climate
variables:
window_entities: !input window_entities
trigger:
- alias: When any window got opened or closed
platform: state
entity_id: !input window_entities
action:
- alias: Choose, if heating needs to be turned on or off
choose:
- alias: Turn heating off, when any window is open
conditions:
- alias: Check, if any window is open
condition: state
state: "on"
match: any
entity_id: !input window_entities
sequence:
- alias: Turn heating off
service: climate.set_hvac_mode
data:
hvac_mode: "off"
target:
entity_id: !input heating_entity
- alias: Turn heating on, when all windows are closed
conditions:
- alias: Check, if any window is open
condition: state
state: "off"
entity_id: !input window_entities
sequence:
- alias: Turn heating on
service: climate.set_hvac_mode
data:
hvac_mode: auto
target:
entity_id: !input heating_entity
config/blueprints/automation/common/open_window_heating_sync.yaml
All you need to do, is to place this script at the config/blueprints/automation/common/
folder of your Home Assistant installation. After a restart, you can connect the windows of each room with the tado heating room in the Automations UI.

☝️ Advertisement Block: I will buy myself a pizza every time I make enough money with these ads to do so. So please feed a hungry developer and consider disabling your Ad Blocker.