Страница 1 из 1

[Настройка] Зональное освещение на кухне

Добавлено: Чт окт 01, 2020 10:47 pm
Divan
Перенес данную тему сюда, дабы продолжить развитие данной темы. Делитесь своим опытом, добавляйте улучшения.

[Дополнение] Простое устройство: WLED

Для управления зонального освещения на кухне класс в ПУ не подходит. Нужно точно управлять яркостью от о до 255. Управление яркостью в % можно использовать для других целей, но не для зонального освещения. Я специально создал отдельный класс Aircoookie_WLED, где значения регулируются от 0 до 255. В списке имеются 110 эффектов и 50 палитр. Ниже я приложил установщик.

В него входят:
1) Класс Aircoookie WLED
2) Сценарии
3) Колорпикер
4) Шаблоны сценариев в питоне для зонального освещения

Посмотреть как работает зональное освещение на кухне можно здесь

Для работы нужно указать IP контроллера с прошивкой Aircoookie WLED
SPOILERSPOILER_SHOW
IP.jpg
IP.jpg (17.77 КБ) 7786 просмотров

В MQTT привязываем к api, brightness, v как на скриншоте
SPOILERSPOILER_SHOW
MQTT.jpg
MQTT.jpg (28.3 КБ) 7786 просмотров
Так выглядит класс Aircoookie_WLED
SPOILERSPOILER_SHOW
Снимок1.JPG
Снимок1.JPG (15.51 КБ) 7786 просмотров
Боковое меню
SPOILERSPOILER_SHOW
Снимок2.JPG
Снимок2.JPG (63.39 КБ) 7786 просмотров
Меню01.JPG
Меню01.JPG (61.04 КБ) 7786 просмотров
Меню02.JPG
Меню02.JPG (89.29 КБ) 7786 просмотров
Меню03.JPG
Меню03.JPG (99.85 КБ) 7786 просмотров
Сценарии в MajorDoMo
Внимание!!! Перед началом работы, необходимо запустить сценарий Запрос информации с контроллера с прошивкой Aircoookie WLED. Это нужно, чтобы подтянулся список эффектов и палитры + версия прошивки, mac адрес, количество диодов.
SPOILERSPOILER_SHOW
Сценарии в MD.JPG
Сценарии в MD.JPG (66.9 КБ) 7786 просмотров
За работу зонального освещения отвечает класс ZoneLighting и метод mZoneLighting. Из свойства сенсора ультразвукового дальномера HC-SR04 в свойство ZoneLighting передаются значения от 1 до 4, что и запускает зону освещения
SPOILERSPOILER_SHOW
Свойство зональное освещение.JPG
Свойство зональное освещение.JPG (16.86 КБ) 7786 просмотров
Метод зональное освещение.JPG
Метод зональное освещение.JPG (73.51 КБ) 7786 просмотров

Сценарии для работы зонального освещения я пишу в питоне, так гибче можно настроить любые хотелки по светоэффектам и это отрабатывает 100%, чем, если я это буду посылать через HTTP API. Базовые сценарии в установщике.

Сами сценарии в python лежат здесь. Для их запуска, необходимо установить Python версии не ниже 3
SPOILERSPOILER_SHOW
Сценарии эффектов в питоне.jpg
Сценарии эффектов в питоне.jpg (124.59 КБ) 7786 просмотров
Их можно отредактировать, просто открыв во встроенном редакторе модуля kodexplorer
SPOILERSPOILER_SHOW
Открываем сценарий.JPG
Открываем сценарий.JPG (99.37 КБ) 7786 просмотров
Пояснение по коду смотрим в этой таблице

Разберем пример этого сценария 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)}))



Установщик ставить через Маркет дополнений
MajorDoMo_AircoookieWLED_sborka_22.09.2020.tar.gz
(25.81 КБ) 381 скачивание
SPOILERSPOILER_SHOW
Ручная установка.jpg
Ручная установка.jpg (142.96 КБ) 7786 просмотров

Боковое меню импортировать отдельно
Боковое меню Aircoookie WLED 25.09.2020.zip
(4.23 КБ) 337 скачиваний

Re: [Настройка] Зональное освещение на кухне

Добавлено: Чт окт 01, 2020 11:08 pm
Divan
Продолжаю заниматься с зональным освещением на кухне и немного доработал.

Смотреть видео

Добавил выключатель зонального освещения. При желании можно их включать. Их два вида:
1) Зональное освещение вручную (это нужно для отладки зонального освещения и работы зонального освещения)
2) Зональное освещение - авто (включает и выключает зональное освещение автоматически)

Переделал сценарии Python
Вам нужно открыть файлик settings.py и добавить свой IP, который подтянет остальные файлики. Внимательно прочитайте комментарии. Все настройки за освещение вносятся в этом файлике. Указывайте нужные вам эффекты, палитру, яркость, количество диодов.
SPOILERSPOILER_SHOW
Сценарии питон.jpg
Сценарии питон.jpg (10.58 КБ) 7769 просмотров
Python сценарии находятся здесь
SPOILERSPOILER_SHOW
где лежат питоновские файлы.jpg
где лежат питоновские файлы.jpg (162.21 КБ) 7737 просмотров
ip_address = 'указываем свой IP адрес' # айпи адресс
percent = 50 # процент на который увеличится яркость
led_effect_index = [0, 17] # первая цифра отвечает за эффект в обычном режиме, вторая за эффект в слип моде
speed = [100, 200] # первая цифра отвечает за скорость в обычном режиме, вторая за скорость в слип моде
intensity = [100, 200] # первая цифра отвечает за интенсивность в обычном режиме, вторая за интенсивность в слип моде
palette = [17, 13] # первая цифра отвечает за режим в обычном режиме, вторая за режим в слип моде
color = [250, 200, 0] # красный, зеленый, синий (через запятую)
zone_1 = [0, 48] # кол-во диодов 1 зона
zone_2 = [48, 83] # кол-во диодов 2 зона
zone_3 = [83, 132] # кол-во диодов 3 зона
zone_4 = [132, 167] # кол-во диодов 4 зона
В боковое меню добавлены
SPOILERSPOILER_SHOW
Боковое меню от 01102020.jpg
Боковое меню от 01102020.jpg (100.03 КБ) 7769 просмотров
Для минимизации скачков в измерении расстояния ультразвуковым сенсором, нужно увеличить интервал времени и установить ограничение на расстояние.
SPOILERSPOILER_SHOW
ESPEASY Ultrasonic.jpg
ESPEASY Ultrasonic.jpg (118.28 КБ) 7769 просмотров
В инсталлятор не стал добавлять колорпикер. Если есть необходимость в нем, то можете установить его отдельным инсталлятором.
FarbtasticColorPicker-setup.tar.gz
(18.32 КБ) 399 скачиваний
Инсталлятор от 01.10.2020 ставим вручную
MajorDoMo_AircoookieWLED_sborka_01.10.2020.tar.gz
(7.66 КБ) 360 скачиваний
SPOILERSPOILER_SHOW
Ручная установка.jpg
Ручная установка.jpg (142.96 КБ) 7769 просмотров
Переделанное боковое меню от 01.10.2020
Боковое меню Aircoookie WLED 01.10.2020.zip
(4.43 КБ) 385 скачиваний

Re: [Настройка] Зональное освещение на кухне

Добавлено: Чт окт 01, 2020 11:21 pm
Divan
Нужна ваша помощь. Хотелось сделать фильтрацию, чтобы избежать ложных срабатывании.

Как фильтровать большие скачки значении, получаемые от ультразвукового датчика HC-SR04? Если я встал у зоны 1, то значения ультразвукового датчика могут скакануть больше 190 см и будет зона 4, если я встал у зоны 2, то значения сенсора могут быть меньше 50 см или больше 120 см и будет зона 1 или зона 3. Надо так, чтобы, если я встал у зоны 2, значит я у зоны 2 и не важно, скачут или нет, если я сместился и оказался у зоны 3, то должна быть зона 3, а не 1, 2 или 4.

Так выглядят параметры:
UltrasonicSensor.mValue {"PROPERTY":"Value", "NEW_VALUE":"60", "OLD_VALUE":"50", "no_session":"1", "ORIGINAL_OBJECT_TITLE":"UltrasonicSensor"}
UltrasonicSensor.mValue {"PROPERTY":"Value", "NEW_VALUE":"190", "OLD_VALUE":"60", "no_session":"1", "ORIGINAL_OBJECT_TITLE":"UltrasonicSensor"}
UltrasonicSensor.mValue {"PROPERTY":"Value", "NEW_VALUE":"0", "OLD_VALUE":"190", "no_session":"1", "ORIGINAL_OBJECT_TITLE":"UltrasonicSensor"}

Я разбил получения значении по зонам.
$UltrasonicSensorValue;
$UltrasonicSensorValue = $this->getProperty('value');
if ($UltrasonicSensorValue <= 50) {
$this->setProperty('Zone', '1');
} else if ($UltrasonicSensorValue >= 60 && $UltrasonicSensorValue <= 110) {
$this->setProperty('Zone', '2');
} else if ($UltrasonicSensorValue >= 120 && $UltrasonicSensorValue <= 180) {
$this->setProperty('Zone', '3');
} else if ($UltrasonicSensorValue >= 190) {
$this->setProperty('Zone', '4');
}

Re: [Настройка] Зональное освещение на кухне

Добавлено: Вс окт 11, 2020 6:26 pm
Divan
Сделал еще несколько сценариев для управления лентой через python

Сценарии для управления зональным освещением
ZonalLighting.zip
(4.28 КБ) 371 скачивание
После запуска сценария появятся несколько сегментов
SPOILERSPOILER_SHOW
Все сегменты.JPG
Все сегменты.JPG (20.37 КБ) 7512 просмотров
Открываете файлик settings.py и вносите свои параметры, указываете нужный эффект, скорость, яркость, и т.д.. В остальных файликах: zone_1.py, zone_2.py, zone_3.py, zone_4.py править ничего не нужно. В

ip_address = 'ваш IP' # айпи адресс
percent = 50 # процент на который увеличится яркость
led_effect_index = [0, 17] # первая цифра отвечает за эффект в обычном режиме, вторая за эффект в SleepMode
speed = [100, 30] # первая цифра отвечает за скорость в обычном режиме, вторая за скорость в SleepMode
intensity = [100, 100] # первая цифра отвечает за интенсивность в обычном режиме, вторая за интенсивность в SleepMode
palette = [17, 1] # первая цифра отвечает за режим в обычном режиме, вторая за режим в SleepMode
color = [250, 200, 0] # красный, зеленый, синий (через запятую)
zone_1 = [0, 48] # кол-во диодов 1 зона
zone_2 = [48, 83] # кол-во диодов 2 зона
zone_3 = [83, 132] # кол-во диодов 3 зона
zone_4 = [132, 167] # кол-во диодов 4 зона


Сценарии для управлением без зонального освещения - общее освещение.
GeneralLighting.zip
(6.42 КБ) 394 скачивания
Здесь вы правите каждый файлик. Нужно указать свой IP адрес.


После запуска сценария все сегменты удалятся и останется один общий сегмент
SPOILERSPOILER_SHOW
один сегмент.JPG
один сегмент.JPG (13.24 КБ) 7512 просмотров