
Привет, Хабр!
Недавно случайно в мои руки попали два дешевых IoT-модуля от одного китайского производителя, которые были куплены в сети DNS. Раз попали в руки, нужно их использовать. Вот только есть одна проблема: все подобные устройства работают через облачные сервисы. В своей домашней автоматизации я придерживаюсь жёсткого правила — никаких облачных сервисов в моём умном доме! Поэтому достаём из ящика программатор с паяльником и за дело! А что из этого вышло, читайте далее.
❯ Начало
Пока я гулял по DNS, мне на глаза попались модули умного дома HIPER IoT SM-01 и SM-02, ив голове мелькнула мысль: а почему бы не использовать их в моем новом умном доме? Несмотря на то что я в основном использую IoT-устройства, спроектированные и собранные самостоятельно, на тот момент я был ограничен в производственных и временных ресурсах. Однако у готовых решений, подобных этим модулям, есть серьезный недостаток: они, как правило, работают через собственные облачные сервисы, что в наших реалиях может значительно снижать надежность работы умного дома. Поэтому передо мной встала задача: взять готовое решение и адаптировать его под свои нужды, избавившись от «слабого звена» системы. Собственно, об этом и пойдет речь ниже.
❯ Вскрытие покажет
И, как всегда, чтобы узнать, как это работает, устройство нужно разобрать. Чем мы сейчас и займёмся. Начнем с внешнего вида модуля:

Модули SM-01 и SM-02 выполнены в «классическом» корпусе китайских Wi-Fi реле. Ниже мы можем наблюдать внутренности одного из модулей.

И вид разводки дорожек печатной платы:

Плата выполнена неплохо. В качестве системы питания используется импульсный регулятор напряжения, поэтому модуль не имеет гальванической развязки с сетью. Это важно учитывать при подключении внешних элементов управления (выключателей или кнопок) — необходимо позаботиться об их изоляции. Для коммутации нагрузки применяется 16-амперное реле. В качестве «мозга» устройства я надеялся увидеть SoC ESP8266, но мои надежды не оправдались. В модуле установлена субплата с маркировкой CB2S на базе микроконтроллера BK7231N:

К сожалению, я не работал с данным микроконтроллером, и времени разбираться с ним особо не было. К счастью, в моих предыдущих проектах я уже использовал полностью совместимый по выводам модуль ESP-02S на базе ESP8285. Он идеально подходит для замены штатной субплаты CB2S:

Его и будем использовать для наших целей.
❯ Немного реверс-инженеринга
Чтобы двигаться дальше, первым делом нужно разобраться с распиновкой родной платы CB2S. Берем мультиметр в руки и вызваниваем цепи выводов. В результаты прозвонки вы можете видеть в моих технических «зарисовках».

и

Теперь у есть вся необходимая информация, двигаемся дальше.
❯ Выпаиваем, прошиваем, впаиваем...
Переходим к самой интересной части — аппаратной доработке. А значит, пора разогреть паяльник и достать программатор. Осторожно, с помощью медной оплётки, удаляем припой и отделяем субплату контроллера от основной платы модуля.

Отложим родные модули CB2S на будущее, а для их замены возьмем новые ESP-02S, которые перед впайкой необходимо прошить. Первоначальная прошивка выполняется «классическим» способом с использованием программатора.

Прошиваем по стандартной схеме: подключаем программатор к выводам TX, RX, GPIO0 и RST модуля. И после успешной прошивки впаиваем наш новый ESP-02S взамен CB2S.

Ну и раз я уже залез по локти в схему, то почему бы мне не добавить и функцию мониторинга напряжения сети. Для этого мы можем задействовать свободный пин аналогового входа микроконтроллера (ADC), добавив в схему модуля простой резисторный делитель напряжения. Реализация показана ниже.

Для общего понимания, ниже показана схема делителя напряжения.

И во избежание преждевременной аннигиляции платы постараемся надёжно зафиксировать резисторы. У меня это реализовано с помощью термоклея.
❯ Микро-ПО модуля и интеграция в умный дом
▨ Прошивка
И как бы мастерски мы ни орудовали паяльником, всё же основная наша задумка реализуется в микро-ПО (прошивке). Поэтому откладываем паяльник в сторону и берёмся за клавиатуру.
И как обычно, микро-ПО для данных модулей реализовано на базе собственной прошивки для IoT-устройств. Первичная конфигурация устройства выполняется с помощью CaptivePortal (в предыдущих статьях я описывал более подробно первичную конфигурацию своих устройств). Так как концепция своих IoT-устройств подразумевает универсальное использование даже в тех случаях, когда нет сети и умного дома, для удобства пользователя вся конфигурация и управление устройством выполняются через веб-интерфейс. Ниже, для общего понимания, показаны несколько скриншотов страниц конфигурации.

Для защиты устройства от конфигурации и управления «посторонними» вход выполняется с помощью пароля. Пароль по умолчанию — admin, позже его можно изменить на соответствующей странице.

И для для того, чтобы устройство могло работать в составе «Умного дома» реализована возможность его подключения по протоколу MQTT. Ниже показана страница конфигурации подключения по MQTT.

▨ Интеграция в умный дом
Как я уже говорил выше, для интеграции устройства в системы умного дома используется протокол MQTT. А благодаря механизму MQTT Discovery интеграция значительно упрощается за счёт автоматического создания конфигурации устройства.
Ниже показ��на панель управления устройствами MQTT в Home Assistant, где отображены устройства, которые добавлены в систему автоматически.

Ниже показана панель управления одним из переделанных модулей.

❯ Аппаратные трудности
Куда же без них. В процессе отладки модуля HIPER IoT SM-02 после замены и прошивки обнаружил неприятную вещь: входы для использования внешнего выключателя собирали на себя сетевой «шум», что приводило к ложному срабатыванию реле, чего не наблюдалось в HIPER IoT SM-01. Изначально я подумал о проблеме в коде, что отняло у меня пару часов на эксперименты с прошивкой, но, когда все мои варианты закончились и в голове начала прокручиваться фраза про лыжи и асфальт, я решил перейти к аппаратным экспериментам. В итоге проблему удалось решить двумя конденсаторами по 0,1 мкФ. Ниже фото с моим решением.

❯ Итоги
В итоге это был интересный опыт, когда не можешь собрать своё (вдали от своей мастерской), но можешь переделать чужое. В данный момент модули установлены и успешно трудятся в составе умного дома. Теперь имеем полный контроль над модулями – нет облаков, а скорость реакции на команды моментальная и небольшим бонусом добавлен мониторинг сетевого напряжения. Ниже несколько фотографий с установкой модулей.
Установка модуля в монтажную коробку выключателя

После установки выключателя:

Итоговый вариант:

На этой позитивной ноте можно и заканчивать статью. Спасибо за ваше внимание! И как всегда, делюсь с вами исходниками по ссылкам ниже. Всем добра, успехов и интересных проектов!
Ссылки к статье:
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.
