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