Objetivo
Recibir un aviso por cada ventana que siga abierta 10 minutos después de abrirla, aunque se abran varias seguidas.
Requisitos
- Varios sensores de ventana:
binary_sensor.ventana_salon,binary_sensor.ventana_cocina,binary_sensor.ventana_dormitorio.
El código
alias: "Ventana abierta demasiado tiempo"
mode: parallel
max: 10
triggers:
- trigger: state
entity_id:
- binary_sensor.ventana_salon
- binary_sensor.ventana_cocina
- binary_sensor.ventana_dormitorio
to: "on"
actions:
- variables:
ventana: "{{ trigger.entity_id }}"
- wait_template: "{{ is_state(ventana, 'off') }}"
timeout:
minutes: 10
continue_on_timeout: true
- if:
- condition: template
value_template: "{{ not wait.completed }}"
then:
- action: notify.mobile_app_mi_movil
data:
message: "{{ state_attr(ventana, 'friendly_name') }} lleva 10 minutos abierta."
Cómo funciona
- En
parallel, cada disparo arranca su propia ejecución al momento, junto a las que ya están en marcha. No se esperan ni se cortan entre ellas. - Cada ejecución guarda su ventana en una variable y espera, solo por ella, a que se cierre (como mucho 10 minutos).
wait_templateespera hasta que la plantilla sea verdadera. Si se agota el tiempo,wait.completedes falso: la ventana sigue abierta y se envía el aviso.max: 10limita cuántas ejecuciones pueden ir a la vez. Por defecto son 10.
Por qué no otro modo
- Con
single, la segunda ventana se ignoraría mientras se vigila la primera. - Con
restart, abrir la segunda cortaría la vigilancia de la primera. - Con
queued, la segunda no empezaría a contar hasta que acabase la primera.
Resultado
Acción
18:00 se abre el salón · 18:03 se abre la cocina
18:05 se cierra el salónResultado
18:13 «Ventana cocina lleva 10 minutos abierta.»
(el salón no avisa: se cerró a tiempo)