Статья

Имитация нажатия кнопки или замыкание слаботочных контактов.

Данным способом нельзя имитировать нажатие силовых кнопок. Только нажатие слаботочных/логических. Для имитации силовых кнопок используйте модуль реле. 

Собираем простенькую схему.

Вам понадобится:

В левой части ESP-01 с блоком питания, по центру оптрон PC817, справа сильно упрощенный пультик с кнопкой, нажатие которой мы имитируем.

Подключается PC817 следующим образом: 

  • к контакту "1" подключается цифровой (управляемый) pin микроконтроллера (в случае на картинке это GPIO2). Активация оптрона осуществляется HIGH сигналом.
  • к контакту "2" подключается gnd микроконтроллера
  • контакты "3" и "4" подключаются к контактам нажимаемой кнопкой с небольшой оговоркой. К контакту "4" должен подходить логический " ", а к контакту "3" должен подходить логический "-"

Прошиваем ESP8266

Вообще можно использовать любую ESP. Я бы даже рекомендовал NodeMcu, т.к. это самая дружественная плата. Просто подключил microUSB и прошивай. Но. Вы ведь это устройство будете встраивать в корпус того или иного прибора, поэтому мы боремся за каждый миллиметр. В этой связи продолжаем разбираться на примере ESP-01.

Для программирования ESP-01 понадобится программатор. Можно конечно использовать универсальный USB-TTL конвертер, но для ESP-01 существует специальный удобный программатор. Его то мы и будем использовать.

Внимание! При введении ESP-01 в режим прошивки отключать питание надо на продолжительное время, т.к. мы в схему добавили емкий конденсатор!.

Удобно, правда?
Но можно и по старинке.

Качаем и распаковываем ESP_easy (или любую другую прошивку поддерживающую MQTT). Из папки bin в папку с FlashESP8266.exe копируем 2 файла:

  • для ESP-01: blank_1MB (полностью очищает память), ESP_Easy_mega-20181117_dev_ESP8266_1024 (сама прошивка)
  • для NodeMcu: blank_4MB (полностью очищает память), ESP_Easy_mega-20181117_dev_ESP8266_4096 (сама прошивка)
Не настаиваю, но советую почистить память перед основной прошивкой. Чистка занимает достаточно времени. 
Потом заливаем саму Esp_easy.

Настраиваем Esp_easy

После прошивки перезапускаем ESP, и ждем пока она создаст WiFi точку доступа ESP_easy. Подключаемся к ней с паролем configesp. В браузере переходим по адресу 192.168.4.1 и вводим ssid и пароль от вашего WiFi роутера.   

Далее настраиваем MQTT. Вводим адрес mqtt сервера, порт, логин и пароль.

И настраиваем выход ESP, который будет управлять оптроном. Делаем как на картинке ниже.

Дальше много вариантов развития событий.

Я использовал Raspbery pi c Homebridge, установил MQTT брокер Mosquitto и плагин homebridge-mqttthing для Homebridge. 

Устанавливаем Mosquitto

Подключаемся по SSH к малине и пишем в командной строке:

sudo apt update sudo apt install -y mosquitto mosquitto-clients sudo systemctl enable mosquitto.service

Устанавливаем плагин homebridge-mqttthing

Подключаемся по SSH к малине и пишем в командной строке:

sudo npm install -g homebridge-mqttthing nano ~/.homebridge/config.json

Добавляем устройство в Homebridge 

{ "accessory": "mqttthing", "type": "switch", "name": "button", "url": "mqtt://127.0.0.1", "username": "admin", "password": "admin", "topics": { "getOn": "/ESP_Easy/button/Switch", "setOn": "/ESP_Easy/gpio/2" }, "integerValue": "true", "onValue": "0", "offValue": "1" }

Добавить устройство так же можно через web-итерфейс  Homebridge (ip_малины:8080, логин/пароль admin)

Добавляем устройство в Home Assistant

Добавить в файл configuration.yaml

mqtt: broker: localhost port: 1883 protocol: 3.1 switch: - platform: mqtt name: "button_esp" state_topic: "/ESP_Easy/button/Switch" command_topic: "/ESP_Easy/gpio/2" payload_on: "0" payload_off: "1" optimistic: false qos: 1 retain: true

Более подробная информация по Home Assistant

Вот и всё!

PS: на видео NodeMcu c использованием другого GPIO. На видео схема упрощена. 


те я так понимаю это замена реле в более компактном виде и для слаботочки? Скажите а можно их несколько подключить на одну esp и чтоб по нажатию например в ките они срабатвали одна за другой например с задержкой 2 сек. Думаю подойдет ли такой вариант для домофона. 



всё же это не реле) это светодиод и фоторезистор в корпусе. микроконтроллером заставляешь светиться светодиод, и от свечения светодиод фоторезистер активируется. 

Можно подключить несколько, можно подключить другие оптроны. Задержку тоже можно настроить в прошивке ESP

2000x2000x_image.png?1542612654

Ура! Спасибо за статью, теперь смогу автоматизировать свою вытяжку с сенсорным управлением, оптроны уже заказал по ссылке в статье ;)

Ссылки странно открываются, нажимаю, у меня сразу предлагает перейти в приложение Али, в котором только заглавная страница, а не товар. Если отказаться открывать приложение, нормально открывается сайт с товаром и с него перепрыгиваешь в приложение уже нормально.

Нет ли у вас возможности показать как настроить управление этой кнопкой через хомассистент?

Для HA, добавить в файл configuration.yaml
По статье я не собирал кнопку, но добавить можно, исходные данные из статьи Никиты подставил:

mqtt:
broker: localhost
port: 1883
protocol: 3.1

switch:
- platform: mqtt
name: "button_esp"
state_topic: "/ESP_Easy/button/Switch"
command_topic: "/ESP_Easy/gpio/2"
payload_on: "0"
payload_off: "1"
optimistic: false
qos: 1
retain: true

более подробная информация:
www.home-assistant.io/components/switch.mqtt

Подскажите, прошивал "по старинке" esp-01 usb-ttl конвертером. Прошивка для очистки залилась, прошивка mega тоже. Перезагружаю, жду, мне esp-01 точку доступа не создает. Затык на этом этапе. Что с подтянутым к земле gpio0 что без него. Нету точки. Хотя обе прошивки залились нормально. ЧЯДНТ? Пробовал на двух разных еспишках.

Вечером откапаю свою 01, прощаю ее. А пока проверьте, чтоб питание хорошее было.  Помню есп01 очень трогательно к питанию.  Встречал инфу,  что от конвертер лучше не питать, но у меня проблем не было. напиши мне в телеграмм.

https://t.me/nik_gerasimov">@nik_gerasimov

Вечером откапаю свою 01, прощаю ее. А пока проверьте, чтоб питание хорошее было.  Помню есп01 очень трогательно к питанию.  Встречал инфу,  что от конвертер лучше не питать, но у меня проблем не было

Попытался повторить схему  , но что то не работает (( 

ESP подключается к сети только если  +3 подается также   и на СH  

если загрузить  и потом подключить к оптрону то все работает но если перегрузить  в подключенном состоянии  , при рестарте подвисает и горит синим диодом ((

подскажите  в чем проблема ?

напиши мне в телеграмм. https://t.me/nik_gerasimov">@nik_gerasimov

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

В rules создай правило используя "Pulse", там время отключения в миллисекундах. 

Большое спасибо! если отправлять команду (http://<espeasyip>/control?cmd=Pulse,14,1,500) через браузер, то все работает. для MQTT команда Pulse,14,1,500, но не могу разобраться как это прописать в конфете бриджа. какого именно вида должна быть команда на примере этого отрезка?

В rules не получилось правило создать.


"topics": {
"getOn": "/ESP_Easy/button/Switch",
"setOn": "/ESP_Easy/gpio/2"
}

Попробуй в rules вот так, конфиг бриджа как в статье.
on button#Switch do
if [button#Switch]=0

Pulse,2,0,500 
endon

Спасибо! но все равно не работает. скорее всего из-за того, что бридж не передает статус кнопки. во вкладке девайсы у кнопки статус всегда 0. хотя в логе есп SW : GPIO 14 Set to 1 и  SW : GPIO 14 Set to 0 по нажатию на кнопку. я использую gpio14

Тогда если GPIO14, тогда в rules 


on button#Switch do
if [button#Switch]=0 
Pulse,14,0,500 
endon

а в конфиге бриджа 
 "topics": {
                 "getOn": "/ESP_Easy/button/Switch",
                 "setOn": "/ESP_Easy/gpio/14"

               }


Если не получиться пиши мне в телеграм https://t.me/igorbezruchko">https://t.me/igorbezruchko решим эту проблему.

решил я эту проблему! оказалось все очень деже просто. rules не нужны. да они и не работают, если делать так как указано в статье. может можно и их использовать, но проверять уже сил нет. чтобы был не переключатель а действительно кнопка с настраиваемым временем нажатия (замыкания контактов) данный аксессуар в  config.json должен выглядеть следующим образом:


{
"accessory": "mqttthing",
"type": "switch",
"name": "button",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getOn": "/ESP_Easy/button/Switch",
"setOn": "/ESP_Easy/cmd"
},
"integerValue": "true",
"onValue": "Pulse,2,1,500",
"offValue": "0"
},

По статье все получилось, интегрировал в hdd док-станцию на три слота. 

А как узнать статус, например по светодиоду? при напряжение 2.6в и напр. на падение 1.1в?

На есп есть аналоговый вход, он один.  2,6 в можно напрямую цеплять.  Если более 3.3 то через резистивный делитель.  Минус докстанции и есп должны быть соединены 

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


А если нужно более 1 состояния получать, например с 4 светодиодов, как то можно аналог на цифру преобразовать, через какую то примочку? Новичок в радиоэлектронике =)

Вероятно через тот же оптрон.

Походу вот решение моей задачи: https://www.youtube.com/watch?v=rruSqwegrgo">Внешний АЦП, ADS1015 (ADS1115). +4 аналоговых входа

Походу вот решение моей задачи: https://www.youtube.com/watch?v=rruSqwegrgo">Внешний АЦП, ADS1015 (ADS1115). +4 аналоговых входа

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

4шт. Вот про резисторы не подумал даже, спасибо за идею!

Только вероятно надо через диоды(не свето-) подключать.  Хз. В Схемотехника не силен.  Или цепляться не на входе в светик, а на выходе.  

все сделал как описано но не могу пробросить в HomeKit Не видит аксессуар Не могу понять в чем проблема?

Расскажите, а какую роль выполняют конденсатор и 4е резистора 10кОм на этой схеме? Спасибо!


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

Устройства


Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Espressif Systems

ESP8266 NodeMcu v3

(16 отзывов)

Espressif Systems

ESP8266

(1 отзыв)

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