blueprint: name: Alarm Clock description: Alarm Clock with wake up light domain: automation source_url: https://git.thethomaas.net/TheThomaas/home-assistant-blueprints/raw/branch/main/alarm_clock.yaml input: alarm_time: name: Alarm Time description: Input containing the time of the alarm selector: entity: domain: input_datetime time_offset: name: Time Offset description: Offset to turn on the lights before the alarm default: 5 selector: number: min: 0 max: 30 unit_of_measurement: minutes turn_off_delay: name: Lights turn off delay description: Delay before the lights turn off after waking up default: 10 selector: number: min: 0 max: 30 unit_of_measurement: minutes binary_condition: name: Alarm today description: Trigger the alarm today ? selector: entity: domain: binary_sensor presence_condition: name: Presence Conditions description: Everything that can have a state 'home' selector: entity: domain: - input_select - person target_light: name: Target Light description: Light that will be turned on selector: entity: domain: light alarmed_turned_off: name: Alarm Turned Off description: Everything that can have a state on/off selector: entity: domain: binary_sensor sleep_mode: name: Sleep Mode description: Switch to turn off before the alarm selector: entity: domain: switch additional_section: name: Additional Actions description: Additional actions before and after the lights turn on input: before_wake_up: name: Before wake up action description: Actions before the lights turn on selector: action: after_wake_up: name: After wake up action description: Actions after the lights turn on selector: action: trigger_variables: alarm_time: !input alarm_time time_offset: !input time_offset variables: binary_condition: !input binary_condition presence_condition: !input presence_condition target_light: !input target_light sleep_mode: !input sleep_mode trigger: - platform: template value_template: > {% set Hour, Minute = states("sensor.time").split(":") %} {% set seconds = Hour | int * 3600 + Minute | int * 60 %} {% set offset = time_offset * 60 %} {% set time2 = state_attr(alarm_time, 'timestamp') | timestamp_custom('%H:%M') %} {% set Hour2, Minute2 = time2.split(":") %} {% set seconds2 = Hour2 | int * 3600 + Minute2 | int * 60 %} {{ seconds2 - offset == seconds }} condition: - condition: state entity_id: !input binary_condition state: 'on' - condition: template value_template: > {{ states(presence_condition) in ['Home', 'home'] }} action: - sequence: !input before_wake_up - service: switch.turn_off entity_id: !input 'sleep_mode' - service: light.turn_on entity_id: !input 'target_light' data: brightness_pct: 100 transition: "{{ time_offset * 60 }}" - wait_for_trigger: - platform: state entity_id: !input alarmed_turned_off to: "on" - delay: minutes: !input turn_off_delay - service: light.turn_off entity_id: !input 'target_light' data: transition: 60 - sequence: !input after_wake_up