[Дополнение] Простое устройство: WLED
Для управления зонального освещения на кухне класс в ПУ не подходит. Нужно точно управлять яркостью от о до 255. Управление яркостью в % можно использовать для других целей, но не для зонального освещения. Я специально создал отдельный класс Aircoookie_WLED, где значения регулируются от 0 до 255. В списке имеются 110 эффектов и 50 палитр. Ниже я приложил установщик.
В него входят:
1) Класс Aircoookie WLED
2) Сценарии
3) Колорпикер
4) Шаблоны сценариев в питоне для зонального освещения
Посмотреть как работает зональное освещение на кухне можно здесь
Для работы нужно указать IP контроллера с прошивкой Aircoookie WLED
СпойлерПоказать
В MQTT привязываем к api, brightness, v как на скриншоте
СпойлерПоказать
СпойлерПоказать
СпойлерПоказать
Внимание!!! Перед началом работы, необходимо запустить сценарий Запрос информации с контроллера с прошивкой Aircoookie WLED. Это нужно, чтобы подтянулся список эффектов и палитры + версия прошивки, mac адрес, количество диодов.
СпойлерПоказать
СпойлерПоказать
Сценарии для работы зонального освещения я пишу в питоне, так гибче можно настроить любые хотелки по светоэффектам и это отрабатывает 100%, чем, если я это буду посылать через HTTP API. Базовые сценарии в установщике.
Сами сценарии в python лежат здесь. Для их запуска, необходимо установить Python версии не ниже 3
СпойлерПоказать
СпойлерПоказать
Разберем пример этого сценария Zone1.py, тут все разбито по сегментам и каждому сегменту я указал количество диодов. При запуске Zone1.py активируется сегмент id_led=0, где устанавливается 48 диодов, яркость 255, а для сегментов id_led=1/2/3 установится яркость 50. Эффекты и палитра отключены. В строке "col": [[255, 200, 0], [0, 0, 0], [0, 0, 0]], указываем нужный нам цвет в формате RGB. Я использую эту таблицу цветов. Получится как на этом видео
def led_run(id_led=0, start=0, stop=48, bri=50, fx=0, pal=0, sx=100, ix=100): ..
segment_ = {
"id": id_led,
"start": start,
"stop": stop,
"len": 36,
"grp": 1,
"spc": 0,
"on": 'true',
"bri": bri,
"col": [[255, 200, 0], [0, 0, 0], [0, 0, 0]],
"fx": fx,
"sx": sx,
"ix": ix,
"pal": pal,
"sel": 'true',
"rev": 'false',
"mi": 'false'}
return segment_
url = 'http://указываем свой IP/json/state'
requests.post(url, json=({"seg": led_run(id_led=0, start=0, stop=48, bri=255, fx=0, pal=17, sx=200, ix=255)}))
requests.post(url, json=({"seg": led_run(id_led=1, start=48, stop=83, bri=50, fx=0, pal=17, sx=200, ix=255)}))
requests.post(url, json=({"seg": led_run(id_led=2, start=83, stop=132, bri=50, fx=0, pal=17, sx=200, ix=255)}))
requests.post(url, json=({"seg": led_run(id_led=3, start=132, stop=167, bri=50, fx=0, pal=17, sx=200, ix=255)}))
Установщик ставить через Маркет дополнений
СпойлерПоказать
Боковое меню импортировать отдельно