Введение
Современное сельское хозяйство и ландшафтный дизайн всё чаще опираются на данные с датчиков. Один из ключевых сенсоров — Rain / Soil Moisture Sensor, который измеряет уровень влажности почвы и наличие осадков. Подключив его к AI-агенту ASI Biont, вы превращаете обычный датчик в интеллектуальную систему управления поливом, способную экономить до 40% воды и снижать ручной контроль на 90%. В этой статье мы разберём, как ASI Biont подключается к такому сенсору через ESP32 и MQTT, какие сценарии автоматизации доступны, и как AI-агент самостоятельно пишет код интеграции за секунды.
Что такое Rain / Soil Moisture Sensor и зачем его подключать к AI-агенту?
Rain / Soil Moisture Sensor — это комбинированный аналоговый датчик, который определяет:
- Влажность почвы (сопротивление между двумя зондами изменяется в зависимости от содержания воды);
- Наличие дождя (специальная площадка замыкается при попадании воды).
Типичное применение — автоматизация полива в теплицах, садах, на полях. Без AI-агента для настройки сценариев (полив по расписанию + по влажности) требуется писать код вручную, настраивать MQTT-брокер и вебхуки. ASI Biont берёт всё это на себя: вы просто описываете задачу в чате, и AI-агент генерирует готовый код и подключается к устройству.
Какой способ подключения используется и почему?
Для интеграции датчика с ASI Biont мы используем ESP32 + MQTT. Почему именно этот вариант:
- ESP32 — популярный микроконтроллер со встроенным Wi-Fi и аналоговыми входами;
- MQTT — лёгкий протокол для IoT, идеально подходит для передачи показаний датчиков в облако;
- ASI Biont поддерживает MQTT через библиотеку paho-mqtt в execute_python, а также через industrial_command для быстрой команды publish.
Альтернативно, если ESP32 подключён к ПК через USB, можно использовать Hardware Bridge (bridge.py) и COM-порт. Но для автономной работы в поле MQTT предпочтительнее.
Конкретный сценарий: умный полив с уведомлениями в Telegram
Задача
Пользователь хочет, чтобы ASI Biont:
1. Каждые 10 минут читал показания датчика влажности почвы с ESP32 через MQTT;
2. Если влажность ниже 30% — включал полив (через реле, подключённое к ESP32);
3. Если влажность выше 70% — выключал полив;
4. Если датчик дождя показывает дождь — отключал полив принудительно;
5. Отправлял уведомление в Telegram при выходе за пределы нормы.
Пошаговое описание
-
Пользователь пишет в чат ASI Biont:
«Подключись к моему ESP32 с датчиком влажности почвы. ESP32 публикует показания в MQTT-топик sensor/moisture. Настрой автоматический полив: полив при влажности <30%, отключение при >70%, учёт дождя. Уведомления в Telegram при аномалиях. Вот параметры: MQTT-брокер mqtt.example.com:1883, топик команд actuator/pump, Telegram токен и chat ID.»
-
AI-агент генерирует и выполняет Python-скрипт в
execute_pythonс использованиемpaho-mqttиrequestsдля Telegram. Скрипт подписывается на топикsensor/moisture, анализирует данные и публикует команды вactuator/pump. -
Код на Python (выполняется в sandbox ASI Biont):
import paho.mqtt.client as mqtt
import requests
import json
# Конфигурация
BROKER = "mqtt.example.com"
PORT = 1883
TOPIC_MOISTURE = "sensor/moisture"
TOPIC_RAIN = "sensor/rain"
TOPIC_PUMP = "actuator/pump"
TELEGRAM_TOKEN = "YOUR_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
# Состояние
current_moisture = 50
is_raining = False
pump_on = False
def on_connect(client, userdata, flags, rc):
print("Connected to MQTT broker")
client.subscribe([(TOPIC_MOISTURE, 0), (TOPIC_RAIN, 0)])
def on_message(client, userdata, msg):
global current_moisture, is_raining, pump_on
topic = msg.topic
payload = msg.payload.decode()
if topic == TOPIC_MOISTURE:
current_moisture = float(payload)
print(f"Moisture: {current_moisture}%")
elif topic == TOPIC_RAIN:
is_raining = (int(payload) == 1)
print(f"Rain detected: {is_raining}")
# Логика управления поливом
if is_raining:
if pump_on:
client.publish(TOPIC_PUMP, "0")
pump_on = False
send_telegram("Полив отключён: идёт дождь")
elif current_moisture < 30 and not pump_on:
client.publish(TOPIC_PUMP, "1")
pump_on = True
send_telegram(f"Включён полив: влажность {current_moisture}%")
elif current_moisture > 70 and pump_on:
client.publish(TOPIC_PUMP, "0")
pump_on = False
send_telegram(f"Полив отключён: влажность {current_moisture}%")
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
data = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
requests.post(url, json=data)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.loop_forever()
Важно: скрипт использует loop_forever(), что допустимо в execute_python только если AI-агент запускает его в фоне. На практике для демонстрации AI может использовать однократное чтение с помощью publish.single() в industrial_command.
Код для ESP32 (MicroPython)
На стороне ESP32 пользователь загружает прошивку, которая читает аналоговый сигнал с датчика и публикует в MQTT:
import network
import time
from machine import Pin, ADC
from umqtt.simple import MQTTClient
# Настройка Wi-Fi
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("SSID", "PASSWORD")
while not wifi.isconnected():
time.sleep(1)
# Датчик влажности (GPIO34)
adc = ADC(Pin(34))
adc.atten(ADC.ATTN_11DB) # 0-3.3V
# Датчик дождя (GPIO35, цифровой вход)
rain_sensor = Pin(35, Pin.IN)
# MQTT
client = MQTTClient("esp32", "mqtt.example.com")
client.connect()
while True:
moisture = adc.read() # 0-4095
moisture_percent = round((1 - moisture / 4095) * 100, 1) # инвертируем
rain = rain_sensor.value()
client.publish(b"sensor/moisture", str(moisture_percent).encode())
client.publish(b"sensor/rain", str(rain).encode())
time.sleep(600) # каждые 10 минут
Альтернативный способ: Hardware Bridge (COM-порт)
Если ESP32 подключён к ПК через USB, можно использовать Hardware Bridge. Пользователь запускает bridge.py на своём компьютере:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=115200
Затем в чате ASI Biont даёт команду:
industrial_command(protocol='serial://', command='read', port='COM3', baud=115200)
AI-агент читает данные с датчика через COM-порт и анализирует их.
Почему это выгодно?
- Экономия воды до 40% — полив включается только когда действительно нужно, а не по таймеру;
- Снижение ручного контроля на 90% — AI-агент сам принимает решения и уведомляет только об аномалиях;
- Молниеносная интеграция — не нужно писать код вручную, AI пишет его за секунды по вашему описанию;
- Гибкость — ASI Biont подключается к любому устройству через
execute_python: вы описываете, к чему подключиться и какие параметры (IP, порт, API-ключ), и AI сам генерирует код на Python с использованием pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio. Всё подключение происходит через диалог в чате, никаких панелей управления и кнопок «добавить устройство» не требуется.
Реальные сценарии
| Сценарий | Описание | Результат |
|---|---|---|
| Умный полив в теплице | ASI Biont управляет клапанами капельного полива на основе данных с датчика влажности и прогноза погоды (через HTTP API метеосервиса) | Снижение расхода воды на 35%, повышение урожайности на 15% |
| Оповещение о засухе | При критически низкой влажности AI отправляет уведомление в Telegram и Slack | Время реакции сокращается с часов до минут |
| Интеграция с метеоданными | AI анализирует прогноз осадков и корректирует график полива, отключая его перед дождём | Экономия до 50% воды в дождливый сезон |
Заключение
Интеграция Rain / Soil Moisture Sensor с AI-агентом ASI Biont открывает возможности для создания truly intelligent систем полива. Вам не нужно быть программистом или инженером — просто опишите задачу в чате, и AI-агент сам подключится к вашему ESP32 через MQTT, Hardware Bridge или другой протокол, напишет код и начнёт управлять поливом. Попробуйте интеграцию на asibiont.com и убедитесь, что умный полив — это просто.
Комментарии