"Киберскважина" - серия статей о разработке DIY контроллера управления скважинным насосом и мониторинга состояния оборудования кессона с доступом по WiFi на базе микроконтроллера ESP32 под управлением умного дома Home Assistant. Файлы проекта доступны на GitHub.
Прежде чем разрабатывать печатную плату и собирать устройство, нужно выполнить его макетирование. Я поленился делать это в полном объёме, протестировав только некоторые узлы. И начал с главного из них - отладочной платы микроконтроллера ESP32 - ESP32_Devkitc_V4, на базе которой я строю свой самодельный контроллер.
Home Assistant
Здесь и далее я буду ссылаться на умный дом Home Assistant, совместно с которым будет работать контроллер. Прошивка контроллера будет выполнена именно под эту платформу. И хоть контроллер задумывается как самостоятельное устройство, способное работать и без умного дома, но для его прошивки и отладки сервер Home Assistant будет необходим. Коротко о том, что такое Home Assistant, я уже писал в этой статье:
Процитирую часть той статьи здесь.
Home Assistant - это бесплатная платформа для самостоятельного создания умного дома с открытым исходным кодом, создаваемая и поддерживаемая огромнейшим комьюнити. Основная суть этой платформы в том, что по минимуму она представляет собой лишь ПО (программное обеспечение в виде веб-сервера), и запустить это ПО можно на любом компьютере, в том числе и на одноплатных, типа Raspberry Pi.
Home Assistant обладает рядом преимуществ перед проприетарными вариантами экосистем умного дома:
- Он независим от облачных сервисов, то есть находится полностью под вашим контролем, никто и никогда не отнимет его у вас, не ограничит права на доступ и использование, не урежет функционал без вашего ведома и согласия.
- Не требует хостинга, так как работает на вашем компьютере в вашей домашней локальной сети (но может быть запущен и на сторонних серверах).
- Не требует обязательно выделенного компьютера (хотя это и предпочтительнее), так как может работать на любом компьютере под управлением виртуальной машины или в контейнере.
- Командой Home Assistant разработана собственная ОС (операционная система) на базе линукса, предназначенная исключительно для работы платформы этого умного дома, что обеспечивает низкий уровень входа пользователю для начала работы с этой системой - достаточно записать готовый образ диска на карту памяти или жёсткий диск компьютера (в этом случае выделенного только под работу Home Assistant), и умный дом готов без танцев с бубнами.
- Может работать с некоторыми видами умных устройств и датчиков напрямую, без обязательного постоянного подключения к интернету.
- Способен интегрироваться с огромным числом умных устройств различных брендов посредством программных интеграций с облачными сервисами этих брендов, или с самими устройствами напрямую.
- Имеет бесплатное мобильное приложение, полностью дублирующее функционал веб-интерфейса, и транслирующее на сервер умного дома данные со множества датчиков телефона, включая уровень заряда, состояние WiFi и геопозицию.
- Проект живой и непрерывно развивающийся, релизы выпускаются ежемесячно в обязательном порядке, а между ними ещё несколько сабверсий.
Но самое главное, это то, что Home Assistant может работать с самодельными умными устройствами! И именно этим чудеснейшим свойством я и воспользовался для создания контроллера скважинного насоса.
Один из простых путей создания своего Home Assistant потребует:
- Одноплатный компьютер Raspberry Pi (3, 4 или 5).
- Блок питания для него, обычная зарядка для телефона не потянет.
- Карту памяти MicroSD объёмом не менее 32 ГБ.
- USB-картридер, если нет слота для карт памяти в вашем рабочем компьютере.
- Скачать и записать на карту памяти образ диска сервера умного дома.
- Вставить карту памяти в Raspberry Pi, включить питание и подождать полчасика-часик, пока система развернётся и скачает все апдейты.
Всё, умный дом готов. Подробные инструкции здесь.
Есть вариант ещё проще, без покупки Raspberry Pi и прочих устройств:
на своём рабочем компьютере установить веб-сервер Home Assistant, и всё. Никакого дополнительного железа. Останется только настроить платформу под свои нужды. Обо всех вариантах установки под разные операционки подробные инструкции здесь.
Для работы с ESP32 потребуется ещё дополнительно скачать аддон ESPHome из магазина дополнений в самом Home Assistant. А документация по работе с ESPHome расположена тут.
Вообще Home Assistant настолько популярен среди DIY-щиков всего мира, что любой вопрос или проблема гуглится на раз, правда преимущественно на английском, но с современными браузерными переводчиками это не проблема. Я погрузился в эту тему с нуля исключительно по гуглу, это доступно каждому, было бы время и желание. А времени потребуется много, с наскока не прокатит.
Подключение ESP32_Devkitc_V4 к Home Assistant
Прежде всего необходимо подключить отладочную плату к умному дому Home Assistant. Это делается легко, если знать как. Я делаю это редко, и постоянно забываю некоторые детали.
Для начала подключаем плату USB-кабелем к своему рабочему компьютеру, где открыт интерфейс Home Assistant (не к Raspberry Pi !) По этому кабелю плата получит и питание, и первоначальную прошивку. В Home Assistant в интерфейсе аддона ESPHome добавляем новое устройство и задаём ему имя:
Далее жмём NEXT, затем кнопку Connect:
Выбираем порт с подключенной к нему платой и жмём "Подключение":
Далее некоторое время ожидаем подключения:
Но сколько бы мы не ждали, подключение не произойдёт. Так как процедура первоначальной прошивки выполняется редко (один раз для каждой новой платы), то и запомнить все нюансы лично мне удаётся с трудом, и вот я в очередной раз наступаю на те же грабли и через несколько минут вижу это:
Чтобы прошить микроконтроллер ESP32 или ESP8266, прежде нужно ввести его в режим программирования. Это написано во всех мануалах, если их читать и не забывать - нужно замкнуть GPIO0 на GND.
Например, для прошивки через USB-адаптер микроконтроллера ESP8266 (в частности плат ESP01, ESP12) вход в режим программирования делается установкой перемычки между контактами GPIO0 и GND на весь период программирования. Вот минимально необходимая схема для первоначальной прошивки, в некоторых случаях у меня это работало без лишних резисторных подтяжек:
А это более правильная и полная схема, нарытая где-то в сети:
Порядок прошивки ESP8266 из Home Assistant следующий. Замкнуть GPIO0 на GND и оставить в таком положении. Подать питание. Коротко нажать и отпустить reset. Можно начинать прошивку. Ждать завершения этапа "Prepare installation" (время может достигать 15 минут!) После прошивки отключить GPIO0 от GND и перезагрузить по питанию или reset.
Здесь важен ещё один нюанс. Прошивка микроконтроллеров для работы с ESPHome из интерфейса Home Assistant возможна только если этот интерфейс открыт в браузере по протоколу https, по протоколу http работать не будет.
Применительно конкретно к плате ESP32_Devkitc_V4 вход в режим программирования выполняется максимально просто - непосредственно перед нажатием кнопки "Подключение" нужно зажать и удерживать кнопку Boot на плате:
Не отпуская этой кнопки кликнуть по кнопке "Подключение", и через несколько секунд начнётся подготовка к прошивке (кнопку boot можно отпустить). Либо, как я уже заметил позже, можно поступать ещё проще - сначала нажать кнопку "Подключение", а затем зажать кнопку boot на плате до тех пор, пока не стартует процесс прошивки:
Одновременно с этим в списке устройств появляется новое, с жёлтенькой полоской и пометкой NEW. Если микроконтроллер был прошит ранее, то сначала стирается старая прошивка:
И, наконец, начинается запись новой прошивки:
После чего Home Assistant сразу же начинает поиск устройства в сети WiFi:
И если предварительно в файле конфигурации SECRETS (кнопка в правом верхнем углу интерфейса ESPHome) были заданы данные WiFi сети:
То новое устройство тут же подключается и из статуса OFFLINE переходит в ONLINE:
Всё, инициализация нового умного устройства в системе Home Assistant завершена. Эта базовая прошивка, создаваемая Home Assistant автоматически, содержит в себе весь основной функционал, обеспечивающий связь умного WiFi-устройства с сервером умного дома. Все последующие обновления прошивки могут производиться только по воздуху.
От пользователя Home Assistant (меня в данном случае) этот базовый функционал скрыт и поломать его не получится при всём желании. Пользователю же доступен лишь файл конфигурации нового устройства, написанный на языке разметки YAML, и по умолчанию он содержит только основные настройки:
Теперь можно начинать создавать рабочий функционал умного устройства. И в этом прелесть системы ESPHome - от пользователя не требуются глубокие знания в программировании, не нужно знать API Home Assistant и разбираться как устанавливать и поддерживать связь, транслировать данные в обе стороны и контролировать их целостность. Всё уже сделано за нас. Нам остаётся только наполнить умное устройство требуемым функционалом.
Однако язык разметки YAML для этого не всегда оказывается достаточным, и в некоторых случаях требуются вставки кода на языке С (си), поэтому кое в чём разобраться всё же придётся. Но документация по ESPHome исчерпывающая, и комьюнити Home Assistant большое, поэтому недостатка в информации практически не бывает. Было бы желание возиться.