- Описание функциональных характеристик системы
- Поддержание жизненного цикла
- Установка PromUC
- Настройка сервисов
- Обновление PromUC
- Резервное копирование и восстановление базы данных Promuc FrameWork
- Рекомендации по безопасности
- Руководство по эксплуатации и администрированию
- Module GIS
- Конфигурирование правил и сценариев
- Module Framework
- Module Interface
- Технологии проекта
- Эксплуатация КТС
- Единый сервис аутентификации
- Информация о релизах
BACnetRP¶
BACWrite.cpp
BACnet (Building Automation and Control Networks) — это стандартный протокол связи, разработанный для обеспечения взаимодействия между системами автоматизации зданий. BACnet был создан для облегчения коммуникации между различными устройствами и системами, такими как системы управления климатом, освещением, безопасностью и энергопотреблением в зданиях.
BACnet RP (BACnet Read-Write Property) — это часть стандарта BACnet, которая определяет методы чтения и записи свойств объектов в устройствах BACnet. Это позволяет управлять и настраивать параметры устройств, такие как температура, влажность, уровень освещенности и другие.
В BACnet устройства представлены в виде объектов, каждый из которых имеет определенные свойства. >Например, объект “Термостат” может иметь свойства “Текущая температура” и “Установленная температура”.
Он позволяет читать значения свойств объектов (например, текущую температуру) и записывать новые значения.
BACnet RP поддерживает многоадресную передачу, что позволяет одному запросу достигать нескольких устройств одновременно.
Узел опроса отдельных свойств устройств в сети BACnet.¶
Входные значения¶
BACRegisterRP:
iface - сетевой интерфейс, через который устройство взаимодействует в сети, берётся значение передаваемого ip
str
ip - идентификация устройства в системе Bacnet
str
port - идентификация службы на устройстве
str
cmd -
str
period - период сбора информации
int
в cекундах.block - указывает на размер блока передаваемой информации
device-instance - адрес bacnet сервера
device-name -
str
object-type - тип устройства
int
object-instance -
int
property-name -
str
property - читаемое свойство
str
description - текстовое описание
str
source -
str
RegistersCSV - количество строк в файле csv, переменная. Из класса BACRegisterRP собирается вектор RPDevices, содержащий информацию об устройствах. Данный вектор будет отправлен после того, как полностью соберется. При возникновении ошибок хотя бы в одном элементе вектор отправлен не будет.
host - значение хоста для Redis
REDIS-Port - порт для Redis. По умолчанию - 6379.
Redis собирает информацию, полученную за какой-то выбранный период времени и отправляет запрос к Bacnet.
Пример входного файла CSV:¶
ip |
port |
cmd |
period |
block |
device-instance |
device-name |
object-type |
object-instance |
property |
property-name |
description |
source |
---|---|---|---|---|---|---|---|---|---|---|---|---|
172.18.0.3 |
47808 |
rp |
550 |
50 |
0 |
bacs_demo |
2 |
1 |
area1 |
85 |
Активация ДУ-1 |
МФК/ARK-5/Активация ДУ-1 |
172.18.0.3 |
47808 |
rp |
550 |
50 |
0 |
bacs_demo |
2 |
2 |
area2 |
85 |
Активация ДУ-2 |
МФК/ARK-5/Активация ДУ-2 |
CSV
ip;port;cmd;period;block;device-instance;device-name;object-type;object-instance;property-name;property;description;source
172.18.0.4;47808;rp;3;50;0;bacnet_test;2;1;area1;85;Активация ДУ-1;МФК/ARK-5/Активация ДУ-1
172.18.0.4;47808;rp;3;50;0;enp0s3;2;2;area2;85;Активация ДУ-2;МФК/ARK-5/Активация ДУ-2
Возвращаемые значения¶
connection_status
time -
int64
values:[
property-name -
str
property - имя считываемого свойства
str
description - текстовое описание свойства
str
source - источник данных
str
value - значение свойства с устройства
str
timer - считается время выполнения запроса
double
]
Пример Json
{
"time": 1672531200000,
"values": [
{
"property-name": "area1",
"description": "Активация ДУ-1",
"source": "МФК/ARK-5/Активация ДУ-1",
"value": "22",
"timer": 0.1
},
{
"property-name": "area2",
"description": "Активация ДУ-2",
"source": "МФК/ARK-5/Активация ДУ-2",
"value": "45",
"timer": 0.15
}
]
}
Пример использования¶
Добавим в наш compose.yaml контейнер для тестирования bacnet.
bacnet:
container_name: bacnet_emul
restart: on-failure
build:
dockerfile: ./test_server/bac_eml.Dockerfile
ports:
- 47808:47808
Далее собираем наш проект и смотрим ip нашего контейнера, на который мы должны отправлять запросы.
docker inspect bacnet_emul
Для использования Bacnet в узле нам потребуется создать файл .csv, и поместить в него нашу конфигурацию.
Соберем простенькую цепочку
Выберем наш Json-файл в проводнике
Сохраняем цепочку и смотрим