Переключатель света на ESP8266 с прошивкой ESPEasy

Собранный по такой же схеме переключатель стабильно работает у меня уже более полугода по протоколу 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 обновится.

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

Поделитесь с друзьями
Подписаться
Уведомить о
guest

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

44 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Эдуард
Эдуард
6 лет назад

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

Максим
Максим
5 лет назад
Ответить на  kvv

А не подскажите как статус хотя бы получать по MQTT ?
Потому что принципиально не хочу использовать брокеры, но есть приблуды, которые умеют отправлять только по MQTT.

Константин
Константин
5 лет назад
Ответить на  kvv

В устройствах есть «Generic — MQTT Import». Позволяет управлять по MQTT

Сергей
Сергей
5 лет назад

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

Евгений
Евгений
5 лет назад

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

Евгений
Евгений
5 лет назад

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

Евгений
Евгений
5 лет назад
Ответить на  kvv

Спасибо!!! Удачного ремонта. Получу espшки и релешки, поэксперементирую с проходным выключателем. Хотя пока даже не знаю в какую сторону копать. Как подключить как проходной не проблема и релюшка то сама это поддерживает которую заказал да и та реле которая в Вашей статье тоже, и выключатели все с возможность подключения как проходных. И работать все это будет уверен на 100%, только как определять статус конечного прибора, включен он или нет, а с проходным я так понимаю нужно именно сеть контролировать на наличие в ней напряжения. А для этого в моем видении сейчас нужно еще ставить реле на 220 в разрыв уже… Подробнее »

Николай
Николай
5 лет назад

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

Павел
4 лет назад
Ответить на  kvv

Используйте Rules

Типыч
Типыч
5 лет назад

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

Типыч
Типыч
5 лет назад
Ответить на  kvv

Спасибо!
Собрал сейчас аналогичную схему (только реле нашелKY-019, так что пришлось подать на него 5В а не 3,3 как на схеме). С Домотикса управляется без проблем, а вот на замыкание пина 14 (D5) на ноль система не реагирует никак. Что-то в коде напутать мог (хотя копировал его с этой страницы)?
И ещё вопрос. Не стоит ли добавить последовательно с выключателем токоограничивающий резистор?

Типыч
Типыч
5 лет назад
Ответить на  kvv

Сорри, вопрос снят. При копировании ошибся.

Александр
Александр
5 лет назад
Ответить на  Типыч

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

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

Типыч
Типыч
5 лет назад
Ответить на  Александр

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

Александр
Александр
5 лет назад
Ответить на  Типыч

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

Типыч
Типыч
5 лет назад
Ответить на  Александр

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

Типыч
Типыч
5 лет назад
Ответить на  kvv

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

Константин
Константин
5 лет назад
Ответить на  Александр

еще проще

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

Вован Сидорович
Вован Сидорович
5 лет назад

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

Олег
Олег
4 лет назад

Сделал примерно такое же реле на ESP-01S с прошивкой ESP Easy, только сигнал реле взял со 2-го вывода ESP-01S. Между 2-ым выходом и сигнальным входом реле пришлось вставить резистор на 33кОм, т.к. если соединить напрямую, то реле в постонной сработке. И команды на включение и выключение реле почемуто работают наоборот, т.е. http://192.168.1.6/control?cmd=GPIO,2,0 — включение и http://192.168.1.6/control?cmd=GPIO,2,1 — выключение. Протокол использовал Domoticz HTTP, т.к. если использовать Domoticz MQTT, то модуль ESP-01S начинает срабатывать с очень большой задержкой и процессор модуля нагружен на 100%. Обратная связь с системой Domoticz при использовании этого протокола работает.

Олег
Олег
4 лет назад
Ответить на  kvv

Пока что использую USB программатор ESP-01 https://1.allegroimg.com/original/016de4/043cc4da4e0aa9afebfb7bce7471
В последствии планирую использовать дешёвый зарядник от мобильника на 5В, для этого на али заказал стабилизатор на 3,3В на основе AMS1117

Alex
Alex
4 лет назад
Ответить на  Олег

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

Alex
Alex
4 лет назад

Спасибо за статью очень помогла, не как не могу добиться получить актуальное состояние реле через HTTP. взял Ваш пример ну и конечно указал свой IDX переключателя но реакция ноль, как быть не подскажите ? через брокера проблем нет.
Да может что-то дополнительно нужно активировать в домотикзе ? в ESP стоит два контроллера первый MQTT ну а второй HTTP c ip домотика

Alex
Alex
4 лет назад
Ответить на  kvv

Да, активировал прописал IP домотик ну и порт 8080, но как не странно ответа не приходит на domoticz, забыл написать что domoticz стоит на вин7 наверное тут проблема как не странно, читал вики часто люди жалуются, скоро малинка придёт буду туда наверное переезжать. Хотя с domoticz на ESP команда Http проходит.

Alex
Alex
4 лет назад
Ответить на  kvv

Знаю я )) ,у меня сидит Plex и просто файловая мусорка на системнике и всё добро раздаёт дома , с linux не хотелось возиться а Free bsd на отрез отказалась вставать на мою систему, а Win без проблем. К стати бекап подойдет от Win к малинке? брандмауэр отключил полностью

Тимофей
Тимофей
4 лет назад

Привет! Я дико извиняюсь за может быть туповатый вопрос — но куда втыкается 0 а куда фаза?

Тимофей
Тимофей
4 лет назад
Ответить на  kvv

Блин, оно же на реле, я не нашёл сразу :)) Спасибо.

Виталий
Виталий
2 лет назад
Ответить на  kvv

и получаем КОРОТКОЕ ЗАМЫКАНИЕЕЕЕ с удалённым управлением)))