Всем привет. В этой статье я хочу рассказать про свой проект посвященный автоматизации всего и вся. В начале будет много технических деталей, а менее занудные вещи начнутся с середины статьи. Осторожно, под катом много траффика!

Long story short: мы сделали штуку на фото для удобного подключения любых датчиков (а также устройств управления) к ESP32 DOIT Devkit V1. ESP32 это как Arduino, только лучше. Используя любые датчики и любые интерфейсы мы можем автоматизировать что угодно используя мощные фреймворки в виде ESPHome и Home Assistant. Это если совсем вкратце.

Когда я впервые познакомился с ESP32 я сразу же влюбился. Для полного погружения не хватало двух вещей: конфигурации с помощью конфигов и удобного подключения большого количества датчиков.
Почему вообще такой подход? Потому что имея, например, помещение в несколько десятков квадратных метров и желая достоверно измерять параметры воздуха (температуру, влажность), вам потребуется несколько датчиков в разных частях комнаты. Если вы хотите добавить ещё мониторинг кондиционеров, это ещё +4 датчика температуры на каждый кондей.
Итого мы получаем с десяток точек контроля. Можно конечно поставить отдельных WiFi/Zigbee устройств и управлять этим зоопарком, а можно взять одно управляющее устройство, радикально сократив количество геморроя по менеджменту и по цене. А ещё готовые устройства исполняются в законченном корпусе, поэтому воткнуть их в вентиляционную гофру не то что бы легко, в отличии от DS18B20/DHT22/BME280.

Проблема настройки с помощью конфигов решилась практически сразу: был найден проект ESPHome, философия которого меня полностью удовлетворила.

Смысл такой, что из YAML конфига собирается плюсовый код, который уже потом компилируется в прошивку. Необходимость промежуточной сборки обусловлена тем, что вся кодовая база в память микроконтроллера не умещается и здесь есть два подхода:
компиляция собственного набора датчиков в прошивку (ESPHome)
использование предварительного скомпилированного тематического бинарника (ESPEasy)
А вот с удобным подключением пришлось повозиться...
Собственно зачем это все?
Суть проблемы такова: с одной стороны у нас есть это

С другой, вот это

Результат прямого перемножения приводит вот к этому:

Кроме очевидно неэстетичного вида, у такого подхода есть минусы:
Подобный сетап собирается один раз и его проще собрать заново, чем что-то в нем поменять
Работает это только на небольших масштабах (десятки см)
Работает с небольшим количеством датчиков (в основном из-за проблем с питанием)
На самом деле, проблема тут гораздо глубже, чем кажется на первый взгляд. Прототипы с ESP32 на макетке собираются легко и просто (и даже работают), но при попытке запустить на бОльших масштабах (метры, десятки метров), все начинает сыпаться. В первую очередь из-за питания, во вторую очередь из-за нужной подтяжки и наконец из-за наводок.
Почему это (может быть) лучше китайских устройств?
Нет вендорлока (не нравятся наши китайкие датчики, возьмите другие китайские датчики)
Открытая прошивка позволяет во-первых дописать те интеграции, которых не хватает, во-вторых, автоматизировать любую логику работы с помощью внутренних скриптов
Интерфейсы у HA/ESPHome лучше любых китайских устройств
Приватность и отсутствие потребности в облаке: можно собрать полностью автономное устройство работающее только на вас

На фото выше примерно весь ассортимент того, с чем мы умеем работать, а именно:
Интерфейсы OneWire для подключения гирлянд DS18B20 (герметичные датчики температуры, обжаты в RJ11)
BME280/DHT22/SCD40 для контроля параметров воздуха
Цифровые датчики в виде кнопок, расходомеров и Б-г знает чего ещё
Аналоговые датчики (например, датчик влажности почвы)
Управление нагрузкой 220В с диммированием и без
Управление нагрузкой 12В с ШИМом и без
pH и TDS датчики с гальванической развязкой (можно использовать неограниченное количество в одном растворе без побочных эффектов), платы для которых были разработаны лично нами ибо NIH
0-10В управление устройствами
UART, ModBus, 4-20мА подключаются через платы адаптеры

Что можно собрать с помощью нашего оборудования?
Да в общем-то все
Можно обмазать каждый метр вашего дома датчиками температуры и смотреть, как работает котел




На фото слева расходомер и два датчика температуры (вход и выход). Добавив теплоемкость теплоносителя можно получить фактическое количество тепла выданное котлом
Можно сделать су-вид из чайника
Добавив 3D принтер, можно сделать разливную линию
Можно сделать набор для регуляции уровня углекислого газа в вашей теплице
Можно собрать целый растворный узел с датчиками pH, TDS, ультразвуковыми датчиками расстояния для контроля уровня воды и перистальтическими насосами для регуляции удобрений
Можно собрать комплект для управления микроклиматом в птичнике, в птичнике, Карл


В качестве сервера HomeAssistant может подойти как компьютер работающий круглосуточно, так обычный tv-box прошитый под Armbian (мы шьем). Home Assistant нужен для хранилища графиков, более сложных автоматизаций и пушей в мобильное приложение.
Для сервера ХА идеально подойдут ноутбуки со 3G свистком или старые телефоны/планшеты. Это заменит ИБП и резервный способ связи для удаленного доступа.
Ещё немного про надежность и философию проекта
Насколько это можно использовать в продакшене?
Мои инсталляции на данный момент работают годами, проблемы возникают только если своими руками что-то сломать.
Там же под капотом китайские датчики за несколько сотен рублей, как вы можете такое серьезно продавать?
Проблема в том, что дешевые китайские датчики везде, только иногда продаются сильно дороже.
ESP32 какой-то детский микроконтроллер, не то что STM или что-нибудь из ПЛК
На ESP32 работают миллионы бытовых устройств. Если вы возьмете умную розетку от Tuya/Sonoff там будет та же ESP32. Даже WiFi модули для кондиционеров скорее всего будут на ESP32. Все работает, все счастливы (за исключением конечно пользователей китайских приложений).
Все-таки я хочу взять готовые устройства и объединить их как-нибудь иначе.
Наша платформа позволяет сделать по-настоящему автономные устройства, зависящие только от питания. Никаких облаков, никакого радио. У вас есть датчики, устройства управления и все это завязано внутри одного МК. А значит, что можно сделать действительно реалтаймовые устройства. А WiFi будет использоваться только для сбора данных.

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

Кроме нежной любви к HA/ESPHome, я также питаю слабость к Кликхаусу (они ещё и испольуют оба одинаковый сетевой порт). Стандартно ХА использует SQLite для хранения данных, что честно говоря не то что бы круто. Кликхаус позволит собирать реалтаймовые данные с разрешением в секунды с потрясающей производительностью и сжатием данных. Добавив сюда Redash вы получаете ультимативный комбайн по сбору, хранению и визуализации собранных данных.


Мне хотелось в этой статье рассказать по максимуму о том, чем мы занимаемся, простите за некоторый сумбур в изложении. Буду рад ответить на все ваши вопросы в комментариях. Благодарю за внимание!