Собранный по такой же схеме переключатель стабильно работает у меня уже более полугода по протоколу Domoticz HTTP  (на прошивке ESPEasy R120)

Текущий будет работать на  ESPEasy Mega от 14.05.2018  по протоколу Domoticz MQTT

Плюсы:

  • Обратная связь (всегда знаем статус — включен или выключен свет)
  • Управление через абсолютно любой переключатель
  • Если оставить свет включенным, и будет отключение электроэнергии, то при возобновлении реле будет выключено
  • Даже при недоступности Domoticz и/или отсутствия wifi выключатель полностью работоспособен
  • Сам выключатель не под напряжением, а под 3v логикой esp (безопасно и для детей, и для взрослых)

Минусы (монтажа):

  • Необходимы ноль и фаза в подрозетнике
  • Желателен глубокий подрозетник

Для меня это не минусы, так как у меня идет ремонт, и я сразу тяну 3-х жильный кабель к выключателями и устанавливаю вот такие глубокие (55мм) подрозетники:

Приступим к сборке.

Подключаем ESP с прошивкой ESPEasy к реле следующим образом:

ESP пин 3v3 к VCC реле
ESP пин GND к GND реле
ESP пин D6 (Gpio-12)  к IN реле

В ESPEasy создаем переключатель Switch input — Switch для реле во вкладке Devices:

Приводим его к следующему виду:

Имя: relay
Enabled: — галочка
Internal PullUp: — галочка
Inversed Logic: — пусто
1st GPIO: GPIO-12 (D6)
Switch Type: Switch
Switch Button Type: Normal Switch
Send Boot state: — галочка
Send to Controller: — пусто
IDX: — номер Dummy переключателя в Domoticz (если активно Send to Controller)
Values Name: state

Сохраняем.

Управляется реле командой (192.168.0.23 это адрес ESPEasy):

Включить: http://192.168.0.23/control?cmd=GPIO,12,1 
Выключить: http://192.168.0.23/control?cmd=GPIO,12,0 

Выполнив переходы в браузере, реле сработает и выдаст ответ:

{ "log": "GPIO 12 Set to 0", "plugin": 1, "pin": 12, "mode": "output", "state": 1 }

или

{ "log": "GPIO 12 Set to 0", "plugin": 1, "pin": 12, "mode": "output", "state": 0 }

Создаем переключатель Switch input — Switch для переключателя во вкладке Devices:

Имя: button
Enabled: — галочка
Internal PullUp: — галочка
Inversed Logic: — пусто
1st GPIO: GPIO-14 (D5) (так же можно поставить D7, с boot state output low)
Switch Type: Switch
Switch Button Type: Normal Switch
Send Boot state: — пусто (если активировать, то при загрузке esp синхронизирует реле с выключателем: если был свет включен, то при загрузке тоже будет включен, тогда можно убрать следующую строчку в Rules после On Rules#Timer=1 do: «gpio,12,0″)
Send to Controller: — пусто
IDX: — пусто
Values Name: state

Сохраняем.

Подключим обычный (любой) переключатель света:
от ESP пин GPIO-14 (D5 на NodeMCU) в разрыв переключателя и на GND ESP:

Включаем Rules в Tools> Advanced

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

//Изменение состояния реле переключателем
on button#state do
  if [button#state]=0
    gpio,12,0
      else
    gpio,12,1
      endif
endon

//Отправка статуса реле в Domoticz
on relay#state do
  Publish domoticz/in,{"idx":3,"nvalue":[relay#state]}
endon

//Выключение реле через 5сек после загрузки ESP и отправка статуса в Domoticz
On System#Boot do
  timerSet,1,5
endon
 
On Rules#Timer=1 do
  gpio,12,0
  Publish domoticz/in,{"idx":3,"nvalue":[relay#state]}
endon

 


Если используется протокол передачи Domoticz HTTP, то нижняя часть кода следующая:

//Отправка статуса реле в Domoticz HTTP
on relay#state do
  SendToHTTP 192.168.0.22,8080,/json.htm?type=command&param=udevice&idx=1&nvalue=[relay#state]
endon

Если используется протокол передачи Domoticz MQTT, то нижняя часть кода следующая:

//Отправка статуса реле в Domoticz MQTT
on relay#state do
  Publish domoticz/in,{"idx":1,"nvalue":[relay#state]}
endon

Если выбрать у реле Send to Controller и прописать idx, то эту часть кода указывать не нужно, НО при недоступности контроллера (в нашем случае Domoticz) ESP будет жестко тупить, выключателем будет пользоваться невозможно (может включать реле по несколько секунд). Так же ESP будет тупить если использовать Domoticz HTTP без самого Domoticz. Именно поэтому удобнее использовать Rules и MQTT, а не Send to Controller для выключателей на базе ESPEasy.


 

Теперь при нажатии переключателя, будет меняться статус реле — включаться и выключаться.

В Domoticz добавляем Dummy переключатель:

И приводим его к следующему виду:

Действие при включении:

http://192.168.0.23/control?cmd=GPIO,12,1

Действие при выключении:

http://192.168.0.23/control?cmd=GPIO,12,0

Сохраняем. Теперь можно включать и выключать свет в Domoticz, а если переключить вручную через физический переключатель, статус  в Domoticz обновится.

Весь этот набор отлично вмещается в глубокие подрозетники

28
Оставить комментарий

avatar
7 Цепочка комментария
21 Ответы по цепочке
2 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
10 Авторы комментариев
kvvВован СидоровичКонстантинМаксимТипыч Авторы недавних комментариев

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Подписаться  
новее старее большинство голосов
Уведомление о
Эдуард
Гость
Эдуард

Подскажите, пожалуйста! А как из Domoticz управлять действием через MQTT?

Сергей
Гость
Сергей

А чтобы увеличить количество клавиш и реле ? например 2 или 3?
Сложно переделать?

Евгений
Гость
Евгений

Приветствую. Тут нашел на просторах али следующее решение esp8266 уже с реле.
https://s.click.aliexpress.com/e/cnLlmbNg
По сути компактное, но так как новичек и в этом деле, то хотел спросить возможно реализовать данную описанную Вами схему (программную часть)? Планировал использовать данное реле как проходное с обычным выключателем, чтобы была возможность по старинке все переключать. Пока испробовать возможности нет, так как посылка в пути.

Евгений
Гость
Евгений

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

Николай
Гость
Николай

А как сделать, чтобы при отключении электричества, восстанавливал свое состояние до отключения. Если был вкл то включен, а если выкл то выключен.

Типыч
Гость
Типыч

А если включить свет с выключателя, то потом выключить его программно с Domoticz не получится? Или получится, но чтобы снова воспользоваться выключателем, то придется его сначала выключить, а потом включить?

Александр
Гость
Александр

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

on button#state do //Управление реле с кнопки
if [reley#state]=1
gpio,12,0
else
gpio,12,1
endif
endon

Типыч
Гость
Типыч

Супер! Такой вариант мне больше подошел, вывел просто на кнопку.

Александр
Гость
Александр

А если потом с браузера или телефона (создать ярлык с ссылкой из браузера) отправить на модуль команду «http://espeasyip/control?cmd=event,button#state»
то то модуль отработает эту команду так же как если бы руками нажали на кнопку на выключателе. Удаленно выполняем правило отвечающее за обработку нажатия кнопки. Очень удобно свет с телефона включать и выключать.
Через MQTT также можно послать команду в топик «/имя esp/cmd» с содежимым «event,button#state»
Без кавычек конечно))

Типыч
Гость
Типыч

Я через Domoticz управляю, так проще. Поставил в Switch Button Type: Push Button Active Low и обошелся без выключателя, поставив нефиксируемую кнопку. Нажал — свет включился, ещё раз нажал — выключился.

Типыч
Гость
Типыч

Ну это дело вкуса, да. Я ещё и PIR-детектор прикрутил до кучи, включает свет на 2 минуты по движению (больше не нужно, т.к. это свет в подсобке), плюс индикацию светодиодную о наличии соединения по wifi.

Константин
Гость
Константин

еще проще

on button#state do //Управление реле с кнопки
gpio,12,[button#state]
endon

Вован Сидорович
Участник
Вован Сидорович

Подскажите, А чем именно это всё добро запитано?