Проблема: LoRaWAN-сеть есть, а данных нет
Представьте: вы развернули сеть LoRaWAN на складе или ферме — десятки датчиков температуры, влажности, вибрации отправляют пакеты через шлюз на сервер (например, The Things Network или ChirpStack). Данные приходят в сыром виде — hex-строки, которые нужно расшифровать, сохранить в БД, настроить алерты. Классический подход: писать парсер на Python, поднимать InfluxDB, настраивать Grafana, прикручивать Telegram-бота. Это недели работы для DevOps-инженера.
AI-агент ASI Biont решает эту задачу за минуты. Вместо того чтобы вручную писать код интеграции, вы описываете задачу на естественном языке: «Подключись к моему LoRaWAN-серверу, читай данные с датчика температуры на складе, и если температура выше 35°C — отправь уведомление в Telegram». AI сам пишет Python-скрипт, подключается к вашему устройству и начинает работать.
Как ASI Biont подключается к LoRaWAN-устройствам
LoRaWAN-устройства (датчики, клапаны, реле) общаются с сервером через шлюз. ASI Biont может подключаться к ним несколькими способами:
- MQTT — самый распространённый способ. Шлюз/сервер LoRaWAN публикует данные в MQTT-топик (например,
application/1/device/+/event/up). AI подписывается на этот топик через библиотекуpaho-mqtt, парсит пришедший JSON и выполняет нужные действия. - HTTP API — если ваш LoRaWAN-сервер предоставляет REST API (например, ChirpStack или The Things Stack), AI может опрашивать его через
requestsилиaiohttp. - COM-порт через Hardware Bridge — если у вас LoRaWAN-модем (например, Dragino или MultiTech) подключен к ПК через USB-COM-порт. AI отправляет AT-команды через bridge.py, который локально пишет в COM-порт.
Почему MQTT — оптимальный выбор? Большинство современных LoRaWAN-серверов (ChirpStack, The Things Stack, Loriot) имеют встроенный MQTT-брокер. Это асинхронный протокол — данные приходят в реальном времени, без polling. AI подписывается на топик один раз и получает все новые сообщения.
Кейс: автоматизация удалённого мониторинга холодильной камеры
Исходные данные
- Устройство: датчик температуры/влажности Dragino LHT65 (LoRaWAN) + шлюз Dragino LG01, подключённый к The Things Network.
- Задача: собирать температуру каждые 5 минут, если температура превышает +8°C (нарушение холодовой цепи) — отправлять срочное уведомление в Telegram и включать резервный компрессор через реле.
- Способ подключения: MQTT-подписка на топик
v3/{app_id}/devices/{dev_id}/up.
Пошаговое подключение через ASI Biont
Шаг 1. Пользователь пишет в чат:
«Подключись к MQTT-брокеру The Things Network по адресу eu1.cloud.thethings.network:1883, используй логин my-app@ttn и пароль NNSXS.XXXXXXXX. Подпишись на топик v3/my-app/devices/+/up. Парси JSON-сообщения: поле uplink_message.decoded_payload.temperature — это температура в °C. Если температура > 8, отправь сообщение в Telegram через бота с токеном 123456:ABC-DEF, chat_id 987654321. Также отправь MQTT-команду в топик v3/my-app/devices/lht65-01/down/push с payload для включения реле (FPort=1, payload=0x01).»
Шаг 2. ASI Biont генерирует Python-скрипт и выполняет его в sandbox-окружении (через execute_python).
import paho.mqtt.client as mqtt
import json
import requests
BROKER = "eu1.cloud.thethings.network"
PORT = 1883
USERNAME = "my-app@ttn"
PASSWORD = "NNSXS.XXXXXXXX"
TELEGRAM_TOKEN = "123456:ABC-DEF"
TELEGRAM_CHAT_ID = "987654321"
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("v3/my-app/devices/+/up")
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
temp = data.get("uplink_message", {}).get("decoded_payload", {}).get("temperature")
if temp is None:
return
print(f"Temperature: {temp}°C")
if temp > 8:
# Отправка уведомления в Telegram
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": f"⚠️ Температура {temp}°C превышает порог 8°C!"}
)
# Отправка команды на реле через MQTT downlink
downlink_payload = {
"downlinks": [{"f_port": 1, "frm_payload": "AQ==", "priority": "NORMAL"}]
}
client.publish("v3/my-app/devices/lht65-01/down/push", json.dumps(downlink_payload))
client = mqtt.Client()
client.username_pw_set(USERNAME, PASSWORD)
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.loop_forever()
Шаг 3. Скрипт запускается и начинает работать. Пользователь видит в чате логи:
«Подключился к MQTT. Ожидаю данные...»
«Температура 7.2°C — в норме»
«⚠️ Температура 9.1°C — отправлено уведомление, отправлена команда на реле»
Результаты
| Метрика | До ASI Biont | С ASI Biont |
|---|---|---|
| Время настройки | 2-3 дня (написание парсера, настройка уведомлений) | 15 минут (описание задачи в чате) |
| Реакция на аварию | Задержка 10-30 минут (человеческий фактор) | Мгновенно (автоматическая отправка уведомления и команды) |
| Объём кода | ~500 строк (Python + SQL + конфиги) | 0 строк (AI написал сам) |
| Масштабирование на 100 датчиков | Нужно менять код (добавлять новые dev_id) | Достаточно подписаться на wildcard-топик (+ вместо конкретного dev_id) |
Альтернативные сценарии подключения LoRaWAN
1. Через COM-порт (Hardware Bridge)
Если у вас LoRaWAN-модем (например, Dragino LoRa/GPS HAT для Raspberry Pi), подключённый через UART, AI может управлять им через bridge.py.
Команда пользователя:
«Подключись к COM3 на 115200 baud, отправь AT+CFG=... для настройки модема, читай входящие LoRa-пакеты и парси их как hex-строки.»
AI использует industrial_command с протоколом serial://:
industrial_command(
protocol='serial://',
command='serial_write_and_read',
data='41542b4346473d...0a' # hex для "AT+CFG=...\n"
)
2. Через HTTP API (ChirpStack)
Если ваш LoRaWAN-сервер — ChirpStack, AI может опрашивать его REST API.
Команда пользователя:
«Получи список устройств из ChirpStack по адресу http://192.168.1.100:8080, используй API-ключ abc123. Для каждого устройства прочитай последние данные с датчика температуры и сохрани в CSV.»
AI пишет скрипт с requests:
import requests, csv
api_key = "abc123"
headers = {"Grpc-Metadata-Authorization": f"Bearer {api_key}"}
response = requests.get("http://192.168.1.100:8080/api/devices", headers=headers)
devices = response.json()["result"]
with open("sensors.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["dev_id", "temperature", "timestamp"])
for dev in devices:
dev_id = dev["devEui"]
data_resp = requests.get(f"http://192.168.1.100:8080/api/devices/{dev_id}/data", headers=headers)
if data_resp.status_code == 200:
last = data_resp.json()["result"][-1]
writer.writerow([dev_id, last["temperature"], last["time"]])
print("CSV готов")
3. Управление реле и клапанами через LoRaWAN downlink
LoRaWAN поддерживает двустороннюю связь. AI может не только читать данные, но и отправлять команды обратно на устройство.
Пример команды пользователя:
«При получении сигнала «пожар» от датчика дыма (payload = 0x02), отправь команду на открытие клапана аварийного сброса: FPort=2, payload=0x01.»
AI обрабатывает входящий MQTT-пакет, проверяет условие и публикует downlink-сообщение.
Почему это выгодно: AI вместо программиста IoT
- Zero-coding. Пользователь не пишет ни одной строки кода — AI генерирует и выполняет скрипт на основе текстового описания.
- Мгновенная интеграция. Не нужно ждать, пока разработчики добавят поддержку нового устройства — AI подключается к любому LoRaWAN-серверу с MQTT, HTTP или через COM-порт.
- Гибкость. AI может комбинировать данные с нескольких устройств: например, анализировать температуру и влажность одновременно, строить графики через
matplotlibи отправлять отчёт на email. - Безопасность. Все скрипты выполняются в изолированном sandbox-окружении с ограниченными правами (нет доступа к файловой системе, сети — только к разрешённым ресурсам).
- Масштабирование. Один AI-агент может управлять сотнями LoRaWAN-устройств — достаточно добавить wildcard-топик в MQTT-подписку.
Заключение
LoRaWAN — мощная технология для IoT, но её интеграция с корпоративными системами часто требует значительных усилий. ASI Biont превращает этот процесс в диалог: вы описываете задачу, AI пишет код и подключается к вашему оборудованию. Без панелей управления, без кнопок «добавить устройство» — только чат с AI.
Попробуйте сами. Зайдите на asibiont.com, создайте API-ключ, скачайте bridge.py (если используете COM-порт) и напишите AI: «Подключись к моему LoRaWAN-серверу через MQTT и отправляй уведомления в Telegram при превышении температуры». Всё остальное сделает AI.
Комментарии