** 저장할 미디어의 볼륨 리스트 변수를 만들고 플레이 체크후 볼륨 다운.
** TTS방송.
** 플레이중인 미디어의 이전 볼륨 복원.
알림 전용 미디어 플레이어는 따로 있어야 하며 미디어 그룹에 제외돼 있어야 함.
여기선 구글스피커 그룹, 크롬캐스트 구글TV, 크롬캐스트 오디오를 대상으로 플레이중일 때 볼륨다운후 TTS 방송, 이후 이전 볼륨 복원.
scripts.yaml
tts_notify:
fields:
message:
required: true
selector:
text:
sequence:
- variables:
previous_volumes: "{{ {'all': state_attr('media_player.all', 'volume_level'),
'castbedroom': state_attr('media_player.castbedroom', 'volume_level'),
'castaudio': state_attr('media_player.castaudio', 'volume_level')} }}"
- repeat:
for_each:
- all
- castbedroom
- castaudio
sequence:
- if:
- condition: template
value_template: "{{ is_state('media_player.' ~ repeat.item, 'playing') }}"
then:
- action: media_player.volume_set
data:
volume_level: 0.2
entity_id: "media_player.{{ repeat.item }}"
- action: tts.edge_tts_say
data:
message: "{{ message }}"
entity_id: media_player.notify
- wait_template: "{{ is_state('media_player.notify', 'playing') }}"
- wait_template: "{{ is_state('media_player.notify', 'idle') }}"
- repeat:
for_each:
- all
- castbedroom
- castaudio
sequence:
- if:
- condition: template
value_template: "{{ is_state('media_player.' ~ repeat.item, 'playing') }}"
then:
- action: media_player.volume_set
data:
volume_level: "{{ previous_volumes[repeat.item] }}"
entity_id: "media_player.{{ repeat.item }}"
자동화에 스크립트 적용.
automations.yaml
- alias: 알림-종료/건조기
triggers:
- trigger: state
entity_id: sensor.dryer_status
from: 'on'
to: 'off'
for: '00:00:30'
actions:
- action: script.tts_notify
data:
message: 건조기 사용을 마쳤습니다.