505 lines
17 KiB
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 %}
|
|
|
|
|