mirror of
https://github.com/steku/ha_cercadian_alarm.git
synced 2024-12-22 06:46:35 +00:00
Working version of the script blueprint
This commit is contained in:
parent
c1c7994a6b
commit
304b7d8145
@ -6,8 +6,8 @@ I created my own script and automation to bypass the frustations above. It is no
|
||||
|
||||
The second component is an blueprint that executes the script 3 times in series with different values for each execution.
|
||||
|
||||
## Detailed Explaination of Script
|
||||
The script expects to be kicked off with parameters defined. For the script to work, the target light needs to be and set to starting Kelvin values. The starting brightnes is always 1%. The blueprint handles the inital turning on of the light. The kelvin value of the light will be used as the starting value.
|
||||
## Detailed Explaination of Script Blueprint
|
||||
The script expects to be kicked off with parameters defined. For the script to work, the target light needs to be and set to starting Kelvin values. The starting brightnes is always 1%. The automation blueprint handles the inital turning on of the light. The kelvin value of the light will be used as the starting value.
|
||||
|
||||
If you turn off the light at any point while the script is running, the script and blueprint will end.
|
||||
|
||||
|
@ -1,147 +0,0 @@
|
||||
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
|
||||
fields:
|
||||
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:
|
||||
# alarm_length: !input alarm_length
|
||||
# steps_per_minute: !input steps_per_minute
|
||||
# target_light: !input target_light
|
||||
# max_brightness_pct: !input max_brightness_pct
|
||||
# target_kelvin: !input target_kelvin
|
||||
# start_kelvin: !input start_kelvin
|
||||
# light_timeout: !input light_timeout
|
||||
|
||||
steps: "{{ alarm_length * steps_per_minute }}"
|
||||
min_brightness: |-
|
||||
{% if states(target_light) == 'off' %}
|
||||
3
|
||||
{% else %}
|
||||
{{ state_attr(target_light, 'brightness') }}
|
||||
{% endif %}
|
||||
max_brightness: "{{ max_brightness_pct * 2.55 }}"
|
||||
kelvin_step: "{{ (target_kelvin - start_kelvin) / steps }}"
|
||||
bright_step: "{{ (max_brightness - min_brightness) / steps }}"
|
||||
start_time: "{{ as_timestamp(now()) }}"
|
||||
individual_step: "{{ 60 / steps_per_minute }}"
|
||||
sequence:
|
||||
- repeat:
|
||||
until:
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ is_state(target_light, 'off') }}"
|
||||
- condition: template
|
||||
value_template: "{{ state_attr(target_light, 'brightness') >= max_brightness }}"
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ state_attr(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: "{{ start_kelvin + (kelvin_step * steps_to_now) }}"
|
||||
- delay:
|
||||
seconds: "{{ individual_step }}"
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ is_state(target_light, 'on') }}"
|
||||
then:
|
||||
- data:
|
||||
brightness: "{{ brightness }}"
|
||||
color_temp_kelvin: "{{ kelvin }}"
|
||||
transition: "{{ individual_step - 1 }}"
|
||||
target:
|
||||
entity_id: "{{ target_light }}"
|
||||
action: light.turn_on
|
||||
- if:
|
||||
- condition: and
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: "{{ light_timeout != 0 }}"
|
||||
- condition: template
|
||||
value_template: "{{ is_state(target_light, 'on') }}"
|
||||
then:
|
||||
- delay:
|
||||
minutes: "{{ light_timeout }}"
|
||||
- data: {}
|
||||
target:
|
||||
entity_id: "{{ target_light }}"
|
||||
action: light.turn_off
|
||||
mode: parallel
|
@ -1,4 +1,87 @@
|
||||
alias: Lamp Wake Up
|
||||
blueprint:
|
||||
name: Light Sunrise
|
||||
author: steriku
|
||||
description: >
|
||||
Campanion Script to the parabolic alarm automation blueprint.
|
||||
source_url: https://github.com/steku/ha_cercadian_alarm/blob/main/blueprint_parabolic_alarm_script.yaml
|
||||
domain: script
|
||||
homeassistant:
|
||||
min_version: 2024.9.0
|
||||
fields:
|
||||
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: "{{ alarm_length * steps_per_minute }}"
|
||||
min_brightness: |-
|
||||
{% if states(target_light) == 'off' %}
|
||||
3
|
||||
{% else %}
|
||||
{{ state_attr(target_light, 'brightness') }}
|
||||
{% endif %}
|
||||
max_brightness: "{{ max_brightness_pct * 2.55 }}"
|
||||
kelvin_step: "{{ (target_kelvin - start_kelvin) / steps }}"
|
||||
bright_step: "{{ (max_brightness - min_brightness) / steps }}"
|
||||
start_time: "{{ as_timestamp(now()) }}"
|
||||
individual_step: "{{ 60 / steps_per_minute }}"
|
||||
sequence:
|
||||
- repeat:
|
||||
until:
|
||||
@ -52,94 +135,4 @@ sequence:
|
||||
target:
|
||||
entity_id: "{{ target_light }}"
|
||||
action: light.turn_off
|
||||
description: Turn on lamps brighter based on wake time
|
||||
fields:
|
||||
target_kelvin:
|
||||
description: Coldest Kelvin value. This is the end value - most white
|
||||
selector:
|
||||
color_temp:
|
||||
unit: kelvin
|
||||
required: true
|
||||
default: 6500
|
||||
name: Coldest Kelvin
|
||||
example: 6500
|
||||
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.
|
||||
example: 2500
|
||||
selector:
|
||||
color_temp:
|
||||
unit: kelvin
|
||||
min: 2500
|
||||
max: 6500
|
||||
default: 6500
|
||||
required: true
|
||||
name: Warmest Kelvin
|
||||
max_brightness_pct:
|
||||
description: Maximum brightness in percent to reach by the end of the script
|
||||
example: 80
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 100
|
||||
default: 80
|
||||
required: true
|
||||
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.
|
||||
example: 10
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 60
|
||||
default: 10
|
||||
required: true
|
||||
name: Alarm Length
|
||||
steps_per_minute:
|
||||
description: How many steps per minute
|
||||
example: 4
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 12
|
||||
default: 12
|
||||
name: Steps Per minute
|
||||
required: true
|
||||
target_light:
|
||||
description: A single light or group
|
||||
example: light.master_lamp
|
||||
selector:
|
||||
entity:
|
||||
filter:
|
||||
domain: light
|
||||
name: Target Light
|
||||
required: true
|
||||
light_timeout:
|
||||
description: >-
|
||||
Minutes to delay after Max Brightness has been reached to turn the light
|
||||
back off. Value of 0 disables the timeout
|
||||
example: 5
|
||||
selector:
|
||||
number:
|
||||
min: 0
|
||||
max: 60
|
||||
default: 5
|
||||
name: Light Timeout
|
||||
required: true
|
||||
variables:
|
||||
steps: "{{ alarm_length * steps_per_minute }}"
|
||||
min_brightness: |-
|
||||
{% if states(target_light) == 'off' %}
|
||||
3
|
||||
{% else %}
|
||||
{{ state_attr(target_light, 'brightness') }}
|
||||
{% endif %}
|
||||
max_brightness: "{{ max_brightness_pct * 2.55 }}"
|
||||
kelvin_step: "{{ (target_kelvin - start_kelvin) / steps }}"
|
||||
bright_step: "{{ (max_brightness - min_brightness) / steps }}"
|
||||
start_time: "{{ as_timestamp(now()) }}"
|
||||
individual_step: "{{ 60 / steps_per_minute }}"
|
||||
mode: parallel
|
||||
|
Loading…
Reference in New Issue
Block a user