La escena se repite todos los inviernos: alguien abre la ventana de la pieza para ventilar, sale, cierra la puerta, y la ventana queda abierta las dos horas siguientes con la estufa funcionando al máximo del otro lado. El termostato no está haciendo nada malo. detecta que la pieza está fría y calienta más. , simplemente no tiene cómo saber que el calor se está yendo por la ventana.
La solución no es un equipo caro: es un sensor magnético de ventana de un par de miles de pesos y dos automatizaciones en Home Assistant. Una te avisa al celular cuando una ventana lleva 15 minutos abierta; la otra no espera a que nadie reaccione y baja la calefacción sola mientras tanto.
Al final de este artículo vas a tener las dos automatizaciones funcionando, vas a entender por qué el retardo en el disparador es la pieza clave del diseño, y vas a saber cómo fabricar tú mismo el sensor con un ESP32 y un reed switch si prefieres no comprar uno.
Por qué el contacto barato alcanza
Los fabricantes de termostatos inteligentes venden sus propios contactos de ventana, y cuestan varias veces más que un sensor genérico. Su ventaja real es una sola: hablan directo con el termostato, sin pasar por una central. Si tu termostato y tu contacto son de la misma marca, se entienden solos aunque el resto de la casa esté apagada.
Ahora bien: si ya tienes Home Assistant corriendo, esa ventaja desaparece. Cualquier contacto magnético. Zigbee, Z-Wave, WiFi o uno hecho con un ESP32. aparece en Home Assistant como un binary_sensor con dos estados, on (abierta) y off (cerrada). A partir de ahí, Home Assistant es quien le da la orden al termostato, y el protocolo del sensor deja de importar por completo.
Vale la pena entender qué hay dentro del sensor, porque explica por qué es tan barato y tan confiable. Son dos piezas: un reed switch (dos láminas ferromagnéticas dentro de una ampolla de vidrio sellada) que se instala en el marco, y un imán que se instala en la hoja de la ventana. Cuando el imán está cerca, las láminas se atraen y cierran el circuito; cuando se aleja unos milímetros, se separan y lo abren. No hay electrónica de medición, no hay calibración, no hay deriva en el tiempo. Es el mismo principio de los sensores de alarma domiciliaria de hace cuarenta años, y por eso las baterías duran años: el circuito solo consume cuando el estado cambia.
Su limitación es la contracara de su simplicidad: el sensor no sabe cuánto está abierta la ventana. Entreabierta o abierta de par en par son el mismo estado. Para efectos de la calefacción da lo mismo. en ambos casos hay que dejar de calentar. , pero conviene tenerlo claro antes de esperar algo que no puede entregar.
Parte 1: el aviso a los 15 minutos
El primer mecanismo es una notificación al celular. La clave del diseño está en el retardo: no queremos un aviso cada vez que alguien abre una ventana, queremos un aviso cuando alguien la olvidó abierta. Quince minutos es un buen punto: suficiente para una ventilación normal, poco para que la pieza se enfríe de verdad.
Home Assistant resuelve esto con un disparador de estado con duración. La automatización no se ejecuta si la ventana se cierra antes de que pase el tiempo: el temporizador se cancela solo.
Esta es la automatización del artículo original, tal como está publicada:
alias: Fenster offen – Erinnerung Kinderzimmer
triggers:
- trigger: state
entity_id:
- binary_sensor.fenster_kinderzimmer_1
- binary_sensor.fenster_kinderzimmer_2
to: "on"
for:
minutes: 15
actions:
- action: notify.mobile_app_euer_handy
data:
title: "Fenster offen"
message: "{{ trigger.to_state.name }} steht seit 15 Minuten offen."
mode: parallel
Para adaptarla tienes que cambiar tres cosas: los entity_id de binary_sensor.fenster_kinderzimmer_1 y _2 por los de tus propios contactos, el destino notify.mobile_app_euer_handy por el de tu teléfono, y los textos de title y message. El nombre exacto de tu acción de notificación lo encuentras en Herramientas para desarrolladores → Acciones escribiendo "mobile_app": corresponde al nombre del dispositivo en la app companion.
Tres detalles que hacen la diferencia entre que esto funcione bien o mal:
mode: parallelno es decorativo. Si dos ventanas quedan abiertas al mismo tiempo y dejas el modo por defecto (single), Home Assistant ejecuta la primera instancia y descarta silenciosamente la segunda, con una advertencia en el log que nadie lee. Recibes un solo aviso por dos ventanas abiertas. Conparallel, cada disparo corre por su cuenta.trigger.to_state.nameinserta automáticamente el nombre de la entidad que disparó. Con eso, una sola automatización sirve para todas las ventanas de la casa y el mensaje te dice cuál es.- La sintaxis en plural (
triggers:/actions:) corresponde a Home Assistant 2024.10 en adelante. Si tu instalación es anterior, usatrigger:yaction:en singular; la lógica es idéntica.
Si prefieres no escribir YAML, existe un blueprint de la comunidad, Entity State Notification de panhans, que hace lo mismo y agrega cosas útiles: notificar a varios dispositivos, repetir el aviso mientras la ventana siga abierta, y pausarlo desde un botón en la propia notificación. Se importa desde Ajustes → Automatizaciones y escenas → Blueprints → Importar blueprint, y la configuración del artículo original queda así:
alias: Fenster offen Benachrichtigung
use_blueprint:
path: panhans/entity_state_notification.yaml
input:
input_entities:
- binary_sensor.fenster_kinderzimmer_1
- binary_sensor.fenster_kinderzimmer_2
input_entity_states:
- "on"
input_entity_state_duration:
hours: 0
minutes: 15
seconds: 0
input_notify_devices:
- euer_handy_geraete_id

Cuál de las dos usar es cuestión de gusto. La automatización propia no depende de nada externo y se escribe en un minuto; el blueprint se justifica apenas quieras repeticiones o varios destinatarios.

Parte 2: la calefacción se baja sola
El aviso solo ahorra dinero si alguien reacciona. El segundo mecanismo no necesita a nadie: apenas el contacto reporta "abierta", el termostato pasa a protección antihelada, y cuando reporta "cerrada", vuelve a su programa normal.
alias: Kinderzimmer – Heizung bei offenem Fenster
triggers:
- trigger: state
entity_id: binary_sensor.fenster_kinderzimmer_1
to: "on"
for:
minutes: 1
id: offen
- trigger: state
entity_id: binary_sensor.fenster_kinderzimmer_1
to: "off"
id: zu
actions:
- choose:
- conditions:
- condition: trigger
id: offen
sequence:
- action: climate.set_temperature
target:
entity_id: climate.kinderzimmer_1_heizung
data:
hvac_mode: heat
temperature: 5
- conditions:
- condition: trigger
id: zu
sequence:
- action: climate.set_hvac_mode
target:
entity_id: climate.kinderzimmer_1_heizung
data:
hvac_mode: auto
mode: restart
Acá cambias binary_sensor.fenster_kinderzimmer_1 por tu contacto y climate.kinderzimmer_1_heizung por tu entidad de clima. Las decisiones de diseño que hay detrás valen más que el código:
- El minuto de retardo en el disparador de apertura evita que una ventilación corta apague y encienda el equipo cada vez. Encender y apagar un compresor o una resistencia repetidamente desgasta el equipo y consume más que dejarlo andar.
- Bajar a 5 °C en vez de apagar. En protección antihelada la válvula o el equipo sigue respondiendo a Home Assistant y no pierde su configuración. Un apagado completo también funciona, pero varios termostatos pierden el programa semanal o recién se reportan en el siguiente ciclo de comunicación.
- Volver a
autoy no a una temperatura fija. Si al cerrar la ventana fijas 21 °C, acabas de anular el programa horario del termostato para el resto del día. Conauto, el equipo retoma su propia programación. mode: restarthace que una secuencia rápida de abrir cerrar abrir termine siempre en el último estado real, cancelando la ejecución anterior en curso.
Si usas la integración Better Thermostat (HACS), esto viene incluido y no necesitas la automatización: en las opciones de cada instancia hay un campo de sensor de ventana donde se indica el binary_sensor, más un retardo configurable y una temperatura exterior de corte sobre la cual directamente no se calienta.

Una advertencia que el autor del artículo original descubrió revisando su propia instalación, y que vale para cualquiera: al migrar desde automatizaciones propias hacia una integración como Better Thermostat, es fácil que queden piezas sin cubrir por ninguno de los dos mecanismos. Las automatizaciones viejas se desactivan, la integración nueva no tiene el sensor configurado, y nadie lo nota porque no hay error: simplemente la calefacción de esa pieza nunca se baja. Después de cualquier cambio, revisa instancia por instancia que cada una conozca su sensor.
Qué NO puede hacer este montaje
- Entreabierta y abierta son lo mismo. Si quieres seguir calentando con la ventana entreabierta, necesitas un segundo imán en una posición que solo se alcance con la ventana completamente abierta, o un sensor con detección de inclinación.
- Cualquiera puede girar la perilla. Si el termostato es manipulable a mano, alguien va a subirlo. Better Thermostat impone sus valores, pero recién en el siguiente ciclo de control.
- El aviso no reemplaza una conversación. Después de la tercera notificación del día, el problema dejó de ser técnico. Por eso la segunda automatización es la que realmente importa: funciona aunque nadie haga caso.
Variantes y mejoras
Fabrica el sensor tú mismo con ESP32 y ESPHome. Un reed switch cuesta muy poco y un ESP32 lo lee en un pin con resistencia pull up interna. En ESPHome se declara como un binary_sensor de tipo GPIO con el dispositivo configurado como window, y aparece en Home Assistant igual que un sensor comercial. El punto delicado es la energía: un ESP32 conectado permanentemente a WiFi consume del orden de decenas de miliamperes y se come una batería en días. Las dos salidas son alimentarlo desde un cargador USB si la ventana tiene enchufe cerca, o usar deep sleep con despertar por GPIO, de modo que el módulo duerma consumiendo microamperes y solo despierte para reportar cuando el reed cambia de estado. Con esa configuración una celda 18650 aguanta meses.
Adáptalo a la calefacción chilena. Acá la calefacción central por radiadores es la excepción, no la regla. Si calientas con una estufa eléctrica, reemplaza la acción climate.* por un switch.turn_off sobre un enchufe inteligente. Si tienes aire acondicionado con bomba de calor, la entidad climate de tu split funciona exactamente igual que en el ejemplo, ya sea vía integración nativa o con un emisor infrarrojo. Con estufa a gas o parafina no hay nada que automatizar, pero la notificación sigue siendo útil, y ahí conviene agregar un sensor de CO al mismo tablero: ventana cerrada y estufa encendida es justamente la combinación peligrosa.
Agrega el ángulo de la humedad. En buena parte del país el problema del invierno no es solo la pérdida de calor, es la condensación y el hongo. Suma un sensor de temperatura y humedad al dormitorio y dale vuelta la lógica: en vez de avisar que la ventana lleva mucho abierta, que te avise cuando la humedad relativa supere el 70% y la ventana lleve horas cerrada. Es la misma estructura de automatización con el disparador invertido.
Un panel con todas las ventanas. Con más de dos o tres contactos, arma una tarjeta de entidades en el panel con el estado de cada ventana y usa un grupo para un aviso único al salir de la casa: si cualquier contacto está en on cuando la última persona se va, notifica antes de que sea tarde.
Personalización para Chile
Si vas por la ruta de fabricar el sensor, todo lo necesario es material de catálogo en MechatronicStore:
- Placa ESP32 DevKit. el cerebro del contacto de ventana con ESPHome. También sirve un ESP32-C3, que consume menos en deep sleep.
- Sensor magnético reed switch (con su imán). el detector propiamente tal. Existe tanto el reed suelto en ampolla de vidrio como el conjunto encapsulado tipo alarma, que es más robusto para montar en un marco y trae los orificios de fijación.
- Batería 18650 con su portapilas, o alternativamente una fuente 5 V si la ventana tiene enchufe cerca.
- Jumpers hembra hembra para conectar el reed al ESP32 sin soldar durante las pruebas.
Y si prefieres el camino del servidor propio en vez de la nube:
- Raspberry Pi con tarjeta microSD. para correr Home Assistant en casa. Es la instalación más común y la que usa el artículo original; una Pi con 4 GB de RAM sobra para una casa con decenas de dispositivos.
- Si vas a usar sensores Zigbee comerciales en vez de fabricarlos, necesitas además un coordinador Zigbee USB conectado a la Pi.
Un detalle de costo que ordena la decisión: el software (Home Assistant, ESPHome, Better Thermostat) es gratuito y de código abierto, así que el gasto real es solo el hardware. Fabricar el contacto con ESP32 tiene sentido si ya tienes las placas o quieres aprender ESPHome; si necesitas equipar seis ventanas, un contacto Zigbee comercial por ventana suele salir más barato y consume mucho menos. Los precios y códigos exactos conviene confirmarlos en el catálogo al momento de comprar.
Recursos
- Artículo original (en alemán): Fenster offen, Heizung an? Home Assistant erinnert die Kinder, und regelt die Heizung runter. raspberry.tips, por Philipp Schweizer
- Blueprint Entity State Notification: panhans/entity_state_notification.yaml
- Integración Better Thermostat: KartoffelToby/better_thermostat
- Documentación del disparador de estado: Home Assistant. State trigger
Artículo inspirado en el proyecto publicado en raspberry.tips, con adaptación a la calefacción chilena, análisis propio de las decisiones de diseño y una variante para fabricar el sensor con ESP32 y componentes en stock local en MechatronicStore.




