Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save DivanX10/025daba712bffc0a2159b24c7aebf3e3 to your computer and use it in GitHub Desktop.
Save DivanX10/025daba712bffc0a2159b24c7aebf3e3 to your computer and use it in GitHub Desktop.
Home Assistant. Автоматическая корректировка диапазона уровня света
Зачем это нужно?
Допустим у вас свет включается при достижении порога 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