Введение
Представьте, что ваши уличные датчики CO₂, температуры и освещённости не просто собирают данные, а сами принимают решения: включают вентиляцию в подземном переходе, регулируют яркость фонарей или отправляют экстренное уведомление в диспетчерскую при превышении уровня загрязнения. Это не футуристика — это реальность интеграции Smart City sensors с AI-агентом ASI Biont. ASI Biont подключается к любому IoT-устройству через диалог в чате: вы описываете задачу, а AI сам пишет код на Python, используя библиотеки paho-mqtt, pyserial, paramiko или aiohttp. В этой статье мы разберём, как подключить датчики умного города к ASI Biont через MQTT, настроить триггеры и управлять всей инфраструктурой из единого интерфейса.
Почему MQTT — лучший выбор для Smart City sensors
Smart City sensors — это распределённая сеть датчиков, которые работают на батареях, имеют ограниченные вычислительные ресурсы и передают данные по радиоканалам (LoRaWAN, NB-IoT, Wi-Fi). MQTT (Message Queuing Telemetry Transport) — идеальный протокол для таких сценариев:
- Лёгкий вес — минимальный размер заголовка (2 байта), экономия трафика и энергии.
- Асинхронность — датчики публикуют данные в топик, а подписчики получают их без постоянного опроса.
- QoS (Quality of Service) — гарантии доставки от 0 (не более одного раза) до 2 (ровно один раз).
- Поддержка IoT-платформ — Mosquitto, HiveMQ, AWS IoT Core, EMQX.
ASI Biont подключается к MQTT-брокеру через execute_python с библиотекой paho-mqtt. Пользователь просто пишет в чате: «Подключись к MQTT-брокеру по адресу mqtt.city.ru:1883, подпишись на топик sensors/co2 и при превышении 1000 ppm включи вентиляцию через топик actuators/fan». AI генерирует код и выполняет его в sandbox-окружении.
Пошаговое руководство по подключению
Шаг 1. Подготовка датчиков
Допустим, у вас есть ESP32 с датчиком MH-Z19B (CO₂), DHT22 (температура/влажность) и фоторезистором (освещённость). ESP32 подключён к Wi-Fi и публикует данные в MQTT-брокер. Для теста можно использовать публичный брокер test.mosquitto.org или локальный Mosquitto на Raspberry Pi.
Пример прошивки ESP32 (публикация данных каждые 30 секунд):
#include <WiFi.h>
#include <PubSubClient.h>
#include "MHZ19.h"
#include <DHT.h>
const char* ssid = "your_ssid";
const char* password = "your_password";
const char* mqtt_server = "mqtt.city.ru";
const int mqtt_port = 1883;
const char* topic_co2 = "sensors/co2";
const char* topic_temp = "sensors/temp";
WiFiClient espClient;
PubSubClient client(espClient);
MHZ19 myMHZ19;
DHT dht(2, DHT22);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); }
client.setServer(mqtt_server, mqtt_port);
myMHZ19.begin(Serial);
dht.begin();
}
void loop() {
if (!client.connected()) { client.connect("ESP32_SmartCity"); }
client.loop();
int co2 = myMHZ19.getCO2();
float temp = dht.readTemperature();
int light = analogRead(34);
client.publish(topic_co2, String(co2).c_str());
client.publish(topic_temp, String(temp).c_str());
client.publish("sensors/light", String(light).c_str());
delay(30000);
}
Шаг 2. Подключение ASI Biont к MQTT-брокеру
Откройте чат с ASI Biont и напишите:
«Подключись к MQTT-брокеру mqtt.city.ru:1883, подпишись на топик sensors/#, анализируй данные и при превышении CO₂ > 1000 ppm опубликуй команду в топик actuators/fan со значением ON».
AI сгенерирует и выполнит следующий код:
import paho.mqtt.client as mqtt
import json
import time
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("sensors/#")
def on_message(client, userdata, msg):
topic = msg.topic
payload = msg.payload.decode()
print(f"Received {topic}: {payload}")
if topic == "sensors/co2":
co2_value = int(payload)
if co2_value > 1000:
client.publish("actuators/fan", "ON")
print("Fan turned ON due to high CO2")
else:
client.publish("actuators/fan", "OFF")
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("mqtt.city.ru", 1883, 60)
client.loop_start()
time.sleep(30)
client.loop_stop()
Шаг 3. Создание триггеров и автоматизаций
После того как AI начал получать данные, вы можете в реальном времени управлять логикой. Например:
- Если температура > 35°C и освещённость < 100 люкс → включить уличное освещение.
- Если CO₂ > 800 ppm в течение 10 минут → отправить уведомление в Telegram.
- Если влажность < 20% → включить систему увлажнения воздуха в парке.
Для отправки уведомлений в Telegram AI использует requests:
import requests
def send_telegram_alert(message):
token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
url = f"https://api.telegram.org/bot{token}/sendMessage"
requests.post(url, json={"chat_id": chat_id, "text": message})
# Пример вызова внутри on_message
if co2_value > 1000:
send_telegram_alert(f"⚠️ CO2 превышен: {co2_value} ppm")
Шаг 4. Управление через единый чат-интерфейс
ASI Biont запоминает контекст подключения. Вы можете в любой момент написать:
- «Покажи последние 10 значений CO₂» — AI сформирует запрос к брокеру и отобразит данные.
- «Построй график температуры за последний час» — AI использует matplotlib для визуализации.
- «Выключи вентиляцию во всех зонах» — AI опубликует команду в соответствующий топик.
Альтернативные протоколы: Modbus/TCP и HTTP API
Если ваши Smart City sensors используют промышленные контроллеры (например, Wiren Board или Advantech) с поддержкой Modbus/TCP, ASI Biont подключается через industrial_command:
industrial_command(protocol='modbus', command='read_registers', params={'host': '192.168.1.100', 'port': 502, 'unit': 1, 'address': 0, 'count': 10})
Для устройств с HTTP API (например, датчики Netatmo или Xiaomi), AI использует aiohttp:
import aiohttp
async def fetch_sensor_data():
async with aiohttp.ClientSession() as session:
async with session.get('http://192.168.1.50/api/v1/sensors') as resp:
data = await resp.json()
return data
Почему ASI Biont выгоднее традиционных платформ IoT
| Параметр | Традиционные IoT-платформы (ThingsBoard, AWS IoT) | ASI Biont |
|---|---|---|
| Настройка | Требуется регистрация, создание дашбордов, написание правил | Достаточно описать задачу в чате |
| Гибкость | Ограниченный набор виджетов и триггеров | AI пишет любой Python-код под вашу задачу |
| Стоимость | Тарификация за количество устройств и сообщений | Фиксированная подписка |
| Интеграция | Требуется API-шлюз и middleware | Прямое подключение через MQTT, Modbus, HTTP |
Заключение
Интеграция Smart City sensors с ASI Biont через MQTT — это простой и мощный способ автоматизировать управление городской инфраструктурой. Вам не нужно писать сложные бэкенды или разбираться в протоколах — AI-агент сделает всё за вас. Опишите в чате, какие датчики у вас есть, к какому брокеру подключаться, и какие сценарии автоматизации нужны. ASI Biont сам подпишется на топики, проанализирует данные, создаст триггеры и будет управлять исполнительными устройствами. Попробуйте интеграцию прямо сейчас на asibiont.com и превратите ваш город в настоящий умный город.
Призыв к действию
Не ждите, пока разработчики добавят поддержку вашего оборудования. Зарегистрируйтесь на asibiont.com, откройте чат и напишите: «Подключи мои датчики CO₂ через MQTT». AI сделает всё остальное. Умный город начинается с одного диалога.
Комментарии