ESP-NOW + ASI Biont: автоматизация датчиков умного дома без лишнего кода

Представьте: в вашем доме — десяток 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 это действительно работает.

← Все статьи

Комментарии