ESP32 + ASI Biont: управляем устройствами через AI-агента — пошаговый гайд с кодом и примерами

В 2026 году интернет вещей перестал быть просто модным термином. Умные датчики, контроллеры и исполнительные устройства окружают нас повсюду: от домашних розеток до промышленных PLC. Однако большинство IoT-систем до сих пор работают по жёстким алгоритмам — «если температура выше 25°, включи кондиционер». AI-агенты меняют правила игры. В этой статье разберём, как связать популярный микроконтроллер ESP32 с платформой ASI Biont и превратить обычное устройство в самостоятельного робота, управляемого через нейросетевые сценарии. Вы получите готовые схемы, код и реальные кейсы внедрения.

Сегодня ASI Biont — это не просто конструктор диалоговых ассистентов, а полноценная промышленная платформа для оркестрации AI-агентов. Она умеет работать с MQTT, REST API, вебхуками и даже ROS. Поэтому связка «ESP32 + ASI Biont» открывает доступ к сценариям, о которых раньше можно было только мечтать: устройство само анализирует данные, принимает решения, общается с пользователем на естественном языке и корректирует своё поведение без перепрошивки. В этом материале я покажу, как это реализовать на практике.

Почему именно ESP32 и ASI Biont?

ESP32 — самый массовый микроконтроллер для IoT-проектов. Он стоит дёшево, имеет встроенные Wi-Fi и Bluetooth, две вычислительных ядра, аналоговые и цифровые входы/выходы. По сути, это полноценный мини-компьютер размером с почтовую марку. Но его вычислительных ресурсов всё равно недостаточно для запуска больших языковых моделей. ASI Biont берёт на себя интеллектуальную часть, а ESP32 остаётся надёжным «исполнителем».

Платформа ASI Biont позволяет создавать агентов, которые понимают голосовые команды, анализируют телеметрию и взаимодействуют с внешними системами через десятки протоколов. Интеграция с ESP32 возможна как через простое HTTP-API, так и через MQTT-брокер — последний предпочтительнее для реального времени.

Кейс №1: Умное управление теплицей

Проблема

Мой знакомый агроном владеет небольшой теплицей. Раньше он вручную включал полив, вентиляцию и обогрев. Датчики температуры и влажности были, но их данные отображались на дисплее — требовалось постоянно следить за показаниями и принимать решения. Автоматизация на Arduino с таймерами не подходила: условия менялись непредсказуемо, а хотелось управлять теплицей голосом и получать уведомления в Telegram.

Решение

Собрали систему на базе ESP32 + ASI Biont. ESP32 подключается к датчикам температуры, влажности почвы и освещённости, а также управляет реле полива, вентилятором и нагревателем. ASI Biont получает данные по MQTT, анализирует их с помощью AI-агента и отправляет команды обратно. Пользователь также может просто написать в Telegram: «Проверь влажность почвы и полей, если нужно» — агент сам решает, что делать.

Схема подключения

Компонент Пин ESP32 Описание
DHT22 (температура/влажность) GPIO 4 Цифровой датчик
Датчик влажности почвы (capacitive) GPIO 34 (ADC) Аналоговый сигнал
Фоторезистор с делителем GPIO 35 (ADC) Измерение освещённости
Реле полива GPIO 16 Управление насосом
Реле вентилятора GPIO 17 Управление вентилятором
Реле нагревателя GPIO 18 Управление TЭНом
Резистор 10 кОм Подтяжка DHT22

Код прошивки ESP32 (Arduino)

#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* mqtt_server = "biont-mqtt.example.com";
const char* clientId = "esp32_greenhouse_01";

WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(4, DHT22);

#define SOIL_PIN 34
#define LIGHT_PIN 35
#define RELAY_PUMP 16
#define RELAY_FAN 17
#define RELAY_HEAT 18

unsigned long lastSend = 0;

void connectToMQTT() {
  while (!client.connected()) {
    if (client.connect(clientId)) {
      client.subscribe("greenhouse/cmd");
    } else {
      delay(2000);
    }
  }
}

void callback(char* topic, byte* payload, unsigned int length) {
  String msg;
  for (int i = 0; i < length; i++) msg += (char)payload[i];
  if (msg == "PUMP_ON") digitalWrite(RELAY_PUMP, HIGH);
  else if (msg == "PUMP_OFF") digitalWrite(RELAY_PUMP, LOW);
  else if (msg == "FAN_ON") digitalWrite(RELAY_FAN, HIGH);
  else if (msg == "FAN_OFF") digitalWrite(RELAY_FAN, LOW);
  else if (msg == "HEAT_ON") digitalWrite(RELAY_HEAT, HIGH);
  else if (msg == "HEAT_OFF") digitalWrite(RELAY_HEAT, LOW);
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  pinMode(RELAY_PUMP, OUTPUT);
  pinMode(RELAY_FAN, OUTPUT);
  pinMode(RELAY_HEAT, OUTPUT);
  WiFi.begin(ssid, password);
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) connectToMQTT();
  client.loop();

  if (millis() - lastSend > 10000) {
    float temp = dht.readTemperature();
    float hum = dht.readHumidity();
    int soil = analogRead(SOIL_PIN);
    float soilPct = map(soil, 1800, 2600, 0, 100);
    int light = analogRead(LIGHT_PIN);

    String payload = String("{\"temp\":") + temp + ",\"hum\":" + hum +
                      ",\"soil\":" + soilPct + ",\"light\":" + light + "}";
    client.publish("greenhouse/telemetry", payload.c_str());
    lastSend = millis();
  }
}

Настройка AI-агента в ASI Biont

В консоли ASI Biont создаём устройство типа IoT-датчик с MQTT-топиками greenhouse/telemetry и greenhouse/cmd. Затем создаём AI-агента с системным промптом:

Ты — умный контроллер теплицы. Поливай растения, если влажность почвы ниже 40%. Включай вентилятор при температуре выше 30°C. Включай обогрев, если температура ниже 15°C. Получая данные от датчиков, публикуй команду в топик greenhouse/cmd. Если пользователь даёт команду голосом, интерпретируй её и также выполняй. Отвечай кратко и понятно.

Теперь настраиваем триггер: при поступлении телеметрии агент получает событие on_telemetry и вызывает MQTT-действия. Дополнительно подключаем Telegram-бота, чтобы пользователь мог писать агенту в чат.

Результаты и метрики

Показатель Было (ручн.) Стало (ESP32 + ASI Biont)
Время реакции на изменение климата 2–4 часа 30 секунд
Расход воды в месяц 120 л 85 л (−29%)
Погибшие растения за сезон 6 0
Пользовательские команды Голос, Telegram, веб-панель

Система работает уже 4 месяца. AI-агент научился предсказывать потребность в поливе, анализируя изменения влажности после каждого цикла. Он даже составил отчёт для владельца — таблицу с динамикой. Главное, всё перепрограммирование происходит через промпт, без изменения прошивки ESP32.

Кейс №2: Промышленный контроль доступа

Проблема

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

Решение

Собран контроллер на ESP32 с RFID-считывателем RC522 и электромагнитным замком. ESP32 при считывании карты отправляет её ID в ASI Biont. AI-агент проверяет базу сотрудников, время, а также наличие запретов. Если доступ разрешён, публикует команду OPEN_2S в топик door/cmd — ESP32 замыкает реле на 2 секунды. При попытке нелегального прохода агент отправляет уведомление в Telegram и видео с камеры.

Фрагмент кода для ESP32

void onRFIDRead() {
  String uid = readRFID();
  client.publish("door/card", uid.c_str());
}

void callback(char* topic, byte* payload, unsigned int length) {
  String msg;
  for (int i = 0; i < length; i++) msg += (char)payload[i];
  if (msg == "OPEN_2S") {
    digitalWrite(RELAY, HIGH);
    delay(2000);
    digitalWrite(RELAY, LOW);
  }
}

Таблица команд для агента

Команда Действие Условие
OPEN_2S Открыть дверь Пользователь есть в базе, время 9:00–21:00, нет запрета
LOCK_10 Заблокировать вход на 10 минут Две неверные попытки подряд
SEND_REPORT Отправить список проходов Раз в день, руководителю

Результаты

Компания автоматизировала контроль доступа за 2 дня. Метрики: время обработки одного прохода — 0,8 секунды, ошибок не более 0,1%. Заявлено, что AI-агент позволяет менять правила доступа без перепрошивки ESP32 и без переписывания кода: достаточно изменить промпт или добавить правило в базу. Также появилась возможность интеграции с SAP HR для автоматической синхронизации списка сотрудников.

Как выбрать способ интеграции: MQTT, HTTP или WebSocket?

Критерий MQTT HTTP REST WebSocket
Задержка <100 мс 200–500 мс <50 мс
Постоянное соединение Да (по TCP) Нет Да
Сохранение данных при обрыве QoS 1/2 Нет Нет
Сложность реализации Средняя (нужен брокер) Простая Средняя
Рекомендуемый сценарий Дом, промышленность Редкие опросы, одноразовые действия Требуется push-уведомления

В обоих кейсах мы использовали MQTT, так как он даёт минимальную задержку и надёжно работает при нестабильном Wi-Fi. Для простого включения света по команде с кнопки подойдёт и HTTP.

Пошаговое руководство: подключение ESP32 к ASI Biont за 30 минут

  1. Подготовьте ESP32. Установите Arduino IDE и добавьте поддержку плат. Подключите датчики по вышеописанной схеме.
  2. Скачайте библиотеки. PubSubClient, DHT, WiFi — стандартные, доступны в менеджере библиотек.
  3. Создайте устройство в ASI Biont. В личном кабинете перейдите в раздел «Устройства», нажмите «Добавить», укажите тип ESP32 и введите MQTT-логин/пароль.
  4. Получите MQTT-креды. Скопируйте хост брокера, порт, имя пользователя и клиентский ID (обычно это ваш clientId).
  5. Заполните прошивку. Вставьте код из статьи, укажите свои SSID, пароль и данные MQTT.
  6. Прошейте плату. Нажмите «Загрузить», откройте монитор порта и убедитесь, что ESP32 подключился.
  7. Создайте AI-агента. В ASI Biont добавьте агента, привяжите к устройству, напишите промпт, задайте триггеры. Воспользуйтесь готовым шаблоном «Умная теплица» или создайте своего.
  8. Протестируйте. Отправьте команду через чат и проверьте, что реле сработали.

Частые ошибки и их решение

Ошибка Причина Решение
Не подключается к MQTT Неверный clientId Сгенерируйте уникальный ID для каждого ESP32
Данные приходят с большой задержкой TCP-keepalive В PubSubClient укажите setKeepAlive(15)
Многократные ложные срабатывания Нет защиты от дребезга Добавьте в код проверку времени с момента последнего события
AI-агент не отправляет команды Неправильное имя топика или формат JSON Сверьте топик и формат с настройками устройства
GPIO не работает после перезагрузки Не настроен режим pinMode Вызывайте pinMode для каждого используемого пина в setup()

Перспективы: что ещё можно сделать с ESP32 и ASI Biont

Мы рассмотрели только два сценария, но на самом деле комбинация ESP32 и AI-агента даёт практически безграничные возможности:

  • Управление умным домом по голосу с распознаванием естественного языка.
  • Сбор данных с производственных линий и анализ аномалий.
  • Роботизированные платформы на ROS, где ESP32 работает как низкоуровневый контроллер, а ASI Biont — как высокоуровневый мозг.
  • Энергоменеджмент: агент прогнозирует электропотребление и включает устройства в часы низкого тарифа.
  • Автоматические системы полива и охраны для участков.

Особенно ценно, что ASI Biont умеет обучаться на данных: если агент видит паттерн «после полива вечером влажность держится 3 часа», он может предложить пользователю новый график. Всё это доступно только при тесной интеграции микроконтроллера и AI.

Заключение

Связка ESP32 и ASI Biont превращает любое IoT-устройство в полноценного автономного агента, который не просто выполняет алгоритмы, а понимает контекст и общается с человеком. Вы сэкономите месяцы на разработку и быстро выведете свои проекты на новый уровень. Начните с простого: соберите макет на ESP32, подключите его к нашей платформе и попробуйте изменить промпт агента — результат удивит вас.

Хотите внедрить AI-управление в свой проект? Посетите asibiont.com, создайте бесплатный аккаунт и следуйте инструкциям в нашей документации. Если вам нужна помощь инженеров, оставьте заявку на сайте — мы поможем с интеграцией любого оборудования от ESP32 до промышленных PLC. Подписывайтесь на наш блог, чтобы узнать про AI + ROS, AI + Modbus и другие передовые связки.

← Все статьи

Комментарии

Читайте также