Add Media Player Package
This commit is contained in:
99
packages/media/media.yaml
Normal file
99
packages/media/media.yaml
Normal file
@@ -0,0 +1,99 @@
|
||||
# Media Player Package
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Media Player State Helpers
|
||||
input_select:
|
||||
ht_player_state:
|
||||
name: Home Theater Player State
|
||||
options:
|
||||
- Idle
|
||||
- Playing
|
||||
- Paused
|
||||
- Stopped
|
||||
- System
|
||||
- Offline
|
||||
initial: Idle
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Media Player Scripts
|
||||
script:
|
||||
|
||||
# Update the Player State when an input device changes state. The state of
|
||||
# the overall player is taken from the state of the currently active input
|
||||
# device to the receiver.
|
||||
ht_player_state_update:
|
||||
name: Home Theater Player State Update
|
||||
mode: restart
|
||||
sequence:
|
||||
- choose:
|
||||
# Receiver Off (prevents error with source attribute not available
|
||||
# when receiver is off; normally this is set directly by the Turn-Off
|
||||
# to Idle automation)
|
||||
- conditions:
|
||||
- condition: state
|
||||
entity_id: media_player.living_room_receiver
|
||||
state: 'off'
|
||||
sequence:
|
||||
- service: input_select.select_option
|
||||
target:
|
||||
entity_id: input_select.ht_player_state
|
||||
data:
|
||||
option: Idle
|
||||
|
||||
# Roku Input
|
||||
- conditions: "{{ state_attr('media_player.living_room_receiver', 'source') == 'Roku Ultra' }}"
|
||||
sequence:
|
||||
- choose:
|
||||
- conditions: "{{ is_state('media_player.living_room_roku', 'playing' }}"
|
||||
sequence:
|
||||
- service: input_select.select_option
|
||||
target:
|
||||
entity_id: input_select.ht_player_state
|
||||
data:
|
||||
option: Playing
|
||||
|
||||
- conditions: "{{ is_state('media_player.living_room_roku', 'paused' }}"
|
||||
sequence:
|
||||
- service: input_select.select_option
|
||||
target:
|
||||
entity_id: input_select.ht_player_state
|
||||
data:
|
||||
option: Paused
|
||||
|
||||
- condition:
|
||||
condition: or
|
||||
conditions:
|
||||
- "{{ is_state('media_player.living_room_roku', 'stopped' }}"
|
||||
- "{{ is_state('media_player.living_room_roku', 'idle' }}"
|
||||
sequence:
|
||||
- service: input_select.select_option
|
||||
target:
|
||||
entity_id: input_select.ht_player_state
|
||||
data:
|
||||
option: Stopped
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Media Player Automations
|
||||
automation:
|
||||
- alias: Home Theater Idle Timeout
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_select.ht_player_state
|
||||
to: Stopped
|
||||
for:
|
||||
minutes: 10
|
||||
actions:
|
||||
- service: input_select.select_option
|
||||
target:
|
||||
entity_id: "{{ trigger.entity_id }}"
|
||||
data:
|
||||
option: Idle
|
||||
|
||||
- alias: Home Theater Receiver Turn-On/Off
|
||||
trigger:
|
||||
- platform: homeassistant
|
||||
event: start
|
||||
- platform: state
|
||||
entity_id: media_player.living_room_receiver
|
||||
actions:
|
||||
- service: script.ht_player_state_update
|
||||
Reference in New Issue
Block a user