ZmiterIv

 
<<< Назад

Ночная подсветка по датчику движения

После того, как мне надоело всякий раз с телефона включать и выключать ночную RGB подсветку под кроватью ребенка, я решил всё это дело автоматизировать по датчику движения, благо, как раз недавно приобрел парочку сяомишных.

Затевалось всё это дело для того, что бы дочка, проснувшись ночью, могла в темноте найти горшок)). Сама RGB подсветка смонтирована под кроватью и настроена довольно тускло. Включается и выключается подсветка соответствующими сценариями (см. предыдущую статью)

Датчик движения (Xiaomi RTCGQ01LM) подключен через стик CC2530 и модуль Zigbee2mqtt. При включенном автобиндинге подключаются датчики на удивление просто, достаточно зажать скрепкой на несколько секунд скрытую на корпусе кнопку (пока на нем не замигает синий светодиод).

z2m.jpg

Логика работы ночной подсветки построена на датчике движения, двух выключателях, разрешающих или запрещающих автоматическое включение и выключение, а так же, на задаваемом для работы этой автоматизации, периоде времени.

dashb

В первую очередь, нужно добавить необходимые свойства выбранному помещению. Для этого находим в объектах класс ROOMS:

rooms

Заходим внутрь... свойства... и добавляем необходимые (backlight_OffTime; backlight_OnTime; backlight_SwMotionOff; backlight_SwMotionOn)...

SwichProp

Сразу создаем меню управления:

menu

И связываем с необходимыми свойствами объекта Kinderroom:

m4.jpg m5.jpg m6.jpg m7.jpg

Теперь нужно создать Простое Устройство (ПУ) для этого заходим в свойства нашего датчика и находим метрику "binary_sensor : occupancy":

sens1
Заходим внутрь и нажимаем Добавить.
add
И создаем простое устройство типа датчик движения.
image-1649856778855.png
Одновременно с ПУ создастся соответствующий объект, в котором уже будут присутствовать ранее созданные методы класса.
Осталось написать алгоритм работы подсветки в методе Motion Detect датчика движения:

//если в свойствах объекта детской комнаты текущее время попадает в указанный диапазон   и установлено разрешение на автовключение при движении (статус 1) , то включим подсветку в детской:
if ((timeBetween((gg('Kinderroom.backlight_OnTime')),(gg('Kinderroom.backlight_OffTime')))) && ((gg('Kinderroom.backlight_SwMotionOn ')==1))) {
runScript('ESPHome_MQTT_RGB_On_Green');
}

//если в свойствах объекта детской комнаты установлено разрешение на автовыключение (статус 1), то запустим таймер (70 сек), по истечении которого подсветка будет выключена
if ((gg('Kinderroom.backlight_SwMotionOff ')==1)) {
clearTimeOut("mqttRgb02.offtimer");
SetTimeOut(mqttRgb02.offtimer,"runScript('ESPHome_MQTT_RGB_OFF');",70);
}

Как-то так:
image-1650003343043.png

Подсветка у меня ночная, поэтому она включается только на 70 сек, если движение продолжается, то подсветка не гаснет (таймер сбрасывается). Данный датчик движения срабатывает не чаще 1 раза в 60 секунд, отсюда и выбор длительности таймера в 70 секунд, если сделать меньше, то подсветка будет постоянно гаснуть и включаться снова.

Обсуждение (1) (7)

Смотрите так же:
08.04.2022 Костыль для RGB подсветки на базе модуля ESPHome.
22.04.2019 Мониторинг логов в линукс на примере модуля Noolite.
29.03.2019 RGB подсветка своими руками.

Минск, Беларусь

На форуме: Дмитрий Иванов

Веб-сайт:
http://blogid.by