198 lines
6.4 KiB
YAML
198 lines
6.4 KiB
YAML
group:
|
|
playlist:
|
|
name: Playlist
|
|
entities:
|
|
- input_select.playlist
|
|
- input_select.playlist_player
|
|
|
|
input_select:
|
|
playlist:
|
|
name: Playlist
|
|
initial: ''
|
|
options:
|
|
- ''
|
|
playlist_player:
|
|
name: Playlist Player
|
|
initial: None
|
|
options:
|
|
- None
|
|
- media_player.all_speakers
|
|
- media_player.bedroom_speakers
|
|
- media_player.east_side_speakers
|
|
- media_player.kitchen_chromecast
|
|
- media_player.kitchen_speaker
|
|
- media_player.bathroom_speaker
|
|
- media_player.office_soundbar
|
|
- media_player.office_speakers
|
|
- media_player.projector_chromecast
|
|
- media_player.living_room_chromecast
|
|
- media_player.tv_soundbar
|
|
- media_player.west_side_speakers
|
|
|
|
script:
|
|
playlist_delay_10:
|
|
alias: 10 second playlist delay
|
|
sequence:
|
|
- delay:
|
|
seconds: 10
|
|
- service: input_select.select_next
|
|
data:
|
|
entity_id: input_select.playlist
|
|
playlist_delay_30:
|
|
alias: 30 second playlist delay
|
|
sequence:
|
|
- delay:
|
|
seconds: 30
|
|
- service: input_select.select_next
|
|
data:
|
|
entity_id: input_select.playlist
|
|
playlist_next:
|
|
sequence:
|
|
- service: input_select.select_next
|
|
data:
|
|
entity_id: input_select.playlist
|
|
playlist_previous:
|
|
sequence:
|
|
- service: input_select.select_previous
|
|
data:
|
|
entity_id: input_select.playlist
|
|
playlist_end:
|
|
sequence:
|
|
- service: input_select.select_option
|
|
data:
|
|
entity_id: input_select.playlist
|
|
option: "==END=="
|
|
|
|
automation:
|
|
- alias: playlist_start
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_select.playlist
|
|
condition:
|
|
condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist_player', 'None') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '==END==') }}"
|
|
- condition: template
|
|
value_template: "{{ not states('input_select.playlist') | truncate(10,true, '') == '==SCRIPT==' }}"
|
|
- condition: template
|
|
value_template: "{{ not states('input_select.playlist') | truncate(10,true, '') == '==SWITCH==' }}"
|
|
action:
|
|
service: media_player.play_media
|
|
data_template:
|
|
entity_id: "{{ states.input_select.playlist_player.state }}"
|
|
media_content_id: "{{ states.input_select.playlist.state }}"
|
|
media_content_type: EPISODE
|
|
|
|
- alias: playlist_script
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_select.playlist
|
|
condition:
|
|
condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ states('input_select.playlist') | truncate(10,true, '') == '==SCRIPT==' }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist_player', 'None') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '==END==') }}"
|
|
- condition: template
|
|
value_template: "{{ not states('input_select.playlist') | truncate(10,true, '') == '==SWITCH==' }}"
|
|
action:
|
|
service: script.turn_on
|
|
data_template:
|
|
entity_id: "script.{{ states('input_select.playlist') | replace('==SCRIPT==', '') }}"
|
|
variables:
|
|
device_entity_id: "{{ states('input_select.playlist_player') }}"
|
|
|
|
- alias: playlist_switch_player
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_select.playlist
|
|
condition:
|
|
condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ states('input_select.playlist') | truncate(10,true, '') == '==SWITCH==' }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist_player', 'None') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '==END==') }}"
|
|
- condition: template
|
|
value_template: "{{ not states('input_select.playlist') | truncate(10,true, '') == '==SCRIPT==' }}"
|
|
action:
|
|
- service: input_select.select_option
|
|
data_template:
|
|
entity_id: input_select.playlist_player
|
|
option: "media_player.{{ states('input_select.playlist') | replace('==SWITCH==', '') }}"
|
|
- delay:
|
|
seconds: 1
|
|
- service: input_select.select_next
|
|
data:
|
|
entity_id: input_select.playlist
|
|
|
|
|
|
- alias: playlist_auto_next
|
|
trigger:
|
|
platform: state
|
|
entity_id:
|
|
- media_player.all_speakers
|
|
- media_player.bedroom_speakers
|
|
- media_player.east_side_speakers
|
|
- media_player.kitchen_chromecast
|
|
- media_player.kitchen_speaker
|
|
- media_player.bathroom_speaker
|
|
- media_player.office_soundbar
|
|
- media_player.office_speakers
|
|
- media_player.projector_chromecast
|
|
- media_player.living_room_chromecast
|
|
- media_player.tv_soundbar
|
|
- media_player.west_side_speakers
|
|
from: 'playing'
|
|
to: 'idle'
|
|
for:
|
|
seconds: 2
|
|
condition:
|
|
condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ is_state(states.input_select.playlist_player.state, 'idle') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist_player', 'None') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '') }}"
|
|
- condition: template
|
|
value_template: "{{ not is_state('input_select.playlist', '==END==') }}"
|
|
action:
|
|
service: input_select.select_next
|
|
data:
|
|
entity_id: input_select.playlist
|
|
|
|
- alias: playlist_end
|
|
trigger:
|
|
platform: state
|
|
entity_id: input_select.playlist
|
|
to: '==END=='
|
|
action:
|
|
- service: media_player.turn_off
|
|
data_template:
|
|
entity_id: "{{ states.input_select.playlist_player.state }}"
|
|
- service: input_select.select_option
|
|
data:
|
|
entity_id: input_select.playlist_player
|
|
option: 'None'
|
|
- service: input_select.set_options
|
|
data:
|
|
entity_id: input_select.playlist
|
|
options:
|
|
- ''
|