From a91f0bef9f248af48dc77c626b533d83c11271df Mon Sep 17 00:00:00 2001 From: Georgi Gardev Date: Sat, 28 May 2022 15:45:26 +0300 Subject: [PATCH] Sonos grouping shortcuts --- config/blueprints/script/sonos_join.yaml | 20 +++++++++++ .../home_dashboard/bathroom_dashboard.yaml | 8 +++++ .../kitchen_dashboard_card.yaml | 12 +++++-- .../devices/bathroom/bathroom_switch.yaml | 1 - config/packages/modules/media/sonos.yaml | 36 +++++++++++++++++++ 5 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 config/blueprints/script/sonos_join.yaml diff --git a/config/blueprints/script/sonos_join.yaml b/config/blueprints/script/sonos_join.yaml new file mode 100644 index 0000000..7ca7a7e --- /dev/null +++ b/config/blueprints/script/sonos_join.yaml @@ -0,0 +1,20 @@ +blueprint: + name: Sonos · Join to master + domain: script + input: + join_player: + name: Sonos player to join to master + selector: + device: + integration: media_player + +sequence: + - service: sonos.join + entity_id: !input join_player + data_template: + master: >- + {% if is_state('binary_sensor.sonos_is_living_room_master', 'on') %} + media_player.living_room + {% else %} + media_player.master_bedroom + {% endif %} diff --git a/config/lovelace/home_dashboard/bathroom_dashboard.yaml b/config/lovelace/home_dashboard/bathroom_dashboard.yaml index 8030a66..d3dd12a 100644 --- a/config/lovelace/home_dashboard/bathroom_dashboard.yaml +++ b/config/lovelace/home_dashboard/bathroom_dashboard.yaml @@ -46,3 +46,11 @@ template: v3_button entity: media_player.bathroom name: Sonos + + - type: custom:button-card + template: v3_button + entity: binary_sensor.sonos_is_bathroom_grouped + name: Sonos Grouped + tap_action: + action: call-service + service: "[[[ return entity.state == 'on' ? 'script.sonos_bathroom_unjoin' : 'script.sonos_bathroom_join' ]]]" diff --git a/config/lovelace/home_dashboard/kitchen_dashboard_card.yaml b/config/lovelace/home_dashboard/kitchen_dashboard_card.yaml index 99e37e6..a48bad5 100644 --- a/config/lovelace/home_dashboard/kitchen_dashboard_card.yaml +++ b/config/lovelace/home_dashboard/kitchen_dashboard_card.yaml @@ -56,16 +56,24 @@ cards: template: v3_button entity: media_player.kitchen name: Sonos + - type: custom:button-card + template: v3_button + entity: binary_sensor.sonos_is_kitchen_grouped + name: Sonos Grouped + tap_action: + action: call-service + service: "[[[ return entity.state == 'on' ? 'script.sonos_kitchen_unjoin' : 'script.sonos_kitchen_join' ]]]" - type: custom:button-card template: v3_button_radiator entity: climate.kitchen_radiator_mode name: Radiator + + - type: horizontal-stack + cards: - type: custom:button-card template: v3_button entity: vacuum.vacuum name: Vacuum - - type: horizontal-stack - cards: - type: custom:button-card template: v3_button_brita_water - type: custom:button-card diff --git a/config/packages/devices/bathroom/bathroom_switch.yaml b/config/packages/devices/bathroom/bathroom_switch.yaml index ef6b583..8435466 100644 --- a/config/packages/devices/bathroom/bathroom_switch.yaml +++ b/config/packages/devices/bathroom/bathroom_switch.yaml @@ -34,7 +34,6 @@ automation: entity_id: media_player.bathroom data_template: volume_level: >- - {% if state_attr('media_player.bathroom', 'volume_level')|float > (states('input_number.bathroom_high_volume')|float - 0.05) %} 0.25 {% else %} diff --git a/config/packages/modules/media/sonos.yaml b/config/packages/modules/media/sonos.yaml index b861b90..4e05e9f 100644 --- a/config/packages/modules/media/sonos.yaml +++ b/config/packages/modules/media/sonos.yaml @@ -24,17 +24,27 @@ binary_sensor: {% else %} False {% endif %} + sonos_is_bedroom_master: friendly_name: Sonos is Bedroom master value_template: >- {% set group = state_attr('media_player.master_bedroom', 'group_members') %} {{ group|length > 1 and group[0] == 'media_player.master_bedroom' }} + sonos_is_living_room_master: friendly_name: Sonos is Living room master value_template: >- {% set group = state_attr('media_player.master_bedroom', 'group_members') %} {{ group|length > 1 and group[0] == 'media_player.living_room' }} + sonos_is_kitchen_grouped: + friendly_name: Sonos Kitchen is grouped + value_template: "{{ state_attr('media_player.kitchen', 'group_members')|length > 1 }}" + + sonos_is_bathroom_grouped: + friendly_name: Sonos Bathroom is grouped + value_template: "{{ state_attr('media_player.bathroom', 'group_members')|length > 1 }}" + script: sonos_join_bedroom: alias: Sonos · Join to Bedroom @@ -59,6 +69,32 @@ script: data: source: TV + sonos_kitchen_unjoin: + alias: Sonos · Kitchen · Unjoin + sequence: + - service: sonos.unjoin + entity_id: media_player.kitchen + + sonos_kitchen_join: + alias: Sonos · Kitchen · Join to master + use_blueprint: + path: sonos_join.yaml + input: + join_player: media_player.kitchen + + sonos_bathroom_unjoin: + alias: Sonos · Bathroom · Unjoin + sequence: + - service: sonos.unjoin + entity_id: media_player.bathroom + + sonos_bathroom_join: + alias: Sonos · Bathroom · Join to master + use_blueprint: + path: sonos_join.yaml + input: + join_player: media_player.bathroom + sonos_bathroom_up: alias: Sonos · Bathroom up sequence: