Введение: BACnet — язык умных зданий
BACnet (Building Automation and Control Network) — это международный стандарт (ISO 16484-5) для систем автоматизации зданий. С его помощью общаются контроллеры HVAC, освещения, пожарной сигнализации, лифты, счетчики электроэнергии и тысячи других устройств. BACnet работает поверх разных транспортных уровней: BACnet/IP (по Ethernet), BACnet MS/TP (по RS-485) и BACnet PTP (по телефонным линиям, устарел).
BMS (Building Management System) — центральный мозг здания, который собирает данные со всех BACnet-устройств и позволяет управлять ими. Типичная BMS визуализирует температуру в зонах, статус вентиляторов, потребление энергии, но часто не имеет встроенной аналитики или предиктивного обслуживания. Именно здесь AI-агент ASI Biont превращает BMS в интеллектуальную систему.
Подключение BACnet к AI-агенту даёт:
- Автоматический мониторинг сотен точек данных (температура, влажность, CO2, давление, расход воздуха).
- Предиктивное обслуживание: AI предсказывает выход из строя оборудования по трендам.
- Оптимизацию энергопотребления: AI управляет уставками HVAC в зависимости от погоды и загрузки помещений.
- Управление через чат: спросите «Какая температура в конференц-зале?» и получите ответ за секунду.
Как ASI Biont подключается к BACnet-устройствам
ASI Biont — это AI-агент, который сам пишет код интеграции. Вы не ищете драйверы, не настраиваете шлюзы — просто описываете задачу в чате. Для работы с BACnet ASI Biont использует библиотеку bac0 (Python-обёртку над BACnet Stack). Подключение возможно несколькими способами:
| Способ подключения | Транспорт | Когда использовать |
|---|---|---|
| BACnet/IP | Ethernet (UDP порт 47808) | Если BACnet-контроллер подключён к локальной сети |
| BACnet MS/TP через Hardware Bridge | RS-485 через COM-порт | Если контроллер использует последовательный интерфейс MS/TP |
| BACnet через шлюз с REST API | HTTP (aiohttp) | Если BMS предоставляет REST API поверх BACnet |
В большинстве современных BMS используется BACnet/IP — самый простой и быстрый способ. ASI Biont подключается к BACnet-сети через execute_python: AI пишет Python-скрипт, который запускается в облачном sandbox (Railway). Скрипт использует bac0 для обнаружения устройств, чтения и записи точек.
Важно: execute_python не имеет доступа к COM-портам пользователя. Если BACnet работает по RS-485 (MS/TP), потребуется Hardware Bridge — программа bridge.py, запускаемая на ПК пользователя. Bridge подключается к ASI Biont через HTTP long polling и передаёт данные с COM-порта в облако.
Подготовка: что нужно знать пользователю
Для подключения к BACnet/IP достаточно:
- IP-адрес BACnet-устройства (или broadcast-адрес всей сети).
- Номер порта (по умолчанию 47808, но может быть изменён).
- BACnet-идентификатор устройства (Device Instance) — число от 0 до 4194303.
- Список объектов (Analog Input, Analog Output, Binary Input и т.д.) — их можно запросить у BMS или AI сам просканирует.
Если BACnet-устройство находится за NAT или в другой подсети, может потребоваться BACnet-шлюз (BBMD — BACnet Broadcast Management Device). AI спросит у вас IP BBMD, если это необходимо.
Конкретный сценарий: мониторинг HVAC и управление через Telegram
Задача
В офисном здании установлен BACnet-контроллер (например, Siemens BACnet/IP), который управляет фанкойлами и датчиками температуры. Нужно:
1. Каждые 5 минут читать температуру в 10 зонах.
2. Если температура в зоне превышает 25°C — уменьшить уставку клапана на 10%.
3. Отправлять уведомления в Telegram при аномалиях.
Решение с ASI Biont
Пользователь пишет в чат:
«Подключись к BACnet-контроллеру по IP 192.168.1.100, порт 47808, Device Instance 12345. Читай аналоговые входы AI:1..AI:10 каждые 5 минут. Если значение любого AI > 25.0, уменьши аналоговый выход AO:1 (уставка клапана) на 10%. Отправляй уведомления в Telegram при каждом изменении.»
AI генерирует Python-код и выполняет его:
import bac0
import requests
import time
BACNET_IP = "192.168.1.100"
BACNET_PORT = 47808
DEVICE_INSTANCE = 12345
TELEGRAM_BOT_TOKEN = "ваш_токен"
TELEGRAM_CHAT_ID = "ваш_chat_id"
# Подключаемся к BACnet-сети
bacnet = bac0.connect(ip=BACNET_IP, port=BACNET_PORT)
device = bacnet.deivce(DEVICE_INSTANCE)
# Функция отправки в Telegram
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
requests.post(url, json=payload)
# Основной цикл мониторинга
while True:
for i in range(1, 11):
point_name = f"AI:{i}"
try:
value = device[point_name].value
if value > 25.0:
# Уменьшаем уставку клапана на 10%
current_setpoint = device["AO:1"].value
new_setpoint = current_setpoint * 0.9
device["AO:1"] = new_setpoint
msg = f"Зона {i}: температура {value}°C > 25°C. Уставка клапана снижена до {new_setpoint:.1f}%"
send_telegram(msg)
except Exception as e:
print(f"Ошибка чтения {point_name}: {e}")
time.sleep(300) # 5 минут
Важно: execute_python имеет таймаут 30 секунд. Для долговременного мониторинга AI использует промышленный инструмент industrial_command с протоколом bacnet://, который выполняет команды на bridge пользователя и может работать бесконечно. Код выше — для демонстрации логики.
Как подключить: пошаговая инструкция для пользователя
-
Установите bridge.py (если используете BACnet MS/TP или нужно долговременное подключение). Скачайте bridge.py из репозитория ASI Biont. Запустите:
bash python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=9600
Для BACnet/IP bridge не обязателен — AI может работать напрямую через execute_python, если BACnet-устройство доступно из облака (например, через публичный IP или VPN). -
Опишите задачу в чате с ASI Biont. Укажите:
- Тип устройства: BACnet (BMS)
- Параметры подключения: IP, порт, Device Instance
-
Что нужно делать: читать точки, управлять, отправлять уведомления
-
AI сгенерирует код и выполнит его. Вы сразу видите результат — чтение точек, ответы на вопросы, управление.
-
Настройте сценарии через диалог. Например:
- «Отправляй мне в Telegram отчёт каждый час: средняя температура по зонам, энергопотребление за день.»
- «Если CO2 в зоне 5 превышает 800 ppm, увеличь приток воздуха на 20%.»
Почему это выгодно
- Не нужно писать код вручную. AI пишет Python-скрипты с bac0, pymodbus, paho-mqtt или aiohttp за секунды. Вы экономите часы на изучении BACnet-стэка и отладке.
- Любое устройство. ASI Biont подключается к BACnet, Modbus, OPC UA, MQTT, HTTP API — к чему угодно. Не нужно ждать обновлений от разработчиков.
- Гибкость. Вы описываете логику на естественном языке. Хотите предиктивное обслуживание? AI построит модель на основе исторических данных. Хотите интеграцию с Telegram, Slack или email? AI настроит одним запросом.
- Безопасность. Все скрипты выполняются в изолированном sandbox. BACnet-трафик остаётся в вашей локальной сети (кроме случая с bridge, который использует зашифрованный long polling).
Реальный опыт: подводные камни
- BACnet/IP через интернет: BACnet/IP использует UDP broadcast. Если BMS находится за NAT, AI не сможет напрямую до него достучаться. Решение: используйте VPN (WireGuard, OpenVPN) или BACnet-шлюз с REST API.
- Таймауты execute_python: Для долговременного мониторинга используйте industrial_command с bacnet://. Это tool call, который выполняется на bridge пользователя и не ограничен 30 секундами.
- Разные версии BACnet: Некоторые старые контроллеры не поддерживают BACnet/IP или используют нестандартные порты. AI умеет адаптироваться — укажите точную модель, и он найдёт правильные параметры.
Пример сценария: предиктивное обслуживание вентиляции
Допустим, у вас есть BACnet-контроллер, который читает вибрацию и ток двигателя вентилятора. AI может:
1. Собирать данные за неделю.
2. Обучить модель (scikit-learn) для прогнозирования отказа.
3. При отклонении от нормы отправить предупреждение в Telegram.
Пользователь пишет:
«Читай BACnet-точки AV:1 (вибрация) и AV:2 (ток) каждую минуту. Если вибрация > 5.0 мм/с или ток > 12 А, предупреди в Telegram. Если тренд растёт — отправь отчёт с графиком.»
AI генерирует код, который использует matplotlib для построения графика и отправляет его в Telegram. Всё это — без единой строки кода со стороны пользователя.
Заключение
BACnet — мощный протокол, но его интеграция с AI-агентами долгое время требовала сложных инженерных решений. ASI Biont меняет это: вы просто описываете задачу, и AI сам подключается к BACnet-сети, читает точки, управляет оборудованием и отправляет уведомления. Никаких панелей управления, никакого ручного кода — только диалог.
Попробуйте интеграцию прямо сейчас: зайдите на asibiont.com, создайте агента и напишите в чат: «Подключись к моему BACnet-контроллеру». AI проведёт вас через все шаги и сделает ваше здание умнее за минуты.
Комментарии