Objetivo
Apagar todas las luces de la casa cuando las dos personas que viven en ella llevan 10 minutos fuera, sin que un móvil sin ubicación lo dispare por error.
Requisitos
- Una persona por cada miembro de la casa:
person.anayperson.alex. Se crean en Ajustes → Personas → Añadir persona. - La app Companion de Home Assistant en cada móvil, con la ubicación activada. Cada app crea un rastreador (
device_tracker.movil_de_ana) que se asigna a su persona en Ajustes → Personas → Ana → Dispositivos rastreados.
Qué es una persona
Una persona junta todos los rastreadores de alguien (el GPS del móvil, el router, un llavero Bluetooth) en una sola entidad con un estado fácil de leer:
Estado de person.ana | Significa |
|---|---|
home | Está en casa (zona zone.home) |
not_home | Está fuera de cualquier zona |
Trabajo, Colegio… | Está dentro de otra zona que hayas creado |
unknown o unavailable | Home Assistant no sabe dónde está: móvil apagado, sin datos o sin permiso de ubicación |
Además, el estado de zone.home es el número de personas que hay en casa. Úsalo cuando te dé igual quién sea.
El código
alias: "Apagar todas las luces al salir todos"
description: "Apaga las luces cuando Ana y Alex llevan 10 minutos fuera de casa."
mode: single
triggers:
- trigger: zone.left
target:
entity_id:
- person.ana
- person.alex
options:
zone: zone.home
behavior: all
for: "00:10:00"
conditions:
# Si no sabemos dónde está alguien, no se apaga nada.
- condition: not
conditions:
- condition: state
entity_id: person.ana
state:
- unknown
- unavailable
- condition: state
entity_id: person.alex
state:
- unknown
- unavailable
actions:
- action: light.turn_off
target:
entity_id: all
- action: notify.mobile_app_movil_de_ana
data:
title: "Casa vacía"
message: "No queda nadie en casa: luces apagadas."
Cambia person.ana, person.alex y el servicio de notificación por los tuyos.
Cómo funciona
zone.leftconbehavior: allsolo se dispara cuando la última de las personas indicadas sale de casa. Coneachse dispararía con cada salida y confirst, con la primera.for: "00:10:00"espera a que las dos lleven 10 minutos fuera. Evita apagar si alguien solo baja a por el pan o si el GPS da un salto momentáneo.- La condición de
unknownyunavailablees la parte importante. Los disparadores por zona dejan fuera de la cuenta a quien no tiene ubicación. Sin esta condición, si el móvil de Alex se queda sin batería en el sofá, bastaría con que Ana saliera para apagar las luces con Alex dentro. notcon dos condiciones se cumple solo si ninguna es cierta, es decir, si las dos personas están localizadas. Van separadas a propósito: una condición de estado con varias entidades solo es cierta si lo están todas, y aquí basta con que falte una.entity_id: allapaga todas las luces de Home Assistant. Para apagar solo una planta o una zona, usafloor_id: planta_bajaoarea_id: salonen eltarget.- Tres o más personas: añádelas a
targety a la condición. Si quieres «cuando no quede nadie», también sirve un disparador de estado sobrezone.homeconto: "0".
Para ver por qué Home Assistant cree que alguien está fuera, abre su persona y mira el historial y los rastreadores que la alimentan.
Resultado
18:05 · Ana sale de casa (Alex ya estaba fuera)
18:15 · Las dos llevan 10 minutos fueraTodas las luces apagadas
Notificación: «No queda nadie en casa: luces apagadas.»Con la misma idea se puede armar la alarma al irse todos y desarmarla al volver: lo explicamos en Arma y desarma tu alarma Ajax al salir y al volver.