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

Описание настройки чего либо

Модераторы: immortal, newz20

Ответить
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

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

Сообщение Divan » Чт окт 01, 2020 10:47 pm

Перенес данную тему сюда, дабы продолжить развитие данной темы. Делитесь своим опытом, добавляйте улучшения.

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

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

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

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

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

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

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

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

Разберем пример этого сценария 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 КБ) 74 скачивания
СпойлерПоказать
Ручная установка.jpg
Ручная установка.jpg (142.96 КБ) 1070 просмотров

Боковое меню импортировать отдельно
Боковое меню Aircoookie WLED 25.09.2020.zip
(4.23 КБ) 66 скачиваний
Последний раз редактировалось Divan Чт окт 01, 2020 11:15 pm, всего редактировалось 1 раз.
За это сообщение автора Divan поблагодарили (всего 3):
homester (Пт окт 02, 2020 12:48 am) • Taras81 (Ср окт 21, 2020 4:09 pm) • AndreyAA (Пт окт 30, 2020 11:42 pm)
Рейтинг: 3.53%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

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

Сообщение Divan » Чт окт 01, 2020 11:08 pm

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

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

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

Переделал сценарии Python
Вам нужно открыть файлик settings.py и добавить свой IP, который подтянет остальные файлики. Внимательно прочитайте комментарии. Все настройки за освещение вносятся в этом файлике. Указывайте нужные вам эффекты, палитру, яркость, количество диодов.
СпойлерПоказать
Сценарии питон.jpg
Сценарии питон.jpg (10.58 КБ) 1053 просмотра
Python сценарии находятся здесь
СпойлерПоказать
где лежат питоновские файлы.jpg
где лежат питоновские файлы.jpg (162.21 КБ) 1021 просмотр
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 зона
В боковое меню добавлены
СпойлерПоказать
Боковое меню от 01102020.jpg
Боковое меню от 01102020.jpg (100.03 КБ) 1053 просмотра
Для минимизации скачков в измерении расстояния ультразвуковым сенсором, нужно увеличить интервал времени и установить ограничение на расстояние.
СпойлерПоказать
ESPEASY Ultrasonic.jpg
ESPEASY Ultrasonic.jpg (118.28 КБ) 1053 просмотра
В инсталлятор не стал добавлять колорпикер. Если есть необходимость в нем, то можете установить его отдельным инсталлятором.
FarbtasticColorPicker-setup.tar.gz
(18.32 КБ) 66 скачиваний
Инсталлятор от 01.10.2020 ставим вручную
MajorDoMo_AircoookieWLED_sborka_01.10.2020.tar.gz
(7.66 КБ) 60 скачиваний
СпойлерПоказать
Ручная установка.jpg
Ручная установка.jpg (142.96 КБ) 1053 просмотра
Переделанное боковое меню от 01.10.2020
Боковое меню Aircoookie WLED 01.10.2020.zip
(4.43 КБ) 68 скачиваний
Последний раз редактировалось Divan Пт окт 02, 2020 12:31 am, всего редактировалось 1 раз.
За это сообщение автора Divan поблагодарил:
homester (Пт окт 02, 2020 12:49 am)
Рейтинг: 1.18%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

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

Сообщение Divan » Чт окт 01, 2020 11:21 pm

Нужна ваша помощь. Хотелось сделать фильтрацию, чтобы избежать ложных срабатывании.

Как фильтровать большие скачки значении, получаемые от ультразвукового датчика 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');
}
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 855
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 116 раз
Поблагодарили: 266 раз

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

Сообщение Divan » Вс окт 11, 2020 6:26 pm

Сделал еще несколько сценариев для управления лентой через python

Сценарии для управления зональным освещением
ZonalLighting.zip
(4.28 КБ) 51 скачивание
После запуска сценария появятся несколько сегментов
СпойлерПоказать
Все сегменты.JPG
Все сегменты.JPG (20.37 КБ) 796 просмотров
Открываете файлик 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 КБ) 53 скачивания
Здесь вы правите каждый файлик. Нужно указать свой IP адрес.


После запуска сценария все сегменты удалятся и останется один общий сегмент
СпойлерПоказать
один сегмент.JPG
один сегмент.JPG (13.24 КБ) 796 просмотров
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить