Введение
Точное орошение — один из ключевых факторов продуктивного сельского хозяйства и эффективного ландшафтного дизайна. По данным Продовольственной и сельскохозяйственной организации ООН (FAO), до 60% воды при традиционном поливе теряется из-за испарения, стока и неправильного распределения. Интеграция датчика дождя (Rain sensor) и датчика влажности почвы (Soil moisture sensor) с AI-агентом позволяет не только сократить водопотребление на 30–50%, но и предотвратить загнивание корней, повысить урожайность и автоматизировать процесс полива без участия человека.
ASI Biont — это AI-агент, который подключается к любому физическому устройству через диалог в чате. В этой статье мы разберём, как подключить датчик дождя/влажности почвы к ASI Biont, настроить MQTT-обмен, создать AI-логику для автоматического полива и мониторинга, а также приведём рабочие примеры кода для ESP32.
1. Что такое Rain / Soil Moisture Sensor и зачем его подключать к AI?
Датчик дождя (Rain sensor) — это устройство, которое обнаруживает наличие воды на своей поверхности. Обычно он состоит из двух проводящих дорожек: при попадании влаги сопротивление между ними падает, и микроконтроллер (например, ESP32) считывает аналоговый или цифровой сигнал.
Датчик влажности почвы (Soil moisture sensor) — измеряет объёмную влажность грунта. Наиболее распространены резистивные датчики (например, YL-69) и ёмкостные (например, v1.2 от DFRobot). Ёмкостные датчики более долговечны и устойчивы к коррозии.
Подключение этих датчиков к AI-агенту даёт следующие преимущества:
- Автоматический полив: AI анализирует данные с датчика влажности и дождя, и принимает решение — включать/выключать насос или электромагнитный клапан.
- Прогнозирование: AI может предсказывать, когда почва высохнет, и запускать полив заранее, чтобы поддерживать оптимальный уровень влажности.
- Аналитика и отчёты: AI ведёт историю измерений, строит графики трендов и отправляет уведомления в Telegram при аномалиях (например, прорыв трубы или длительная засуха).
- Интеграция с погодными API: AI может получать прогноз погоды и откладывать полив, если ожидается дождь.
2. Выбор способа подключения: MQTT как оптимальный протокол
Из списка поддерживаемых ASI Biont протоколов наиболее подходящий для ESP32 с датчиками — MQTT. Почему?
| Протокол | Преимущества | Недостатки для данного сценария |
|---|---|---|
| MQTT | Лёгкий, асинхронный, работает через NAT, поддерживает QoS, минимальное энергопотребление | Требуется MQTT-брокер (например, Mosquitto, HiveMQ Cloud) |
| HTTP API | Простой REST, легко отлаживать | Синхронный, высокое энергопотребление на ESP32, сложности с NAT |
| Modbus/TCP | Промышленный стандарт | Избыточен для датчиков, не поддерживается ESP32 «из коробки» |
| SSH | Полный контроль над устройством | ESP32 не поддерживает SSH; подходит для Raspberry Pi |
| COM-порт (Hardware Bridge) | Прямое чтение с Arduino | Требуется ПК с bridge.py, не подходит для удалённых полевых датчиков |
Вывод: MQTT — лучший выбор для ESP32 в полевых условиях. ASI Biont подключается к MQTT-брокеру через библиотеку paho-mqtt внутри инструмента execute_python. AI подписывается на топик с данными датчика и публикует команды на топик управления реле/клапаном.
3. Архитектура интеграции
+------------------+ +------------------+ +------------------+
| ESP32 + датчики | MQTT | MQTT-брокер | MQTT | ASI Biont |
| (измерение и |<------>| (Mosquitto / |<------>| (execute_python |
| публикация) | | HiveMQ Cloud) | | + paho-mqtt) |
+------------------+ +------------------+ +------------------+
| |
| (опционально) +------------------+ |
+----------------->| Telegram Bot |<---------------+
| (уведомления) |
+------------------+
Компоненты:
1. ESP32 — микроконтроллер с Wi-Fi, к которому подключены датчик дождя и датчик влажности почвы.
2. MQTT-брокер — облачный или локальный сервер, который принимает сообщения от ESP32 и передаёт их подписчикам (ASI Biont).
3. ASI Biont — AI-агент, который через execute_python запускает Python-скрипт с paho-mqtt, подписывается на топики датчиков, анализирует данные и при необходимости публикует команды управления.
4. Telegram Bot (опционально) — для отправки уведомлений пользователю.
4. Пошаговая реализация
Шаг 1. Прошивка ESP32
Пользователь загружает на ESP32 скетч на MicroPython или Arduino C++, который:
- Подключается к Wi-Fi.
- Считывает показания датчика влажности почвы (аналоговый вход GPIO34) и датчика дождя (аналоговый вход GPIO35).
- Публикует данные в MQTT-топик sensor/soil_moisture и sensor/rain раз в 10 секунд.
Пример кода (MicroPython):
import network
import time
import machine
from umqtt.simple import MQTTClient
# Настройки Wi-Fi и MQTT
WIFI_SSID = "your_wifi"
WIFI_PASS = "your_pass"
MQTT_BROKER = "your_broker_address"
MQTT_TOPIC_SOIL = "sensor/soil_moisture"
MQTT_TOPIC_RAIN = "sensor/rain"
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(0.5)
# Инициализация MQTT
client = MQTTClient("esp32_" + str(machine.unique_id()), MQTT_BROKER)
client.connect()
# Аналоговые пины
soil_pin = machine.ADC(machine.Pin(34))
rain_pin = machine.ADC(machine.Pin(35))
soil_pin.atten(machine.ADC.ATTN_11DB) # диапазон 0-3.6V
rain_pin.atten(machine.ADC.ATTN_11DB)
while True:
soil_value = soil_pin.read() # 0-4095
rain_value = rain_pin.read()
client.publish(MQTT_TOPIC_SOIL, str(soil_value))
client.publish(MQTT_TOPIC_RAIN, str(rain_value))
time.sleep(10)
Пользователь прошивает ESP32 через USB/UART. Для этого он может попросить ASI Biont сгенерировать код прошивки, описав в чате: «ESP32 с датчиком влажности почвы и дождя, публикуй в MQTT на адрес mqtt.example.com». AI выдаст готовый скетч.
Шаг 2. Подключение ASI Biont к MQTT
Пользователь пишет в чате ASI Biont:
«Подключись к MQTT-брокеру mqtt.example.com:1883, подпишись на топики sensor/soil_moisture и sensor/rain. Если влажность почвы ниже 1500 (из 4095) и дождь не идёт (значение rain > 2000), опубликуй в топик actuator/valve команду ON. Если влажность выше 3000 или идёт дождь — опубликуй OFF. Также отправляй мне уведомление в Telegram при каждом включении полива.»
AI генерирует и выполняет следующий Python-скрипт внутри execute_python:
import paho.mqtt.client as mqtt
import time
import requests
# Конфигурация
BROKER = "mqtt.example.com"
PORT = 1883
TOPIC_SOIL = "sensor/soil_moisture"
TOPIC_RAIN = "sensor/rain"
TOPIC_VALVE = "actuator/valve"
TELEGRAM_BOT_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
TELEGRAM_CHAT_ID = "123456789"
# Пороговые значения
SOIL_DRY = 1500
SOIL_WET = 3000
RAIN_THRESHOLD = 2000
# Состояние полива
irrigation_active = False
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
try:
requests.post(url, json=payload, timeout=5)
except Exception as e:
print("Telegram error:", e)
def on_message(client, userdata, msg):
global irrigation_active
topic = msg.topic
value = int(msg.payload.decode())
if topic == TOPIC_SOIL:
userdata["soil"] = value
elif topic == TOPIC_RAIN:
userdata["rain"] = value
soil = userdata.get("soil", 4095)
rain = userdata.get("rain", 0)
# Логика полива
should_water = (soil < SOIL_DRY) and (rain > RAIN_THRESHOLD)
if should_water and not irrigation_active:
client.publish(TOPIC_VALVE, "ON")
irrigation_active = True
send_telegram("🚜 Полив включён (влажность: {}).".format(soil))
elif (soil > SOIL_WET or rain <= RAIN_THRESHOLD) and irrigation_active:
client.publish(TOPIC_VALVE, "OFF")
irrigation_active = False
send_telegram("💧 Полив выключен (влажность: {}, дождь: {}).".format(soil, rain))
client = mqtt.Client(userdata={})
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.subscribe([(TOPIC_SOIL, 0), (TOPIC_RAIN, 0)])
client.loop_start()
# Держим скрипт активным 25 секунд (таймаут sandbox ~30 сек)
time.sleep(25)
client.loop_stop()
client.disconnect()
Важно: sandbox ASI Biont имеет таймаут 30 секунд, поэтому бесконечный цикл недопустим. Вместо этого AI может запускать скрипт периодически (каждые 30 секунд) или использовать внешний триггер (например, публикацию в MQTT). В реальном сценарии AI может запланировать повторное выполнение через industrial_command с задержкой.
Шаг 3. Тестирование и мониторинг
После запуска скрипта AI выводит в чат:
- Текущие значения датчиков.
- Статус полива.
- Логи отправленных команд.
Пользователь может попросить AI построить график изменения влажности за последний час. Для этого AI использует библиотеку matplotlib (доступна в sandbox) и сохраняет график в файл, а затем отправляет его пользователю (например, через Telegram).
5. Дополнительные сценарии автоматизации
- Прогноз погоды: AI может запрашивать прогноз через OpenWeatherMap API и отключать полив, если в ближайшие 6 часов ожидается дождь.
- Несколько зон полива: Если у вас несколько датчиков на разных участках, AI может управлять каждым клапаном независимо.
- Экономия воды: AI анализирует исторические данные и подбирает оптимальное время полива (ночью, когда испарение минимально).
- Аварийные уведомления: Если датчик не присылает данные более 30 минут, AI отправляет предупреждение в Telegram.
6. Почему это выгодно?
| Традиционный подход | Интеграция с ASI Biont |
|---|---|
| Писать код интеграции вручную (Python, Node-RED, Home Assistant) | AI пишет код за секунды, достаточно описать задачу в чате |
| Настраивать MQTT-брокер, разбираться в библиотеках | AI автоматически генерирует скрипт с правильными параметрами |
| Для изменения логики нужно переписывать код | Достаточно сказать AI: «Теперь поливай только если влажность ниже 1000» |
| Интеграция с Telegram — отдельный проект | AI использует готовую библиотеку requests и API Telegram |
ASI Biont подключается к любому устройству через execute_python — AI сам пишет код интеграции под каждое устройство. Не нужно ждать, пока разработчики добавят поддержку — подключай что угодно прямо сейчас. Пользователь просто описывает в чате, к какому устройству подключиться и какие параметры (порт, IP, baud rate, API-ключ), и AI сам пишет код на Python с использованием pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio. Всё подключение происходит через диалог в чате, никаких панелей управления и кнопок «добавить устройство» не требуется.
7. Заключение
Интеграция датчика дождя и влажности почвы с AI-агентом ASI Biont — это простой и эффективный способ автоматизировать полив, сэкономить воду и получить аналитику в реальном времени. MQTT-подключение через ESP32 и облачный брокер обеспечивает надёжность и масштабируемость, а AI-логика позволяет гибко настраивать условия полива без программирования.
Попробуйте интеграцию уже сегодня: зайдите на asibiont.com, создайте нового AI-агента и опишите в чате, какие датчики и как подключить. AI сгенерирует код, подключится к вашему устройству и начнёт управлять поливом за считанные минуты.
Комментарии