home-assistant/packages/sonos.yaml

104 lines
3.6 KiB
YAML

automation:
- alias: Toggle Sonos night mode
action:
- service: sonos.set_option
entity_id: media_player.den
data_template:
night_sound: >-
{% set start = states.input_datetime.sonos_nightmode_start.attributes %}
{% set end = states.input_datetime.sonos_nightmode_end.attributes %}
{% set now_ = (now().hour, now().minute, now().second) %}
{% set start_ = (start.hour, start.minute, start.second) %}
{% set end_ = (end.hour, end.minute, end.second) %}
{% if start_ > end_ -%}
{{ now_ >= start_ or now_ < end_ }}
{%- else -%}
{{ now_ >= start_ and now_ < end_ }}
{%- endif -%}
trigger:
- platform: template
value_template: "{{ states('sensor.time') == (states.input_datetime.sonos_nightmode_start.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
- platform: template
value_template: "{{ states('sensor.time') == (states.input_datetime.sonos_nightmode_end.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
sensor:
- platform: time_date
display_options:
- time
binary_sensor:
- platform: template
sensors:
den_night_mode:
friendly_name: Sonos Den Night Mode
value_template: >-
{{ state_attr('media_player.den', 'night_sound') }}
input_datetime:
sonos_nightmode_start:
name: Start Night Mode
has_date: false
has_time: true
initial: '22:30'
sonos_nightmode_end:
name: End Night Mode
has_date: false
has_time: true
initial: '08:00'
script:
sonos_tts:
alias: "Sonos TTS"
sequence:
- service: sonos.snapshot
data_template:
entity_id: "{{ sonos_entity|default('media_player.den') }}"
- service: sonos.unjoin
data_template:
entity_id: "{{ sonos_entity|default('media_player.den') }}"
- service: media_player.volume_set
data_template:
entity_id: "{{ sonos_entity|default('media_player.den') }}"
volume_level: "{{ volume|default(0.5) }}"
- service: media_player.play_media
data:
entity_id: media_player.den
media_content_id: https://hass.phoenixinquis.is-a-geek.org/local/chime.ogg
media_content_type: music
- delay: '00:00:03'
- service: tts.amazon_polly_say
data_template:
entity_id: "{{ sonos_entity|default('media_player.den') }}"
message: "{{ message }}"
- delay: "{{ delay|default('00:00:00') }}"
- wait_template: "{{ is_state(sonos_entity|default('media_player.den'), 'playing') }}"
timeout: '00:00:05'
- wait_template: "{{ not is_state(sonos_entity|default('media_player.den'), 'playing') }}"
timeout: '00:02:00'
- service: sonos.restore
data_template:
entity_id: "{{ sonos_entity|default('media_player.den') }}"
sonos_toggle_night_mode:
alias: "Toggle Sonos Night Mode"
sequence:
- service: sonos.set_option
data_template:
entity_id: >-
{{ sonos_entity|default('media_player.den') }}
night_sound: >-
{{ not state_attr('media_player.den', 'night_sound') }}
group:
sonos_players:
name: Sonos
entities:
- media_player.den
sonos_automations:
name: Automations
entities:
- automation.toggle_sonos_night_mode
sonos_options:
name: Options
entities:
- input_datetime.sonos_nightmode_start
- input_datetime.sonos_nightmode_end
sonos_scripts:
name: Scripts
entities:
- script.sonos_tts