krepton85

 
<<< Назад

Переделка в MQTT Connect/восстановление выключателя Smart Switch на 3 сенсорных кнопки, Wi-Fi, Tuya

Речь пойдет о выключателе с Aliexpress: c Wi-Fi, на 3 сенсорных кнопки и с поддержкой tuya серверов, а так же с подключением с/без нуля.

Вот такой выключатель я восстановил после того как кое кто мне его спалил.

Данный блог не является призывом к действию, все что вы делаете, вы делаете на свой страх и риск, необходимо умение работать с паяльником, USB-UART адаптером, а так же средой разработки Arduino IDE.
По мне так пользы в данных действиях нет, т.к. на выходе получаем устройство с теми же функциями, только уже НЕ совместимым с Китайскими серверами Tuya (актуально для параноиков , которые боятся Китайских серверов :) ) . У меня же выключатель сгорел, после того как кое кто (НЕ разу не электрик) на кухне папутал вход и выход блока питания для света-диодных лент. Я же предпологал, что сгорит всего лишь симмистор, но окозалось все сложнее, сгорело так же самое главное: Wi-Fi модуль ESP8266 с прошивкой, а так же не известный микроконтроллер в корпусе SO-16 так же с прошивкой (позже выяснил, что в этой модели выключателя он использовался лишь для обработки косаний к сенсорным кнопкам). Заменил сгоревший неизвесный микроконтроллер 3-мя модулями сенсорных кнопок с Али. В виду того что выключатель не такой дорогой , закзал другой еще более дешевле и удобней (Aubess - США стандарт, расстояние между кнопками больше и сами кнопки тоже). А восстанавливал выключатель чисто по "фану". Ардуинщики они такие. :) Не всегда выходит метиостанция. :)

И так, прежде необходимо изучить схему подклчений модуля ESP8266, на Али есть куча версий от разных производителей с одинаковым функционалом, но разной схемой подключений, а так же esp8266 может быть распаян не в виде модуля, а сразу микроконтроллер на главной плате устройства.
Прошивать мы будем сектчь Ардуино через USB - UART адаптер, по этому первым делом необходимо определить не мешает ли, что нибудь прошивке. Проверяем куда идут дарожки от Tx0 и Rx0, а так же gpio 0. В моем экземпляре (см схему):
       - Tx0 управляет статусными света-диодами 3 кнопки (практика показала, что не мешают света-диоды прошивке по UART). 
       - Rx0 - вход для кнопки 2, соединение через резистор R40  c пином номер 15 (назначен как выход) не известного микроконтроллера. Здесь будет точно мешать это соединение, т.к. если кнопка 2 не нажата, на пине номер 15 будет низкий уровень, который просаживает сигнал Rx0 на GND, необходимо разъеденить с помощью резистора перемычки R40 (сдвиньте его временно паяльником в сторону одного из контактов). 
       - gpio 0 подключен света-диод "WiFi LED" относительно +3,3 В, не мешает, если установить перемычку между gpio 0 и gnd (необходимо для перевода ESP8266 в режим прошивки), то будет постоянно светить.

Подпаеваем напрямую к ESP8266 UART:
ESP8266 | UART-USB
RX0 | Tx
TX0 | Rx
GND | GND
VCC JP1 | +5V

     **Внимание питание нужно подключать не напрямую к ESP8266,а  на межплатный разъем JP1 пин VCC!!!**

     так же паяем проводом перемычку между gpio 0 и GND.

     Настраиваем Ардуино IDE. все как на фото: 

![поддержка для esp8266](поддержка для esp8266);

![настройка Arduino для ESP12F](настройка Arduino для ESP12F);

Скачиваем и устанавливаем библиатеку pubsubclient для MQTT именно эту, если у вас уже имеется другая, удалите ее из папки библиатек.
Прошиваем скетчь в модуль ESP8266, если с первого раза не получилось пробуем еще раз.

Если все отлично прошилось, убераем перемычку между gpio 0 и gnd, подключаем питание, можно через usb-uart. Свето-диод "WiFi Led" должен мигать. И устройство будет вещать точку доступа с именем "Wi-Fi_relay2XXXXXX" - где XXXXXX, уникальный ID устройства основанный из mac адреса (6 символов). Все MQTT топики будут начинаться с этого ID!!!

Подключаемся к точке доступа "Wi-Fi_relay2XXXXXX" используя пароль из счетча "const char *pass_ap = ""; "

После на Андроид появится уведомление, тапнув по которому можно перейти на WEB страницу и заполнить WEB форму. Если уведомление не появилось, перейдите в браузере по адресу http://192.168.4.1 !!!

Web форма 1

Web форма 2

Заполняем ее, тут все просто, не понятна только нижняя строка "URL OTA PHP SCRIPT check_update_fw.php". Эта для одного из способов обновления прошивки по Wi-Fi (OTA). Об этом ниже.

**Данное устройство обладает 2-мя способами обновления прошивки по воздуху (Wi-FI, OTA):**

1 - ый способ, самый простой. Можно загргузить скомпелированную прошивку (*.bin) в Ардуино IDE перейдя по адресу в браузере http://ip_adres_dev/update где "ip_adres_dev" - IP адрес вашего устройства который назначен вашим Wi-Fi роутером (его можно узнать там же).

Для получения прошивки в Ардуино IDE воспользуйтесь опцией "Скетчь -> Экспорт бинарного файла", прошивка (*.bin) появится в папке со скетчем.

2-ой способ, для продвинутых, рекомендован для разработчиков модулей дополнений MJDM, позволяет в обновлениях модулей так же обновлять и прошивку для ESP8266.
Скачайте и разархивируйте OTA for web server PHP папку "ota", в корень WEB сервера умного дома MJDM. Впапке есть пару PHP скриптов:

  • "settings_for_post.php" - настроечный файл, вы можете отредоктировать пути расположения необходимых папок, для своего web сервера;
  • "data_logger.php" - скрипт создает логи обновлений прошивок ваших устройств, в папку указанную в файле "settings_for_post.php";
  • "check_update_fw.php" - основной скрипт, проверяет актуальность версии прошивки у ESP8266 с прошивкой на сервере, по запросу ESP8266. Вот как раз и нужно заполнить последнее поле "URL OTA PHP SCRIPT check_update_fw.php" на WEB странице указав путь к этому скрипту. У меня например "http://192.168.1.126/ota/check_update_fw.php". Не делайте длинным путь к этому скрипту на сервере т.к. у ESP8266 ограничение не более 64 символа!!! Обновление прошивки для 2-ого способа представляют сабой папку с именем устройства (в скетче "String name_model = "Wi-Fi_relay2";"). Папка содержит 2 файла:
    1. update.bin - сама прошивка (в скетче версия прописана в "String current_version = "1.6";");
    2. check_version.php - файл в котором прописана версия обновления содержащаяся в update.bin.
      Внимание версии в check_version.php и update.bin должны совпадать, а иначе получите безконечное обновление устройства при загрузке!!!

Ну и в завершении "как пользоваться".

Для сброса всех настроек WEB формы удерживайте более 5 секунд кнопки 2 + 3, пока не перезагрузится устройство.
Для Soft Reset можно удерживать кнопки 1+2 более 5 секунд. Необходимо для 2-ого способа OTA т.к. устройство проверяет на сервере обновление прошивки только в момент загрузки.

Список топиков:

define ONLINE "/relay2/online" //топик о состоянии устройства - в сети\ не в сети, если 1 - то в сети, 0 - отправтье для поиска устройства.

define OUT1 "/relay2/out1" //топик для управления каналом 1

define OUT2 "/relay2/out2" //топик для управления каналом 2

define OUT3 "/relay2/out3" //топик для управления каналом 3

define RF_PROG_WORK "/relay2/rf_prog" //топик для переключателя управление MQTT или RF prog (програмирование радиопульта)

define STAT1 "/relay2/stat1" //топик для обратной связи, текущее состояние вых. 1

define STAT2 "/relay2/stat2" //топик для обратной связи, текущее состояние вых. 2

define STAT3 "/relay2/stat3" //топик для обратной связи, текущее состояние вых. 3

define CURRENT_V "/relay2/fw_v"//текущая версия прошивки

define DEF1 "/relay2/def1" //топик для out1 "по умолчанию"

define DEF2 "/relay2/def2" //топик для out2 "по умолчанию"

define DEF3 "/relay2/def3" //топик для out3 "по умолчанию"

Обсуждение (0) (4)

Смотрите так же:
01.01.2019 Шлюз MQTT - ИК и RF315МГц на ESP8266

Минск, Беларусь

На форуме: krepton85