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

505 lines
17 KiB
YAML

---
homeassistant:
customize:
package.node_anchors:
package_name: &package_name "audio"
common_attrs: &common_attrs
package: *package_name
common_attrs_templated: &common_attrs_templated
templated: true
<<: *common_attrs
media_player.owntone_server:
friendly_name: "OwnTone server"
#entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
media_player.owntone_output_living_room:
icon: "mdi:sofa"
friendly_name: "Livingroom (OwnTone output)"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
media_player.owntone_output_bedroom:
icon: "mdi:bed-empty"
friendly_name: "Bedroom (OwnTone output)"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
media_player.owntone_output_study:
friendly_name: "Study (OwnTone output)"
icon: "mdi:chair-rolling"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
media_player.owntone_output_hallway:
friendly_name: "Hallway (OwnTone output)"
icon: "mdi:speaker"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
media_player.owntone_output_kitchen:
friendly_name: "Kitchen (OwnTone output)"
icon: "mdi:stove"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
media_player.owntone_output_fifo:
friendly_name: "OwnTone FIFO output"
icon: "mdi:file-music"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs
#media_player.owntone_output_apple_tv:
# friendly_name: "Apple TV (OwnTone output)"
# icon: "mdi:apple"
media_player.bedroom:
friendly_name: Bedroom
universal_media_player: true
media_players:
- media_player.owntone_server
- media_player.owntone_output_bedroom
- media_player.sonos_bedroom
<<: *common_attrs
media_player.kitchen:
friendly_name: Kitchen
universal_media_player: true
media_players:
- media_player.owntone_server
- media_player.owntone_output_kitchen
- media_player.sonos_kitchen
<<: *common_attrs
media_player.study:
friendly_name: Study
universal_media_player: true
media_players:
- media_player.owntone_server
- media_player.owntone_output_study
- media_player.sonos_study
<<: *common_attrs
media_player.hallway:
friendly_name: Hallway
universal_media_player: true
media_players:
- media_player.owntone_server
- media_player.owntone_output_hallway
- media_player.sonos_hallway
<<: *common_attrs
media_player.dlna_bedroom:
friendly_name: "DLNA Bedroom"
entity_picture: https://www.sudo.is/img/icon-S38-Sonos-One-SL.png
<<: *common_attrs
media_player.dlna_hallway:
friendly_name: "DLNA Hallway"
entity_picture: https://www.sudo.is/img/icon-S12-Sonos-Play-1.png
<<: *common_attrs
media_player.dlna_kitchen:
friendly_name: "DLNA Kitchen"
entity_picture: https://www.sudo.is/img/icon-S21-Sonos-IKEA-SYMFONISK.png
<<: *common_attrs
media_player.dlna_livingroom:
friendly_name: "DLNA Livingroom"
entity_picture: https://www.sudo.is/img/icon-ZP90-Sonos-Connect.png
<<: *common_attrs
media_player.dlna_study:
friendly_name: "DLNA Study"
entity_picture: https://www.sudo.is/img/icon-ZP120-Sonos-Connect-Amp.png
<<: *common_attrs
media_player.sonos_bedroom:
friendly_name: "Sonos Bedroom"
entity_picture: https://www.sudo.is/img/icon-S38-Sonos-One-SL.png
<<: *common_attrs
media_player.sonos_hallway:
friendly_name: "Sonos Hallway"
entity_picture: https://www.sudo.is/img/icon-S12-Sonos-Play-1.png
<<: *common_attrs
media_player.sonos_kitchen:
friendly_name: "Sonos Kitchen"
entity_picture: https://www.sudo.is/img/icon-S21-Sonos-IKEA-SYMFONISK.png
<<: *common_attrs
media_player.sonos_livingroom:
friendly_name: "Sonos Livingroom"
entity_picture: https://www.sudo.is/img/icon-ZP90-Sonos-Connect.png
<<: *common_attrs
media_player.sonos_study:
friendly_name: "Sonos Study"
entity_picture: https://www.sudo.is/img/icon-ZP120-Sonos-Connect-Amp.png
<<: *common_attrs
sensor.owntone_queue_position:
friendly_name: "OwnTone: current queue position"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs_templated
binary_sensor.owntone_playing:
friendly_name: "OwnTone playing"
entity_picture: "https://www.sudo.is/img/owntone.svg"
<<: *common_attrs_templated
binary_sensor.owntone_playing_podcast:
<<: *common_attrs_templated
entity_picture: "https://www.sudo.is/img/owntone.svg"
friendly_name: "OwnTone playing a podcast"
sensor.audiobookshelf_sessions:
unit_of_measurement: sessions
state_class: measurement
entity_picture: "https://www.sudo.is/img/abs_logo.png"
<<: *common_attrs_templated
media_player:
- platform: universal
name: bedroom
children:
- media_player.owntone_server
- media_player.sonos_bedroom
browse_media_entity: media_player.owntone_server
device_class: speaker
active_child_template: |
{% if is_state("media_player.owntone_output_bedroom", "on") %}
media_player.owntone_server
{% else %}
media_player.sonos_bedroom
{% endif %}
state_template: |
{% if is_state("media_player.owntone_output_bedroom", "on") %}
{{ states("media_player.owntone_server") }}
{% else %}
{{ states("media_player.sonos_bedroom") }}
{% endif %}
commands:
volume_set:
service: media_player.volume_set
data:
volume_level: "{{ volume_level }}"
target:
entity_id: |
{%- if is_state("media_player.owntone_output_bedroom", "on") -%}
media_player.owntone_output_bedroom
{%- else -%}
media_player.sonos_bedroom
{% endif %}
media_play:
service: media_player.media_play
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_bedroom", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_bedroom
{% endif %}
volume_up:
service: media_player.volume_up
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_bedroom", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_bedroom
{% endif %}
volume_down:
service: media_player.volume_down
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_bedroom", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_bedroom
{% endif %}
media_pause:
service: media_player.media_pause
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_bedroom", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_bedroom
{% endif %}
volume_mute:
service: media_player.volume_mute
data:
is_volume_muted: |
{{ is_volume_muted }}
target:
entity_id: media_player.sonos_bedroom
attributes:
volume_level: media_player.sonos_bedroom|volume_level
is_volume_muted: media_player.sonos_bedroom|is_volume_muted
#source_list: media_player.owntone_server|source_list
source_list: None, OwnTone
group_members: media_player.sonos_bedroom|group_members
- platform: universal
name: kitchen
children:
- media_player.owntone_server
- media_player.sonos_kitchen
browse_media_entity: media_player.owntone_server
device_class: speaker
active_child_template: |
{% if is_state("media_player.owntone_output_kitchen", "on") %}
media_player.owntone_server
{% else %}
media_player.sonos_kitchen
{% endif %}
state_template: |
{% if is_state("media_player.owntone_output_kitchen", "on") %}
{{ states("media_player.owntone_server") }}
{% else %}
{{ states("media_player.sonos_kitchen") }}
{% endif %}
commands:
volume_set:
service: media_player.volume_set
data:
volume_level: "{{ volume_level }}"
target:
entity_id: |
{%- if is_state("media_player.owntone_output_kitchen", "on") -%}
media_player.owntone_output_kitchen
{%- else -%}
media_player.sonos_kitchen
{% endif %}
media_play:
service: media_player.media_play
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_kitchen", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_kitchen
{% endif %}
media_pause:
service: media_player.media_pause
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_kitchen", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_kitchen
{% endif %}
volume_mute:
service: media_player.volume_mute
data:
is_volume_muted: |
{{ is_volume_muted }}
target:
entity_id: media_player.sonos_kitchen
attributes:
volume_level: media_player.sonos_kitchen|volume_level
is_volume_muted: media_player.sonos_kitchen|is_volume_muted
#source_list: media_player.owntone_server|source_list
source_list: "['Sonos', 'OwnTone']"
group_members: media_player.sonos_kitchen|group_members
- platform: universal
name: study
children:
- media_player.owntone_server
- media_player.sonos_study
browse_media_entity: media_player.owntone_server
device_class: speaker
active_child_template: |
{% if is_state("media_player.owntone_output_study", "on") %}
media_player.owntone_server
{% else %}
media_player.sonos_study
{% endif %}
state_template: |
{% if is_state("media_player.owntone_output_study", "on") %}
{{ states("media_player.owntone_server") }}
{% else %}
{{ states("media_player.sonos_study") }}
{% endif %}
commands:
volume_set:
service: media_player.volume_set
data:
volume_level: "{{ volume_level }}"
target:
entity_id: |
{%- if is_state("media_player.owntone_output_study", "on") -%}
media_player.owntone_output_study
{%- else -%}
media_player.sonos_study
{% endif %}
media_play:
service: media_player.media_play
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_study", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_study
{% endif %}
media_pause:
service: media_player.media_pause
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_study", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_study
{% endif %}
volume_mute:
service: media_player.volume_mute
data:
is_volume_muted: |
{{ is_volume_muted }}
target:
entity_id: media_player.sonos_study
attributes:
volume_level: media_player.sonos_study|volume_level
is_volume_muted: media_player.sonos_study|is_volume_muted
#source_list: media_player.owntone_server|source_list
source_list: None, OwnTone
group_members: media_player.sonos_study|group_members
- platform: universal
name: hallway
children:
- media_player.owntone_server
- media_player.sonos_hallway
browse_media_entity: media_player.owntone_server
device_class: speaker
active_child_template: |
{% if is_state("media_player.owntone_output_hallway", "on") %}
media_player.owntone_server
{% else %}
media_player.sonos_hallway
{% endif %}
state_template: |
{% if is_state("media_player.owntone_output_hallway", "on") %}
{{ states("media_player.owntone_server") }}
{% else %}
{{ states("media_player.sonos_hallway") }}
{% endif %}
commands:
volume_set:
service: media_player.volume_set
data:
volume_level: "{{ volume_level }}"
target:
entity_id: |
{%- if is_state("media_player.owntone_output_hallway", "on") -%}
media_player.owntone_output_hallway
{%- else -%}
media_player.sonos_hallway
{% endif %}
media_play:
service: media_player.media_play
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_hallway", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_hallway
{% endif %}
media_pause:
service: media_player.media_pause
data: {}
target:
entity_id: |
{%- if is_state("media_player.owntone_output_hallway", "on") -%}
media_player.owntone_server
{%- else -%}
media_player.sonos_hallway
{% endif %}
volume_mute:
service: media_player.volume_mute
data:
is_volume_muted: |
{{ is_volume_muted }}
target:
entity_id: media_player.sonos_hallway
attributes:
volume_level: media_player.sonos_hallway|volume_level
is_volume_muted: media_player.sonos_hallway|is_volume_muted
#source_list: media_player.owntone_server|source_list
source_list: None, OwnTone
group_members: media_player.sonos_hallway|group_members
template:
- sensor:
- name: owntone_queue_position
state_class: measurement
icon: |
{% if is_state("binary_sensor.owntone_playing", "on") %}
mdi:play
{% else %}
mdi:stop
{% endif %}
availability: |
{{
states("media_player.owntone_server") is defined
and has_value("media_player.owntone_server")
and state_attr("media_player.owntone_server", "media_track") is defined
and is_number(state_attr("media_player.owntone_server", "media_track"))
}}
state: |
{% set mediatrack = state_attr("media_player.owntone_server", "media_track") %}
{{ mediatrack | int }}
attributes:
source_entity_id: "media_player.owntone_server"
- binary_sensor:
- name: owntone_playing
icon: |
{% if is_state(this.entity_id, "on") %}
mdi:play
{% else %}
mdi:stop
{% endif %}
device_class: running
delay_off: "00:00:05"
availability: |
{{
states("media_player.owntone_server") is defined
and has_value("media_player.owntone_server")
}}
state: |
{{ is_state("media_player.owntone_server", "playing") }}
attributes:
source_entity_id: "media_player.owntone_server"
- name: owntone_playing_podcast
icon: "mdi:podcast"
device_class: running
delay_off: "00:00:05"
availability: |
{{
states("binary_sensor.owntone_playing") is defined
and has_value("binary_sensor.owntone_playing")
and state_attr("media_player.owntone_server", "media_content_type") is defined
}}
state: |
{% set playing = states("binary_sensor.owntone_playing", "on") or false %}
{% set is_podcast = is_state_attr(this.entity_id, "podcast_in_queue", true) %}
{{
playing|bool == true
and is_podcast|bool == true
}}
attributes:
source_entity_id: "media_player.owntone_server"
podcast_in_queue: |
{{ is_state_attr("media_player.owntone_server", "media_content_type", "podcast") | bool }}
podcast: |
{% if is_state_attr(this.entity_id, "podcast_in_queue", true) %}
{{ state_attr("media_player.owntone_server", "media_album_name") }}
{% else %}None{% endif %}
episode: |
{% if is_state_attr(this.entity_id, "podcast_in_queue", true) %}
{{ state_attr("media_player.owntone_server", "media_title") }}
{% else %}None{% endif %}
published_by: |
{% if is_state_attr(this.entity_id, "podcast_in_queue", true) %}
{{ state_attr("media_player.owntone_server", "media_artist") }}
{% else %}None{% endif %}