Введение
ESP32 — один из самых популярных микроконтроллеров для IoT-проектов: он имеет Wi-Fi, Bluetooth, низкое энергопотребление и стоит около $3–5. С его помощью можно мониторить температуру и влажность (DHT22), управлять реле, светодиодами, моторами и датчиками — всё это классика умного дома и промышленной автоматизации. Однако написание кода для каждого сценария, настройка MQTT-брокера и обработка данных в реальном времени требуют времени и навыков программирования.
AI-агент ASI Biont решает эту проблему: вы просто описываете в чате, какое устройство (ESP32) используете, какой протокол (MQTT, HTTP, COM-порт через Hardware Bridge) и какие данные нужно собирать или команды отправлять. AI сам пишет Python-код, подключается к устройству и начинает работу — никаких панелей управления, кнопок «добавить устройство» или ручного кодинга. В этой статье мы разберём, как подключить ESP32 с датчиком DHT22 и реле к ASI Biont через MQTT, и покажем реальные примеры кода на MicroPython для ESP32 и Python для AI-агента.
Как ASI Biont подключается к ESP32?
ASI Biont поддерживает несколько способов подключения к устройствам. Для ESP32 оптимальны два варианта:
-
MQTT (через execute_python) — AI пишет скрипт на Python с библиотекой
paho-mqtt, который подключается к MQTT-брокеру (например, Mosquitto или HiveMQ Cloud). ESP32 публикует данные с датчиков в топики (например,esp32/temperature), а AI подписывается на них и анализирует. Также AI может публиковать команды в топикesp32/command, а ESP32 их принимает и выполняет (включить реле, светодиод). Этот способ подходит для удалённого мониторинга и управления из любой точки мира. -
Hardware Bridge + COM-порт — если ESP32 подключён к компьютеру по USB (через UART-USB-преобразователь), вы запускаете bridge.py на своём ПК, который соединяется с ASI Biont через WebSocket. AI отправляет команды через
industrial_command(protocol='serial', command='serial_write_and_read', data='...'), bridge передаёт их в COM-порт, ESP32 отвечает. Этот способ удобен для локальной отладки и прямого управления GPIO без Wi-Fi.
В этой статье мы сосредоточимся на MQTT, так как это наиболее универсальный и масштабируемый вариант для IoT.
Сценарий: мониторинг температуры и управление реле через Telegram
Допустим, у вас есть ESP32 с датчиком DHT22 (температура и влажность) и реле, которое управляет освещением или вентилятором. Вы хотите:
- Получать данные о температуре каждые 10 минут.
- Если температура превышает 30°C, автоматически включать реле (вентилятор).
- Получать уведомление в Telegram при выходе за пределы нормы.
- Иметь возможность написать в чат ASI Biont «включи вентилятор» — и AI отправит команду на ESP32.
Шаг 1. Прошивка ESP32 (MicroPython)
Загрузите на ESP32 прошивку MicroPython (последняя версия — micropython.org/download/ESP32_GENERIC/). Затем загрузите следующий код, который подключается к Wi-Fi, MQTT-брокеру и обрабатывает команды:
import network
import time
import dht
import machine
from umqtt.simple import MQTTClient
# Конфигурация
WIFI_SSID = "your_wifi"
WIFI_PASS = "your_password"
MQTT_BROKER = "test.mosquitto.org" # или ваш брокер
MQTT_TOPIC_DATA = b"esp32/data"
MQTT_TOPIC_CMD = b"esp32/command"
# Инициализация
dht_pin = machine.Pin(4)
dht_sensor = dht.DHT22(dht_pin)
relay_pin = machine.Pin(5, machine.Pin.OUT, value=0)
led = machine.Pin(2, machine.Pin.OUT, value=0)
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(0.5)
print("WiFi connected")
def mqtt_callback(topic, msg):
if topic == MQTT_TOPIC_CMD:
if msg == b"RELAY_ON":
relay_pin.value(1)
print("Relay ON")
elif msg == b"RELAY_OFF":
relay_pin.value(0)
print("Relay OFF")
elif msg == b"LED_ON":
led.value(1)
elif msg == b"LED_OFF":
led.value(0)
def main():
connect_wifi()
client = MQTTClient("esp32_client", MQTT_BROKER)
client.set_callback(mqtt_callback)
client.connect()
client.subscribe(MQTT_TOPIC_CMD)
print("MQTT connected")
while True:
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
msg = f"{{\"temp\":{temp},\"hum\":{hum}}}"
client.publish(MQTT_TOPIC_DATA, msg)
print("Published:", msg)
client.check_msg() # проверяем входящие команды
time.sleep(600) # 10 минут
except OSError as e:
print("Error:", e)
time.sleep(5)
main()
Этот код использует библиотеку umqtt.simple, которая входит в стандартную прошивку MicroPython. Если ваш брокер требует аутентификации, добавьте параметры user и password в конструктор MQTTClient.
Шаг 2. Подключение ASI Biont через MQTT (execute_python)
Теперь, когда ESP32 публикует данные в топик esp32/data и слушает команды в esp32/command, мы можем настроить AI-агента. Вам не нужно писать код вручную — просто опишите задачу в чате ASI Biont:
«Подключись к MQTT-брокеру test.mosquitto.org, подпишись на топик esp32/data, каждые 10 минут проверяй температуру. Если температура > 30°C, опубликуй в esp32/command команду RELAY_ON. Также отправляй мне уведомление в Telegram при каждом превышении».
AI сам сгенерирует и выполнит следующий Python-скрипт (вы можете его увидеть и отредактировать):
import paho.mqtt.client as mqtt
import requests
import time
import json
# Конфигурация
MQTT_BROKER = "test.mosquitto.org"
MQTT_PORT = 1883
TOPIC_DATA = "esp32/data"
TOPIC_CMD = "esp32/command"
TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
def on_message(client, userdata, msg):
try:
data = json.loads(msg.payload.decode())
temp = data["temp"]
hum = data["hum"]
print(f"Received: temp={temp}, hum={hum}")
if temp > 30:
# Включаем реле
client.publish(TOPIC_CMD, "RELAY_ON")
print("Published RELAY_ON")
# Отправляем уведомление в Telegram
text = f"⚠️ Температура превысила 30°C: {temp}°C"
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": text}
)
except Exception as e:
print(f"Error processing message: {e}")
client = mqtt.Client()
client.on_message = on_message
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.subscribe(TOPIC_DATA)
client.loop_start()
# Держим скрипт активным 30 секунд (максимум для sandbox)
time.sleep(30)
client.loop_stop()
Шаг 3. Управление через чат
После выполнения скрипта вы можете просто написать в чат ASI Biont:
«Выключи реле на ESP32»
AI отправит команду RELAY_OFF в топик esp32/command, и ESP32 выключит реле. Если вы хотите получать данные по запросу, напишите:
«Какая сейчас температура на ESP32?»
AI опубликует команду GET_DATA (если вы добавите её обработку в прошивку) или, если ESP32 публикует данные раз в 10 минут, AI может прочитать последнее сохранённое значение из переменной.
Почему это выгодно?
- Ноль ручного кодинга: вам не нужно писать сложные интеграционные скрипты на Python — AI делает это за секунды.
- Гибкость: вы можете менять логику управления (пороги, команды, получателей уведомлений) простым текстом в чате.
- Масштабируемость: один AI-агент может управлять сотнями ESP32, анализировать данные и принимать решения.
- Безопасность: код выполняется в изолированном sandbox-окружении, а для доступа к локальным устройствам используется Hardware Bridge с токеном.
Альтернативный способ: Hardware Bridge + COM-порт
Если ваш ESP32 подключён к компьютеру по USB, вы можете использовать Hardware Bridge. Для этого:
- Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge).
- Установите зависимости:
pip install pyserial requests websockets. - Запустите bridge:
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200. - В чате ASI Biont напишите: «Подключись к COM3 на 115200, отправь команду HELP».
AI отправит industrial_command(protocol='serial', command='serial_write_and_read', data='48454c500a') (HEX для HELP+\n), bridge запишет это в COM-порт и вернёт ответ ESP32. Этот способ идеален для отладки, когда ESP32 ещё не имеет Wi-Fi.
Реальные сценарии использования
| Сценарий | ESP32 + датчик/актуатор | Действие AI |
|---|---|---|
| Умный термостат | DHT22 + реле на вентилятор | Включает вентилятор при t>30°C, уведомляет в Telegram |
| Автополив | Датчик влажности почвы + реле на насос | Поливает, если влажность <30% |
| Охранная система | PIR-датчик движения + зуммер | Отправляет фото с камеры (если есть) и сигнал тревоги |
| Мониторинг серверной | DHT22 + реле на кондиционер | Включает кондиционер при t>25°C, логирует данные в CSV |
Все эти сценарии реализуются без написания кода — только через диалог с AI.
Заключение
ESP32 — мощный и дешёвый микроконтроллер, который в связке с AI-агентом ASI Biont превращается в полностью автоматизированное IoT-решение. Вы можете мониторить температуру, управлять реле, светодиодами и получать уведомления в Telegram — и всё это без написания кода интеграции. AI сам пишет и выполняет Python-скрипты, подключается по MQTT, HTTP или через Hardware Bridge.
Попробуйте интеграцию прямо сейчас на asibiont.com — создайте API-ключ, скачайте bridge, подключите ESP32 и опишите задачу в чате. Умный дом на AI — это реально и доступно каждому.
Комментарии