Умная кухонная подсветка для Home Assistant
Доброго дня. Был у меня проект: подсветка на Arduino. rgbw лента, включалась по датчику движения и через определенное время переходила в режим смены цветов. Работало отлично, нареканий не было. Но захотелось больше свободы в управлении. К тому времени уже был настроен home assistant на raspberry pi. Было решено интегрировать подсветку в HA.
EspHome подходит для этих задач идеально. Нативная интеграция с HA. Обновление прошивки по воздуху. Редактор прямо из панели HA. Лучше не придумаешь. Останавливал только yaml. Я почему-то был уверен, что это язык только для конфигов. Однако, я сильно заблуждался.
Оказалось, yaml умеет и условия и циклы и переменные. Но в моем случае основа это датчик движения. Весь код лучше посмотреть тут.
binary_sensor:
- platform: gpio
pin: D0
name: "motion_kitchen"
device_class: motion
id: motion_kitchen
on_state:
then:
- if:
condition:
and:
- binary_sensor.is_on: "motion_kitchen"
- binary_sensor.is_off: "led_strip_off_allways"
then:
switch.turn_on: light_white_on
- if:
condition:
and:
- binary_sensor.is_off: "motion_kitchen"
- binary_sensor.is_off: bin_light_on
- binary_sensor.is_off: "led_strip_off_allways"
then:
- switch.turn_off: light_white_on
- switch.turn_off: super_light
- delay: 5 min
- if:
condition:
binary_sensor.is_off: "motion_kitchen"
then:
light.turn_off: kitchen_led_line
При обнаружении движения, проверяются бинарные сенсоры, по факту переключатели, которые описаны ниже и в зависимости от их положений лента включается или не включается ну или не выключается.
-delay: 5 min - Это продолжительность эффекта смены цветов.
А так описана сама лента:
light:
- platform: rgbw
id: kitchen_led_line
name: "kitchen_led_line"
red: red_led
green: green_led
blue: blue_led
white: white_led
effects:
- random:
name: Fade
transition_length: 10s
update_interval: 10s
output:
- id: white_led
platform: esp8266_pwm
pin: D1
inverted: true
max_power: 1
- id: blue_led
platform: esp8266_pwm
pin: D2
inverted: true
- id: red_led
platform: esp8266_pwm
pin: D4
inverted: true
transition_length: 10s - за какое время должен изменится цвет
update_interval: 10s - через какое время переключить на другой цвет
Таким образом получаем плавный эффект перехода от цвета к цвету без задержки на каком-либо. Продолжительность белого цвета регулируется самим датчиком движения. На нем есть механическая регулировка чувствительности и продолжительности.
Отдельно стоит коснуться включения белых диодов и цветных диодов в режиме белого цвета. Light white и Super light.
#Виртуальный выключатель, включает только белый свет.
- platform: template
name: "light white on"
id: light_white_on
optimistic: yes
turn_on_action:
- light.turn_on:
id: kitchen_led_line
brightness: 100%
color_brightness: 0%
effect: none
white: 100%
red: 0%
blue: 0%
green: 0%
turn_off_action:
- light.turn_on:
id: kitchen_led_line
brightness: 80%
effect: Fade
white: 0%
#Виртуальный выключатель, включает белый свет вместе с цветными диодами.
- platform: template
name: "super light"
id: super_light
optimistic: yes
turn_on_action:
- light.turn_on:
id: kitchen_led_line
color_mode: RGB_white
brightness: 100%
white: 100%
red: 100%
green: 75%
blue: 50%
turn_off_action:
- if:
condition:
binary_sensor.is_on: "motion_kitchen"
then:
- light.turn_on:
id: kitchen_led_line
brightness: 100%
color_brightness: 0%
effect: none
white: 100%
red: 0%
blue: 0%
green: 0%
В итоге в HA лента выглядит так:
Отмечу еще один момент. На шести метровую кухню хватило одного датчика движения, расположенного ближе к мойке, на границе первой трети от входа.