Данным способом нельзя имитировать нажатие силовых кнопок. Только нажатие слаботочных/логических. Для имитации силовых кнопок используйте модуль реле.
Собираем простенькую схему.
Вам понадобится:
- ESP8266 (ESP-01, NodeMcu и любые другие ESP8266)
- Блок питания для ESP (для esp-01, для NodeMcu)
- Оптрон PC817
- Набор резисторов
- Набор для облегчения прототипирования/монтажа: макетная плата, набор соединительных проводов, печатная плата.
- Конденсатор (для ESP-01)
В левой части 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, и ждем пока она создаст 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
Ура! Спасибо за статью, теперь смогу автоматизировать свою вытяжку с сенсорным управлением, оптроны уже заказал по ссылке в статье ;)
Ссылки странно открываются, нажимаю, у меня сразу предлагает перейти в приложение Али, в котором только заглавная страница, а не товар. Если отказаться открывать приложение, нормально открывается сайт с товаром и с него перепрыгиваешь в приложение уже нормально.
Нет ли у вас возможности показать как настроить управление этой кнопкой через хомассистент?
Подскажите, прошивал "по старинке" 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 не получилось правило создать.
Попробуй в 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 должен выглядеть следующим образом:
По статье все получилось, интегрировал в 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кОм на этой схеме? Спасибо!