Введение
MQTT — один из самых популярных протоколов для IoT. Mosquitto и EMQX используют для сбора данных с тысяч датчиков, управления умными домами и промышленными системами. Но что, если вы хотите не просто собирать телеметрию, а автоматически анализировать её в реальном времени, отправлять оповещения при аномалиях или управлять устройствами через Telegram? Для этого нужен AI-агент, который понимает данные и может действовать. ASI Biont подключается к любому MQTT-брокеру через paho-mqtt, пишет код интеграции сам и запускает его в облаке. Всё, что нужно — описать задачу в чате.
Как ASI Biont подключается к MQTT
ASI Biont использует execute_python — AI пишет Python-скрипт с библиотекой paho-mqtt, который выполняется в sandbox-окружении на сервере. Пользователь указывает адрес брокера, порт, логин и пароль (если требуется), топики для подписки и публикации. AI генерирует код, подключается к брокеру, подписывается на нужные топики, получает сообщения, анализирует их и при необходимости публикует команды обратно. Для быстрой проверки связи AI использует industrial_command с командой publish.
Почему именно execute_python?
- Не нужно устанавливать ничего на своём ПК — код выполняется в облаке.
- AI автоматически обрабатывает ошибки подключения, таймауты и переподключение.
- Можно комбинировать MQTT с другими протоколами (HTTP, Telegram, базы данных) в одном скрипте.
- Пользователь просто описывает задачу словами, AI пишет весь код.
Сценарий: ESP32 + DHT22 + Mosquitto + ASI Biont
Представьте: у вас есть ESP32 с датчиком температуры и влажности DHT22. Данные публикуются в топик home/temperature и home/humidity на локальном Mosquitto. Вы хотите, чтобы AI-агент:
- Подписался на эти топики.
- При каждом новом значении проверял, не вышла ли температура за пределы 18–30°C.
- Если температура выше 30°C — отправлял уведомление в Telegram и публиковал команду на включение вентилятора в топик home/fan.
Шаг 1. Настройка ESP32
ESP32 публикует данные через MQTT. Пример кода на Arduino:
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
const char* mqtt_server = "192.168.1.100";
const char* topic_temp = "home/temperature";
const char* topic_hum = "home/humidity";
WiFiClient espClient;
PubSubClient client(espClient);
DHT dht(4, DHT22);
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "password");
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
dht.begin();
}
void loop() {
if (!client.connected()) client.connect("ESP32Client");
client.loop();
float t = dht.readTemperature();
float h = dht.readHumidity();
if (!isnan(t) && !isnan(h)) {
client.publish(topic_temp, String(t).c_str());
client.publish(topic_hum, String(h).c_str());
}
delay(5000);
}
Шаг 2. Подключение ASI Biont к Mosquitto
Пользователь пишет в чате: «Подпишись на home/temperature и home/humidity на брокере mqtt://192.168.1.100:1883. Если температура > 30°C, отправь мне в Telegram сообщение и опубликуй "ON" в home/fan».
AI генерирует и выполняет следующий Python-скрипт:
import paho.mqtt.client as mqtt
import requests
import json
BROKER = "192.168.1.100"
PORT = 1883
TELEGRAM_TOKEN = "ваш_токен"
CHAT_ID = "ваш_chat_id"
def on_message(client, userdata, msg):
topic = msg.topic
value = float(msg.payload.decode())
if topic == "home/temperature" and value > 30.0:
# Отправка уведомления в Telegram
text = f"⚠️ Температура {value}°C превысила 30°C!"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": text})
# Публикация команды на включение вентилятора
client.publish("home/fan", "ON")
mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect(BROKER, PORT, 60)
mqtt_client.subscribe("home/temperature")
mqtt_client.subscribe("home/humidity")
mqtt_client.loop_forever()
Важно: код не содержит бесконечного цикла while True — loop_forever() корректно обрабатывается sandbox с таймаутом 30 секунд. Для долгоживущих подписок AI использует асинхронный подход с asyncio.
Шаг 3. Проверка и автоматизация
После выполнения скрипта AI сообщает: «Подключение установлено. При превышении 30°C вы получите уведомление и вентилятор включится». Можно сразу проверить, нагрев датчик феном или рукой.
Реальные подводные камни
- Таймаут sandbox: execute_python выполняется максимум 30 секунд. Для постоянного мониторинга AI использует циклические задачи или внешние триггеры (например, webhook от EMQX).
- Безопасность: пароли от брокера и Telegram передаются в скрипт — не используйте публичные брокеры без TLS.
- Формат данных: AI ожидает числовые значения в топиках. Если данные в JSON, нужно указать: «данные в формате {"temp": 25.5}».
Почему это выгодно
- Не нужно писать код вручную: AI генерирует рабочий скрипт за секунды.
- Мгновенная интеграция: не ждать обновлений от разработчиков платформы.
- Гибкость: можно менять логику одной фразой: «Добавь лог в Google Sheets» или «Отправляй данные в InfluxDB».
- Поддержка любых брокеров: Mosquitto, EMQX, HiveMQ, AWS IoT Core — AI подключается к любому MQTT 3.1.1/5.0.
Другие сценарии с MQTT
- EMQX + промышленные датчики: AI подписывается на топики с вибрацией и температурой оборудования, анализирует тренды и предсказывает отказы.
- Умный дом + Mosquitto: AI управляет освещением, климатом и жалюзи по голосовым командам через Telegram.
- AWS IoT Core: AI подключается к облачному брокеру, собирает данные с тысяч устройств и визуализирует в Grafana.
Заключение
Интеграция MQTT с ASI Biont — это простой способ добавить AI-аналитику в вашу IoT-систему без программирования. Опишите задачу в чате, и AI сам подключится к любому брокеру, подпишется на топики, будет анализировать телеметрию и управлять устройствами. Попробуйте прямо сейчас на asibiont.com — создайте AI-агента и подключите свой первый MQTT-брокер за 5 минут.
Комментарии