Forked from sbyx/wake-up-light-alarm-with-sunrise-effect.yaml
Last active
December 3, 2023 17:47
-
-
Save RuslanLanket/4a98f2e24c3555f48aa97b4eb3bc2f73 to your computer and use it in GitHub Desktop.
Home Assistant Blueprint: Будильник с эффектом восхода солнца
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Будильник с эффектом восхода солнца | |
description: 'Будильник с эффектом восхода солнца с регулировкой яркости и цветовой температуры. | |
Важно: Требуется датчик date_time_iso в configuration.yaml, не исполняемый вручную! | |
оригинал взят отсюда https://community.home-assistant.io/t/wake-up-light-alarm-with-sunrise-effect/255193 | |
исходник тут https://gist.github.com/sbyx/96c43b13b90ae1c35b872313ba1d2d2d | |
Перевевёл на Русский и немного под себя переделал. Суть переделки проста: рассвет в течении всего времении а не только 5 минут.' | |
domain: automation | |
input: | |
light_entity: | |
name: Сущность света | |
description: Лампа для управления которая будет эмулировать восход солнца. Диапазон цветовой температуры определяется автоматически. | |
selector: | |
entity: | |
domain: light | |
timestamp_sensor: | |
name: Датчик времени или переменная | |
description: 'Датчик времени или переменная device_class: timestamp определяющая время срабатывания будильника | |
(Установите ''none'' для ручно установки будильника)' | |
default: none | |
selector: | |
entity: | |
device_class: timestamp | |
manual_time: | |
name: Ручная установка время срабатывания будильника | |
description: Время для сабатывания будильника если не указана сущность датчика времени. | |
default: '7:00:00' | |
selector: | |
time: {} | |
check_entity: | |
name: Дополнительный объект для проверки перед запуском восхода солнца | |
description: Если установлено, проверяет, находится ли объект "включен" или "дома" перед запуском. Используйте, | |
например, датчик (рабочего дня), device_tracker или объект person. | |
default: none | |
selector: | |
entity: {} | |
sunrise_duration: | |
name: Продолжительность восхода солнца | |
description: Восход солнца начнется за заданное количество минут до временной метки. | |
default: 25 | |
selector: | |
number: | |
min: 5.0 | |
max: 60.0 | |
step: 5.0 | |
unit_of_measurement: min | |
mode: slider | |
start_brightness: | |
name: Минимальная яркость | |
description: Яркость для начала. Некоторые лампочки игнорируют очень низкие значения и вместо этого могут включаться с полной яркостью! | |
default: 1 | |
selector: | |
number: | |
min: 1.0 | |
max: 255.0 | |
step: 1.0 | |
mode: slider | |
end_brightness: | |
name: Максимальная яркость | |
description: Яркость будет менятьсяь от минимальной до настроенной | |
value. | |
default: 254 | |
selector: | |
number: | |
min: 5.0 | |
max: 255.0 | |
step: 1.0 | |
mode: slider | |
min_mired: | |
name: Минимальная температура света | |
description: 'Минимальная используемая цветовая температура. (0: самая низкая поддерживаемая)' | |
default: 0 | |
selector: | |
number: | |
min: 0.0 | |
max: 500.0 | |
step: 5.0 | |
mode: slider | |
unit_of_measurement: mired | |
pre_sunrise_actions: | |
name: Действия перед восходом солнца | |
description: Необязательные действия, которые необходимо выполнить до начала восхода солнца. | |
default: [] | |
selector: | |
action: {} | |
post_sunrise_actions: | |
name: Действия после восхода солнца | |
description: Необязательные действия, выполняемые после окончания восхода солнца (примерно во время срабатывания будильника). | |
default: [] | |
selector: | |
action: {} | |
source_url: https://gist.github.com/sbyx/96c43b13b90ae1c35b872313ba1d2d2d | |
variables: | |
light_entity: !input 'light_entity' | |
sensor: !input 'timestamp_sensor' | |
sunrise_duration: !input 'sunrise_duration' | |
start_brightness: !input 'start_brightness' | |
end_brightness: !input 'end_brightness' | |
range_brightness: '{{float(end_brightness)-float(start_brightness)}}' | |
manual_time: !input 'manual_time' | |
seconds: '{{float(sunrise_duration) * 60}}' | |
min_mired: !input 'min_mired' | |
start_mired: '{{state_attr(light_entity, ''max_mireds'')}}' | |
end_mired: '{{[state_attr(light_entity, ''min_mireds'')|int(0), min_mired|int(0)]|max}}' | |
tick_time: '{{float(seconds) / float(range_brightness)}}' | |
check_entity: !input 'check_entity' | |
trigger: | |
- platform: time_pattern | |
minutes: '*' | |
condition: [] | |
action: | |
- wait_template: '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
- wait_template: '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
~ '' '' ~ manual_time) - as_timestamp(states(''sensor.date_time_iso'')) <= float(seconds) | |
and states(check_entity) in [''unknown'', ''on'', ''home'']}}' | |
- choose: [] | |
default: !input 'pre_sunrise_actions' | |
- condition: template | |
value_template: '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
- condition: template | |
value_template: '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
~ '' '' ~ manual_time) - as_timestamp(now()) <= float(seconds) and states(check_entity) | |
in [''unknown'', ''on'', ''home'']}}' | |
- choose: | |
- conditions: | |
- '{{state_attr(light_entity, ''min_mireds'') != None}}' | |
sequence: | |
- service: light.turn_on | |
data: | |
brightness: '{{start_brightness}}' | |
color_temp: '{{start_mired}}' | |
entity_id: !input 'light_entity' | |
default: | |
- service: light.turn_on | |
data: | |
brightness: '{{start_brightness}}' | |
entity_id: !input 'light_entity' | |
- repeat: | |
while: | |
- '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
- '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
~ '' '' ~ manual_time) - as_timestamp(now()) <= float(seconds)}}' | |
sequence: | |
- delay: '{{tick_time}}' | |
- choose: | |
- conditions: | |
- '{{0 < state_attr(light_entity, ''brightness'') | int(0) < end_brightness | | |
int}}' | |
- '{{sensor == ''none'' or as_timestamp(states(sensor), None) != None}}' | |
- '{{0 < as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
~ '' '' ~ manual_time) - as_timestamp(now()) <= float(seconds)}}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{state_attr(light_entity, ''min_mireds'') != None}}' | |
sequence: | |
- service: light.turn_on | |
data: | |
brightness: '{{(float(end_brightness) - (float(range_brightness) * | |
(as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
~ '' '' ~ manual_time) - as_timestamp(now())) / float(seconds))) | |
| int(0)}}' | |
color_temp: '{{(float(end_mired) + (float(start_mired) - float(end_mired)) | |
* ((as_timestamp(states(sensor) if sensor != ''none'' else states(''sensor.date'') | |
~ '' '' ~ manual_time) - as_timestamp(now())) / float(seconds))) | |
| int(0)}}' | |
entity_id: !input 'light_entity' | |
default: | |
- service: light.turn_on | |
data: | |
brightness: '{{(float(end_brightness) - (float(range_brightness) * (as_timestamp(states(sensor) | |
if sensor != ''none'' else states(''sensor.date'') ~ '' '' ~ manual_time) | |
- as_timestamp(now())) / float(seconds))) | int(0)}}' | |
entity_id: !input 'light_entity' | |
- choose: [] | |
default: !input 'post_sunrise_actions' | |
mode: single | |
max_exceeded: silent |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment