Skip to content

Instantly share code, notes, and snippets.

@PilaScat
Forked from Ante987/speaker_volume.yaml
Created October 25, 2024 12:14
Show Gist options
  • Save PilaScat/a66251ed04d513642fb18cd99160ec0e to your computer and use it in GitHub Desktop.
Save PilaScat/a66251ed04d513642fb18cd99160ec0e to your computer and use it in GitHub Desktop.
Change/reset speaker volume
blueprint:
name: Set volume of speakers based of time of day
description: Set volume to different level on different times a day
domain: automation
input:
daytime_starts:
name: Time of day
description: Change level depending of time of day, Daytime level
default: '07:00:00'
selector:
time:
daytime_ends:
name: Time of night
description: Change level depending of time of day, Nighttime level
default: '20:00:00'
selector:
time:
volume_day:
name: Set volume day
description: The volume you want your media player to be reset to
default: '0.50'
selector:
number:
min: '0.00'
max: '1.00'
step: '0.10'
mode: slider
volume_night:
name: Set volume night
description: The volume you want your media player to be reset to
default: '0.10'
selector:
number:
min: '0.00'
max: '1.00'
step: '0.10'
mode: slider
filter:
name: Filter players
description: Players to be reset or not. Only
entities are supported, devices must be expanded!
default:
entity_id: []
selector:
target:
entity:
domain: media_player
include_exclude:
name: Filter invert
description: Turn off to reset choosen and on to choose all other
default: true
selector:
boolean: {}
variables:
filter: !input 'filter'
player: >
{% set result = namespace(player=[]) %}
{% for state in states.media_player %}
{% if include_exclude == 'true' %}
{% if not state.state == 'playing' and not state.entity_id in filter.entity_id %}
{% set result.player = result.player + [state.entity_id] %}
{% endif %}
{% else %}
{% if not state.state == 'playing' and state.entity_id in filter.entity_id %}
{% set result.player = result.player + [state.entity_id] %}
{% endif %}
{% endif %}
{% endfor %}
{{result.player|join(',')}}
trigger:
- platform: time
at: !input 'daytime_starts'
- platform: time
at: !input 'daytime_ends'
action:
- choose:
- conditions:
- after: !input 'daytime_starts'
before: !input 'daytime_ends'
condition: time
sequence:
- service: media_player.volume_set
data_template:
entity_id: '{{ player }}'
volume_level: !input 'volume_day'
default:
- service: media_player.volume_set
data_template:
entity_id: '{{ player }}'
volume_level: !input 'volume_night'
mode: 'single'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment