403 lines
12 KiB
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
|