infra/roles/hass-core/files/packages/tv.yaml

403 lines
12 KiB
YAML

---
homeassistant:
customize:
package.node_anchors:
common_attrs: &common_attrs
package: "tv"
common_attrs_templated: &common_attrs_templated
templated: true
<<: *common_attrs
media_player.tv_livingroom:
friendly_name: "Livingroom TV"
media_players:
- media_player.apple_tv
- media_player.owntone_output_living_room
<<: *common_attrs
binary_sensor.tv_livingroom_samsung:
friendly_name: "Livingroom TV (samsungtv)"
comment: indicates if samsungtv integration reports on/off
source_entity_id: "media_player.livingroom_tv_samsung_43_dog"
proto: "samsungtv"
<<: *common_attrs_templated
binary_sensor.tv_livingroom:
friendly_name: "Livingroom TV"
proto: "ESPHome"
<<: *common_attrs_templated
binary_sensor.apple_tv:
friendly_name: "Apple TV"
proto: "appletv"
source_entiry_id: "media_player.apple_tv"
comment: indicates if apple tv is on/off
<<: *common_attrs_templated
binary_sensor.apple_tv_is_playing:
friendly_name: "Apple TV is playing"
proto: "appletv"
<<: *common_attrs_templated
sensor.state_apple_tv:
friendly_name: "Apple TV state"
proto: "appletv"
<<: *common_attrs_templated
binary_sensor.chromecast:
friendly_name: "TV power state via chromecast (1)"
comment: >-
checks if 'media_player.chromecast_den_tv' has a value
<<: *common_attrs_templated
binary_sensor.chromecast_2:
friendly_name: "TV power state via chromecast (2)"
notes: >-
checks if 'media_player.chromecast_den_tv' is unavailable
<<: *common_attrs_templated
script:
media_player_tv_livingroom_turn_off:
icon: "mdi:television-off"
mode: single
description: |
used for the turn_off service of media_player.tv_livingroom
to be able to eecute more than one command.
sequence:
- service: media_player.turn_off
data: {}
target:
entity_id:
# remove apple_tv
# first:
# check if including apple_tv here is what caused it to
# turn on the tv and start playing.
#- media_player.apple_tv
- media_player.livingroom_tv_samsung_43_dog
- service: media_player.media_stop
data: {}
target:
entity_id: media_player.sonos_livingroom
#- service: media_player.turn_off
# data: {
# target:
# entity_id: media_player.apple_tv
media_player_tv_livingroom_turn_on:
icon: "mdi:television"
mode: single
description: |
used for the turn_on service of media_player.tv_livingroom
to by able to execute more than one command.
sequence:
- if:
- condition: state
entity_id: switch.esphome_plug_tv_socket
state: "off"
then:
- service: switch.turn_on
data: {}
target:
entity_id: switch.esphome_plug_tv_socket
- wait_for_trigger:
- platform: state
entity_id:
- switch.esphome_plug_tv_socket
to: "on"
for:
seconds: 3
timeout:
seconds: 10
- service: media_player.turn_on
data: {}
target:
entity_id: media_player.livingroom_tv_samsung_43_dog
- service: media_player.turn_on
data: {}
target:
entity_id: media_player.apple_tv
- service: media_player.select_source
data:
# name is from "sonos favorite"
source: Line-in
target:
entity_id: media_player.sonos_livingroom
- wait_template: |
{{ is_state_attr("media_player.sonos_livingroom", "source", "Line-in") }}
continue_on_timeout: false
timeout: "00:00:10"
- service: media_player.media_play
data: {}
target:
entity_id: media_player.sonos_livingroom
apple_tv_reload_integration:
alias: apple_tv_reload_integration
sequence:
- service: homeassistant.reload_config_entry
data: {}
target:
entity_id:
- media_player.apple_tv
- remote.apple_tv
apple_tv_reconnect_remote_toggle:
alias: apple_tv_reconnect_remote_toggle
description: |
forces reconnect by toggling the remote
mode: restart
icon: "mdi:apple"
sequence:
- if:
- condition: state
entity_id: remote.apple_tv
state: "on"
then:
- service: remote.turn_off
data: {}
target:
entity_id: remote.apple_tv
- wait_template: |
{{ is_state("remote.apple_tv", "off") }}
continue_on_timeout: true
timeout: "00:20:00"
- service: remote.turn_on
data: {}
target:
entity_id: remote.apple_tv
- wait_template: |
{{ is_state("remote.apple_tv", "on") }}
continue_on_timeout: false
timeout: "00:05:00"
template:
- binary_sensor:
- name: apple_tv
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:cast-connected
{% else %}
mdi:cast-off
{% endif %}
# for some reason the apple tv goes into the standby
# when oaused by thd amp_on automation..
# seems to last 30 secs, longer than i want to
# set a delay_off
# inly seems to happen when the apple tv has just
# turned on
device_class: power
state: |
{{
not (
is_state("media_player.apple_tv", "standby")
or is_state("media_player.apple_tv", "off")
or is_state("media_player.apple_tv", "unknown")
or is_state("media_player.apple_tv", "unavailable")
)
}}
- name: apple_tv_is_playing
icon: >-
{% if is_state(this.entity_id, "on") %}
mdi:television-play
{% else %}
mdi:television-off
{% endif %}
state: |
{% set source_id = state_attr(this.entity_id, "source_entity_id") or "" %}
{% set state_media_player = is_state(source_id, "playing") %}
{% set remote_id = state_attr(this.entity_id, "source_entity_id_remote") or "" %}
{% set state_remote = is_state(remote_id, "on") %}
{{ state_media_player and state_remote }}
attributes:
source_entity_id_remote: "remote.apple_tv"
source_entity_id: "media_player.apple_tv"
area_id: |
{{ area_id(state_attr(this.entity_id, "source_entity_id")) }}
area_name: |
{{ area_id(state_attr(this.entity_id, "source_entity_id")) }}
- name: tv_livingroom_samsung
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:television
{% else %}
mdi:television-off
{% endif %}
device_class: power
availability: |
{{
states("media_player.livingroom_tv_samsung_43_dog") is defined
and has_value("media_player.livingroom_tv_samsung_43_dog")
}}
state: |
{{
is_state("media_player.livingroom_tv_samsung_43_dog", "on")
}}
- binary_sensor:
- name: chromecast
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:cast-connected
{% else %}
mdi:cast-off
{% endif %}
availability: |
{{ states("media_player.chromecast_den_tv") is defined }}
state: |
{{ has_value("media_player.chromecast_den_tv") }}
attributes:
source_entity_id: "media_player.chromecast_den_tv"
- name: chromecast_2
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:cast-connected
{% else %}
mdi:cast-off
{% endif %}
availability: |
{{ states("media_player.chromecast_den_tv") is defined }}
state: |
{{ not is_state("media_player.chromecast_den_tv", "unavailable") }}
attributes:
source_entity_id: "media_player.chromecast_den_tv"
- sensor:
- name: state_tv_livingroom
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:television
{% else %}
mdi:television-off
{% endif %}
state: |
{{ states("media_player.tv_livingroom") }}
attributes:
source_entity_id: "media_player.tv_livingroom"
- name: state_apple_tv
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:apple
{% else %}
mdi:cast-off
{% endif %}
state: |
{{ states("media_player.apple_tv") }}
attributes:
source_entity_id: "media_player.apple_tv"
- name: state_media_player_tv_samsung_43_dog
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:television
{% else %}
mdi:television-off
{% endif %}
state: >-
{{ states("media_player.livingroom_tv_samsung_43_dog") }}
attributes:
source_entity_id: "media_player.livingroom_tv_samsung_43_dog"
- name: state_remote_tv_samsung_43_dog
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:remote
{% else %}
mdi:remote-off
{% endif %}
state: >-
{{ states("remote.livingroom_tv_samsung_43_dog") }}
attributes:
source_entity_id: "remote.livingroom_tv_samsung_43_dog"
# turn_on:
# service: media_player.turn_on
# data: {}
# target:
# entity_id:
# - media_player.apple_tv
# - media_player.livingroom_tv_samsung_43_dog
# turn_off:
# service: media_player.turn_off
# target:
# entity_id: media_player.livingroom_tv_samsung_43_dog
media_player:
- platform: universal
name: tv_livingroom
children:
- media_player.apple_tv
- media_player.livingroom_tv_samsung_43_dog
browse_media_entity: media_player.apple_tv
device_class: "tv"
active_child_template: |
{% if is_state("binary_sensor.tv_livingroom_samsung", "on") and is_state("binary_sensor.apple_tv", "off") %}
media_player.livingroom_tv_samsung_43_dog
{% else %}
media_player.apple_tv
{% endif %}
state_template: |
{% if is_state("binary_sensor.apple_tv_is_playing", "on") %}
playing
{% elif is_state("media_player.apple_tv", "paused") %}
paused
{% elif is_state("binary_sensor.tv_livingroom", "on") %}
idle
{% else %}
off
{% endif %}
commands:
turn_on:
service: script.media_player_tv_livingroom_turn_on
data: {}
turn_off:
service: script.media_player_tv_livingroom_turn_off
data: {}
volume_set:
service: media_player.volume_set
data:
volume_level: "{{ volume_level }}"
target:
entity_id: media_player.sonos_livingroom
volume_mute:
service: media_player.volume_mute
data:
is_volume_muted: "{{ is_volume_muted }}"
target:
entity_id: media_player.sonos_livingroom
volume_up:
service: media_player.volume_up
data: {}
target:
entity_id: media_player.sonos_livingroom
volume_down:
service: media_player.volume_down
data: {}
target:
entity_id: media_player.sonos_livingroom
media_play:
service: media_player.media_play
data: {}
target:
entity_id: media_player.apple_tv
media_pause:
service: media_player.media_pause
data: {}
target:
entity_id: media_player.apple_tv
attributes:
is_volume_muted: media_player.sonos_livingroom|is_volume_muted
volume_level: media_player.sonos_livingroom|volume_level
source: media_player.apple_tv|source
source_list: media_player.apple_tv|source_list