Представьте: в вашем доме — десяток ESP32-датчиков, разбросанных по комнатам. Они измеряют температуру, влажность, освещённость, открытие окон. Работают они по протоколу ESP-NOW — быстрому и энергоэффективному, без необходимости подключать каждый к Wi-Fi. Но как собрать все эти данные в одном месте и заставить AI-агента реагировать на изменения? Раньше для этого пришлось бы писать связку из нескольких сервисов, поднимать MQTT-брокер, настраивать уведомления. Теперь это решается одним диалогом с ASI Biont — AI-агентом, который сам пишет интеграцию под ваше устройство.
В этой статье я покажу, как объединить ESP-NOW сенсоры с ASI Biont через MQTT, настроить мониторинг температуры и получать уведомления в Telegram. Всё — с реальными примерами кода и без выдумок.
Что такое ESP-NOW и почему он удобен для умного дома
ESP-NOW — это протокол связи, разработанный компанией Espressif для своих микроконтроллеров ESP32 и ESP8266. Он работает по принципу peer-to-peer: устройства общаются напрямую, без роутера и точки доступа. Это значит:
- Низкое энергопотребление — датчики могут работать от батарей месяцами.
- Низкая задержка — данные передаются за миллисекунды.
- Простота — не нужно настраивать Wi-Fi-сеть и пароли для каждого устройства.
Подробнее о протоколе можно почитать в официальной документации Espressif.
Но есть нюанс: ESP-NOW не выходит в интернет. Данные остаются внутри локальной сети устройств. Чтобы передать их в облачный AI-агент, нужен мост — ESP32 с Wi-Fi, который получает пакеты ESP-NOW и пересылает их дальше, например, через MQTT.
Как ASI Biont подключается к ESP-NOW
ASI Biont — это AI-агент, который умеет подключаться к любому оборудованию через десятки протоколов: MQTT, Modbus, HTTP, SSH, OPC-UA и другие. Но самое главное — он поддерживает универсальный механизм execute_python. Это значит, что AI сам пишет Python-скрипт под вашу конкретную задачу, выполняет его в безопасной sandbox-среде и возвращает результат.
Для интеграции с ESP-NOW мы используем связку:
Датчик (ESP32 + ESP-NOW) → Шлюз (ESP32 + Wi-Fi + MQTT) → ASI Biont (execute_python)
Шлюз публикует данные в MQTT-брокер (например, Mosquitto). ASI Biont подключается к этому брокеру через paho-mqtt, подписывается на нужный топик и выполняет логику — например, отправляет уведомления в Telegram.
Пример: мониторинг температуры и уведомления в Telegram
Допустим, у вас есть ESP32 с датчиком температуры (например, DS18B20) в детской комнате. Он отправляет данные по ESP-NOW на шлюз. Шлюз публикует их в топик sensors/room1/temperature. Вы хотите, чтобы ASI Biont при превышении +30°C отправлял вам сообщение в Telegram.
Шаг 1. Код ESP32 (отправитель)
Напишем прошивку для ESP32-датчика на Arduino IDE. Используем библиотеку esp_now.h и WiFi.h для базовой инициализации.
#include <esp_now.h>
#include <WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
uint8_t gatewayMac[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // MAC шлюза
void sendTemp() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
if (temp != DEVICE_DISCONNECTED_C) {
String payload = String(temp);
esp_now_send(gatewayMac, (uint8_t*)payload.c_str(), payload.length());
}
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
esp_now_init();
esp_now_add_peer(gatewayMac, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);
sensors.begin();
// Отправляем каждые 10 секунд
}
void loop() {
sendTemp();
delay(10000);
}
Шаг 2. Код шлюза (приём и пересылка в MQTT)
Шлюз — это второй ESP32, подключенный к Wi-Fi и MQTT-брокеру. Он слушает ESP-NOW и публикует данные в MQTT.
#include <esp_now.h>
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "YOUR_WIFI";
const char* password = "YOUR_PASS";
const char* mqtt_server = "192.168.1.100";
WiFiClient espClient;
PubSubClient client(espClient);
void onDataRecv(const uint8_t *mac, const uint8_t *data, int len) {
char tempStr[len+1];
memcpy(tempStr, data, len);
tempStr[len] = '\0';
String topic = "sensors/room1/temperature";
client.publish(topic.c_str(), tempStr);
}
void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
while (!client.connected()) {
client.connect("esp32_gateway");
}
esp_now_init();
esp_now_register_recv_cb(onDataRecv);
}
void loop() {
client.loop();
}
Шаг 3. Подключение ASI Biont к MQTT
Теперь самое интересное. В чате ASI Biont вы пишете:
Подключись к MQTT-брокеру 192.168.1.100:1883, подпишись на топик
sensors/room1/temperature. Если значение больше 30, отправь мне сообщение в Telegram (токен бота и chat_id в файле config.json).
AI-агент генерирует Python-скрипт, который использует paho-mqtt и requests для Telegram Bot API. Вот пример такого скрипта:
import json
import sys
import requests
import paho.mqtt.client as mqtt
with open("config.json") as f:
config = json.load(f)
TOKEN = config["telegram_token"]
CHAT_ID = config["chat_id"]
BROKER = "192.168.1.100"
PORT = 1883
TOPIC = "sensors/room1/temperature"
THRESHOLD = 30
def send_telegram(text):
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
data = {"chat_id": CHAT_ID, "text": text}
requests.post(url, data=data)
def on_connect(client, userdata, flags, rc):
client.subscribe(TOPIC)
def on_message(client, userdata, msg):
try:
temp = float(msg.payload.decode())
print(f"Temperature: {temp}")
if temp > THRESHOLD:
send_telegram(f"🔥 В детской {temp}°C! Срочно проверьте.")
except ValueError:
print("Invalid data")
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.loop_forever()
Этот скрипт запускается в sandbox-среде ASI Biont и работает, пока выполняется задача. Вы можете остановить его командой в чате или переключить на другой сценарий.
Универсальность: execute_python для любого устройства
Ключевая фишка ASI Biont — вы не ограничены готовыми интеграциями. Вы можете подключить не только ESP-NOW, но и любое другое устройство: промышленный контроллер, GPS-трекер, Raspberry Pi, Arduino. Достаточно описать в чате:
- Тип подключения: COM-порт, MQTT, Modbus TCP, SSH, HTTP и т.д.
- Параметры: IP-адрес, порт, baud rate, API-ключ.
- Какие данные нужно читать или какие команды отправлять.
AI-агент сам напишет код на Python с использованием подходящих библиотек: pyserial, paho-mqtt, pymodbus, paramiko, aiohttp, opcua-asyncio. Для COM-портов можно использовать Hardware Bridge (bridge.py), который скачивается из дашборда ASI Biont. Но для ESP-NOW через MQTT он не нужен — достаточно execute_python.
Такой подход экономит недели разработки. Не нужно ждать, пока разработчики ASI Biont добавят поддержку конкретного датчика. Вы описываете задачу, и AI уже делает интеграцию.
Почему это выгодно?
- Скорость: интеграция занимает минуты, а не дни. Вы не пишете парсеры и обработчики — AI генерирует их за вас.
- Гибкость: ESP-NOW — лишь один из протоколов. Если завтра вы захотите подключить датчик через Modbus или CAN — просто опишите это в чате.
- Единая точка управления: все устройства — от ESP32 до промышленных контроллеров — подключаются к одному AI-агенту. Вы управляете ими через диалог, без панелей и сложных дашбордов.
- Надёжность: ASI Biont пишет код с учётом обработки ошибок и таймаутов. Например,
execute_pythonограничен по времени (30 секунд), поэтому AI не пишет бесконечныеwhile True, а использует подписки или циклы с явным выходом.
Реальный опыт и подводные камни
Настройка ESP-NOW требует внимания к MAC-адресам. В примере выше я использовал placeholder 0xFF,0xFF,.... В реальности нужно указать реальный MAC шлюза. Его можно узнать в логе шлюза при запуске. Также следите, чтобы устройства были в одной сети (ESP-NOW не требует IP, но каналы должны совпадать).
Ещё один момент: при использовании MQTT не забывайте про QoS. Для простого мониторинга достаточно QoS 0, но для критичных данных (например, сигнализация) лучше QoS 1.
Попробуйте прямо сейчас
ASI Biont уже умеет подключаться к ESP-NOW через MQTT и через execute_python. Вам не нужно программировать — просто опишите свою задачу в чате, и AI-агент сделает всё за вас. Заходите на asibiont.com, создавайте своего AI-агента и подключайте умный дом за минуты.
Технологии развиваются слишком быстро, чтобы тратить время на рутинные интеграции. Пусть AI пишет код, а вы контролируете процесс. С ASI Biont это действительно работает.
Комментарии