mirror of
https://github.com/steku/ha_cercadian_alarm.git
synced 2024-12-22 06:46:35 +00:00
140 lines
4.5 KiB
YAML
140 lines
4.5 KiB
YAML
blueprint:
|
|
name: Lamp Wake Up
|
|
author: steriku
|
|
description: >
|
|
IN TESTING ONLY. NOT FINISHED. DO NOT USE
|
|
Campanion Script to the parabolic alarm automation blueprint. Turn on lamps brighter based on wake time
|
|
source_url: https://github.com/steku/ha_cercadian_alarm/blob/main/blueprint_parabolic_alarm_script.yaml
|
|
domain: script
|
|
homeassistant:
|
|
min_version: 2024.9.0
|
|
input:
|
|
target_kelvin:
|
|
description: Coldest Kelvin value. This is the end value - most white
|
|
selector:
|
|
color_temp:
|
|
unit: kelvin
|
|
default: 6500
|
|
name: Coldest Kelvin
|
|
start_kelvin:
|
|
description: >-
|
|
This is the start value. If the light is on the current value from the
|
|
state of the light will be used and this will be ignored.
|
|
selector:
|
|
color_temp:
|
|
unit: kelvin
|
|
min: 2500
|
|
max: 6500
|
|
default: 6500
|
|
name: Warmest Kelvin
|
|
max_brightness_pct:
|
|
description: Maximum brightness in percent to reach by the end of the script
|
|
selector:
|
|
number:
|
|
min: 1
|
|
max: 100
|
|
default: 80
|
|
name: Max brightness
|
|
alarm_length:
|
|
description: >-
|
|
This is the start to finish time. Take this into account when setting up
|
|
the automation this script is called by.
|
|
selector:
|
|
number:
|
|
min: 1
|
|
max: 60
|
|
default: 10
|
|
name: Alarm Length
|
|
steps_per_minute:
|
|
description: How many steps per minute
|
|
selector:
|
|
number:
|
|
min: 1
|
|
max: 12
|
|
default: 12
|
|
name: Steps Per minute
|
|
target_light:
|
|
description: A single light or group
|
|
selector:
|
|
entity:
|
|
filter:
|
|
domain: light
|
|
name: Target Light
|
|
light_timeout:
|
|
description: >-
|
|
Minutes to delay after Max Brightness has been reached to turn the light
|
|
back off. Value of 0 disables the timeout
|
|
selector:
|
|
number:
|
|
min: 0
|
|
max: 60
|
|
default: 5
|
|
name: Light Timeout
|
|
variables:
|
|
steps: !input 'alarm_length' * !input 'steps_per_minute'
|
|
min_brightness: |-
|
|
{% if states(!input 'target_light') == 'off' %}
|
|
3
|
|
{% else %}
|
|
{{ state_attr(!input 'target_light', 'brightness') }}
|
|
{% endif %}
|
|
max_brightness: !input 'max_brightness_pct' * 2.55
|
|
kelvin_step: (!input 'target_kelvin' - !input 'start_kelvin') / steps
|
|
bright_step: (!input 'max_brightness' - !input 'min_brightness') / steps
|
|
start_time: "{{ as_timestamp(now()) }}"
|
|
individual_step: 60 / !input 'steps_per_minute'
|
|
mode: parallel
|
|
sequence:
|
|
- repeat:
|
|
until:
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ is_state(!input 'target_light', 'off') }}"
|
|
- condition: template
|
|
value_template: "{{ state_attr(!input 'target_light', 'brightness') >= max_brightness }}"
|
|
- condition: template
|
|
value_template: >-
|
|
{{ state_attr(!input 'target_light', 'color_temp_kelvin') >=
|
|
target_kelvin }}
|
|
- condition: template
|
|
value_template: >-
|
|
{{ (((as_timestamp(now()) - start_time) / individual_step) |
|
|
round(0, "ceil")) > steps }}
|
|
sequence:
|
|
- variables:
|
|
steps_to_now: |-
|
|
{{ ((as_timestamp(now()) - start_time) / individual_step) |
|
|
round(0, "ceil") }}
|
|
brightness: >-
|
|
{{ min_brightness + (bright_step * steps_to_now) | round(0,
|
|
'ceil') }}
|
|
kelvin: "{{ !input 'start_kelvin' + (kelvin_step * steps_to_now) }}"
|
|
- delay:
|
|
seconds: "{{ individual_step }}"
|
|
- if:
|
|
- condition: template
|
|
value_template: "{{ is_state(!input 'target_light', 'on') }}"
|
|
then:
|
|
- data:
|
|
brightness: "{{ brightness }}"
|
|
color_temp_kelvin: "{{ kelvin }}"
|
|
transition: "{{ individual_step - 1 }}"
|
|
target:
|
|
entity_id: "{{ !input 'target_light' }}"
|
|
action: light.turn_on
|
|
- if:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ !input 'light_timeout' != 0 }}"
|
|
- condition: template
|
|
value_template: "{{ is_state(!input 'target_light', 'on') }}"
|
|
then:
|
|
- delay:
|
|
minutes: "{{ !input 'light_timeout' }}"
|
|
- data: {}
|
|
target:
|
|
entity_id: "{{ !input 'target_light' }}"
|
|
action: light.turn_off
|