Интеграция RS-485 с AI-агентом ASI Biont: пошаговый гайд по подключению промышленных устройств через COM-порт

Промышленные сети RS-485 — это стандарт де-факто для связи на заводах, в энергетике и ЖКХ. Счетчики электроэнергии, контроллеры задвижек, датчики температуры и давления — все они часто «говорят» именно по RS-485. Но до недавнего времени чтобы собрать с них данные или управлять ими, приходилось писать собственные скрипты, разбираться в протоколах Modbus RTU, DLMS или просто в бинарных командах. AI-агент ASI Biont меняет это: теперь достаточно описать задачу на естественном языке, и AI сам напишет код интеграции, подключится к устройству через Hardware Bridge и начнет сбор данных или управление. В этой статье — реальный гайд, как это работает.

Что такое RS-485 и почему это важно для AI-автоматизации

RS-485 — это дифференциальный последовательный интерфейс, позволяющий подключать до 32 устройств на одну витую пару на расстоянии до 1200 метров. Он используется в промышленных контроллерах (PLC), приборах учета (электросчетчики, теплосчетчики), исполнительных механизмах (задвижки, клапаны) и датчиках (температуры, давления, уровня).

Типичная проблема: на объекте есть 20 счетчиков Меркурий 230 или Энергомера, которые нужно опрашивать каждый час, сохранять показания в базу и отправлять отчет в Telegram. Раньше для этого требовался разработчик, знающий Modbus RTU или DLMS/COSEM, плюс сервер для cron-задач. С ASI Biont вы просто пишете в чат: «Подключись к счетчикам на RS-485 через COM3, опрашивай каждый час, сохраняй в PostgreSQL и пришли мне график потребления». AI-агент сам сгенерирует код, запустит его и будет выполнять задачу.

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

ASI Biont работает в облаке (на Railway), поэтому для доступа к локальным COM-портам используется Hardware Bridge — небольшой Python-скрипт bridge.py, который вы запускаете на своем ПК (Windows/Linux/macOS). Он соединяется с AI-агентом через WebSocket (единственный канал связи) и выполняет команды чтения/записи в COM-порт.

Почему именно такой способ?
- Безопасность: bridge не открывает порты в интернет, соединение инициируется изнутри вашей сети.
- Гибкость: можно подключать любое количество COM-портов, менять baud rate на лету.
- Простота: не нужно настраивать VPN или статический IP.

Пошаговая настройка:
1. Зайдите в дашборд ASI Biont → Devices → Create API Key. Скопируйте токен.
2. Скачайте bridge.py (кнопка «Скачать bridge»).
3. Установите зависимости: pip install pyserial requests websockets.
4. Запустите bridge:
bash python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 9600
Если несколько портов: --ports=COM3,COM5.
5. В чате с AI-агентом напишите: «Подключись к COM3 через bridge, скорость 9600, проверь связь командой HELP».

После этого ASI Biont может отправлять и принимать данные через COM-порт с помощью инструмента industrial_command:
- industrial_command(protocol='serial://', command='serial_write_and_read', arguments={'data': '48454c500a'}) — отправить HELP и прочитать ответ.

Реальный сценарий: сбор данных с энергомониторинга

Задача: На заводе установлены 5 счетчиков электроэнергии Меркурий 230 ART-03 PQRSIN, подключенных к преобразователю интерфейсов USB-RS485. Нужно ежечасно снимать показания активной энергии (A+, кВт·ч) и отправлять в Telegram, если потребление превышает 100 кВт.

Что делает AI-агент:
1. Подключается к COM3 через bridge (baud 9600, 8N1).
2. Отправляет Modbus RTU-запрос на чтение регистра 0x0010 (активная мощность) для каждого счетчика.
3. Парсит ответ, извлекает значение в кВт.
4. Если значение > 100, отправляет сообщение в Telegram через API.
5. Сохраняет историю в CSV (или PostgreSQL).

Пример диалога в чате:

Пользователь: «Подключись к счетчикам Меркурий 230 на COM3, baud 9600. Счетчики имеют Modbus-адреса 1, 2, 3, 4, 5. Читай регистр 0x0010 (активная мощность) каждый час. Если мощность > 100 кВт, отправь мне в Telegram. Сохраняй историю в файл energy_log.csv.»

AI-агент генерирует и выполняет код. Вот как выглядит сгенерированный скрипт (он выполняется в sandbox, но команды к bridge уходят через industrial_command):

import requests
import time
import csv
from datetime import datetime

# Параметры
TELEGRAM_TOKEN = "ваш_токен"
CHAT_ID = "ваш_chat_id"
MODBUS_IDS = [1, 2, 3, 4, 5]
REGISTER = 0x0010  # регистр активной мощности
BAUD = 9600
PORT = "COM3"

def send_telegram(message):
    url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
    data = {"chat_id": CHAT_ID, "text": message}
    requests.post(url, data=data)

def read_modbus_register(device_id, reg_addr):
    # Формируем Modbus RTU запрос: адрес 0x03 (read holding registers), 2 байта
    # Для Меркурий 230 используется функция 0x03, адрес регистра 2 байта
    import struct
    # CRC16 Modbus
    def crc16(data):
        crc = 0xFFFF
        for byte in data:
            crc ^= byte
            for _ in range(8):
                if crc & 0x0001:
                    crc = (crc >> 1) ^ 0xA001
                else:
                    crc >>= 1
        return struct.pack('<H', crc)

    request = bytearray()
    request.append(device_id)  # адрес устройства
    request.append(0x03)  # функция чтения holding registers
    # адрес регистра (2 байта, big-endian)
    request.append((reg_addr >> 8) & 0xFF)
    request.append(reg_addr & 0xFF)
    # количество регистров (1 регистр = 2 байта)
    request.append(0x00)
    request.append(0x01)
    request.extend(crc16(request))

    # Отправляем через industrial_command
    # Эта команда будет отправлена bridge, который запишет в COM3 и прочитает ответ
    hex_data = request.hex()
    # В реальности здесь вызов industrial_command, но для примера показываем логику
    # response = industrial_command(protocol='serial://', command='serial_write_and_read', arguments={'data': hex_data, 'port': PORT, 'baud': BAUD})
    # Парсим ответ (первые 2 байта - адрес и функция, затем байт длины, данные, CRC)
    # Для упрощения считаем, что ответ получен и распарсен
    # Возвращаем значение регистра
    return 0  # заглушка

while True:
    for dev_id in MODBUS_IDS:
        power = read_modbus_register(dev_id, REGISTER)
        timestamp = datetime.now().isoformat()
        with open('energy_log.csv', 'a', newline='') as f:
            writer = csv.writer(f)
            writer.writerow([timestamp, dev_id, power])
        if power > 100:
            send_telegram(f"⚠️ Счетчик {dev_id}: мощность {power} кВт превысила 100 кВт!")
        time.sleep(1)  # пауза между запросами
    time.sleep(3600)  # пауза час

Важно: В sandbox не допускаются бесконечные циклы (таймаут 30 секунд). Для длительных задач AI-агент использует внешние триггеры или планировщик. В данном примере цикл показан для иллюстрации логики, но в реальности AI-агент настраивает опрос через внешний сервис (например, cron + execute_python).

Сценарий 2: управление задвижками через RS-485

Оборудование: Контроллер задвижки (например, AUMA или Элсиб) с Modbus RTU. Команды: открыть (регистр 0x0001 = 1), закрыть (0x0001 = 0), статус (регистр 0x0002).

Задача от пользователя: «Подключись к контроллеру задвижки на COM5, baud 19200, адрес 10. Если температура в цехе > 35°C, закрой задвижку. Если < 20°C, открой. Статус пиши в лог.»

AI-агент:
1. Читает температуру из другого источника (например, датчик на ESP32 по MQTT).
2. Сравнивает с порогами.
3. Отправляет Modbus-команду на запись регистра.

Пример кода (фрагмент):

# Формируем Modbus RTU запрос на запись регистра (функция 0x06)
def write_modbus_register(device_id, reg_addr, value):
    request = bytearray()
    request.append(device_id)
    request.append(0x06)  # write single register
    request.append((reg_addr >> 8) & 0xFF)
    request.append(reg_addr & 0xFF)
    request.append((value >> 8) & 0xFF)
    request.append(value & 0xFF)
    # CRC
    crc = crc16(request)
    request.extend(crc)
    # Отправка через industrial_command...

Сценарий 3: мониторинг температуры на складе

Оборудование: Датчик температуры PT100 с преобразователем RS-485 (протокол Modbus RTU).

Задача: «Опрашивай датчик на COM4, baud 9600, адрес 1, регистр 0x0000 (температура в градусах Цельсия). Если температура выходит за диапазон 2-8°C, отправь уведомление в Telegram. Строй график за сутки.»

AI-агент:
- Настраивает периодический опрос.
- При превышении порога отправляет alert.
- В конце дня генерирует график matplotlib и отправляет его в Telegram.

Почему это выгодно: AI вместо программиста

Традиционная интеграция RS-485 требует:
- Знания Modbus RTU, DLMS/COSEM или другого протокола.
- Написания кода на Python/C++ с pyserial.
- Настройки crond/systemd для периодического запуска.
- Обработки ошибок (CRC, таймауты).

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

Заключение

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

Попробуйте сами: зайдите на asibiont.com, создайте API-ключ, скачайте bridge, подключите свое RS-485 устройство и напишите в чат: «Собери данные с моего счетчика и пришли отчет». Убедитесь, насколько это быстро и удобно.

← Все статьи

Комментарии

Читайте также

12 промтов для миграции кода: Python 2→3, JS→TS, REST→GraphQL

16 июля 2026

Освоение российского трудового права: как курс с ИИ на asibiont.com трансформирует обучение HR и юристов

16 июля 2026

От 25% ошибки прогноза до 12%: Как анализ временных рядов изменил прогнозирование денежных потоков в финтех-компании

16 июля 2026

8 промтов для создания AI-агентов: LangChain, AutoGPT, CrewAI

16 июля 2026

Как «Английский для бизнеса» от asibiont.com помог мне заключить контракт с европейским партнёром: честный разбор курса

16 июля 2026

RS-485 и ASI Biont: Как подключить промышленные датчики к AI-агенту через COM-порт

16 июля 2026

Банковское право в 2026 году: как AI-обучение на Asibiont помогает разобраться в ФЗ № 395-1 и ФЗ № 86-ФЗ

16 июля 2026

Управление 3D-принтером через ИИ: интеграция Marlin и Klipper с AI-агентом ASI Biont

16 июля 2026

От 2-часовых развертываний до 12 минут: как курс DevOps и облачные технологии на Asibiont трансформирует SaaS-команды

16 июля 2026