Как подключить LoRa-устройства к AI-агенту без бэкенда
LoRa (Long Range) и LoRaWAN — это протоколы беспроводной связи, которые позволяют передавать данные на десятки километров при минимальном энергопотреблении. Их используют в IoT для мониторинга температуры на складах, уровня воды в резервуарах, отслеживания грузов и сельскохозяйственных датчиков. Но классическая схема требует серверной инфраструктуры: сетевой сервер (ChirpStack, The Things Network), базу данных, API для аналитики и систему оповещений. ASI Biont заменяет весь этот стек одним AI-агентом, который подключается к LoRa-устройствам через COM-порт или MQTT-мост и автоматизирует сценарии без написания кода вручную.
Какой способ интеграции выбрать
LoRa-устройства редко подключаются напрямую к облаку — они работают через шлюзы (gateways), которые агрегируют данные и передают их на сетевой сервер. ASI Biont поддерживает два основных подхода:
| Способ подключения | Когда использовать | Интерфейс в ASI Biont |
|---|---|---|
| COM-порт (Hardware Bridge) | Если вы используете ESP32 с LoRa-модулем (SX1278) как приёмник, подключённый к ПК через USB-UART | industrial_command(protocol='serial://...') через bridge.py |
| MQTT-мост | Если у вас есть сетевой сервер (ChirpStack, TTN), который публикует данные устройств в MQTT-топик | industrial_command(protocol='mqtt://...') с publish/subscribe |
Первый вариант подходит для DIY-проектов, где ESP32 работает как LoRa-шлюз. Второй — для промышленных LoRaWAN-сетей с готовой инфраструктурой.
Сценарий 1: ESP32 + LoRa-модуль → ASI Biont через COM-порт
Аппаратная схема
- ESP32 (например, ESP32 DevKit) + LoRa-модуль SX1278 (подключение по SPI: NSS→GPIO5, SCK→GPIO18, MOSI→GPIO23, MISO→GPIO19, RST→GPIO14, DIO0→GPIO2).
- На ESP32 залита прошивка, которая каждые 60 секунд отправляет данные с датчика DHT22 (температура/влажность) по LoRa.
- Приёмник — второй ESP32, подключённый к ПК через USB (COM3, 115200 baud). Он принимает LoRa-пакеты и выводит их в UART в формате JSON:
{"temp": 23.5, "hum": 65.2}.
Подключение к ASI Biont
Пользователь запускает bridge.py на своём ПК:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=115200
После этого в чате с AI-агентом пользователь пишет:
«Подключись к COM3, читай JSON-строки с датчика температуры и влажности. Если температура выше 30°C — отправь мне уведомление в Telegram. Логируй данные каждые 5 минут в CSV-файл».
AI-агент генерирует и выполняет команду:
# Этот код выполняется в sandbox ASI Biont
import json
import csv
from datetime import datetime
# Собираем данные за последние 10 минут (bridge хранит историю)
command = """industrial_command(
protocol='serial://COM3',
command='read',
params={'baudrate': 115200, 'timeout': 600}
)"""
response = execute_command(command)
lines = response['output'].strip().split('\n')
# Парсим JSON-строки
records = []
for line in lines:
try:
data = json.loads(line)
records.append(data)
except:
continue
# Проверяем аномалии
for record in records:
temp = record.get('temp')
if temp and temp > 30:
# Отправляем уведомление через Telegram
send_telegram(f"⚠️ Авария: температура {temp}°C превысила норму!")
# Сохраняем в CSV
with open('sensor_log.csv', 'a', newline='') as f:
writer = csv.writer(f)
for r in records:
writer.writerow([datetime.now().isoformat(), r.get('temp'), r.get('hum')])
print(f"Обработано {len(records)} записей. Аномалий: {sum(1 for r in records if r.get('temp', 0) > 30)}")
AI выполняет код, отправляет результат в чат и продолжает мониторинг в фоне через long polling.
Сценарий 2: LoRaWAN-датчики → ChirpStack → MQTT → ASI Biont
Архитектура
Для промышленных LoRaWAN-сетей (например, датчики Dragino LSN50 на складе) используется MQTT-мост. Сетевой сервер ChirpStack публикует все входящие данные в MQTT-топик application/+/device/+/event/up. ASI Biont подключается к MQTT-брокеру и подписывается на нужные топики.
Подключение через диалог
Пользователь пишет AI:
«Подключись к MQTT-брокеру по адресу mqtt://192.168.1.100:1883, логин admin, пароль secret. Подпишись на топик application/+/device/+/event/up. Парси payload в формате JSON. Если уровень заряда батареи ниже 20% — отправь email на support@company.com».
AI генерирует код:
import paho.mqtt.client as mqtt
import json
import smtplib
from email.message import EmailMessage
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
device_id = data.get('deviceName', 'unknown')
battery = data.get('object', {}).get('batteryLevel', 100)
if battery < 20:
# Отправляем email
email = EmailMessage()
email.set_content(f"Устройство {device_id}: уровень батареи {battery}%")
email['Subject'] = '⚠️ Низкий заряд батареи LoRa-датчика'
email['To'] = 'support@company.com'
email['From'] = 'asi-biont@example.com'
with smtplib.SMTP('smtp.gmail.com', 587) as server:
server.starttls()
server.login('user', 'password')
server.send_message(email)
print(f"Уведомление отправлено для {device_id}")
client = mqtt.Client()
client.username_pw_set('admin', 'secret')
client.on_message = on_message
client.connect('192.168.1.100', 1883, 60)
client.subscribe('application/+/device/+/event/up')
client.loop_start() # Не блокирующий режим — таймаут sandbox не сработает
print("MQTT-подписка активна")
AI запускает код, подписка активна, и каждое новое сообщение от LoRaWAN-датчика обрабатывается мгновенно.
Преимущества подхода
- Zero backend: не нужно разворачивать сервер для LoRaWAN, всё делает AI.
- Гибкие сценарии: можно добавить предиктивную аналитику (например, AI предсказывает отказ батареи по тренду напряжения).
- Любые датчики: подключайте LoRa, LoRaWAN, Zigbee, Wi-Fi — AI сам выберет протокол.
Как начать
- Соберите ESP32 с LoRa-модулем или настройте LoRaWAN-шлюз.
- Запустите bridge.py (если используете COM-порт) или укажите MQTT-брокер.
- Опишите задачу в чате ASI Biont: «Подключись к LoRa-датчику, читай температуру, отправляй в Telegram при превышении 30°C».
- AI сам напишет код, подключится и начнёт мониторинг.
Попробуйте интеграцию уже сегодня на asibiont.com.
Комментарии