ESP32 с ёмкостным датчиком влажности почвы, ESPHome и Home Assistant

ESP32 и ёмкостный датчик подходят для наблюдения за влажностью почвы, если относиться к показанию как к измерению конкретной установки, а не к универсальному проценту. Напряжение зависит от платы, питания, датчика, длины проводов, субстрата и положения щупа. Поэтому сначала собирают стабильный сигнал, затем калибруют и только после этого обсуждают автоматический полив.

Что понадобится

Компонент Требование
ESP32 исправная плата и ADC-пин, подходящий для выбранной конфигурации
датчик предпочтительно ёмкостный, без открытых корродирующих электродов
питание стабильное и соответствующее плате; выход датчика не превышает допустимое напряжение входа ESP32
корпус ESP32 и соединения находятся вне мокрой зоны
контроль мультиметр и ручная проверка состояния субстрата

Перед подключением сверяйтесь со схемой именно своей платы и датчика. Цвет провода и подпись из случайной карточки товара не являются документацией.

ESP32 и ESP32-C3 SuperMini: пины различаются

Пример с GPIO34 ниже относится к классическому ESP32, где этот вывод используется как вход ADC1. У ESP32-C3 нет GPIO34: таблица ESPHome указывает ADC1 на GPIO0–GPIO4. Для SuperMini проверьте распиновку именно своей платы и доступность вывода, затем замените pin. Названия семейства микроконтроллера недостаточно, чтобы подтвердить конкретную разводку платы. ADC и варианты ESP32.

Соединение Проверка перед подачей питания
GND датчика → GND платы Общая земля
VCC датчика → подходящее питание Допустимое напряжение по документации датчика
Analog OUT → выбранный ADC1 Выход во всём диапазоне укладывается в пределы входа платы

Это схема соединений по назначению контактов, а не фотография проверенного SuperMini-стенда. Не подавайте 5 В на ADC. Ёмкостный датчик влажности также не измеряет EC или концентрацию удобрений: для этого нужен отдельный измерительный узел.

Шаг 1. Сохраните измерение в вольтах

Сначала наблюдайте напряжение. При raw: false компонент ADC возвращает вольты; это не нормализованное число от 0 до 1. У raw: true другой масштаб, поэтому точки калибровки между этими режимами не переносят. Параметры приведены в документации ESPHome Analog To Digital Sensor.

Добавьте этот блок в конфигурацию уже настроенного устройства ESPHome. Это раздел датчиков, а не полный файл: настройки платы, Wi-Fi и API остаются вашими. Если sensor: уже существует, добавьте элемент в его список.

sensor:
  - platform: adc
    id: soil_voltage
    pin: GPIO34
    name: "Рассада — напряжение датчика"
    attenuation: auto
    raw: false
    unit_of_measurement: "V"
    device_class: voltage
    accuracy_decimals: 3
    update_interval: 30s
    filters:
      - median:
          window_size: 7
          send_every: 1

GPIO и параметры нужно заменить под свою плату. Медианный фильтр уменьшает одиночные выбросы, но не исправляет плохое питание или залитый разъём.

Синтаксис двух YAML-блоков в статье проверен валидатором ESPHome 2026.9.0. Это проверка конфигурации; монтаж и калибровка требуют проверки на вашем оборудовании.

Шаг 2. Проверьте установку

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

Сделайте три проверки:

  1. значение на воздухе и в сухом субстрате не прыгает хаотично;
  2. после ручного полива сигнал меняется в ожидаемую сторону;
  3. при высыхании он постепенно возвращается, а не остаётся на одном уровне.

Если реакция появляется только при шевелении провода, проблема электрическая, а не агрономическая.

Шаг 3. Соберите точки калибровки

Не используйте стакан воды как единственную «точку 100%». Датчик в воде и в рабочем субстрате ведёт себя по-разному. Практичнее записать несколько реальных состояний:

Состояние Что записать
перед обычным ручным поливом напряжение и состояние растения
после распределения воды и стекания избытка напряжение влажной точки
через сутки скорость изменения
перед следующим поливом повторяемость сухой точки

После нескольких циклов выберите две воспроизводимые точки: более сухой субстрат и влажный после стекания лишней воды. Это границы относительной шкалы вашей установки, а не лабораторное измерение объёмной доли воды.

Сохраните напряжение и добавьте отдельное показание процентов через Copy Sensor. Следующий элемент добавляется в тот же список sensor:, после ADC; второй ключ sensor: не нужен. Замените 0.82 и 0.39 своими напряжениями до использования показания.

  - platform: copy
    source_id: soil_voltage
    name: "Рассада — влажность почвы"
    unit_of_measurement: "%"
    device_class: moisture
    state_class: measurement
    accuracy_decimals: 0
    filters:
      - calibrate_linear:
          method: exact
          datapoints:
            - 0.39 -> 100.0
            - 0.82 -> 0.0
      - clamp:
          min_value: 0
          max_value: 100

В примере 0.82 В означает сухую точку, 0.39 В — влажную; у вашего датчика направление может быть обратным. Значения слева от -> расположите по возрастанию напряжения, даже если проценты справа убывают. Фильтр calibrate_linear выполняет пересчёт, а clamp ограничивает шкалу. Одно изменение unit_of_measurement не переводит вольты в проценты. Для процентной сущности явно задан класс moisture, соответствующий влажности вещества в Home Assistant.

Ограничение 0–100 скрывает выход за границы калибровки, поэтому сохраняйте график напряжения для диагностики. Обрыв провода тоже может дать крайнее значение: 0% само по себе не означает, что нужно включить насос.

Шаг 4. Передайте данные в Home Assistant

Для native API используйте интеграцию ESPHome:

  1. Проверьте конфигурацию в ESPHome Device Builder и установите её на свой датчик.
  2. В Home Assistant откройте «Настройки → Устройства и службы» и настройте обнаруженное устройство ESPHome. Если его нет, добавьте интеграцию ESPHome по адресу устройства в локальной сети.
  3. Если включено шифрование API, укажите ключ из конфигурации этого устройства.
  4. Откройте обе сущности: напряжение в V и относительную влажность в %. Проверьте изменение после ручного полива и состояние недоступности при отключении контроллера.

MQTT нужен, когда другая система понимает выбранные топики и формат данных. Само наличие MQTT не делает ESPHome-датчик совместимым с GrowerHub.

Для MQTT настройте state и availability, а для автоматизации не используйте сохранённое значение после истечения допустимого времени. Общие правила интеграции описаны на странице Home Assistant MQTT.

Шаг 5. Сначала только наблюдение

Оставьте датчик на 5–7 дней без автоматического управления. Сравнивайте график с ручными поливами, весом горшка и состоянием субстрата. Если порог каждый день приходится менять, проблема ещё не измерена.

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

Попробуйте чтение графика на готовой демоферме

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

В демо не нужны регистрация и оборудование. Устройства и значения виртуальные: это проба интерфейса, а не проверка вашего датчика. Гостевые изменения хранятся 24 часа; сохранить демоферму можно в аккаунте.

Если показания выглядят неправдоподобно

Симптом Что проверить
Получается 0 или 100% при любом состоянии почвы Откройте напряжение: возможно, точки заданы в другом масштабе или срабатывает ограничение clamp
После полива процент уменьшается Проверьте направление сухой и влажной точек
Напряжение скачет при движении кабеля Общую землю, соединения, питание и фиксацию щупа
Сущность есть, но новых данных нет Доступность ESP32, логи ESPHome и связь с Home Assistant

Калибровка не исправляет обрыв, нестабильное питание или неправильный GPIO.

Можно ли подключить насос к той же ESP32

Технически — да, но измерение и безопасное управление являются разными задачами. Реле, насос и вода требуют подходящего питания, защиты нагрузки, корпуса, ручного отключения и независимого максимального времени работы. Перезапуск ESP32 или Home Assistant не должен оставлять насос включённым.

Если эти условия не выполнены, оставьте ESP32 датчиком. Для будущего полива сначала добавьте протечку, измерьте расход и проверьте безопасные лимиты автополива.

Чек-лист результата

  • вход ESP32 не получает недопустимое напряжение;
  • контроллер и соединения защищены от воды;
  • сырые значения стабильны;
  • датчик закреплён в рабочем субстрате;
  • калибровка сделана по нескольким реальным циклам;
  • при потере ESP32 сущность становится недоступной;
  • автоматический насос не зависит от одного программного таймера.

После этого процент становится полезной шкалой для конкретной зоны, а не случайным числом с красивым значком капли.

Готовый connector GrowerHub читает Zigbee2MQTT, а штатные контроллеры работают по своему протоколу. Произвольные ESPHome/MQTT-топики автоматически не импортируются: отдельная интеграция требует соответствующего адаптера и проверки контракта. Поддержанный путь подключения описан в инструкции для Zigbee2MQTT и Home Assistant.