Статья

Делаем из любого светильника умное освещение с датчиком движения (NodeMCU+SR-501+твердотельное реле)

С чего всё начиналось...

В частном доме в коридоре 2х2м захотел сделать освещение с датчиком движения, но покупать готовый светильник как-то не хотелось (тем более, что начал потихоньку вникать в тему "Умного дома"). Хотелось, помимо простого включения по датчику движения, управлять освещением и тонко его настраивать в случае необходимости.

Я использую Home Assistant на Raspberry pi.

Для создания блока управления светильника нам потребуется:

7. Фоторезистор для SR-501

8. Корпус на Ваш вкус

9. Монтажные провода на Ваш вкус

Схема подключения

Подключаем все компоненты по данной схеме. Джампер (желтая перемычка) на датчике движения SR-501 ставим в положение "H" - пока будете находиться в зоне видимости датчика, он не выключит свет. 

NodeMCU нужно прошить прошивкой EspEasy (или другой, какая Вам больше по душе). Описывать процедуру прошивки тут не буду, т.к. на портале уже много информации на этот счет.

Настраиваем EspEasy следующим образом:

На вкладке Config в поле Unit Name вносим название нашего устройства, в поле WIFI Setting вносим данные вашей сети.
На вкладке Controllers настраиваем MQTT - это адрес Home Assistant.
На вкладке Devices создаем три устройства.
Первое устройство нам нужно для обмена по MQTT с Home Assistant
Второе устройство - это наш датчик движения.
Третье устройство - это наше твердотельное реле.

На вкладке Tools переходим в раздел Advanced и ставим галочку напротив пункта Rules, сохраняем настройки и перезагружаем наше устройство.

Переходим на появившуюся вкладку Rules и вставляем туда следующее:

on sensor#State do if [sensor#State]=1 GPIO,12,1 Publish /esp_kor/GPIO12,1 else GPIO,12,0 Publish /esp_kor/GPIO12,0 endif endon on sniff#GPIO12 do if [sniff#GPIO12]=1 GPIO,12,1 else GPIO,12,0 endif endon

Затем добавляем в конфигурационный файл Home Assistant следующее:

mqtt: broker: 192.168.1.28 #Заменить на ip-адрес Вашей Малинки port: 1883 client_id: home-assistant-1 keepalive: 60 username: ИМЯ ВАШЕЙ МАЛИНКИ password: ПАРОЛЬ ВАШЕЙ МАЛИНКИ protocol: 3.1 birth_message: topic: "tele/hass1/LWT" payload: "Online" qos: 1 retain: true will_message: topic: "tele/hass1/LWT" payload: "Offline" qos: 1 retain: true switch: - platform: mqtt name: esp_kor state_topic: "/esp_kor/GPIO12" command_topic: "/esp_kor/GPIO12" payload_on: "1" payload_off: "0" qos: 1 availability_topic: "/esp_kor/status/LWT" payload_available: "Online" payload_not_available: "Offline" retain: true

Фоторезистор для SR-501

Если Вы хотите, чтобы датчик движения срабатывал не всякий раз, когда фиксирует движения, а только тогда, когда становится темно на улице (помещении), то следует установить фоторезистор в имеющиеся на датчике контакты.

Спасибо, что дочитали до конца :-)

Это моя первая статья и я начинающий "домостроитель", поэтому не судите строго)

Пишите Ваши комментарии и замечания, если таковые есть.

Всем спасибо и до новых встреч!


Молодец, отличная статья! Становись быстрее опытным 

"домостроителем" и пиши больше подобных статей! 

На еспхом бы ещё такую же прошивку накидать и вообще огонь будет) Но в целом - полезно, спасибо)

Ссылки некорректные и цены (

Ссылки делает не автор) Всё поправили;-)

Читайте внимательней там наборы из нескольких штук

Много лишних телодвижений на самом деле. Скорее имеет смысл только если вы уже привязаны к ХА.

Подобное устройство собирается из указанного датчика движения и сонофф бейсик за 20 минут. Прошить нужно RavenCore или его же поделку HAA. Подходят оба варианта, тк выключатель сейчас есть в обеих версиях прошивок. Далее либо через Eve, либо json-скриптом задать внешний триггер и режим работы toggle (перключатель по нашему). Получим реле, которое будет включено пока на выходе датчика есть сигнал. Режим тоггл подразумевает управление обычным выключателем и датчиком движения мы по сути имитируем его работу.

Есть НО - если руками дернуть переключатель в ХК в противоположное текущему состоянию положение, то логика работы датчика движения поменяется... он будет выключать свет при наличии движения 🥴

HAA прошивка более гибкая в выборе контроллера, тк ручками дает возможность назначать пины, но писать скрипт геморрнее ;)

На само деле да, можно собрать и на Sonoff Basic, только там будет щелкающее реле, а в моем варианте всё включается бесшумно (Premium вариант :-)))) ).


Моё устройство при включении через HomeKit остается во включенном состоянии до тех пор пока не будет зафиксировано движение, после фиксации движения оно отрабатает в штатном порядке и выключится после прекращения движения (в Home Assistant и HomeKit все переключатели перейдут в положение "Выключено").


EspEasy проста в освоении, полученное устройство несложное, поэтому всё отлично настраивается.

Я предпочитаю беспрокладочные варианты, лишнее звено - возможная проблема. Это как в электрике - меньше коннекторов, больше надежность ;)

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


Про реле вообще странное замечание, никто не мешает вам заменить электромагнитное на твердотельное ;)))

А зачем в схеме биполярный транзистор?

Он нужен, чтобы по сигналу от датчика движения пускать GND на управляющий контакт твердотельного реле. Реле Low level trigger

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

К сожалению, у меня не получилось так сделать. Возможно как-то это и можно реализовать в данной прошивке. Если кто-то знает как это сделать, то буду очень благодарен)

как прошить 
ESP-32S ESP-WROOM-32 Мегой
ESP Esy Flasher выбирал всякие прошивки ни в какую...
пробовал flash_download_tools_v3.6.7


но там надо выставлять адреса а в этом я не силен

В правилах публикация в топик лишняя.


Publish /esp_kor/GPIO12,1

и


Publish /esp_kor/GPIO12,0

От них только двойная сработка реле.


Для получения статуса  сенсора или реле для 
Home Assistant уже есть топики от самого сенсора или реле.

Только нужно поставить галочку напротив Send to Controller в девайсах


В конфигурационный файл Home Assistant вместо


state_topic: "/esp_kor/GPIO12"

пишем


state_topic: "esp_kor/sensor/State"


или статус реле



state_topic: "esp_kor/relay/State"


Вернуться назад

Устройства


Вернуться назад