Objetivo
Que el altavoz de la cocina anuncie cada aviso de la casa completo y en orden, aunque lleguen varios a la vez.
Requisitos
- Un altavoz (
media_player.cocina) y un motor de voz (tts.piperu otro). - Varios sensores que generen avisos: lavadora, timbre, puerta del garaje…
El código
alias: "Anuncios en la cocina"
mode: queued
max: 5
triggers:
- trigger: state
entity_id: binary_sensor.lavadora_en_marcha
from: "on"
to: "off"
variables:
texto: "La lavadora ha terminado."
- trigger: state
entity_id: binary_sensor.timbre
to: "on"
variables:
texto: "Están llamando a la puerta."
- trigger: state
entity_id: cover.garaje
to: "open"
variables:
texto: "Se ha abierto el garaje."
actions:
- action: tts.speak
target:
entity_id: tts.piper
data:
media_player_entity_id: media_player.cocina
message: "{{ texto }}"
- delay:
seconds: 5
Cómo funciona
- En
queued, un disparo nuevo espera a que terminen los anteriores y luego se ejecuta. Las ejecuciones respetan el orden de llegada. - El
delayde 5 segundos deja terminar de hablar al altavoz antes de pasar al siguiente anuncio. Ajústalo a la duración de tus frases. - Las
variablesde cada disparador guardan su propio texto. Cada ejecución en cola conserva el suyo. max: 5limita la cola, contando el anuncio que suena y los que esperan. Si llega un sexto, se descarta y se registra «Maximum number of runs exceeded».- Un disparo solo entra en la cola si sus condiciones se cumplen en ese momento, no cuando le llega el turno.
Resultado
Acción
20:15:00 termina la lavadora
20:15:02 suena el timbreResultado
20:15:00 «La lavadora ha terminado.»
20:15:05 «Están llamando a la puerta.»