DarkFox-homeassistant/packages/automation/playlist.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:
- ''