Найти тему
Дача DIY

"Киберскважина". Часть 3: Подключение ESP32 к Home Assistnat

Оглавление

"Киберскважина" - серия статей о разработке 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:

-2

Выбираем порт с подключенной к нему платой и жмём "Подключение":

-3

Далее некоторое время ожидаем подключения:

-4

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

-5

Чтобы прошить микроконтроллер ESP32 или ESP8266, прежде нужно ввести его в режим программирования. Это написано во всех мануалах, если их читать и не забывать - нужно замкнуть GPIO0 на GND.

Например, для прошивки через USB-адаптер микроконтроллера ESP8266 (в частности плат ESP01, ESP12) вход в режим программирования делается установкой перемычки между контактами GPIO0 и GND на весь период программирования. Вот минимально необходимая схема для первоначальной прошивки, в некоторых случаях у меня это работало без лишних резисторных подтяжек:

Прошивка ESP-12 (ESP8266) через USB-UART конвертер
Прошивка ESP-12 (ESP8266) через USB-UART конвертер

А это более правильная и полная схема, нарытая где-то в сети:

Прошивка ESP8266 через USB-адаптер
Прошивка ESP8266 через USB-адаптер

Порядок прошивки ESP8266 из Home Assistant следующий. Замкнуть GPIO0 на GND и оставить в таком положении. Подать питание. Коротко нажать и отпустить reset. Можно начинать прошивку. Ждать завершения этапа "Prepare installation" (время может достигать 15 минут!) После прошивки отключить GPIO0 от GND и перезагрузить по питанию или reset.

Здесь важен ещё один нюанс. Прошивка микроконтроллеров для работы с ESPHome из интерфейса Home Assistant возможна только если этот интерфейс открыт в браузере по протоколу https, по протоколу http работать не будет.

Применительно конкретно к плате ESP32_Devkitc_V4 вход в режим программирования выполняется максимально просто - непосредственно перед нажатием кнопки "Подключение" нужно зажать и удерживать кнопку Boot на плате:

-8

Не отпуская этой кнопки кликнуть по кнопке "Подключение", и через несколько секунд начнётся подготовка к прошивке (кнопку boot можно отпустить). Либо, как я уже заметил позже, можно поступать ещё проще - сначала нажать кнопку "Подключение", а затем зажать кнопку boot на плате до тех пор, пока не стартует процесс прошивки:

-9

Одновременно с этим в списке устройств появляется новое, с жёлтенькой полоской и пометкой NEW. Если микроконтроллер был прошит ранее, то сначала стирается старая прошивка:

-10

И, наконец, начинается запись новой прошивки:

-11

После чего Home Assistant сразу же начинает поиск устройства в сети WiFi:

-12

И если предварительно в файле конфигурации SECRETS (кнопка в правом верхнем углу интерфейса ESPHome) были заданы данные WiFi сети:

-13

То новое устройство тут же подключается и из статуса OFFLINE переходит в ONLINE:

-14

Всё, инициализация нового умного устройства в системе Home Assistant завершена. Эта базовая прошивка, создаваемая Home Assistant автоматически, содержит в себе весь основной функционал, обеспечивающий связь умного WiFi-устройства с сервером умного дома. Все последующие обновления прошивки могут производиться только по воздуху.

От пользователя Home Assistant (меня в данном случае) этот базовый функционал скрыт и поломать его не получится при всём желании. Пользователю же доступен лишь файл конфигурации нового устройства, написанный на языке разметки YAML, и по умолчанию он содержит только основные настройки:

-15

Теперь можно начинать создавать рабочий функционал умного устройства. И в этом прелесть системы ESPHome - от пользователя не требуются глубокие знания в программировании, не нужно знать API Home Assistant и разбираться как устанавливать и поддерживать связь, транслировать данные в обе стороны и контролировать их целостность. Всё уже сделано за нас. Нам остаётся только наполнить умное устройство требуемым функционалом.

Однако язык разметки YAML для этого не всегда оказывается достаточным, и в некоторых случаях требуются вставки кода на языке С (си), поэтому кое в чём разобраться всё же придётся. Но документация по ESPHome исчерпывающая, и комьюнити Home Assistant большое, поэтому недостатка в информации практически не бывает. Было бы желание возиться.