ESP32 и ASI Biont: как подключить микроконтроллер к AI-агенту через MQTT и автоматизировать умный дом за минуты

ESP32 и ASI Biont: как подключить микроконтроллер к AI-агенту через MQTT и автоматизировать умный дом за минуты

Введение

ESP32 — это, пожалуй, самый популярный микроконтроллер с Wi-Fi и Bluetooth в IoT-сфере. Он стоит около $5, потребляет единицы миллиампер, но при этом способен работать с датчиками, реле, камерами и даже выполнять простые модели машинного обучения на борту (TinyML). Но настоящая сила ESP32 раскрывается, когда его данные начинают анализироваться не в локальном скетче, а передаваться в AI-агента — например, в ASI Biont.

ASI Biont — это AI-агент, который подключается к любому устройству через чат. Вы просто описываете задачу: «Подключись к моему ESP32 по MQTT, читай температуру с DHT22 и включай реле, если температура выше 30°C». AI сам пишет код, выполняет его и начинает управлять оборудованием. В этой статье мы разберём, как именно работает такая интеграция, и покажем конкретный сценарий с кодом.

Почему MQTT — лучший протокол для ESP32 + ASI Biont

ESP32 поддерживает несколько способов связи: HTTP, WebSocket, MQTT, CoAP, а также прямое подключение через COM-порт. Для удалённого управления с AI-агентом, который работает в облаке, MQTT — оптимальный вариант. Вот почему:

Протокол Плюсы Минусы Применимость для ESP32 + AI
MQTT Легковесный (2 байта заголовка), асинхронный, pub/sub, QoS, TLS Требуется брокер (Mosquitto, HiveMQ) Идеален: AI подписывается на топики ESP32 и публикует команды
HTTP/REST Простой, не требует постоянного соединения Оверхед, pull-запросы, задержки Подходит для редких команд, но не для real-time
CoAP UDP-based, ещё легче MQTT Меньше библиотек, не везде поддерживается Хорош для сверхнизкого энергопотребления
COM-порт (USB/UART) Прямое соединение, низкая задержка Физический кабель, не удалённо Через Hardware Bridge, если ESP32 подключён к ПК
WebSocket Двусторонняя связь, real-time Держит соединение открытым, больше трафика Для камер и потоковых данных

В нашем сценарии используем MQTT. ASI Biont подключается к MQTT-брокеру (например, Mosquitto, запущенному на Raspberry Pi или в облаке) через библиотеку paho-mqtt. AI пишет Python-скрипт, который работает в sandbox-окружении ASI Biont (на сервере Railway). Этот скрипт подписывается на топик, куда ESP32 публикует данные (например, esp32/temperature), и публикует команды в топик esp32/relay.

Сценарий: умный термостат с ESP32 и DHT22

Проблема

У вас есть ESP32 с датчиком DHT22 (температура + влажность) и реле, управляющее обогревателем. Вы хотите, чтобы система автоматически включала обогреватель, когда температура падает ниже 18°C, и выключала при достижении 22°C. Дополнительно — получать уведомления в Telegram при аномалиях (например, влажность > 80% — признак протечки).

Решение с ASI Biont

Вам не нужно писать ни строчки кода для серверной части. Достаточно:

  1. Настроить ESP32 на отправку данных по MQTT.
  2. В чате ASI Biont дать команду: «Подключись к MQTT-брокеру mqtt://192.168.1.100:1883, подпишись на esp32/temperature, читай JSON с полями temp, humidity, управляй реле через esp32/relay, отправляй уведомления в Telegram через бота @my_bot с токеном 123:ABC». AI сам сгенерирует и выполнит Python-скрипт.

Код для ESP32 (MicroPython)

Сначала прошивка на ESP32. Используем MicroPython с библиотекой umqtt.simple:

import network
import time
import dht
from machine import Pin
import ujson
from umqtt.simple import MQTTClient

# Настройки Wi-Fi
WIFI_SSID = "MyWiFi"
WIFI_PASS = "password"

# Настройки MQTT
MQTT_BROKER = "192.168.1.100"
MQTT_PORT = 1883
CLIENT_ID = "esp32_01"
TOPIC_PUB = "esp32/temperature"
TOPIC_SUB = "esp32/relay"

# Датчик и реле
dht22 = dht.DHT22(Pin(4))
relay = Pin(5, Pin.OUT)

# Подключение к Wi-Fi
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
while not wifi.isconnected():
    time.sleep(1)

# MQTT callback для получения команд
def mqtt_callback(topic, msg):
    data = ujson.loads(msg)
    if "relay" in data:
        relay.value(data["relay"])
        print("Реле установлено:", data["relay"])

client = MQTTClient(CLIENT_ID, MQTT_BROKER, port=MQTT_PORT)
client.set_callback(mqtt_callback)
client.connect()
client.subscribe(TOPIC_SUB)

# Основной цикл
while True:
    try:
        dht22.measure()
        temp = dht22.temperature()
        hum = dht22.humidity()
        payload = ujson.dumps({"temp": temp, "hum": hum, "id": CLIENT_ID})
        client.publish(TOPIC_PUB, payload)
        print("Отправлено:", payload)
        client.check_msg()  # проверка входящих команд
        time.sleep(10)
    except OSError as e:
        print("Ошибка датчика:", e)
        time.sleep(2)

Этот код публикует JSON с температурой и влажностью каждые 10 секунд и слушает команды на включение/выключение реле.

Код для ASI Biont (Python-скрипт, который AI генерирует и выполняет)

Теперь ASI Biont создаёт и запускает скрипт в sandbox-окружении:

import paho.mqtt.client as mqtt
import requests
import json

# Параметры
BROKER = "192.168.1.100"
PORT = 1883
TOPIC_TEMP = "esp32/temperature"
TOPIC_RELAY = "esp32/relay"
TELEGRAM_BOT_TOKEN = "123:ABC"
TELEGRAM_CHAT_ID = "123456"

# Пороги
TEMP_MIN = 18.0
TEMP_MAX = 22.0
HUM_MAX = 80.0

relay_state = 0  # 0 - выкл, 1 - вкл

def on_connect(client, userdata, flags, rc):
    print("Подключен к MQTT брокеру")
    client.subscribe(TOPIC_TEMP)

def on_message(client, userdata, msg):
    global relay_state
    try:
        data = json.loads(msg.payload)
        temp = data["temp"]
        hum = data["hum"]
        print(f"Получено: temp={temp}, hum={hum}")

        # Логика термостата
        if temp < TEMP_MIN and relay_state == 0:
            client.publish(TOPIC_RELAY, json.dumps({"relay": 1}))
            relay_state = 1
            print("Включаю реле")
        elif temp >= TEMP_MAX and relay_state == 1:
            client.publish(TOPIC_RELAY, json.dumps({"relay": 0}))
            relay_state = 0
            print("Выключаю реле")

        # Уведомление о высокой влажности
        if hum > HUM_MAX:
            msg_text = f"Тревога: влажность {hum}% превышает порог {HUM_MAX}%"
            requests.post(
                f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
                json={"chat_id": TELEGRAM_CHAT_ID, "text": msg_text}
            )
            print("Уведомление отправлено в Telegram")

    except Exception as e:
        print("Ошибка обработки:", e)

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)

# Бесконечный цикл не запускаем - sandbox может иметь таймаут.
# Вместо этого используем loop_start() для асинхронной работы.
client.loop_start()

# Держим скрипт активным 30 секунд (максимум для sandbox)
import time
time.sleep(30)
client.loop_stop()
print("Скрипт завершён")

Этот скрипт:
- Подключается к MQTT-брокеру.
- Получает данные с ESP32.
- Принимает решение включить/выключить реле на основе температуры.
- Отправляет уведомление в Telegram при превышении влажности.

Как это работает в чате ASI Biont

Пользователь пишет в чат:

«Подключись к MQTT-брокеру по адресу 192.168.1.100:1883. Подпишись на топик esp32/temperature, где ESP32 публикует JSON с полями temp и humidity. Если температура ниже 18°C — публикуй в топик esp32/relay команду включения реле: {"relay": 1}. Если выше 22°C — выключай: {"relay": 0}. Если влажность > 80% — отправь мне сообщение в Telegram через бота с токеном 123:ABC в чат 123456.»

AI-агент ASI Biont:
1. Распознаёт намерение (подключиться к MQTT, анализировать данные, управлять реле, уведомлять).
2. Генерирует Python-скрипт с paho-mqtt и requests (как показано выше).
3. Выполняет его в sandbox-окружении.
4. Сообщает пользователю: «Скрипт запущен. В течение 30 секунд он будет обрабатывать данные. Если нужно продлить — скажите „продолжить“ или настройте постоянное выполнение через планировщик.»

Всё это занимает меньше минуты. Никакого ручного кодирования бэкенда, настройки демонов или написания API.

Другие способы подключения ESP32 к ASI Biont

Помимо MQTT, ESP32 можно подключить и другими способами из арсенала ASI Biont:

1. Через Hardware Bridge (COM-порт)

Если ESP32 подключён к компьютеру по USB (например, для отладки), пользователь запускает bridge.py на своём ПК. Bridge подключается к ASI Biont через WebSocket (единственный канал связи). AI отправляет команды через industrial_command(protocol='serial', command='serial_write_and_read', data='...'). Bridge записывает данные в COM-порт (например, COM3, 115200 бод) и читает ответ. Это удобно для прототипирования, когда ESP32 ещё не имеет Wi-Fi.

Пример команды в чате:

«Подключись к моему ESP32 через Hardware Bridge, порт COM3, скорость 115200. Отправь команду LED_ON и прочитай ответ.»

AI выполнит industrial_command(protocol='serial', command='serial_write_and_read', data='4c45445f4f4e0a') (HEX для "LED_ON\n").

2. Через HTTP API (если ESP32 запустил веб-сервер)

ESP32 может выступать как HTTP-сервер. ASI Biont подключается через execute_python с использованием requests или aiohttp. Скрипт отправляет GET/POST на IP ESP32 (например, http://192.168.1.101/relay?state=1).

3. Через WebSocket (для real-time данных)

Если ESP32 использует WebSocket-сервер (библиотека websockets в MicroPython), ASI Biont подключается через websockets библиотеку в sandbox и может получать потоковые данные (например, показания с акселерометра).

Сравнение способов

Способ Задержка Удалённость Сложность настройки Лучший сценарий
MQTT Низкая Да Средняя (нужен брокер) Умный дом, датчики, реле
Hardware Bridge Минимальная Нет (локальный ПК) Низкая (скачать bridge.py) Отладка, прототипирование
HTTP API Средняя Да Низкая (ESP32 как сервер) Одиночные команды
WebSocket Низкая Да Средняя Потоковые данные, камера

Почему это выгодно?

Традиционный подход к интеграции ESP32 с AI требует:
- Написать серверное приложение (Node.js, Python, Go) для приёма данных.
- Настроить базу данных для хранения показаний.
- Реализовать логику управления (пороги, таймеры).
- Подключить Telegram-бота или другой канал уведомлений.
- Развернуть всё это на VPS или Raspberry Pi.

Это дни или недели работы. С ASI Biont — минуты. AI-агент сам пишет код, выполняет его в облаке и управляет устройством. Всё, что нужно от пользователя — описать задачу на естественном языке и указать параметры подключения (IP, порт, токен).

Кроме того, ASI Biont подключается к ЛЮБОМУ устройству через execute_python — AI сам пишет код интеграции под каждое устройство. Не нужно ждать, пока разработчики добавят поддержку — подключай что угодно прямо сейчас. Пользователь просто описывает в чате, к какому устройству подключиться и какие параметры (порт, IP, baud rate, API-ключ), и AI сам пишет код на Python с использованием pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio. Всё подключение происходит через диалог в чате, никаких панелей управления и кнопок «добавить устройство» не требуется.

Заключение

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

Попробуйте прямо сейчас: подключите ваш ESP32 к ASI Biont на asibiont.com и управляйте железом силой мысли (ну, почти).

← Все статьи

Комментарии

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

Точи меч, забудь про скачивания: ‘Onimusha: Way of the Sword’ выходит на GeForce NOW

16 июля 2026

15 промтов для RAG-систем: индексация, поиск и генерация с примерами кода

16 июля 2026

ИИ встречает Bybit: как ASI Biont автоматизирует криптотрейдинг в 2026 году

16 июля 2026

SOC 2 Type II — Lead Auditor: Как SaaS-компании проходят аудит за 3 месяца и растут на 40%

16 июля 2026

Мастерство управления продуктами и роста: как обучение с ИИ трансформирует вашу карьеру в 2026 году

16 июля 2026

RAG-системы с нуля: как построить production-пайплайн и заработать на AI-поиске в 2026 году

16 июля 2026

Команда сопротивляется внедрению AI? Скорее всего у вас проблема в системе — и вот как ее диагностировать

16 июля 2026

Я создал приложение для хакатона за $3000 с помощью Vibe Coding. Результат был ужасен 🫠

16 июля 2026

CKA + CKAD — Kubernetes Administrator & Developer: Как подготовиться к сертификации CNCF в 2026 году с AI-тьютором Asibiont

16 июля 2026