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

25 нояб. 2018 г.

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

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

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

В левой части 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 роутера.   


Спустя некоторое время на той же страничке появится IP адрес, по которому вы сможете найти вашу esp в вашей домашней сети.

Далее настраиваем 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. На видео схема упрощена. 

Мы в Telegram - t.me/soprut
  1. (TopGun)
    (TopGun) 5 месяцев назад

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

    • Никита Герасимов  (Rapidshe)
      Никита Герасимов (Rapidshe) 5 месяцев назад

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

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

      2000x2000x_image.png?1542612654
  2. Алексей Новосельцев (novo)
    Алексей Новосельцев (novo) 5 месяцев назад

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

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

  3. (meta11ist87)
    (meta11ist87) 5 месяцев назад

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

    • Антон Самсонов (samsonovs)
      Антон Самсонов (samsonovs) отредактировано 5 месяцев назад
      Для 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
      

  4. (Pustota)
    (Pustota) 5 месяцев назад

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

    • Никита Герасимов  (Rapidshe)
      Никита Герасимов (Rapidshe) отредактировано 5 месяцев назад

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

  5. Никита Герасимов  (Rapidshe)
    Никита Герасимов (Rapidshe) отредактировано 5 месяцев назад
    Комментарий был удален
  6. Александр Шотиди (Grek)
    Александр Шотиди (Grek) 5 месяцев назад

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

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

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

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

  7. (Stein)
    (Stein) отредактировано 4 месяца назад

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

    • (igor428)
      (igor428) 4 месяца назад

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

      • (Stein)
        (Stein) отредактировано 4 месяца назад

        Большое спасибо! если отправлять команду (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"
                    }
        
        
  8. (igor428)
    (igor428) отредактировано 4 месяца назад

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

    • (Stein)
      (Stein) отредактировано 3 месяца назад

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

      • (igor428)
        (igor428) 3 месяца назад

        Тогда если 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 решим эту проблему.

    • (Stein)
      (Stein) отредактировано 3 месяца назад

      решил я эту проблему! оказалось все очень деже просто. 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"
              },

  9. Artem Tomshin (tweaker3)
    Artem Tomshin (tweaker3) 5 часов назад

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

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

    • Никита Герасимов  (Rapidshe)

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

      • Artem Tomshin (tweaker3)
        Artem Tomshin (tweaker3) отредактировано 5 часов назад

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

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

К списку статей

Похожие статьи

15 нояб. 2018 г.
Xiaomi Mi Remote 360 добавляем Apple HomeKit
4 сент. 2018 г.
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
2 нояб. 2018 г.
Кнопка звонка с уведомлениями в HomeKit
15 окт. 2018 г.
Прошивка для Sonoff c нативным HomeKit
15 нояб. 2018 г.
Способы автоматизации механических ворот
27 окт. 2018 г.
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
1 окт. 2018 г.
Нативный HomeKit на ESP8266
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
27 авг. 2018 г.
Интегрируем ХА в HomeKit
2 окт. 2018 г.
Установка SDK для компиляции прошивок под HomeKit