# BACnet/IP

Котельная и инженерия здания по BACnet/IP прямо в чате

Объекты контроллера здания или котельной по BACnet/IP через назначенный шлюз, только чтение

## Как агент работает с BACnet/IP

Данные с объекта забирает шлюз: служба, которая ставится на компьютер в сети объекта и отправляет данные наружу только исходящим соединением. В подключении указывается адрес контроллера вида udp://10.0.5.20:47808, а подключение назначается шлюзу на вкладке «Шлюзы». Номер устройства BACnet можно не указывать: контроллер назовёт его сам.

Если список тегов пуст, шлюз читает Object_List контроллера и заводит тегом каждый объект со значением, с именем из Object_Name и единицами из Units. Вместе со значением каждый тег читает Status_Flags и Reliability: неисправность или ненулевая Reliability делают значение недостоверным, выведенный из обслуживания объект помечается сомнительным. Запросы идут пачками ReadPropertyMultiple, а устройство, которое их не поддерживает, шлюз опрашивает по одному свойству.

Подключение только читает. Шлюз не отправляет WriteProperty и команд с приоритетом: ни уставку, ни режим насоса агент через него не изменит. Массив приоритетов и значение по умолчанию двоичного объекта можно прочитать тегом, если нужно понять, кто сейчас командует точкой.

Шлюз опрашивает контроллер с заданным интервалом, по умолчанию раз в секунду, и отправляет значение при изменении (с мёртвой зоной, если она задана), а молчащий тег повторяет раз в 30 минут. История копится в хранилище и читается за любой период; если связь с облаком пропала, данные ждут на диске шлюза и приходят после её восстановления.

## Сценарии интеграции

### Температуры котельной
Агент прочитает подачу, обратку и температуры в помещениях с единицами измерения, которые называет сам контроллер, и сравнит их с уставками.

### Насосы, вентиляторы и клапаны
Агент покажет, какие насосы и вентиляторы сейчас работают, в каком режиме многопозиционные объекты и что изменилось с утра.

### Неисправные точки
Агент найдёт точки, которые контроллер помечает неисправными, недостоверными или выведенными из обслуживания, и назовёт их по именам объектов.

### Как прошла ночь
Агент поднимет историю значений за ночь или неделю и покажет, когда температура уходила от нормы и сколько это длилось.

### Опись контроллера
Без списка тегов агент увидит все объекты контроллера со значением: аналоговые, двоичные, многопозиционные, счётчики, с их именами и единицами.

### Задача по порогу
Агент заведёт задачу по событию: например, температура подачи ниже порога дольше десяти минут. Задача сработает, когда условие наступит, и когда снимется.

## Как подключить

**Перед подключением**

- Контроллер или маршрутизатор с BACnet/IP
- Компьютер в сети объекта, на котором работает служба шлюза
- Доступ с этого компьютера к контроллеру по UDP, по умолчанию порт 47808
- Для устройств MS/TP: номер сети за маршрутизатором и MAC устройства

### Узнайте IP-адрес контроллера
Нужен адрес контроллера BACnet/IP или маршрутизатора BACnet перед ним. Шлюз шлёт запросы прямо на этот адрес, по умолчанию на UDP-порт 47808.

### Откройте UDP 47808 до контроллера
Компьютер шлюза должен достучаться до контроллера по UDP и получить ответ обратно. Межсетевой экран между ними пропускает этот обмен в обе стороны.

### Для MS/TP узнайте сеть и MAC
Если устройство стоит на линии MS/TP за маршрутизатором BACnet, укажите адрес маршрутизатора, номер сети за ним и MAC устройства в этой сети, только вместе.

### Не занимайте порт системы здания
Если на компьютере шлюза уже работает система диспетчеризации на 47808, оставьте UDP-порт шлюза 0. Ставьте 47808, только если устройство отвечает на этот порт.

## Частые вопросы

### Как подключить BACnet/IP?
Поставьте службу шлюза на компьютер в сети объекта и заведите его на вкладке «Шлюзы». В подключении укажите адрес контроллера, например udp://10.0.5.20:47808, и назначьте подключение этому шлюзу. Список тегов можно оставить пустым: шлюз сам прочитает объекты контроллера.

### Что агент видит в BACnet/IP?
Аналоговые, двоичные и многопозиционные входы, выходы и значения, счётчики, целочисленные и текстовые значения контроллера, их имена и единицы, качество значения по Status_Flags и Reliability и историю значений.

### Может ли агент изменить уставку или включить насос?
Нет. Подключение только читает: шлюз не отправляет записи свойств и команд с приоритетом, поэтому значения и режимы в контроллере остаются такими, какими их выставили вы или система диспетчеризации.

### Устройство стоит на линии MS/TP. Как до него достучаться?
Через маршрутизатор BACnet: в подключении укажите адрес маршрутизатора, а в дополнительных полях номер сети за ним и MAC устройства в этой сети (у станции MS/TP это один байт, например 05). Оба поля заполняются только вместе.
