From 0d42142a07dee0651082d3e0f4fff948b9652a6b Mon Sep 17 00:00:00 2001 From: Tony Stork Date: Sat, 19 Apr 2025 14:30:41 -0400 Subject: [PATCH] Simplify default speaker volume settings #238 --- automations.yaml | 129 +++++++++++++--------------- packages/notify.yaml | 196 +++++++++++++++++++------------------------ 2 files changed, 144 insertions(+), 181 deletions(-) diff --git a/automations.yaml b/automations.yaml index c422047..345c74e 100644 --- a/automations.yaml +++ b/automations.yaml @@ -530,127 +530,126 @@ - id: '1667341156218' alias: White Noise description: '' - trigger: - - platform: state - entity_id: + triggers: + - entity_id: - input_boolean.white_noise_emma_bedroom to: 'on' from: 'off' id: emma-on alias: Emma On - - platform: state - entity_id: + trigger: state + - entity_id: - input_boolean.white_noise_basement to: 'on' from: 'off' id: basement-on alias: Basement On - - platform: state - entity_id: + trigger: state + - entity_id: - input_boolean.white_noise_kallen_bedroom to: 'on' from: 'off' id: kallen-on alias: Kallen On - - platform: state - entity_id: + trigger: state + - entity_id: - input_boolean.white_noise_emma_bedroom from: 'on' to: 'off' id: emma-off alias: Emma Off - - platform: state - entity_id: + trigger: state + - entity_id: - input_boolean.white_noise_basement from: 'on' to: 'off' id: basement-off alias: Basement Off - - platform: state - entity_id: + trigger: state + - entity_id: - input_boolean.white_noise_kallen_bedroom from: 'on' to: 'off' id: kallen-off alias: Kallen Off + trigger: state - alias: Emma Timeout - platform: state id: emma-timeout entity_id: - media_player.emma_bedroom_google_speaker to: 'off' + trigger: state - alias: Basement Timeout - platform: state id: basement-timeout entity_id: - media_player.basement_google_speaker to: 'off' + trigger: state - alias: Kallen Timeout - platform: state id: kallen-timeout entity_id: - media_player.kallen_bedroom_google_speaker to: 'off' - condition: [] - action: + trigger: state + conditions: [] + actions: - choose: - conditions: - condition: trigger id: emma-on sequence: - alias: Start river sounds - service: google_assistant_sdk.send_text_command data: command: give me river noise on emma bedroom speaker - - service: media_player.volume_set - data: - volume_level: '{{ states(''input_number.emma_bedroom_google_speaker_night_volume'') + action: google_assistant_sdk.send_text_command + - data: + volume_level: '{{ states(''sensor.emma_bedroom_google_speaker_volume'') }}' target: entity_id: media_player.emma_bedroom_google_speaker alias: Set volume + action: media_player.volume_set alias: Emma On - conditions: - condition: trigger id: basement-on sequence: - - service: google_assistant_sdk.send_text_command - data: + - data: command: give me thunderstorm sounds on basement studio speaker alias: Start thunderstorm sounds - - service: media_player.volume_set - data: - volume_level: '{{ states(''input_number.basement_google_speaker_night_volume'') - }}' + action: google_assistant_sdk.send_text_command + - data: + volume_level: '{{ states(''sensor.basement_google_speaker_volume'') }}' target: entity_id: media_player.basement_google_speaker alias: Set volume + action: media_player.volume_set alias: Basement On - conditions: - condition: trigger id: kallen-on sequence: - alias: Start river sounds - service: google_assistant_sdk.send_text_command data: command: give me river noise on kallen bedroom speaker - - service: media_player.volume_set - data: - volume_level: '{{ states(''input_number.kallen_bedroom_google_speaker_night_volume'') + action: google_assistant_sdk.send_text_command + - data: + volume_level: '{{ states(''sensor.kallen_bedroom_google_speaker_volume'') }}' target: entity_id: media_player.kallen_bedroom_google_speaker alias: Set volume + action: media_player.volume_set alias: Kallen On - conditions: - condition: trigger id: emma-off sequence: - - service: media_player.turn_off - data: {} + - data: {} target: entity_id: media_player.emma_bedroom_google_speaker alias: Turn off speaker + action: media_player.turn_off - alias: If Emma is awake, reset volume if: - condition: state @@ -662,49 +661,44 @@ minutes: 0 seconds: 5 milliseconds: 0 - - service: media_player.volume_set - data: - volume_level: "{% if is_state('input_boolean.give_me_darkness','on') %}\n - \ {{ states('input_number.emma_bedroom_google_speaker_night_volume') - }}\n{% else %}\n {{ states('input_number.emma_bedroom_google_speaker_day_volume') - }}\n{% endif %}\n" + - data: + volume_level: '{{ states(''sensor.emma_bedroom_google_speaker_volume'') + }}' target: entity_id: media_player.emma_bedroom_google_speaker alias: Reset volume + action: media_player.volume_set alias: Emma Off - conditions: - condition: trigger id: basement-off sequence: - - service: media_player.turn_off - data: {} + - data: {} target: entity_id: media_player.basement_google_speaker alias: Turn off speaker + action: media_player.turn_off - delay: hours: 0 minutes: 0 seconds: 5 milliseconds: 0 - - service: media_player.volume_set - data: - volume_level: "{% if is_state('input_boolean.give_me_darkness','on') %}\n - {{ states('input_number.basement_google_speaker_night_volume') }}\n{% - else %}\n {{ states('input_number.basement_google_speaker_day_volume') - }}\n{% endif %}\n" + - data: + volume_level: '{{ states(''sensor.basement_google_speaker_volume'') }}' target: entity_id: media_player.basement_google_speaker alias: Reset volume + action: media_player.volume_set alias: Basement Off - conditions: - condition: trigger id: kallen-off sequence: - - service: media_player.turn_off - data: {} + - data: {} target: entity_id: media_player.kallen_bedroom_google_speaker alias: Turn off speaker + action: media_player.turn_off - alias: If Kallen is awake, reset volume if: - condition: and @@ -721,15 +715,13 @@ minutes: 0 seconds: 5 milliseconds: 0 - - service: media_player.volume_set - data: - volume_level: "{% if is_state('input_boolean.give_me_darkness','on') %}\n - \ {{ states('input_number.kallen_bedroom_google_speaker_night_volume') - }}\n{% else %}\n {{ states('input_number.kallen_bedroom_google_speaker_day_volume') - }}\n{% endif %}\n" + - data: + volume_level: '{{ states(''sensor.kallen_bedroom_google_speaker_volume'') + }}' target: entity_id: media_player.kallen_bedroom_google_speaker alias: Reset volume + action: media_player.volume_set alias: Kallen Off - conditions: - condition: trigger @@ -749,16 +741,16 @@ seconds: 5 milliseconds: 0 - alias: Start river sounds - service: google_assistant_sdk.send_text_command data: command: give me river noise on emma bedroom speaker - - service: media_player.volume_set - data: - volume_level: '{{ states(''input_number.emma_bedroom_google_speaker_night_volume'') + action: google_assistant_sdk.send_text_command + - data: + volume_level: '{{ states(''sensor.emma_bedroom_google_speaker_volume'') }}' target: entity_id: media_player.emma_bedroom_google_speaker alias: Set volume + action: media_player.volume_set alias: Emma Timeout - conditions: - condition: trigger @@ -778,16 +770,15 @@ seconds: 5 milliseconds: 0 - alias: Start thunderstorm sounds - service: google_assistant_sdk.send_text_command data: command: give me thunderstorm sounds on basement studio speaker - - service: media_player.volume_set - data: - volume_level: '{{ states(''input_number.basement_google_speaker_night_volume'') - }}' + action: google_assistant_sdk.send_text_command + - data: + volume_level: '{{ states(''sensor.basement_google_speaker_volume'') }}' target: entity_id: media_player.basement_google_speaker alias: Set volume + action: media_player.volume_set alias: Basement Timeout - conditions: - condition: trigger @@ -807,16 +798,16 @@ seconds: 5 milliseconds: 0 - alias: Start river sounds - service: google_assistant_sdk.send_text_command data: command: give me river noise on kallen bedroom speaker - - service: media_player.volume_set - data: - volume_level: '{{ states(''input_number.kallen_bedroom_google_speaker_night_volume'') + action: google_assistant_sdk.send_text_command + - data: + volume_level: '{{ states(''sensor.kallen_bedroom_google_speaker_volume'') }}' target: entity_id: media_player.kallen_bedroom_google_speaker alias: Set volume + action: media_player.volume_set alias: Kallen Timeout mode: parallel max: 20 diff --git a/packages/notify.yaml b/packages/notify.yaml index 939905d..1386e24 100644 --- a/packages/notify.yaml +++ b/packages/notify.yaml @@ -198,6 +198,57 @@ input_number: step: 0.05 icon: mdi:knob +template: + - sensor: + - name: "Basement Echo Dot Volume" + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + {{ states('input_number.basement_echo_dot_night_volume') }} + {% else %} + {{ states('input_number.basement_echo_dot_day_volume') }} + {% endif %} + icon: mdi:volume-high + - name: "Basement Google Speaker Volume" + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + {{ states('input_number.basement_google_speaker_night_volume') }} + {% else %} + {{ states('input_number.basement_google_speaker_day_volume') }} + {% endif %} + icon: mdi:volume-high + - name: "Living Room Echo Dot Volume" + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + {{ states('input_number.living_room_echo_dot_night_volume') }} + {% else %} + {{ states('input_number.living_room_echo_dot_day_volume') }} + {% endif %} + icon: mdi:volume-high + - name: "Master Bedroom Echo Dot Volume" + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + {{ states('input_number.master_bedroom_echo_dot_night_volume') }} + {% else %} + {{ states('input_number.master_bedroom_echo_dot_day_volume') }} + {% endif %} + icon: mdi:volume-high + - name: "Kallen Bedroom Google Speaker Volume" + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + {{ states('input_number.kallen_bedroom_google_speaker_night_volume') }} + {% else %} + {{ states('input_number.kallen_bedroom_google_speaker_day_volume') }} + {% endif %} + icon: mdi:volume-high + - name: "Emma Bedroom Google Speaker Volume" + state: > + {% if is_state('input_boolean.give_me_darkness','on') %} + {{ states('input_number.emma_bedroom_google_speaker_night_volume') }} + {% else %} + {{ states('input_number.emma_bedroom_google_speaker_day_volume') }} + {% endif %} + icon: mdi:volume-high + # Amazon Polly Sensors to see last message and location of audible notification mqtt: sensor: @@ -325,24 +376,14 @@ script: - condition: template value_template: > {% set current = state_attr('media_player.basement_echo_dot','volume_level') | float %} - {% set night = states('input_number.basement_echo_dot_night_volume') | float %} - {% set day = states('input_number.basement_echo_dot_day_volume') | float %} - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ current != night }} - {% else %} - {{ current != day }} - {% endif %} + {% set expected = states('sensor.basement_echo_dot_volume') | float %} + {{ current != expected }} then: - service: media_player.volume_set target: entity_id: media_player.basement_echo_dot data: - volume_level: > - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ states('input_number.basement_echo_dot_night_volume') }} - {% else %} - {{ states('input_number.basement_echo_dot_day_volume') }} - {% endif %} + volume_level: "{{ states('sensor.basement_echo_dot_volume') }}" # Basement Google Speaker - if: - condition: and @@ -373,24 +414,14 @@ script: - condition: template value_template: > {% set current = state_attr('media_player.basement_google_speaker','volume_level') | float %} - {% set night = states('input_number.basement_google_speaker_night_volume') | float %} - {% set day = states('input_number.basement_google_speaker_day_volume') | float %} - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ current != night }} - {% else %} - {{ current != day }} - {% endif %} + {% set expected = states('sensor.basement_google_speaker_volume') | float %} + {{ current != expected }} then: - service: media_player.volume_set target: entity_id: media_player.basement_google_speaker data: - volume_level: > - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ states('input_number.basement_google_speaker_night_volume') }} - {% else %} - {{ states('input_number.basement_google_speaker_day_volume') }} - {% endif %} + volume_level: "{{ states('sensor.basement_google_speaker_volume') }}" - service: media_player.volume_mute target: entity_id: media_player.basement_google_speaker @@ -405,24 +436,14 @@ script: - condition: template value_template: > {% set current = state_attr('media_player.living_room_echo_dot','volume_level') | float %} - {% set night = states('input_number.living_room_echo_dot_night_volume') | float %} - {% set day = states('input_number.living_room_echo_dot_day_volume') | float %} - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ current != night }} - {% else %} - {{ current != day }} - {% endif %} + {% set expected = states('sensor.living_room_echo_dot_volume') | float %} + {{ current != expected }} then: - service: media_player.volume_set target: entity_id: media_player.living_room_echo_dot data: - volume_level: > - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ states('input_number.living_room_echo_dot_night_volume') }} - {% else %} - {{ states('input_number.living_room_echo_dot_day_volume') }} - {% endif %} + volume_level: "{{ states('sensor.living_room_echo_dot_volume') }}" # Master Bedroom Echo Dot - if: - condition: state @@ -435,24 +456,14 @@ script: - condition: template value_template: > {% set current = state_attr('media_player.master_bedroom_echo_dot','volume_level') | float %} - {% set night = states('input_number.master_bedroom_echo_dot_night_volume') | float %} - {% set day = states('input_number.master_bedroom_echo_dot_day_volume') | float %} - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ current != night }} - {% else %} - {{ current != day }} - {% endif %} + {% set expected = states('sensor.master_bedroom_echo_dot_volume') | float %} + {{ current != expected }} then: - service: media_player.volume_set target: entity_id: media_player.master_bedroom_echo_dot data: - volume_level: > - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ states('input_number.master_bedroom_echo_dot_night_volume') }} - {% else %} - {{ states('input_number.master_bedroom_echo_dot_day_volume') }} - {% endif %} + volume_level: "{{ states('sensor.master_bedroom_echo_dot_volume') }}" # Kallen Bedroom Speaker - if: - condition: and @@ -483,24 +494,14 @@ script: - condition: template value_template: > {% set current = state_attr('media_player.kallen_bedroom_google_speaker','volume_level') | float %} - {% set night = states('input_number.kallen_bedroom_google_speaker_night_volume') | float %} - {% set day = states('input_number.kallen_bedroom_google_speaker_day_volume') | float %} - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ current != night }} - {% else %} - {{ current != day }} - {% endif %} + {% set expected = states('sensor.kallen_bedroom_google_speaker_volume') | float %} + {{ current != expected }} then: - service: media_player.volume_set target: entity_id: media_player.kallen_bedroom_google_speaker data: - volume_level: > - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ states('input_number.kallen_bedroom_google_speaker_night_volume') }} - {% else %} - {{ states('input_number.kallen_bedroom_google_speaker_day_volume') }} - {% endif %} + volume_level: "{{ states('sensor.kallen_bedroom_google_speaker_volume') }}" - service: media_player.volume_mute target: entity_id: media_player.kallen_bedroom_google_speaker @@ -536,24 +537,14 @@ script: - condition: template value_template: > {% set current = state_attr('media_player.emma_bedroom_google_speaker','volume_level') | float %} - {% set night = states('input_number.emma_bedroom_google_speaker_night_volume') | float %} - {% set day = states('input_number.emma_bedroom_google_speaker_day_volume') | float %} - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ current != night }} - {% else %} - {{ current != day }} - {% endif %} + {% set expected = states('sensor.emma_bedroom_google_speaker_volume') | float %} + {{ current != expected }} then: - service: media_player.volume_set target: entity_id: media_player.emma_bedroom_google_speaker data: - volume_level: > - {% if is_state('input_boolean.give_me_darkness','on') %} - {{ states('input_number.emma_bedroom_google_speaker_night_volume') }} - {% else %} - {{ states('input_number.emma_bedroom_google_speaker_day_volume') }} - {% endif %} + volume_level: "{{ states('sensor.kallen_bedroom_google_speaker_volume') }}" - service: media_player.volume_mute target: entity_id: media_player.emma_bedroom_google_speaker @@ -1326,53 +1317,34 @@ script: media_player.basement_google_speaker {% endif %} volume_level: >- - {% set numbers_night = [ - states.input_number.emma_bedroom_google_speaker_night_volume.state, - states.input_number.kallen_bedroom_google_speaker_night_volume.state + {% set numbers = [ + states.sensor.emma_bedroom_google_speaker_volume.state, + states.sensor.kallen_bedroom_google_speaker_volume.state ] %} - {% set numbers_day = [ - states.input_number.emma_bedroom_google_speaker_day_volume.state, - states.input_number.kallen_bedroom_google_speaker_day_volume.state - ] %} - {% set kidsgroup_night = numbers_night | list | min | float %} - {% set kidsgroup_day = numbers_day | list | max | float %} + {% set kidsgroup = numbers | list | min | float %} {% if type in ['critical'] %} 1.0 - {% elif is_state('input_boolean.give_me_darkness','on') %} - {% if who in ['Everywhere','everywhere','kids_bedrooms','all_bedrooms'] %} - {% if is_state('input_boolean.emma_sleeping','on') and is_state('input_boolean.kallen_sleeping','off') %} - {{ states('input_number.kallen_bedroom_google_speaker_night_volume') }} - {% elif is_state('input_boolean.kallen_sleeping','on') and is_state('input_boolean.emma_sleeping','off') %} - {{ states('input_number.emma_bedroom_google_speaker_night_volume') }} - {% else %} - {{ kidsgroup_night }} - {% endif %} - {% elif who in ['kallen_bedroom','media_player.kallen_bedroom_google_speaker'] %} - {{ states('input_number.kallen_bedroom_google_speaker_night_volume') }} - {% elif who in ['emma_bedroom','media_player.emma_bedroom_google_speaker'] %} - {{ states('input_number.emma_bedroom_google_speaker_night_volume') }} - {% elif who in ['Basement Google','basement_google'] %} - {{ states('input_number.basement_google_speaker_night_volume') }} - {% else %} - 0.3 - {% endif %} {% else %} {% if who in ['Everywhere','everywhere','kids_bedrooms','all_bedrooms'] %} {% if is_state('input_boolean.emma_sleeping','on') and is_state('input_boolean.kallen_sleeping','off') %} - {{ states('input_number.kallen_bedroom_google_speaker_day_volume') }} + {{ states('sensor.kallen_bedroom_google_speaker_volume') }} {% elif is_state('input_boolean.kallen_sleeping','on') and is_state('input_boolean.emma_sleeping','off') %} - {{ states('input_number.emma_bedroom_google_speaker_day_volume') }} + {{ states('sensor.emma_bedroom_google_speaker_volume') }} {% else %} - {{ kidsgroup_day }} + {{ kidsgroup }} {% endif %} {% elif who in ['kallen_bedroom','media_player.kallen_bedroom_google_speaker'] %} - {{ states('input_number.kallen_bedroom_google_speaker_day_volume') }} + {{ states('sensor.kallen_bedroom_google_speaker_volume') }} {% elif who in ['emma_bedroom','media_player.emma_bedroom_google_speaker'] %} - {{ states('input_number.emma_bedroom_google_speaker_day_volume') }} + {{ states('sensor.emma_bedroom_google_speaker_volume') }} {% elif who in ['Basement Google','basement_google'] %} - {{ states('input_number.basement_google_speaker_day_volume') }} + {{ states('sensor.basement_google_speaker_volume') }} {% else %} - 0.6 + {% if is_state('input_boolean.give_me_darkness','on') %} + 0.3 + {% else %} + 0.6 + {% endif %} {% endif %} {% endif %} - service: tts.amazon_polly_say