ESP-NOW + ASI Biont: управляем автономной mesh-сетью ESP32 через AI без Wi-Fi

Что такое ESP-NOW и почему это важно для умного дома

ESP-NOW — проприетарный протокол связи от Espressif, который работает на частоте 2.4 ГГц и не требует точки доступа Wi-Fi. Устройства ESP32 и ESP8266 общаются напрямую, как по рации: пара «мастер-слейв» или mesh-сеть с ретрансляцией. Задержка — миллисекунды, энергопотребление — минимальное. Это идеальный вариант для автономных датчиков, реле и выключателей, которые не должны зависеть от интернета.

Но главная проблема ESP-NOW — это замкнутость экосистемы. Чтобы получать данные с датчиков и управлять исполнительными устройствами, нужен шлюз, который переводит ESP-NOW в более «цивилизованный» протокол (MQTT, HTTP, COM-порт). И вот здесь появляется AI-агент ASI Biont. Он умеет подключаться к устройствам через 14 разных протоколов, и для ESP-NOW сети достаточно одного шлюза, чтобы AI получил доступ ко всем узлам.

Архитектура интеграции: ESP-NOW → ESP32 шлюз → MQTT → ASI Biont

Самый простой способ подключить ESP-NOW к ASI Biont — использовать MQTT. ESP32-шлюз будет собирать данные от других ESP-NOW устройств (температура, влажность, статус реле) и публиковать их в MQTT-брокер. ASI Biont, в свою очередь, подписывается на эти топики через paho-mqtt в execute_python (или через industrial_command для быстрой проверки). Команды управления отправляются обратно: AI публикует сообщение в топик, шлюз его получает и передаёт по ESP-NOW нужному устройству.

Почему MQTT? Он лёгкий, асинхронный, поддерживает QoS и работает через NAT — не нужно открывать порты. Брокер можно поднять на Raspberry Pi или использовать облачный, например HiveMQ Cloud.

Шаг 1: Настройка ESP-NOW сети

Возьмём два ESP32: один — шлюз с Wi-Fi и MQTT, второй — удалённый датчик температуры (например, DHT22). Датчик отправляет показания по ESP-NOW, шлюз принимает и публикует в MQTT. Код шлюза на Arduino C++:

#include <espnow.h>
#include <WiFi.h>
#include <PubSubClient.h>

// Структура данных от датчика
typedef struct SensorData {
  float temperature;
  float humidity;
} SensorData;

SensorData incomingData;

// MQTT настройки
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);

void OnDataRecv(const uint8_t *mac, const uint8_t *incomingData, int len) {
  memcpy(&incomingData, incomingData, sizeof(incomingData));
  // Публикуем в MQTT
  char topic[50];
  char msg[50];
  snprintf(topic, sizeof(topic), "espnow/sensor1/temp");
  snprintf(msg, sizeof(msg), "%.2f", incomingData.temperature);
  client.publish(topic, msg);
  snprintf(topic, sizeof(topic), "espnow/sensor1/hum");
  snprintf(msg, sizeof(msg), "%.2f", incomingData.humidity);
  client.publish(topic, msg);
}

void setup() {
  WiFi.mode(WIFI_STA);
  WiFi.begin("YOUR_WIFI", "YOUR_PASSWORD");
  while (WiFi.status() != WL_CONNECTED) delay(100);
  client.setServer(mqtt_server, 1883);
  if (esp_now_init() != 0) return;
  esp_now_register_recv_cb(OnDataRecv);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();
}

Этот шлюз транслирует данные с датчика в MQTT. Для управления реле нужно добавить подписку на топик espnow/relay1/set и отправку ESP-NOW сообщения целевому устройству.

Шаг 2: Подключаем ASI Biont к MQTT

Теперь идём в чат с AI-агентом ASI Biont и пишем примерно так:

«Подключись к MQTT брокеру broker.hivemq.com, подпишись на топики espnow/#, выведи текущую температуру и влажность. Если температура выше 25°C — отправь мне уведомление в Telegram».

AI сам сгенерирует и запустит Python-скрипт в execute_python с библиотекой paho-mqtt. Пример кода, который он создаст:

import paho.mqtt.client as mqtt
import requests

def on_message(client, userdata, msg):
    topic = msg.topic
    value = msg.payload.decode()
    print(f"{topic}: {value}")
    if topic == "espnow/sensor1/temp" and float(value) > 25:
        requests.post(
            "https://api.telegram.org/bot<TOKEN>/sendMessage",
            json={"chat_id": "<CHAT_ID>", "text": f"Температура {value}°C!"}
        )

client = mqtt.Client()
client.on_message = on_message
client.connect("broker.hivemq.com", 1883, 60)
client.subscribe("espnow/#")
client.loop_forever()

Обратите внимание: loop_forever() в sandbox ASI Biont не сработает из-за таймаута 30 секунд. В реальном сценарии AI использует client.loop_start() и time.sleep или периодические вызовы через industrial_command, чтобы не блокировать выполнение.

Шаг 3: Управление устройствами через чат

Теперь можно отдавать команды голосом или текстом. Например:

«Включи реле 1 на 10 секунд»

AI сформирует MQTT-публикацию в топик espnow/relay1/set со значением ON, затем через 10 секунд отправит OFF. Шлюз получит эти сообщения и отправит ESP-NOW команду нужному узлу. Всё происходит автоматически, без ручного программирования интеграции.

Альтернатива: Hardware Bridge (COM-порт)

Если шлюз ESP32 подключен к компьютеру через USB, можно использовать Hardware Bridge. Вы запускаете bridge.py на своём ПК (скачивается из дашборда ASI Biont), указываете порт COM3 и скорость 115200. ASI Biont через industrial_command с протоколом serial:// сможет читать и писать в порт. Это удобно, когда нет MQTT-брокера или нужно быстро отлаживать устройство.

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

Раньше для интеграции ESP-NOW сети с Telegram-ботом или голосовым ассистентом пришлось бы вручную писать код шлюза, настраивать MQTT, парсить JSON, обрабатывать ошибки. С ASI Biont достаточно описать словами, что нужно сделать, — агент сам напишет и запустит код. Это экономит часы разработки и позволяет менять логику в реальном времени: добавил новый датчик — просто написал в чат, и AI адаптировал скрипт.

Заключение

ESP-NOW — отличный выбор для локальной связи, но без шлюза он бесполезен для интеграции с внешним миром. Благодаря ASI Biont вы получаете универсальный мост: AI-агент берёт на себя всю рутинную работу по подключению, анализу данных и управлению. Не нужно писать код вручную, не нужно ждать обновлений — просто опишите задачу в чате, и через минуту ваша ESP-NOW сеть «оживёт».

Попробуйте интеграцию уже сейчас на asibiont.com — запросите подключение к своему ESP32 шлюзу и убедитесь, что автоматизация умного дома без Wi-Fi стала проще.

← Все статьи

Комментарии

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