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

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

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

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

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

Сообщение 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 КБ) 2934 просмотра

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

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

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

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

Боковое меню импортировать отдельно
Боковое меню Aircoookie WLED 25.09.2020.zip
(4.23 КБ) 146 скачиваний
Последний раз редактировалось 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.49%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

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

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

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

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

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

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
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

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

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

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

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


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