Введение
Промышленная автоматизация на базе Modbus RTU (RS-485) — стандарт де-факто для заводов, складов и энергетических объектов. Сотни тысяч PLC, датчиков температуры, давления, расходомеров и задвижек работают именно по этой шине. Но настройка обмена данными, особенно при интеграции с современными AI-системами, часто превращается в головную боль: нужно писать парсеры, настраивать шлюзы, отлаживать тайминги. ASI Biont — AI-агент, который берёт на себя всю рутину подключения к Modbus RTU через Hardware Bridge и pyserial. В этой статье я покажу, как буквально за 10 минут настроить мониторинг датчиков температуры через RS-485, сэкономив 70% времени на интеграцию.
Что такое Modbus RTU (RS-485) и зачем его подключать к AI-агенту?
Modbus RTU — последовательный протокол поверх RS-485. Он используется для связи между контроллерами и полевыми устройствами (датчики, исполнительные механизмы). RS-485 обеспечивает физическое соединение на расстоянии до 1200 метров, что критично для промышленных объектов. Обычно данные с таких устройств собираются в SCADA-системах, но для аналитики, предиктивного обслуживания и автоматических реакций нужен AI. Подключив Modbus RTU к ASI Biont, вы получаете возможность:
- Читать регистры (температура, давление, уровень) через чат Telegram.
- Автоматически управлять задвижками и реле при превышении порогов.
- Строить тренды и получать уведомления об аномалиях.
- Избежать покупки дорогих промышленных шлюзов — достаточно USB-конвертера RS-485 и bridge.py.
Как ASI Biont подключается к Modbus RTU?
ASI Biont использует Hardware Bridge — приложение bridge.py, которое пользователь запускает на своём ПК (Windows/Linux/macOS). Bridge подключается к облаку ASI Biont через WebSocket (единственный канал связи). AI отправляет команды через industrial_command с протоколом serial://, они уходят на bridge, и bridge читает/пишет в COM-порт через pyserial локально. Пользователь указывает порт (например, COM3) и baud rate (9600, 115200 и т.д.). AI использует serial_write_and_read(data=hex_string) — атомарная операция: bridge отправляет данные в порт и сразу читает ответ. Данные передаются в hex-формате (например, data="48454c500a" для HELP+\n). Функция _parse_data_field() в bridge.py принимает как hex-строки, так и escape-последовательности (BLUE_ON\n, LED_OFF\r\n).
Почему именно этот способ? Modbus RTU — последовательный протокол, он не поддерживает IP-сети напрямую. Bridge обеспечивает безопасное соединение между локальным COM-портом и AI в облаке, не требуя открытия портов в маршрутизаторе или настройки VPN.
Практический кейс: Мониторинг температуры с Modbus RTU датчика и управление через Telegram
Проблема
На складе сырья установлены датчики температуры LMT100 (Modbus RTU, RS-485). Раньше оператор ходил с ноутбуком и опрашивал их вручную раз в смену. Это приводило к пропуску критических превышений (например, при отказе холодильной камеры). Требовалось автоматизировать сбор данных и настроить уведомления в Telegram.
Решение
Инженер скачал bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge), подключил USB-конвертер RS-485 к ПК (порт COM3, baud 9600, 8N1). Затем он описал задачу в чате с AI-агентом:
«Подключись к COM3, скорость 9600, Modbus RTU. Опрашивай slave ID 1, регистры 40001-40002 (температура). Если температура > 40°C, отправь уведомление в Telegram»
AI сгенерировал Python-скрипт для запуска в execute_python (sandbox на сервере ASI Biont), который использует pymodbus для работы поверх bridge? Нет, подвох: pymodbus работает по TCP или через последовательный порт напрямую, но bridge не предоставляет HTTP API — только WebSocket. Поэтому AI использует industrial_command с протоколом serial:// для чтения сырых Modbus-кадров. Вот реальная последовательность команд, которые AI отправляет:
- Проверка связи:
industrial_command(protocol='serial://', command='serial_write_and_read', data='48454c500a')— bridge отправляет HELP (HEX: 48 45 4c 50 0a) и ждёт ответ. - Чтение регистров: AI формирует Modbus-запрос на чтение holding registers (функция 0x03). Для slave ID 1, start address 0 (40001), count 2, CRC16.
- Запрос: 01 03 00 00 00 02 C4 0B
- Отправка:
industrial_command(protocol='serial://', command='serial_write_and_read', data='010300000002c40b') - Ответ: 01 03 04 00 A6 00 B2 7A 3B (температура: 0x00A6 = 166 = 16.6°C, 0x00B2 = 178 = 17.8°C)
AI анализирует ответ, и если значение превышает 40°C, он отправляет уведомление через Telegram Bot API:
import requests
token = "YOUR_TELEGRAM_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
message = "⚠️ Температура на складе превышает 40°C! Текущее значение: 42.3°C"
requests.post(f"https://api.telegram.org/bot{token}/sendMessage", json={"chat_id": chat_id, "text": message})
Этот код AI выполняет в sandbox (execute_python) — он не требует bridge, так как обращается к Telegram API напрямую.
Результат
Оператор получает уведомления в Telegram в реальном времени. При падении температуры ниже нормы AI может автоматически отправить команду на включение нагревателя, написав в порт: industrial_command(protocol='serial://', command='serial_write_and_read', data='010600000001480A') (запись в coil 0x0000 значения 0xFF00). Время на интеграцию: 30 минут вместо 4 часов ручного кодирования.
Автоматизация сбора данных и управления через чат
Но это только начало. ASI Biont позволяет:
- Настроить периодический опрос: AI может запустить скрипт в execute_python, который каждые 5 минут отправляет industrial_command для чтения регистров, сохраняет данные в CSV и прикрепляет график в Telegram. Важно: sandbox имеет таймаут 30 секунд, поэтому бесконечные циклы (
while True) запрещены. Вместо этого AI использует внешний планировщик (например, cron на локальном ПК, который запускает скрипт с вызовом API ASI Biont). - Управлять задвижками: AI пишет команду Modbus на запись в coil (функция 0x05) или holding register (функция 0x06).
- Создать дашборд в Telegram: AI отправляет не только текст, но и изображения с matplotlib (например, тренд температуры за последний час):
import matplotlib.pyplot as plt
import io
import requests
data = [20.1, 21.3, 22.0, 23.5, 24.8, 25.2]
times = ["10:00", "10:05", "10:10", "10:15", "10:20", "10:25"]
plt.plot(times, data)
plt.title("Температура на складе")
plt.xlabel("Время")
plt.ylabel("°C")
buf = io.BytesIO()
plt.savefig(buf, format='png')
buf.seek(0)
requests.post(f"https://api.telegram.org/bot{token}/sendPhoto",
files={"photo": buf}, data={"chat_id": chat_id})
Почему это выгодно?
| Параметр | Традиционный подход | Интеграция с ASI Biont |
|---|---|---|
| Время настройки | 4-8 часов (написание скрипта, отладка Modbus) | 10-30 минут (описать задачу в чате) |
| Необходимость программиста | Да (знание Modbus, Python, pyserial) | Нет (AI пишет код) |
| Обработка ошибок | Вручную | AI автоматически повторяет запрос при таймауте |
| Гибкость | Требует перекомпиляции при изменении | Изменить запрос в чате за секунды |
Заключение
Подключение Modbus RTU (RS-485) к AI-агенту ASI Biont через Hardware Bridge — это простой способ вдохнуть новую жизнь в промышленное оборудование. Вы получаете удалённый мониторинг, автоматические уведомления и управление через Telegram без необходимости покупать дорогие шлюзы или писать сложные интеграции. Всё, что нужно — USB-конвертер RS-485, bridge.py из дашборда и пара сообщений в чате.
Попробуйте сами: зайдите на asibiont.com, создайте API-ключ, скачайте bridge и опишите своё устройство. AI сам напишет код и подключит вас к вашему оборудованию за считанные минуты.
Комментарии