blueprint: name: Parabolic Alarm Automation description: Turn a light on based on a start time, whether it is a workday and whether a person is home. This is to match the sunrise and allow for a natural wake-up. domain: automation input: alarm_start_time: name: 🕒 Start Time description: Datetime helper for the alarm to start. Use time only and Workday sensor to determine what days to run. selector: entity: filter: - domain: - input_datetime multiple: false workday_sensor: name: 📆 Workday Sensor description: Binary Sensor that is used to determine whether it should run. Typically from Workday Integration. More information here - https://www.home-assistant.io/integrations/workday/ selector: entity: filter: - domain: - binary_sensor multiple: false person_sensor: name: 👤 Person Sensor description: Select the person sensor so that the alarm will only run when you are home. default: [] selector: entity: filter: - domain: - person multiple: true pre_action: name: 🎮 Pre Script Action description: An action you want to perform before the lights turn on. default: [] selector: action: {} alarm_script: name: "\U0001F4C4 Script to trigger" description: Light Alarm Script selector: entity: filter: - domain: - script multiple: false target_light: name: "\U0001F4A1 Lights" description: The light(s) with kelvin selector: entity: filter: - domain: - light multiple: false light_timeout: name: "⏱️ Timeout" description: Light will turn off after this time on last run default: 10 selector: number: min: 1.0 max: 60.0 step: 1.0 mode: slider keep_light_on: name: 🧐 Keep Light On description: If enabled, the light will stay on after the alarm sequence finishes. default: false selector: boolean: {} steps_per_minute: name: 🏃‍♂️ Steps per minute for all runs description: Used for configuring percentage of each step for brightness and color temperature default: 12 selector: number: min: 1.0 max: 60.0 step: 1.0 mode: slider start_kelvin_temp: description: Start Kelvin value (warm) for 1st run selector: color_temp: unit: kelvin default: 2500 name: "☀️ Starting Kelvin" target_kelvin_1: description: Target Kelvin value (cold) for the end of the first run selector: color_temp: unit: kelvin default: 3000 name: "☀️ Target Kelvin 1" max_brightness_1: name: "⭐️ Maximum Brightness 1" description: Finish value for first run default: 10 selector: number: min: 1.0 max: 100.0 step: 1.0 mode: slider alarm_length_1: name: "⏰ Alarm Length 1" description: This is the start to finish time for the first run default: 10 selector: number: min: 1.0 max: 60.0 step: 1.0 mode: slider target_kelvin_2: description: Target Kelvin value (cold) for second run selector: color_temp: unit: kelvin default: 4000 name: 🌗 Target Kelvin 2 max_brightness_2: name: ⭐️ Maximum Brightness 2 description: Finish value for second run default: 50 selector: number: min: 1.0 max: 100.0 step: 1.0 mode: slider alarm_length_2: name: ⏰ Alarm length 2 description: This is the start to finish time for the second run default: 10 selector: number: min: 1.0 max: 60.0 step: 1.0 mode: slider target_kelvin_3: description: Target Kelvin value (cold) for third run selector: color_temp: unit: kelvin default: 6500 name: 🌑 Target Kelvin 3 max_brightness_3: name: ⭐️ Maximum Brightness 3 description: Finish value for third and final run default: 100 selector: number: min: 1.0 max: 100.0 step: 1.0 mode: slider alarm_length_3: name: ⏰ Alarm Length 3 description: This is the start to finish time for the third run default: 5 selector: number: min: 1.0 max: 60.0 step: 1.0 mode: slider post_action: name: 🎮 Post Script Action description: An action you want to run after the script has finished default: [] selector: action: {} trigger: - trigger: time at: !input alarm_start_time condition: - condition: state entity_id: !input workday_sensor state: "on" - condition: state entity_id: !input person_sensor state: home action: - choose: - conditions: [] sequence: !input pre_action - action: light.turn_on target: entity_id: !input target_light data: color_temp_kelvin: !input start_kelvin_temp brightness_pct: 1 - delay: "00:00:05" - action: !input alarm_script data: target_kelvin: !input target_kelvin_1 start_kelvin: !input start_kelvin_temp max_brightness_pct: !input max_brightness_1 alarm_length: !input alarm_length_1 steps_per_minute: !input steps_per_minute light_timeout: 0 target_light: !input target_light - service: !input alarm_script data: target_kelvin: !input target_kelvin_2 start_kelvin: !input target_kelvin_1 max_brightness_pct: !input max_brightness_2 alarm_length: !input alarm_length_2 steps_per_minute: !input steps_per_minute light_timeout: 0 target_light: !input target_light - service: !input alarm_script data: target_kelvin: !input target_kelvin_3 start_kelvin: !input target_kelvin_2 max_brightness_pct: !input max_brightness_3 alarm_length: !input alarm_length_3 steps_per_minute: !input steps_per_minute light_timeout: !input light_timeout target_light: !input target_light - choose: - conditions: [] sequence: !input post_action mode: parallel max: 10