Введение
Когда мы говорим об интернете вещей (IoT) на промышленных масштабах, LoRaWAN (Long Range Wide Area Network) давно стал стандартом де-факто. Десятки тысяч датчиков уровня воды, температуры, вибрации, давления — всё это работает на расстоянии до 15 км в открытой местности и до 3 км в городской застройке, потребляя микроамперы. Проблема в том, что данные с этих датчиков часто «застревают» в облачных платформах типа The Things Network, ChirpStack или AWS IoT Core. Чтобы извлечь из них пользу, нужно либо писать кастомные скрипты, либо использовать готовые дашборды с ограниченной логикой.
AI-агент ASI Biont решает эту задачу кардинально: он подключается к вашему LoRaWAN-серверу (или напрямую к шлюзу через MQTT) и начинает анализировать телеметрию в реальном времени. Больше не нужно вручную настраивать правила для каждого датчика — достаточно описать задачу на естественном языке, и AI сам напишет код интеграции, настроит подписки и запустит автоматизацию.
Что такое LoRaWAN и зачем его подключать к AI-агенту?
LoRaWAN — это протокол, работающий поверх физического уровня LoRa. Он обеспечивает связь на большие расстояния при минимальном энергопотреблении. Типичное устройство (например, датчик температуры DS18B20 с LoRa-модулем) может работать от двух батареек АА до 5 лет, отправляя данные каждые 15 минут. Но как только данные попадают на сервер, возникает вопрос: а что с ними делать дальше?
Большинство платформ предлагают только простые правила: «если температура > 30°C, отправить email». Но реальные задачи сложнее:
- Нужно предсказывать аномалии на основе исторических трендов.
- Сравнивать показания соседних датчиков, чтобы выявить неисправность.
- Автоматически управлять исполнительными механизмами (клапанами, насосами) на основе комплексных условий.
Здесь и приходит ASI Biont: AI-агент, который подключается к вашему LoRaWAN-брокеру через MQTT (или через HTTP API, если вы используете The Things Stack или Helium) и берет на себя всю аналитику и управление.
Как ASI Biont подключается к LoRaWAN?
Самый распространенный способ интеграции LoRaWAN-устройств с ASI Biont — через MQTT. Почему именно MQTT?
- Стандарт: почти все LoRaWAN-серверы (ChirpStack, The Things Stack, Loriot, Actility) поддерживают MQTT-брокер для публикации данных с устройств.
- Двунаправленность: можно не только читать телеметрию, но и отправлять команды обратно на устройство (downlink).
- Простота: библиотека paho-mqtt доступна в sandbox ASI Biont, AI может написать скрипт за секунды.
Альтернативный вариант — HTTP API (через aiohttp или requests), если у вас кастомная платформа без MQTT. Но MQTT предпочтительнее из-за push-модели: данные приходят сразу, без периодического опроса.
Пошаговый сценарий: мониторинг уровня воды на гидропосту
Представьте: у вас есть LoRaWAN-датчик уровня воды (например, SEN-13830 с ультразвуковым дальномером), установленный на мосту. Каждые 10 минут датчик отправляет данные в The Things Stack. Вам нужно:
- Получать уведомление в Telegram, если уровень поднимается выше 4 метров (риск наводнения).
- Логировать все данные в Google Sheets для отчётности.
- Автоматически отправлять команду на включение сирены (другое LoRaWAN-устройство), если уровень превышает 5 метров.
Раньше для этого пришлось бы писать несколько микросервисов, настраивать вебхуки и разбираться с MQTT-клиентами. С ASI Biont вы просто пишете в чат:
«Подключись к MQTT-брокеру The Things Stack по адресу eu1.cloud.thethings.network:1883, используй username water-monitor и password my-secret-key. Подпишись на топик v3/water-monitor/devices/+/up. Парси поле uplink_message.decoded_payload.water_level. Если значение > 4.0, отправь уведомление в Telegram через бота с токеном BOT_TOKEN на chat_id 123456789. Если > 5.0, опубликуй в топик v3/water-monitor/devices/siren-01/down payload AA= с портом 2.»
AI-агент сгенерирует и выполнит следующий Python-скрипт (внутри execute_python):
import paho.mqtt.client as mqtt
import json
import requests
import time
BOT_TOKEN = "BOT_TOKEN"
CHAT_ID = "123456789"
THRESHOLD_WARN = 4.0
THRESHOLD_ALERT = 5.0
DOWNLINK_TOPIC = "v3/water-monitor/devices/siren-01/down"
sent_alerts = {}
def on_message(client, userdata, msg):
try:
data = json.loads(msg.payload)
water_level = data.get("uplink_message", {}).get("decoded_payload", {}).get("water_level", 0)
device_id = msg.topic.split("/")[3]
if water_level > THRESHOLD_ALERT:
# Отправляем команду на сирену
downlink_payload = {
"downlinks": [{
"f_port": 2,
"frm_payload": "AA==",
"priority": "HIGH"
}]
}
client.publish(DOWNLINK_TOPIC, json.dumps(downlink_payload))
# Отправляем уведомление в Telegram
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"⚠️ КРИТИЧЕСКИЙ УРОВЕНЬ! {device_id}: {water_level} м. Сирена включена!"}
)
elif water_level > THRESHOLD_WARN:
# Отправляем предупреждение, не чаще раза в час
current_time = time.time()
last_sent = sent_alerts.get(device_id, 0)
if current_time - last_sent > 3600:
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"⚠️ Внимание! {device_id}: уровень воды {water_level} м (порог {THRESHOLD_WARN} м)"}
)
sent_alerts[device_id] = current_time
except Exception as e:
print(f"Error processing message: {e}")
client = mqtt.Client()
client.username_pw_set("water-monitor", "my-secret-key")
client.on_message = on_message
client.connect("eu1.cloud.thethings.network", 1883, 60)
client.subscribe("v3/water-monitor/devices/+/up")
client.loop_forever()
Этот скрипт будет работать в течение 30 секунд (таймаут sandbox), но для непрерывного мониторинга AI предложит запустить его на вашем сервере или Raspberry Pi через SSH (используя paramiko). Либо же вы можете настроить постоянный скрипт через industrial_command tool, который будет выполняться по расписанию.
Другие сценарии интеграции LoRaWAN с ASI Biont
| Сценарий | Устройства | Протокол подключения | Действие AI |
|---|---|---|---|
| Мониторинг температуры в холодильной камере | LoRa-датчик DS18B20 | MQTT (ChirpStack) | AI анализирует тренды, предсказывает поломку компрессора, уведомляет в Telegram |
| Управление поливом на ферме | LoRa-датчик влажности почвы + реле | MQTT + downlink | AI включает/выключает клапаны по расписанию и погодным данным (OpenWeatherMap) |
| Отслеживание вибрации насосов | LoRa-акселерометр ADXL345 | MQTT | AI детектирует аномальные вибрации (FFT-анализ), создаёт заявку в Jira |
| Логирование энергопотребления | LoRa-счётчик электроэнергии | HTTP API (кастомная платформа) | AI ведёт базу данных (PostgreSQL), строит графики через matplotlib |
| Геопозиционирование скота | LoRa GPS-трекер | MQTT (Helium) | AI отслеживает выход за геозону, отправляет SMS через Twilio |
Подключение через The Things Stack (HTTP API)
Если ваш LoRaWAN-сервер не поддерживает MQTT или вы предпочитаете REST, AI может использовать HTTP API. Например, The Things Stack предоставляет эндпоинт для получения событий через вебхуки. Но поскольку вебхук требует публичного URL, а ASI Biont работает в облаке, AI может настроить опрос (polling) GET-запросами к API:
import requests
import json
from datetime import datetime, timedelta
API_KEY = "NNSXS.XXXXYYYY"
APP_ID = "water-monitor"
BASE_URL = "https://eu1.cloud.thethings.network/api/v3"
headers = {"Authorization": f"Bearer {API_KEY}"}
end_time = datetime.utcnow()
start_time = end_time - timedelta(hours=1)
url = f"{BASE_URL}/as/applications/{APP_ID}/packages/storage/uplink"
params = {
"start": start_time.isoformat() + "Z",
"end": end_time.isoformat() + "Z",
"field_mask": "uplink_message.decoded_payload"
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
for result in data.get("result", []):
device_id = result.get("end_device_ids", {}).get("device_id")
water_level = result.get("uplink_message", {}).get("decoded_payload", {}).get("water_level")
print(f"Device {device_id}: {water_level} m")
Этот скрипт можно запускать по cron-расписанию с помощью industrial_command tool, задавая периодичность в чате.
Почему это выгодно?
- Скорость интеграции: то, что раньше занимало день программирования, теперь делается за 1-2 минуты диалога с AI.
- Гибкость: вы не ограничены предустановленными правилами платформы LoRaWAN. AI может использовать любые библиотеки из sandbox: numpy для анализа, matplotlib для графиков, psycopg2 для базы данных.
- Отсутствие vendor lock-in: подключайтесь к любому LoRaWAN-серверу (ChirpStack, The Things Stack, Loriot, Actility, Helium) без дополнительных затрат.
- Автоматизация без кода: достаточно описать логику на естественном языке — AI сам напишет и выполнит код.
Практический пример: интеграция с датчиком температуры через MQTT
Допустим, у вас есть ESP32 с LoRa-модулем (например, Heltec WiFi LoRa 32), который каждые 10 минут отправляет температуру на ChirpStack. Вы хотите, чтобы AI анализировал данные и предупреждал вас в Telegram, если температура уходит за пределы 20-25°C.
Шаг 1. Убедитесь, что ваш ChirpStack настроен на публикацию данных в MQTT-брокер (обычно встроенный Mosquitto на порту 1883).
Шаг 2. В чате с ASI Biont напишите:
«Подключись к MQTT-брокеру по адресу 192.168.1.100:1883, username chirpstack, password chirpstack. Подпишись на топик application/+/device/+/event/up. Извлеки поле object.temperature. Если температура < 20 или > 25, отправь сообщение в Telegram через бота с токеном 123456:ABC-DEF на chat_id 987654321. Пиши сообщение раз в час, не чаще.»
AI сгенерирует скрипт, аналогичный первому примеру, и запустит его. Всё работает.
Подводные камни:
- Если MQTT-брокер требует TLS, AI использует
client.tls_set()с сертификатами. - Если у вас несколько устройств, AI может создать словарь для дедупликации уведомлений.
- Для длительного мониторинга AI предложит запустить скрипт на вашем сервере через SSH (paramiko) или через systemd-сервис.
Заключение
LoRaWAN — это мощная технология для удалённого мониторинга, но её потенциал раскрывается только тогда, когда данные начинают работать на вас. ASI Biont превращает сырые показания датчиков в осмысленные действия: предупреждения, автоматическое управление, аналитику. Вам не нужно быть программистом или DevOps-инженером — достаточно описать задачу на русском языке, и AI-агент сам напишет код, подключится к вашему MQTT-брокеру и начнёт мониторинг.
Попробуйте сами: зайдите на asibiont.com, создайте API-ключ, скачайте bridge.py (если нужно для COM-портов) или просто подключитесь к MQTT-брокеру через чат. Интеграция занимает меньше минуты. Ваши LoRaWAN-датчики заслуживают умного управления.
Комментарии