Введение
CAN bus (Controller Area Network) — это стандарт промышленной шины, который десятилетиями используется в автомобилях, станках, роботах и системах автоматизации зданий. Данные с датчиков, состояния клапанов, ошибки контроллеров — всё это передаётся по CAN-шине. Проблема в том, что для анализа этих данных обычно нужен программист, который пишет скрипты на Python или C, а для уведомлений — ещё и Telegram-бот. ASI Biont решает эту задачу за секунды: вы просто описываете в чате, к какому CAN-адаптеру подключиться, и AI-агент сам пишет код на Python с библиотекой python-can, читает фреймы, анализирует их и отправляет уведомления. Никаких панелей управления, никаких кнопок «добавить устройство» — только диалог.
Как ASI Biont подключается к CAN bus?
ASI Biont использует industrial_command с протоколом can_bus. Для этого на компьютере, к которому физически подключён CAN-адаптер (например, USB-CAN, PCAN, Kvaser), запускается Hardware Bridge (bridge.py). Bridge подключается к облаку ASI Biont через WebSocket — единственный канал связи. Когда AI отправляет команду send_frame или read_frame, bridge выполняет её через библиотеку python-can на локальной машине и возвращает результат. Пользователю не нужно писать код — достаточно запустить bridge с параметрами:
pip install pyserial requests websockets python-can
python bridge.py --token=YOUR_API_KEY --can=can0 --bitrate=500000
Конкретный сценарий: мониторинг температуры двигателя через CAN bus
Представьте: на заводе стоит станок с ЧПУ, который передаёт температуру шпинделя по CAN-шине (ID 0x18, 2 байта данных, little-endian). Задача: если температура превышает 85°C, отправить уведомление в Telegram.
Шаг 1. Пользователь пишет в чат ASI Biont:
«Подключись к CAN-шине на интерфейсе can0 с битрейтом 500 кбит/с. Читай фреймы с ID 0x18, декодируй 2 байта как целое число (little-endian) — это температура в градусах Цельсия. Если температура > 85, отправь мне в Telegram сообщение: "⚠️ Авария: температура шпинделя {value}°C!"»
Шаг 2. AI-агент пишет Python-скрипт, который выполняется в облаке (execute_python) и использует python-can через bridge. Пример реального кода, который генерирует AI:
import can
import requests
import time
# Настройки CAN
interface = 'socketcan'
channel = 'can0'
bitrate = 500000
# Telegram
TELEGRAM_TOKEN = 'ваш_токен'
CHAT_ID = 'ваш_chat_id'
def send_telegram(message):
url = f'https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage'
requests.post(url, json={'chat_id': CHAT_ID, 'text': message})
bus = can.interface.Bus(channel=channel, interface=interface, bitrate=bitrate)
while True:
msg = bus.recv(timeout=1.0)
if msg and msg.arbitration_id == 0x18:
temp = int.from_bytes(msg.data[:2], 'little')
print(f'Temp: {temp}°C')
if temp > 85:
send_telegram(f'⚠️ Авария: температура шпинделя {temp}°C!')
time.sleep(0.1)
Шаг 3. AI запускает скрипт в sandbox-окружении. Sandbox (Railway) имеет предустановленную библиотеку python-can, но не имеет доступа к локальному CAN-адаптеру. Поэтому AI использует industrial_command с протоколом can_bus, который отправляет команды на bridge пользователя. Bridge читает фреймы и возвращает их в облако. AI анализирует данные и при необходимости отправляет сообщение в Telegram через requests.post.
Важно: В sandbox нет while True — таймаут 30 секунд. Для непрерывного мониторинга AI настраивает периодический запуск скрипта (например, каждую минуту) через industrial_command с командой read_frame.
Подводные камни
- Битрейт. CAN-шина должна быть настроена на одинаковый битрейт со всеми устройствами. Обычно 125 кбит/с (автомобили), 250 кбит/с или 500 кбит/с (промышленность). Если не знаете — попробуйте 250000.
- Фильтрация ID. Если на шине много фреймов (например, 1000 в секунду), bridge может не успевать. Используйте фильтр в
industrial_command(параметрcan_id_filter). - Завершение сессии. Не забывайте закрывать bus (bus.shutdown()) при ошибках, иначе адаптер может зависнуть.
Почему это выгодно?
- Не нужно программировать. AI пишет код за секунды под вашу конкретную задачу.
- Любое устройство. ASI Biont подключается к чему угодно: CAN, Modbus, MQTT, OPC UA, HTTP API — через
execute_pythonилиindustrial_command. - Мгновенные уведомления. Telegram, email, Slack — настройка в том же чате.
Заключение
CAN bus — это не просто автомобильный протокол, а универсальный способ сбора данных с промышленного оборудования. ASI Biont делает его доступным для любого инженера: вы описываете задачу на естественном языке, AI пишет код интеграции с python-can, настраивает мониторинг и уведомления. Попробуйте сами на asibiont.com — подключите CAN-шину к AI-агенту за 5 минут.
Комментарии