Введение
Микроконтроллер ESP32 стал де-факто стандартом для DIY-проектов, умного дома и промышленного IoT. Его низкая стоимость (около $5), встроенный Wi-Fi/Bluetooth и поддержка различных протоколов сделали его незаменимым для прототипирования. Однако управление ESP32 в реальных сценариях часто требует написания сложного кода, настройки MQTT-брокеров, интеграции с облачными сервисами и автоматизации. AI-агент ASI Biont решает эту задачу: он подключается к ESP32 через MQTT или WebSocket, анализирует данные с датчиков, принимает решения и управляет исполнительными устройствами — всё через простой диалог в чате без написания кода вручную.
В этой статье мы на примере сборки ESP32 + DHT22 + реле покажем, как настроить интеграцию, написать автоматизацию и управлять умным домом голосом или по расписанию.
Почему ESP32?
Согласно отчёту IoT Analytics за 2025 год, ESP32 занимает более 35% рынка микроконтроллеров для IoT-проектов благодаря:
- Двум ядрам Tensilica LX6 (240 МГц)
- 4 MB Flash и 520 KB SRAM
- Встроенному Wi-Fi 802.11 b/g/n и Bluetooth 4.2/5.0
- Поддержке MQTT, HTTP, WebSocket, CoAP
- Низкому энергопотреблению (глубокий сон ~5 мкА)
Для интеграции с AI-агентом ESP32 подходит как целевое устройство: он может отправлять показания датчиков, принимать команды и выполнять их локально.
Как ASI Biont подключается к ESP32?
ASI Biont поддерживает несколько способов подключения, но для ESP32 наиболее эффективны:
| Способ | Протокол | Когда использовать |
|---|---|---|
| MQTT (paho-mqtt) | TCP/IP | Удалённое управление, облачный брокер, масштабирование |
| WebSocket (aiohttp) | TCP/IP | Низкая задержка, двусторонняя связь |
| COM-порт (Hardware Bridge) | Serial | Отладка, локальное управление через USB |
| SSH (paramiko) | TCP/IP | Управление через ESP32-сервер (ESP32 как веб-сервер) |
В нашем сценарии используем MQTT — он де-факто стандарт для IoT, поддерживается ESP32 из коробки и позволяет ASI Biont подписываться на топики датчиков и публиковать команды реле.
Сценарий: умный термостат с AI-аналитикой
Проблема: Офисное помещение (50 м²) имеет нестабильную температуру из-за старой системы отопления. Сотрудники жалуются на духоту или холод, но регулировать вручную некому.
Решение: Собираем ESP32 с датчиком DHT22 (температура/влажность) и реле, которое управляет электрообогревателем. Подключаем ESP32 к MQTT-брокеру (например, Mosquitto на Raspberry Pi). ASI Biont подписывается на топик с данными датчика, анализирует тренды, и при выходе за границы (18°C–24°C) публикует команду включения/выключения реле.
Шаг 1. Прошивка ESP32
Устанавливаем PlatformIO или Arduino IDE. Загружаем скетч, который:
- Читает DHT22 каждые 10 секунд
- Публикует данные в топик office/temperature и office/humidity
- Подписывается на топик office/heater для управления реле
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
#define RELAYPIN 5
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_server = "192.168.1.100"; // IP брокера
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(RELAYPIN, OUTPUT);
digitalWrite(RELAYPIN, LOW);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
dht.begin();
}
void callback(char* topic, byte* payload, unsigned int length) {
String message = "";
for (int i = 0; i < length; i++) message += (char)payload[i];
if (String(topic) == "office/heater") {
digitalWrite(RELAYPIN, message == "ON" ? HIGH : LOW);
}
}
void loop() {
if (!client.connected()) {
client.connect("ESP32_Office");
client.subscribe("office/heater");
}
client.loop();
float t = dht.readTemperature();
float h = dht.readHumidity();
if (!isnan(t) && !isnan(h)) {
client.publish("office/temperature", String(t).c_str());
client.publish("office/humidity", String(h).c_str());
}
delay(10000);
}
Шаг 2. Подключение ASI Biont к MQTT
Пользователь в чате ASI Biont пишет:
«Подключись к MQTT-брокеру по адресу 192.168.1.100, порт 1883. Подпишись на топик office/temperature. Если температура выходит за пределы 18–24°C, опубликуй в топик office/heater команду ON или OFF. Также отправляй уведомление в Telegram каждые 30 минут с текущими показаниями.»
AI-агент генерирует Python-скрипт, который выполняется в sandbox-окружении ASI Biont:
import paho.mqtt.client as mqtt
import requests
import time
BROKER = "192.168.1.100"
PORT = 1883
TOPIC_TEMP = "office/temperature"
TOPIC_HEATER = "office/heater"
TELEGRAM_TOKEN = "your_token"
CHAT_ID = "your_chat_id"
def on_message(client, userdata, msg):
temp = float(msg.payload.decode())
if temp < 18:
client.publish(TOPIC_HEATER, "ON")
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"Температура {temp}°C — включаю обогрев"})
elif temp > 24:
client.publish(TOPIC_HEATER, "OFF")
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"Температура {temp}°C — выключаю обогрев"})
mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect(BROKER, PORT, 60)
mqtt_client.subscribe(TOPIC_TEMP)
mqtt_client.loop_start()
# Ждём 30 минут и отправляем сводку (для примера — 10 итераций по 3 секунды)
for _ in range(10):
time.sleep(3)
Этот код выполняется в sandbox (таймаут 30 секунд), поэтому для длительной работы нужно настроить периодическое выполнение через industrial_command с помощью schedule или использовать встроенный планировщик ASI Biont.
Шаг 3. Автоматизация и голосовое управление
ASI Biont поддерживает AI-конструктор сценариев без программирования. Например, можно создать правило:
- Триггер: Новое сообщение в топике
office/temperatureсо значением > 24°C - Действие: Опубликовать
OFFвoffice/heaterи отправить Telegram-уведомление
Также через WebSocket можно реализовать голосовое управление: произнести «Включи обогрев в офисе» — AI-агент распознаёт команду и публикует ON в соответствующий топик.
Почему это выгодно?
Экономия времени: Вместо написания интеграционного кода (MQTT-клиент, парсинг, логика, уведомления) пользователь просто описывает задачу на естественном языке. AI-агент генерирует и выполняет код за секунды.
Гибкость: Поддерживаются любые протоколы (MQTT, Modbus, OPC-UA, HTTP, WebSocket) и любые устройства — не нужно ждать обновления прошивки или выхода нового драйвера.
Масштабирование: Можно управлять сотнями ESP32-устройств из одного чата, создавать сложные цепочки автоматизации (например, если температура в офисе > 25°C и влажность < 30%, включить увлажнитель и отправить отчёт в Google Sheets).
Пример другого сценария: ESP32-CAM + компьютерное зрение
ESP32-CAM — камера на базе ESP32. ASI Biont подключается к ней через HTTP-сервер (ESP32-CAM запускает веб-сервер с MJPEG-потоком). AI-агент использует aiohttp для получения кадров, запускает модель компьютерного зрения (например, YOLOv8 через torch или onnxruntime) и детектирует объекты.
Пример запроса в чате:
«Подключись к ESP32-CAM по адресу 192.168.1.101, порт 80. Получай кадры каждые 5 секунд и проверяй, есть ли на них человек. Если человек обнаружен, отправь фото в Telegram и включи реле на GPIO 2.»
AI-агент генерирует код с aiohttp, opencv-python-headless и torch — всё выполняется в sandbox.
Заключение
Интеграция ESP32 с AI-агентом ASI Biont открывает безграничные возможности для автоматизации: от простого термостата до сложных систем видеоаналитики. Вам не нужно писать интеграционный код — достаточно описать задачу в чате, и AI-агент сам подключится к устройству, соберёт данные и реализует логику.
Попробуйте прямо сейчас: заходите на asibiont.com, подключайте ваш ESP32 и управляйте умным домом с помощью AI.
Комментарии