Введение
Современная автоматизация немыслима без сенсоров. I2C-устройства — датчики температуры (BME280, SHT30), влажности, акселерометры (MPU6050), LCD-дисплеи (PCF8574) — основа тысяч embedded-проектов. Но чтобы эти данные приносили реальную пользу, их нужно не просто собрать, а проанализировать, связать с бизнес-логикой, отправить уведомления или управлять исполнительными механизмами. Именно здесь на помощь приходит AI-агент ASI Biont.
В этой статье мы на практическом примере разберём, как подключить I2C-датчик (BME280) на микроконтроллере ESP32 к AI-агенту ASI Biont, используя MQTT-протокол. Вы увидите, как AI самостоятельно пишет код интеграции, настраивает шину, парсит данные и автоматизирует действия — без ручного написания скриптов и долгих отладок.
Как ASI Biont подключается к I2C-устройствам?
I2C — это последовательная шина, которая работает на физическом уровне. Напрямую из облака к ней не подключиться. Поэтому типовой сценарий выглядит так:
- Микроконтроллер (ESP32, Raspberry Pi, Arduino) считывает данные с I2C-датчика.
- Микроконтроллер передаёт эти данные в ASI Biont по одному из поддерживаемых протоколов: MQTT, COM-порт (через Hardware Bridge), SSH или HTTP API.
- AI-агент получает данные, анализирует их, принимает решения и при необходимости отправляет обратные команды.
В нашем примере мы выберем MQTT — самый удобный и надёжный способ для IoT-устройств. ESP32 будет публиковать показания датчика в топик, а ASI Biont — подписываться на него и обрабатывать.
Конкретный сценарий: ESP32 + датчик BME280 (температура, влажность, давление)
Задача: подключить ESP32 с датчиком BME280 к ASI Biont, настроить мониторинг температуры в серверной комнате. Если температура превышает 35°C — AI отправляет уведомление в Telegram и включает вентилятор через реле (GPIO).
Шаг 1. Прошивка ESP32
На ESP32 загружается прошивка на MicroPython, которая считывает данные с BME280 по I2C и отправляет их по MQTT. Код прошивки вы можете написать сами или попросить AI сгенерировать его за вас.
# Прошивка ESP32 (MicroPython)
import network
import time
import json
from machine import Pin, I2C
import bme280
from umqtt.simple import MQTTClient
# Настройки Wi-Fi
SSID = "YourWiFi"
PASSWORD = "YourPassword"
# Настройки MQTT-брокера (например, HiveMQ Cloud)
BROKER = "broker.hivemq.com"
TOPIC = "sensor/server_room/bme280"
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
# Инициализация I2C (GPIO21=SDA, GPIO22=SCL)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
bme = bme280.BME280(i2c=i2c)
# Подключение к MQTT
client = MQTTClient("esp32_bme280", BROKER)
client.connect()
while True:
temp, pressure, humidity = bme.values
payload = json.dumps({
"temperature": float(temp[:-1]), # "25.3C" -> 25.3
"humidity": float(humidity[:-1]),
"pressure": float(pressure[:-3])
})
client.publish(TOPIC, payload)
time.sleep(60) # отправляем каждую минуту
Этот код можно загрузить через Thonny или esptool. AI-агент может написать его под вашу конфигурацию по описанию в чате.
Шаг 2. Подключение ASI Biont к MQTT-брокеру
Теперь нужно, чтобы AI-агент подписался на топик sensor/server_room/bme280. В ASI Biont это делается через execute_python — AI сам пишет и выполняет код на Python с библиотекой paho-mqtt.
Достаточно написать в чат ASI Biont:
«Подключись к MQTT-брокеру broker.hivemq.com, подпишись на топик sensor/server_room/bme280, получай данные с датчика BME280 и если температура выше 35°C — отправь уведомление в Telegram и включи реле на ESP32 через топик relay/control.»
AI сгенерирует и выполнит следующий скрипт:
import paho.mqtt.client as mqtt
import json
import requests
# Конфигурация
BROKER = "broker.hivemq.com"
TOPIC_SENSOR = "sensor/server_room/bme280"
TOPIC_RELAY = "relay/control"
TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
def on_message(client, userdata, msg):
data = json.loads(msg.payload.decode())
temp = data.get("temperature")
if temp and temp > 35.0:
# Отправка уведомления в Telegram
text = f"⚠️ Внимание! Температура в серверной: {temp}°C (превышение порога 35°C)"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": text})
# Включение реле (вентилятора)
client.publish(TOPIC_RELAY, "ON")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC_SENSOR)
client.loop_forever() # выполняется в sandbox с таймаутом 30 сек, но loop_forever не запустится — используем loop_start
Важно: Sandbox ASI Biont имеет таймаут выполнения 30 секунд, поэтому бесконечный loop_forever() не подходит. Вместо этого AI использует loop_start() в фоновом потоке или однократное чтение с time.sleep(). На практике AI адаптирует код под ограничения среды.
Шаг 3. Автоматизация и обратная связь
AI не только получает данные, но и может управлять ESP32 через MQTT. Например, опубликовать команду ON в топик relay/control. На ESP32 нужно подписаться на этот топик и замыкать реле:
# Фрагмент прошивки ESP32 для управления реле
import machine
relay = machine.Pin(2, machine.Pin.OUT)
def sub_cb(topic, msg):
if msg == b"ON":
relay.on()
elif msg == b"OFF":
relay.off()
client.set_callback(sub_cb)
client.subscribe(b"relay/control")
while True:
client.check_msg()
time.sleep(1)
Другие способы интеграции I2C-устройств с ASI Biont
1. Через COM-порт (Hardware Bridge)
Если ESP32 или Arduino подключены к ПК через USB, можно использовать Hardware Bridge. На ПК запускается bridge.py, который соединяется с ASI Biont через long polling и передаёт данные из COM-порта.
Пример запуска bridge.py:
python bridge.py --token=my_token --ports=COM3 --default-baud=115200
После этого AI может читать данные через industrial_command:
industrial_command(protocol='serial://', command='read', port='COM3', baud=115200)
Это удобно для быстрого прототипирования, когда ESP32 выводит данные в Serial Monitor.
2. Через SSH (Raspberry Pi)
Если I2C-датчик подключен к Raspberry Pi, AI может подключиться по SSH и запустить скрипт сбора данных:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='pi', password='raspberry')
stdin, stdout, stderr = ssh.exec_command('python3 /home/pi/read_bme280.py')
data = stdout.read().decode()
print(data)
3. Через HTTP API (ESP32 с веб-сервером)
Можно настроить ESP32 как веб-сервер, который отдаёт данные по HTTP. AI использует aiohttp для запросов:
import aiohttp
async def fetch_data():
async with aiohttp.ClientSession() as session:
async with session.get('http://192.168.1.50/api/sensor') as resp:
data = await resp.json()
print(data)
Практические выводы
Интеграция I2C-устройств с AI-агентом ASI Biont открывает широкие возможности для автоматизации:
- Мониторинг температуры, влажности, давления в реальном времени.
- Управление реле, вентиляторами, сервоприводами по событиям.
- Уведомления в Telegram, Slack, email при выходе за пороги.
- Логирование данных в базы данных (PostgreSQL, MongoDB) для анализа трендов.
- Прогнозирование отказов оборудования на основе исторических данных.
Главное преимущество: вам не нужно писать код интеграции вручную. Просто опишите задачу в чате ASI Biont — AI сам выберет протокол, сгенерирует скрипт и выполнит его. Никаких панелей управления, никаких кнопок «добавить устройство» — только диалог.
Заключение
I2C-датчики — это глаза и уши вашей автоматизации. Подключив их к ASI Biont, вы получаете не просто сбор данных, а интеллектуального ассистента, который анализирует, принимает решения и действует. Попробуйте сами — подключите свой первый I2C-датчик к AI-агенту на asibiont.com и убедитесь, насколько это просто и эффективно.
Комментарии