BACnet Alarms are usually sent when an object's “STATUS_FLAG" property changes value.
To exemplify the workflow we will consider an Analog Value Object as the object the Alarm refers to (informs about).
There are 3 types of objects involved in sending BACnet Alarms:
Notification Class Object
this is the object that contains the list of BACnet devices that will receive an Alarm
the list is being kept in the property “RECIPIEN_LIST"
Event Enrollment Objects
this object monitors the “STATUS_FLAG" property of other objects and if that property changes the value it will send the Alarms
the object that it monitors is referenced by the property “OBJECT_PROPERTY_REFERENCE"
this object has a property “NOTIFICATION_CLASS" that references a Notification Class Object
when the “STATUS_FLAG" changes for the object referenced by the property “OBJECT_PROPERTY_REFERENCE", the Event Enrollment object will send an Alarm to each device in the “RECIPIEN_LIST" property of the Notification Class Object referenced by the property “NOTIFICATION_CLASS"
Setup Example:
Notification Class Objects NC1 and NC2
Analog Value Object AV1 that has property “NOTIFICATION_CLASS"=1
Event Enrollment Object EE1 that has properties "OBJECT_PROPERTY_REFERENCE"=AV1 and "NOTIFICATION_CLASS"=2
Analog Value Object
this object can be of any type that can support reporting; we chose this type just as an example
the object has a property NOTIFICATION_CLASS that references a Notification Class Object
when the "STATUS_FLAG" property changes, the object will send an Alarm to each device in the "RECIPIEN_LIST" property of the Notification Class Object referenced by the "NOTIFICATION_CLASS" property
AV1 can support two types of reporting:
Intrinsic Reporting: where it's in charge of monitoring its own state, and when this changes, it sends Alarms to the devices from the property "RECIPIEN_LIST" of NC1
Algorithm Reporting: where an external Event Enrollment object EE1 monitors the state of AV1 and when this changes it sends Alarms to the devices from the property "RECIPIEN_LIST" of NC2
The user doesn't have to restart the connector to subscribe to the notification class. The function bacnetNotificationsSubscribeConn() can be used. This function tries to subscribe to Alerts for all the points dragged from the connector. If the point is already subscribed it will have no effect. It also returns all the successful subscriptions, including the ones that were already done. There is also a function named bacnetGetNotificationSubscriptions() that returns all the current Alarm subscriptions for a connector, without doing anything else, sending any requests to the device. |