Собранный по такой же схеме переключатель стабильно работает у меня уже более полугода по протоколу 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¶m=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 обновится.
Весь этот набор отлично вмещается в глубокие подрозетники
Подскажите, пожалуйста! А как из Domoticz управлять действием через MQTT?
Из Domoticz управлять возможно только по http, но статус можно получать по mqtt
А не подскажите как статус хотя бы получать по MQTT ?
Потому что принципиально не хочу использовать брокеры, но есть приблуды, которые умеют отправлять только по MQTT.
А можно узнать в чем причина принципиального избегания брокера? Насколько мне известно, без брокера никак. В Hassio он вообще ставится плагином и забывается о его существовании
В устройствах есть «Generic — MQTT Import». Позволяет управлять по MQTT
А чтобы увеличить количество клавиш и реле ? например 2 или 3?
Сложно переделать?
Не сложно, просто второе реле подключить или третье и так же ими управлять
Приветствую. Тут нашел на просторах али следующее решение esp8266 уже с реле.
https://s.click.aliexpress.com/e/cnLlmbNg
По сути компактное, но так как новичек и в этом деле, то хотел спросить возможно реализовать данную описанную Вами схему (программную часть)? Планировал использовать данное реле как проходное с обычным выключателем, чтобы была возможность по старинке все переключать. Пока испробовать возможности нет, так как посылка в пути.
модуль прошить можно, главное потом узнать какие контакты управляют реле. По сути тоже самое что и я собрал, только компактнее, ну и есп более простой версии с меньшим объемом памяти
По факту в Вашей схеме выключатель используется не как проходной, а просто замыкает контакты на esp8266 и на нем нет никакого напряжения? И так же хотел уточнить по поводу того если подключить реле непосредственно с выключателем как проходное, то с него програмно уже не считаешь включен или выключен свет? Или все таки это как то возможно.
Выключатель не проходной, да, он просто замыкает контакты есп. Напряжение только в реле. А по поводу проходного — все возможно. Как только займусь ремонтом кухни, займусь и проходным вот таким выключателем)
Спасибо!!! Удачного ремонта. Получу espшки и релешки, поэксперементирую с проходным выключателем. Хотя пока даже не знаю в какую сторону копать. Как подключить как проходной не проблема и релюшка то сама это поддерживает которую заказал да и та реле которая в Вашей статье тоже, и выключатели все с возможность подключения как проходных. И работать все это будет уверен на 100%, только как определять статус конечного прибора, включен он или нет, а с проходным я так понимаю нужно именно сеть контролировать на наличие в ней напряжения. А для этого в моем видении сейчас нужно еще ставить реле на 220 в разрыв уже… Подробнее »
Будет интересно узнать как у Вас все получится! Жду результата)
А как сделать, чтобы при отключении электричества, восстанавливал свое состояние до отключения. Если был вкл то включен, а если выкл то выключен.
Вроде как нельзя (по крайней мере я не нашел в еспизи), можно только брать статус самого выключателя на момент запуска есп — Send Boot state в настройках выключателя (button)
Сам задумывался об этом, но это настолько редко встречаемая проблема, что и не заметно. У меня, например, вечером (а именно в это время важен последний статус реле) электричество не отключали ни разу. Либо ночью либо днем. Ночью спим, днем свет не включен. Так что мне это не принципиально:)
Используйте Rules
А если включить свет с выключателя, то потом выключить его программно с Domoticz не получится? Или получится, но чтобы снова воспользоваться выключателем, то придется его сначала выключить, а потом включить?
Если включить свет с выключателя, то с Domoticz его можно так же выключать и включать, статус будет виден в домотикз. И да, чтобы снова воспользоваться выключателем, то придется его сначала выключить, а потом включить. Я привык, жена привыкла)
Спасибо!
Собрал сейчас аналогичную схему (только реле нашелKY-019, так что пришлось подать на него 5В а не 3,3 как на схеме). С Домотикса управляется без проблем, а вот на замыкание пина 14 (D5) на ноль система не реагирует никак. Что-то в коде напутать мог (хотя копировал его с этой страницы)?
И ещё вопрос. Не стоит ли добавить последовательно с выключателем токоограничивающий резистор?
Сорри, вопрос снят. При копировании ошибся.
Сделайте обработку не конткретного состояния выключателя, а сам факт изменеия его состояния. Тоесть сам факт что выключателем щелкнули из одного положения в другое должен вызвать переключение положения реле. И не важно в какую сторону выключателем щелкали. Вот вам и схема проходного выключателя, и выключателя в виде кнопки без фиксации.
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
Подскажите, А чем именно это всё добро запитано?
Можно использовать бп с али, например, вот такой: http://ali.pub/32kw16
Или разобрать обычный бп от телефона. В глубоком подрозетнике все помещается)
Сделал примерно такое же реле на 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 при использовании этого протокола работает.
Хороший вариант с ESP-01S, у него небольшие размеры и для выключателя выводов хватает. А чем запитали?
Пока что использую USB программатор ESP-01 https://1.allegroimg.com/original/016de4/043cc4da4e0aa9afebfb7bce7471
В последствии планирую использовать дешёвый зарядник от мобильника на 5В, для этого на али заказал стабилизатор на 3,3В на основе AMS1117
к стати, тоже самое было, я в настройках указал инвертировать состояние и проблема решилась.
Спасибо за статью очень помогла, не как не могу добиться получить актуальное состояние реле через HTTP. взял Ваш пример ну и конечно указал свой IDX переключателя но реакция ноль, как быть не подскажите ? через брокера проблем нет.
Да может что-то дополнительно нужно активировать в домотикзе ? в ESP стоит два контроллера первый MQTT ну а второй HTTP c ip домотика
странно, обычно http самый простой и всегда рабочий вариант в domoticz. В нем ничего дополнительно активировать не нужно. В есп контроллер http активирован?
Да, активировал прописал IP домотик ну и порт 8080, но как не странно ответа не приходит на domoticz, забыл написать что domoticz стоит на вин7 наверное тут проблема как не странно, читал вики часто люди жалуются, скоро малинка придёт буду туда наверное переезжать. Хотя с domoticz на ESP команда Http проходит.
может входящий порт 8080 закрыт.. посмотрите в брандмауэре. На вин7 это конечно жестко вы) Как придет малина, сразу на ssd систему переводите — флешки мрут как мухи, замучаетесь новые покупать
Знаю я )) ,у меня сидит Plex и просто файловая мусорка на системнике и всё добро раздаёт дома , с linux не хотелось возиться а Free bsd на отрез отказалась вставать на мою систему, а Win без проблем. К стати бекап подойдет от Win к малинке? брандмауэр отключил полностью
Насчёт бэкапа не знаю, не пробовал с вин переносить)
Привет! Я дико извиняюсь за может быть туповатый вопрос — но куда втыкается 0 а куда фаза?
Вполне нормальный вопрос. Ноль в Com, фаза в NO или NC
Блин, оно же на реле, я не нашёл сразу :)) Спасибо.
и получаем КОРОТКОЕ ЗАМЫКАНИЕЕЕЕ с удалённым управлением)))
Ни разу не было. Вы про что именно?