home-assistant-blueprints/alarm_clock.yaml

139 lines
3.7 KiB
YAML

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
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
# has_woken_up:
# name: Person has woken up
# 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
# presence:
# name: presence
# selector:
# entity:
# domain: input_boolean
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
# has_woken_up: !input has_woken_up
sleep_mode: !input sleep_mode
# presence: !input presence
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'] }}
# - condition: state
# entity_id: !input has_woken_up
# state: 'off'
# for:
# hours: 8
action:
- sequence: !input before_wake_up
- service: switch.turn_off
entity_id: !input 'sleep_mode'
# - service: input_boolean.turn_on
# target:
# entity_id: !input 'presence'
- 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"
# - wait_template: "{{ is_state(has_woken_up, 'on') }}"
- delay:
minutes: 10
- service: light.turn_off
entity_id: !input 'target_light'
data:
transition: 60
- sequence: !input after_wake_up
# - service: input_boolean.turn_off
# target:
# entity_id: !input 'presence'