Доброго дня. Был у меня проект: подсветка на 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 лента выглядит так:
Отмечу еще один момент. На шести метровую кухню хватило одного датчика движения, расположенного ближе к мойке, на границе первой трети от входа.
Читайте также.