Введение
Датчик дождя и влажности почвы — это комбинированное устройство, которое позволяет в реальном времени отслеживать уровень осадков и влажность грунта. В сочетании с AI-агентом ASI Biont вы получаете не просто показания с сенсора, а полностью автоматизированную систему полива, которая экономит до 40% воды (данные исследования University of California Cooperative Extension, 2023) и предотвращает переувлажнение растений. В этой статье мы разберём, как подключить такой датчик к ESP32, настроить передачу данных по MQTT в ASI Biont и настроить триггеры для Telegram-уведомлений и автоматического управления реле.
Почему именно ASI Biont?
ASI Biont — это AI-агент, который подключается к любому устройству через диалог в чате. Вам не нужно писать код вручную — достаточно описать задачу, указать параметры подключения (IP, порт, baud rate, API-ключ), и AI сам сгенерирует и выполнит Python-скрипт. Для работы с ESP32 + датчиком мы используем MQTT — лёгкий протокол для IoT, который идеально подходит для передачи данных с микроконтроллера в облако.
Схема подключения датчика к ESP32
| Компонент | Пин ESP32 |
|---|---|
| Датчик влажности почвы (аналоговый выход) | GPIO34 (ADC) |
| Датчик дождя (аналоговый выход) | GPIO35 (ADC) |
| Реле управления насосом | GPIO32 |
| Питание датчиков | 3.3V / GND |
Подключите датчики согласно таблице. Обратите внимание: аналоговые пины ESP32 (ADC1) работают с напряжением 0–3.3V, поэтому, если датчик выдает 0–5V, используйте делитель напряжения.
Код для ESP32 (Arduino IDE / PlatformIO)
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASS";
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
const int soilPin = 34;
const int rainPin = 35;
const int relayPin = 32;
void setup() {
Serial.begin(115200);
pinMode(soilPin, INPUT);
pinMode(rainPin, INPUT);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
while (!client.connected()) {
if (client.connect("ESP32_Soil_Moisture")) {
client.subscribe("garden/relay");
}
}
}
void loop() {
if (!client.connected()) {
client.connect("ESP32_Soil_Moisture");
}
client.loop();
int soilValue = analogRead(soilPin);
int rainValue = analogRead(rainPin);
// Преобразуем в проценты (0-100%)
int soilPercent = map(soilValue, 0, 4095, 0, 100);
int rainPercent = map(rainValue, 0, 4095, 0, 100);
char payload[100];
snprintf(payload, 100, "{\"soil\":%d,\"rain\":%d}", soilPercent, rainPercent);
client.publish("garden/sensors", payload);
delay(30000); // Отправка каждые 30 секунд
}
void callback(char* topic, byte* message, unsigned int length) {
String msg;
for (int i = 0; i < length; i++) {
msg += (char)message[i];
}
if (msg == "ON") {
digitalWrite(relayPin, HIGH);
} else if (msg == "OFF") {
digitalWrite(relayPin, LOW);
}
}
Прошейте ESP32 этим скетчем. Убедитесь, что в последовательном мониторе отображаются значения с датчиков.
Подключение к ASI Biont через MQTT
Теперь, когда ESP32 публикует данные в топик garden/sensors, откройте чат с ASI Biont и напишите:
«Подключись к MQTT-брокеру broker.hivemq.com, подпишись на топик garden/sensors, парси JSON с полями soil и rain, и если влажность почвы ниже 30% (soil < 30) и дождь не идёт (rain < 10), то опубликуй в топик garden/relay команду ON. Если влажность выше 60% — опубликуй OFF. Также отправляй уведомления в Telegram при аномалиях: если rain > 80 — «Идёт сильный дождь», если soil < 20 — «Почва критически сухая!»»
AI-агент сгенерирует и выполнит Python-скрипт с использованием paho-mqtt и requests для Telegram. Вам останется только указать свой Telegram Bot Token и Chat ID.
Пример кода, который сгенерирует AI
import paho.mqtt.client as mqtt
import requests
import json
TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
requests.post(url, json=payload)
def on_message(client, userdata, msg):
data = json.loads(msg.payload.decode())
soil = data["soil"]
rain = data["rain"]
if soil < 30 and rain < 10:
client.publish("garden/relay", "ON")
send_telegram("Полив включён (почва сухая, дождя нет)")
elif soil > 60:
client.publish("garden/relay", "OFF")
send_telegram("Полив выключен (почва достаточно влажная)")
if rain > 80:
send_telegram("⚠️ Идёт сильный дождь! Полив отключён")
elif soil < 20:
send_telegram("🔴 Критическая сухость почвы!")
client = mqtt.Client()
client.connect("broker.hivemq.com", 1883, 60)
client.subscribe("garden/sensors")
client.on_message = on_message
client.loop_forever()
Этот скрипт выполняется в облаке ASI Biont (sandbox) и не использует бесконечные циклы с while True — loop_forever() контролируется таймаутом. Вы можете остановить его командой «Останови скрипт».
Реальные сценарии использования
- Автоматический полив по данным сенсора — AI включает насос только когда почва сухая и нет дождя.
- Уведомления в Telegram — вы получаете сообщения о состоянии почвы, сильном дожде или аварийной сухости.
- Интеграция с погодными API — AI может запрашивать прогноз погоды (например, OpenWeatherMap) и корректировать полив: если завтра обещают дождь, полив сегодня отключается.
- Логирование данных — все показания сохраняются в CSV или Google Sheets для анализа.
Почему это выгодно?
- Экономия воды — до 40% по сравнению с поливом по расписанию (данные UC Cooperative Extension).
- Никакого ручного кодирования — AI пишет интеграцию за секунды, вы только описываете логику.
- Гибкость — можно подключить любой датчик: температуры, влажности, уровня CO2, и настроить любые триггеры.
- Доступность — ASI Biont работает через чат: Telegram, веб-интерфейс или API.
Заключение
Датчик дождя и влажности почвы в связке с AI-агентом ASI Biont превращает обычный сад в умную экосистему, которая заботится о растениях и экономит ресурсы. Вам не нужно ждать, пока разработчики добавят поддержку вашего устройства — просто опишите задачу в чате, и AI сам напишет код. Попробуйте интеграцию прямо сейчас на asibiont.com и убедитесь, что будущее уже здесь.
Комментарии