COM-порт и RS-232: как AI-агент ASI Biont управляет устройствами через Hardware Bridge

Введение: почему COM-порт жив, а AI-агент — ваш новый ассистент

Последовательный интерфейс RS-232 (COM-порт) — ровесник персональных компьютеров, но он не устарел. Тысячи промышленных весов, лабораторных анализаторов, ЧПУ-станков, принтеров этикеток и контроллеров Arduino до сих пор общаются именно через него. Проблема в том, что для интеграции такого оборудования в современные системы мониторинга или чат-бота нужно писать код вручную: открывать порт, парсить байты, обрабатывать ошибки, отправлять команды. С AI-агентом ASI Biont этот процесс превращается в диалог: вы описываете задачу, AI пишет код, подключается к устройству и начинает управлять им. В этой статье разберём, как именно работает интеграция COM/RS-232 с ASI Biont, какие сценарии это закрывает и почему это выгодно.

Как ASI Biont подключается к COM-порту: Hardware Bridge

ASI Biont — это облачный AI-агент, который сам пишет и выполняет Python-код для интеграции с любым оборудованием. Но у него нет прямого доступа к вашему COM-порту, потому что он работает в облаке. Решение — Hardware Bridge: небольшой скрипт bridge.py, который вы запускаете на своём ПК (Windows, Linux, macOS). Bridge подключается к ASI Biont через WebSocket (единственный канал связи) и обеспечивает доступ к локальным COM-портам. AI отправляет команды через инструмент industrial_command, они уходят на bridge, а он уже читает/пишет в порт через библиотеку pyserial.

Ключевые технические детали:
- Пользователь указывает порт (например, COM3) и baud rate (9600, 115200 и т.д.).
- AI использует атомарную операцию serial_write_and_read(data=hex_string): отправляет данные в порт и сразу читает ответ.
- Данные передаются в hex-формате (например, data="48454c500a" для HELP+\n) или как escape-последовательности (BLUE_ON\n, LED_OFF\r\n).
- Для проверки связи AI отправляет команду HELP — устройство должно ответить списком поддерживаемых команд.
- На Windows при ошибках записи bridge автоматически применяет CancelIoEx (отмена зависших overlapped операций), PurgeComm (очистка буферов) и синхронный WriteFile (без overlapped I/O) — это обеспечивает надёжность даже на проблемных драйверах.

Как выглядит запуск bridge.py:

pip install pyserial requests websockets
python bridge.py --token=ВАШ_API_ТОКЕН --ports=COM3 --baud 115200 --rate=10

Bridge скачивается только из дашборда ASI Biont (Devices → Create API Key → Скачать bridge). Никаких GitHub-репозиториев — всё официально.

Сценарий 1: Arduino через COM-порт — управление светодиодами и сбор данных

Самый популярный сценарий — подключение Arduino или ESP32 к AI-агенту. Допустим, у вас есть Arduino Uno с подключённым датчиком температуры (DHT11) и сервоприводом. Вы хотите, чтобы AI-агент по вашему запросу включал светодиод, считывал температуру и отправлял данные в Telegram.

Как это работает:
1. Загрузите на Arduino прошивку, которая принимает команды по COM-порту и отправляет данные в формате TEMP:23.5\n.
2. Запустите bridge.py на ПК с параметрами --ports=COM3 --baud=9600.
3. В чате с ASI Biont напишите: «Подключись к Arduino на COM3, 9600 baud. Пришли мне текущую температуру и включи зелёный светодиод на 5 секунд».

AI автоматически вызовет industrial_command с протоколом serial://:

# Пример того, что сгенерирует AI (не показывается пользователю, а выполняется в фоне)
# Команда на чтение температуры
industrial_command(
    protocol='serial://',
    command='serial_write_and_read',
    data='54454d500a'  # "TEMP\n" в hex
)
# Ответ: TEMP:23.5

# Команда на включение светодиода
industrial_command(
    protocol='serial://',
    command='serial_write_and_read',
    data='4c4544320a'  # "LED2\n" в hex
)

Результат:
- Через несколько секунд вы получаете в чате: «Температура: 23.5 °C. Зелёный светодиод включён на 5 секунд.»
- Если температура выходит за пределы нормы (например, выше 30 °C), AI может автоматически отправить уведомление в Telegram через requests.post к api.telegram.org.

Почему это выгодно:
- Не нужно писать парсер команд или логику управления на стороне ПК — AI делает это на лету.
- Можно менять сценарии простым текстом: «Теперь при температуре выше 25 °C включай синий светодиод и пиши мне в Telegram».

Сценарий 2: Промышленные весы — автоматический учёт продукции

На складе или производстве часто используют весы с интерфейсом RS-232. Они передают данные о весе в текстовом формате (например, +000.500 kg\r\n). Раньше для сбора данных приходилось писать отдельное приложение или использовать дорогие промышленные шлюзы. С ASI Biont всё проще.

Как это работает:
1. Подключите весы к COM-порту ПК через переходник RS-232.
2. Запустите bridge.py.
3. Напишите в чате: «Подключись к весам на COM5, 9600 baud. Каждые 10 секунд считывай вес и записывай в CSV-файл. Если вес превышает 5 кг, отправь мне уведомление».

AI выполнит команду serial_write_and_read с командой запроса веса (обычно это символ 'W' или 'R'), распарсит ответ, проверит условие и запишет данные. Пример генерируемого кода (выполняется в sandbox):

import csv
import requests
from datetime import datetime

# AI получает данные от bridge через industrial_command
# Допустим, ответ от весов: "+001.200 kg"
weight_str = "+001.200 kg"
weight = float(weight_str.split()[0])  # 1.2

# Запись в CSV
with open('weights.csv', 'a', newline='') as f:
    writer = csv.writer(f)
    writer.writerow([datetime.now(), weight])

# Проверка условия
if weight > 5.0:
    requests.post(
        'https://api.telegram.org/botТОКЕН/sendMessage',
        json={'chat_id': 'ЧАТ_ID', 'text': f'Вес превышен: {weight} кг'}
    )

Результат:
- Автоматический сбор данных без участия человека.
- Уведомления о превышении веса приходят в Telegram.
- История весов сохраняется в CSV для последующего анализа.

Сценарий 3: GPS-трекер через NMEA — мониторинг транспорта

Многие GPS-трекеры (например, на базе u-blox) выдают данные в формате NMEA 0183 через COM-порт. Строки выглядят так: $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47. ASI Biont может парсить эти строки, извлекать координаты и строить маршруты.

Как это работает:
1. Подключите GPS-приёмник к COM-порту (например, через USB-UART).
2. Запустите bridge.py.
3. Напишите в чате: «Подключись к GPS на COM7, 38400 baud. Каждые 30 секунд считывай NMEA-строку, парси координаты и сохраняй в JSON. Если скорость больше 60 км/ч, отправь уведомление».

AI использует библиотеку pynmea2 (доступна в sandbox) для парсинга. Пример кода, который выполнит AI:

import pynmea2
import json
from datetime import datetime

# AI получает сырую строку от bridge
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.sentence_type == 'GGA':
        lat = msg.latitude
        lon = msg.longitude
        data = {'time': datetime.now().isoformat(), 'lat': lat, 'lon': lon}
        with open('gps_data.json', 'a') as f:
            f.write(json.dumps(data) + '\n')
except pynmea2.ParseError:
    pass

Результат:
- Непрерывная запись координат в JSON-файл.
- Возможность построить трек движения по собранным данным.
- AI может интегрировать данные с картами (например, через OpenStreetMap API) для визуализации.

Сценарий 4: Принтер этикеток — печать по команде из чата

На складе или в магазине часто нужно напечатать этикетку с ценой или штрихкодом. Многие термопринтеры (например, Zebra, TSC) управляются через COM-порт с помощью ZPL-команд. ASI Biont может сгенерировать ZPL-код и отправить его на принтер.

Как это работает:
1. Подключите принтер к COM-порту.
2. Запустите bridge.py.
3. Напишите в чате: «Напечатай этикетку для товара “Кофе молотый 250 г”, цена 450 рублей, штрихкод 4601234567890. Принтер на COM9, 9600 baud».

AI сгенерирует ZPL-команду и отправит её через serial_write_and_read:

^XA
^FO50,50^ADN,36,20^FDКофе молотый 250 г^FS
^FO50,100^ADN,36,20^FD450 руб.^FS
^FO50,150^B3N,N,100,Y,N^FD4601234567890^FS
^XZ

Результат:
- Печать этикетки за секунды без ручного ввода.
- Можно интегрировать с системой учёта: «При поступлении товара с артикулом X печатай этикетку».

Универсальный способ: execute_python для любых устройств

Если ваше устройство не поддерживает ни один из специализированных протоколов (Modbus, MQTT, OPC UA), ASI Biont подключается к нему через execute_python — AI пишет Python-скрипт, который выполняется в sandbox-окружении на сервере. Этот скрипт может использовать любую из доступных библиотек: pyserial, paramiko, paho-mqtt, pymodbus, aiohttp, opcua-asyncio и десятки других. Важно: execute_python не имеет доступа к вашим COM-портам (он в облаке), поэтому для работы с COM используется Hardware Bridge. Но для устройств, которые общаются по сети (SSH, HTTP, MQTT, Modbus TCP), это идеальный вариант.

Пример: у вас есть ESP32 с датчиком DHT22, который публикует данные в MQTT-брокер. Вы хотите, чтобы AI анализировал температуру и управлял реле. Вы пишете в чате: «Подключись к MQTT-брокеру mqtt.example.com:1883, подпишись на топик sensor/temperature, если температура выше 28 °C, опубликуй команду relay/status со значением ON».

AI сгенерирует и выполнит скрипт:

import paho.mqtt.client as mqtt
import json

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)
    temp = data['temperature']
    if temp > 28:
        client.publish('relay/status', 'ON')

client = mqtt.Client()
client.on_message = on_message
client.connect('mqtt.example.com', 1883, 60)
client.subscribe('sensor/temperature')
client.loop_start()
# Скрипт работает до таймаута (30 секунд) или до отмены

Этот подход делает ASI Biont универсальным интегратором: не нужно ждать, пока разработчики добавят поддержку нового устройства — вы просто описываете в чате, к чему подключиться и что делать, и AI сам пишет код.

Почему это выгодно: экономия времени и гибкость

Традиционная интеграция COM-устройства требует:
- Знания языка программирования (обычно Python или C++).
- Написания кода для открытия порта, парсинга, обработки ошибок.
- Развёртывания отдельного сервиса или демона.
- Внесения изменений в код при каждом новом сценарии.

С ASI Biont:
- Вы просто описываете задачу на естественном языке.
- AI пишет код за секунды.
- Изменение логики — это новое сообщение в чате.
- Bridge работает как постоянный шлюз, не требующий перезапуска при смене сценариев.

Ключевые метрики:
- Время на первую интеграцию: от 5 минут (скачать bridge, указать порт, написать запрос).
- Время на изменение сценария: 1 минута (написать новое сообщение).
- Надёжность: bridge использует промышленные методы работы с COM-портами (CancelIoEx, PurgeComm), что снижает вероятность ошибок.

Заключение

COM-порт не умер — он живёт в тысячах устройств по всему миру. AI-агент ASI Biont делает работу с ним такой же простой, как разговор в чате. Подключите Arduino, весы, GPS-трекер или принтер — и управляйте ими голосом или текстом. Никаких панелей управления, кнопок «добавить устройство» и ручного кода. Просто опишите задачу, и AI сделает всё сам.

Попробуйте интеграцию на asibiont.com — скачайте bridge, подключите устройство и напишите в чат: «Подключись к моему устройству и начни мониторинг». Остальное AI сделает за вас.

← Все статьи

Комментарии