Введение
Управление автопарком — это непрерывный поток данных: координаты, скорость, расход топлива, ошибки двигателя, пробег, время работы. Без автоматизации эти данные ложатся мёртвым грузом в логи. Но что, если каждый датчик, каждый трекер «разговаривает» с AI-агентом, который не только собирает телеметрию, но и прогнозирует поломки, оптимизирует маршруты и сам отправляет команды на устройства? Именно так работает ASI Biont — AI-агент, который подключается к любому устройству Fleet management через диалог в чате.
В этой статье — практический разбор интеграции: от GPS-трекера на COM-порте до CAN-шины автомобиля и MQTT-платформ. Никаких панелей управления — только чат с AI.
1. Как ASI Biont подключается к устройствам Fleet management
ASI Biont не имеет готовых драйверов для каждого трекера. Вместо этого AI пишет код интеграции прямо в момент запроса. Поддерживаемые способы (жирным выделены самые востребованные для автопарков):
| Способ | Протокол/Библиотека | Типовое применение |
|---|---|---|
| COM-порт (Hardware Bridge) | pyserial через bridge.py | GPS-трекеры (NMEA), ELM327 OBD-II, старые терминалы |
| CAN bus | python-can | Чтение CAN-шины автомобиля (скорость, обороты, ошибки) |
| MQTT | paho-mqtt | Облачные платформы (Wialon, Omnicomm, собственные IoT-серверы) |
| Modbus/TCP | pymodbus | Промышленные контроллеры, телеметрия спецтехники |
| HTTP API | requests, aiohttp | REST API Fleet management систем (например, GPSwox, Gurtam) |
| SSH | paramiko | Одноплатники (Raspberry Pi) с OBD-II, видеорегистраторы |
| OPC-UA | opcua-asyncio | Автоматизация складов, терминалы погрузчиков |
| execute_python | Любая библиотека из sandbox | Универсальный способ, если устройство не подходит под стандартные протоколы |
2. Сценарий 1: GPS-трекер через COM-порт (Hardware Bridge)
Устройство: дешёвый GPS-трекер (например, TK103, TKStar) с выводом NMEA-строк на UART. Подключается к ПК через USB-UART преобразователь.
Как работает:
1. Пользователь скачивает bridge.py из дашборда ASI Biont, вводит токен и порт.
2. В чате пишет: «Подключись к COM3 на 9600 baud, читай NMEA и говори координаты каждые 30 секунд».
3. AI использует industrial_command(protocol='serial', ...) для проверки связи, затем выполняет execute_python с кодом, который парсит NMEA-строки.
Пример кода (выполняется в execute_python sandbox):
import pynmea2
import datetime
from paho.mqtt import publish
# Предположим, bridge уже читает порт и присылает данные в ASI Biont
# В реальности AI получает сырые строки через industrial_command, обрабатывает здесь
nmea_sentence = "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47"
try:
msg = pynmea2.parse(nmea_sentence)
if msg.gps_qual > 0:
lat = msg.latitude
lon = msg.longitude
# Отправить в Telegram через requests
import requests
requests.post(
f"https://api.telegram.org/bot{TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"Координаты: {lat}, {lon}"}
)
except pynmea2.ParseError:
pass
Результат: AI анализирует маршрут, строит график скорости, предупреждает о геозонах.
3. Сценарий 2: OBD-II через CAN bus (python-can)
Устройство: ELM327 или CANtact с USB-CAN интерфейсом. Подключается к OBD-II разъёму автомобиля.
Подключение:
- Пользователь подключает устройство к ПК, запускает bridge.py с токеном.
- AI отправляет команду industrial_command(protocol='can', command='send_frame', ...).
- Читает параметры: обороты, температура ОЖ, скорость, ошибки (DTC).
Пример кода (выполняется в execute_python):
import can
import datetime
# Инициализация интерфейса (на стороне bridge фактически, но код в sandbox)
# Здесь только логика обработки полученных фреймов
frame_id = 0x7DF
frame_data = [0x02, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00]
# Отправить через industrial_command (не прямым вызовом can.bus)
# После получения ответа парсим обороты:
response = [0x04, 0x41, 0x0C, 0x1A, 0xF0] # пример ответа
rpm = (response[3]*256 + response[4])/4
print(f"Обороты: {rpm} RPM")
# Сохранить в историю
with open("rpm_log.csv", "a") as f:
f.write(f"{datetime.datetime.now()},{rpm}\n")
Практическая польза: AI предсказывает отказ стартера по слишком высокому току при запуске, выявляет пропуски зажигания, отправляет уведомление в мессенджер при ошибке P0420.
4. Сценарий 3: Интеграция через MQTT (облачные Fleet management платформы)
Устройство: трекер, передающий данные по MQTT на брокер (например, EMQX, Mosquitto). Пользователи используют платформы вроде Wialon (у них есть MQTT API) или самописные.
Подключение:
1. Пользователь даёт AI адрес брокера, топик, логин/пароль.
2. AI пишет код с paho-mqtt:
import paho.mqtt.client as mqtt
import json
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
# Пример: data = {"lon": 30.3, "lat": 59.9, "speed": 45, "engine": True}
if data["speed"] > 80:
import requests
requests.post("https://api.telegram.org/botTOKEN/sendMessage",
json={"chat_id": CHAT_ID, "text": f"Превышение! {data['speed']} км/ч"})
# Автоматически глушить двигатель, если машина в зоне запрета (пример)
if not data.get("engine"):
publish.single(topic="/car/command", payload='{"command":"engine_off"}', hostname="broker.emqx.io")
client = mqtt.Client()
client.username_pw_set("user", "pass123")
client.on_message = on_message
client.connect("broker.emqx.io", 1883, 60)
client.subscribe("/fleet/#")
client.loop_start() # нет while True, sandbox выполнит быстро
# Через 30 секунд sandbox остановит скрипт, но сообщения обработаются
Особенность: execute_python работает в облаке и не может держать долгоживущее соединение (таймаут 30 сек). Поэтому для постоянного мониторинга AI использует industrial_command с MQTT (встроенный tool), который подписывается на топик и передаёт сообщения в чат. Пользователь просто пишет: «Следи за топливом и при падении ниже 10% предупреди». AI подписывается одним вызовом industrial_command(protocol='mqtt', command='subscribe', ...) и настраивает правила на своей стороне.
5. Сценарий 4: Универсальный execute_python — когда нет готового протокола
Если трекер использует собственный протокол поверх TCP (например, Wialon Retranslator), AI может написать скрипт с socket или aiohttp, который будет общаться по HTTP API. Пример: получение данных от платформы GPSwox через REST:
import requests
import datetime
resp = requests.get(
"https://api.gpswox.com/api/v1/devices/1234?sid=YOUR_SID",
headers={"Authorization": "Bearer API_KEY"}
)
device = resp.json()
# device = {'lat': 55.75, 'lng': 37.62, 'speed': 0, 'fuel': 78.3}
ts = datetime.datetime.now().isoformat()
# Сохранить в csv
import csv
with open("gpswox_data.csv", "a", newline="") as f:
writer = csv.writer(f)
writer.writerow([ts, device['lat'], device['lng'], device['speed']])
AI сам составляет дашборд: строит график расхода топлива (matplotlib), выгружает отчёт в Excel (openpyxl), отправляет в Slack (slack_sdk).
6. Почему это выгодно?
- Не нужно программировать. Пользователь описывает задачу на естественном языке, AI пишет код.
- Любой протокол. Из списка выше — 13 способов подключения. Если нужен нестандартный — execute_python с любой библиотекой из sandbox.
- Автоматизация без панелей. Вся настройка через чат: «При включении зажигания включать видеорегистратор», «Если машина заехала в ремонтную зону, блокировать запуск двигателя».
- Прогнозы. AI анализирует историю и предсказывает: «Замена тормозных колодок через 1500 км», «Аккумулятор может не завести при -25°C».
7. Как начать
- Зарегистрироваться на asibiont.com, получить API-токен в разделе Devices.
- Скачать bridge.py, запустить на ПК рядом с устройством (если нужен COM-порт) или подключиться напрямую по сети.
- Написать в чат: «Подключись к моему GPS-трекеру на COM3, 9600 baud, отправляй координаты в Telegram каждые 5 минут».
- AI напишет код, выполнит его и начнёт работу.
Важно: bridge.py — единственный способ доступа к локальным портам. Весь код выполняется в облаке, bridge только передаёт данные.
Заключение
Fleet management перестаёт быть просто трекингом. AI-агент ASI Biont превращает автопарк в самоуправляемую систему: он собирает данные, анализирует, принимает решения и управляет устройствами — от реле блокировки до CAN-шины. Никаких интеграционных платформ — только чат. Попробуйте интеграцию прямо сейчас на asibiont.com.
Комментарии