Last active
November 18, 2021 13:57
-
-
Save DivanX10/025daba712bffc0a2159b24c7aebf3e3 to your computer and use it in GitHub Desktop.
Home Assistant. Автоматическая корректировка диапазона уровня света
This file contains 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
Зачем это нужно? | |
Допустим у вас свет включается при достижении порога Min или выключается при достижении порога Max. | |
Это жесткое ограничение по которому свет включается или выключается. Бывает так, что свет включился при достижении порога Min, | |
но по факту в комнате еще светло или текущее значение датчика света еще не достигло порога Min, а в комнате уже темновато. | |
Чтобы отредактировать диапазон, нужно лезть в автоматизацию, или, если добавили переменную диапзонов в Lovelace, но и тогда также нужно менять диапазон вручную | |
Этот вариант позволяет корректировать диапазон автоматически, если мы вклюаем свет вручную. Если сработает автоматика, то диапазоны уровня света | |
не будут меняться. Для этого я использую условие {{ trigger.to_state.context.parent_id == none }} которое работает в том случае, если свет был включен человеком | |
Пояснение про сущности. Я собирал на тестовой машине и использовал виртуальные вспомогательные элементы. Вам нужно заменить эти элементы на | |
реальные сущности | |
input_boolean.virtualnyi_led - это нужно заменить на свое, указываем потолочную люстру или лампы. | |
input_number.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux - указываем вместо сенсор датчика света | |
Создаем два вспомогательных элемента "число", они будут служить для нас в качестве порога диапазона Min и Max | |
input_number.lights_in_the_living_room_low_lux | |
input_number.lights_in_the_living_room_high_lux | |
Автоматизация №1. Автокорректировка диапазона уровня света | |
Код вставлять через GUI. Создаем автоматизацию через GUI , далее нажимаем 3 точки и вставляем код. | |
alias: 'Автокорректировка диапазона уровня света' | |
description: '' | |
trigger: | |
- platform: state | |
entity_id: input_boolean.virtualnyi_led | |
condition: | |
- condition: template | |
value_template: '{{ trigger.to_state.context.parent_id == none }}' | |
action: | |
- choose: | |
- conditions: | |
- condition: state | |
entity_id: input_boolean.virtualnyi_led | |
state: 'on' | |
- condition: numeric_state | |
entity_id: >- | |
input_number.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux | |
below: '100' | |
above: '0' | |
sequence: | |
- service: input_number.set_value | |
target: | |
entity_id: input_number.lights_in_the_living_room_low_lux | |
data: | |
value: >- | |
{{ | |
states("input_number.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux") | |
}} | |
- service: input_number.set_value | |
target: | |
entity_id: input_number.lights_in_the_living_room_high_lux | |
data: | |
value: >- | |
{{ | |
states("input_number.lights_in_the_living_room_low_lux")|round + | |
40 }} | |
- conditions: | |
- condition: state | |
entity_id: input_boolean.virtualnyi_led | |
state: 'off' | |
sequence: | |
- choose: | |
- conditions: | |
- condition: numeric_state | |
entity_id: >- | |
input_number.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux | |
above: '40' | |
below: '99' | |
sequence: | |
- service: input_number.set_value | |
target: | |
entity_id: input_number.lights_in_the_living_room_high_lux | |
data: | |
value: >- | |
{{ | |
states("input_number.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux")}} | |
- service: input_number.set_value | |
target: | |
entity_id: input_number.lights_in_the_living_room_low_lux | |
data: | |
value: >- | |
{{ | |
states("input_number.lights_in_the_living_room_high_lux")|int | |
- 40 }} | |
- conditions: | |
- condition: numeric_state | |
entity_id: >- | |
input_number.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux | |
above: '100' | |
below: '200' | |
sequence: | |
- service: input_number.set_value | |
target: | |
entity_id: input_number.lights_in_the_living_room_low_lux | |
data: | |
value: > | |
{% if | |
states("input_number.lights_in_the_living_room_low_lux")|round | |
>= 100 %} 40 {% else %} {% endif %} | |
- service: input_number.set_value | |
target: | |
entity_id: input_number.lights_in_the_living_room_high_lux | |
data: | |
value: > | |
{% if | |
states("input_number.lights_in_the_living_room_high_lux")|round | |
>= 100 %} 80 {% else %} {% endif %} | |
default: [] | |
default: [] | |
mode: single | |
Как сделаете автоматизацию "Автокорректировка диапазона уровня света", нужно создать вторую автоматизацию, которая будет включать\выключать свет по достижении порога. | |
В автоматизации используем "Выбор" и шаблоны, где указываем следующее | |
Включаем свет при достижении порога Min | |
{{(states('sensor.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux') | float) < (states('input_number.lights_in_the_living_room_low_lux') | float)}} | |
Выключаем свет при достижении порога Max | |
{{(states('sensor.gostinaia_datchik_sveta_potolochnaia_liustra_illuminance_lux') | float) > (states('input_number.lights_in_the_living_room_high_lux') | float)}} | |
Мой вариант не идеальный, но все же работает. Буду признателен, если вас есть рабочий вариант и вы поделитесь своими примерами. | |
Ведь чем больше будет вариантов, тем лучше и можно довести до идеала. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment