In order to sync alarms made in BACnet, the points need to exist in the DB Builder App after dragging them in from the connector.

If alarms do not automatically come in, make sure the connTuning policy is on the connector on which the points are coming from.
Here is how to create a tuning policy and adding it to a connector.

Distech Tip

For the alarms to come in from a Distech device, make sure the Recipient settings are configured in the Notification Classes. You need to add the IP Address of the machine that Desigo Optic is running on and the IP Port of which it is on.

How BACnet Alarms work

BACnet Alarms are sent when an object STATUS_FLAG property changes value.

To exemplify the workflow, consider an Analog Value Object as the object the Alarm refers to.

There following types of objects involved are:

  • Notification Class Object:
    • The object that contains the list of BACnet devices that receive an Alarm.
    • The list is being kept in the property RECIPIENT_LIST.
  • Analog Value Object:
    • This object can be of any type that can support reporting.
    • The object has a property NOTIFICATION_CLASS that references a Notification Class Object.
    • When the STATUS_FLAG property changes, the object sends an Alarm to each device in the RECIPIENT_LIST property of the Notification Class Object referenced by the NOTIFICATION_CLASS property.
  • Event Enrollment Object:
    • This object monitors the STATUS_FLAG property of other objects and if that property changes the value it sends 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 sends an Alarm to each device in the RECIPIENT_LIST property of the Notification Class Object referenced by the property NOTIFICATION_CLASS.
  • As a setup example let there be:
    • 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

AV1 can support two types of reporting:

  1. Intrinsic reporting: In charge of monitoring own state, and when this changes, it sends Alarms to the devices from the property RECIPIENT_LIST of NC1.
  2. Algorithm reporting: An external Event Enrollment object EE1 monitors the state of AV1 and when this changes, it sends Alarms to the devices from the property RECIPIENT_LIST of NC2.
  • You do not 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 has no effect, and returns all the successful subscriptions.
  • The function bacnetGetNotificationSubscriptions() returns all the current Alarm subscriptions for a connector, and sends any requests to the device.

Additional information

To subscribe, a BACnet connector needs to add itself as a recipient in the property RECIPIENT_LIST of a Notification Class Object.
For more information on how Alarms work, see the Alarms doc.

A recipient can be defined by the device ID or by the BACnet address.

How the recipient this works:

  • A recipient defined by the device ID:
    • - Every recipient is a BACnet client and has a device ID to be reachable by other BACnet devices in the network. On Desigo Optic , all connectors by default have a LocalVirtualDevice (only one for all) in the background.
    • - Only works if both the recipient (BACnet client) and the BACnet device are in the same BACnet network.
    • - If a BACnet device has a recipient with the device ID, it periodically sends WhoIs messages, querying about that device ID, saves the address that responds with IAm and sends Alarms to that address
  • A recipient defined by the BACnet Address:
    • - This is used when the recipient (BACnet client) and BACnet device are on different BACnet networks.
    • - The BACnet address referring is the local BACnet address of the recipient (the BACnet connector)
    • - The BACnet address other devices use to communicate with the BACnet connector.
    • - The same as the BACnet binding address if the binding address is not the default 0.0.0.0
    • - The recipient also needs to have the network number the BACnet client is in.

How to configure on a BACnet connector, what type of recipient to register itself as:

  • By default, a BACnet connector subscribes as a recipient using the device ID.
  • To specify how to subscribe, add the tag bacnetAlarmSubscribeType on the connector or on the connTunningPolicy. The tag has a string value that can be:
    • useDevice
    • useAddress
    • useBoth
  • When subscribing using the BACnet address, you need the local BACnet address, which is not always the same as the binding address. You can also add the tag bacnetAlarmSubscribeAddress on the connector or on the connTunningPolicy to specify the local BACnet address, e.g. bacnetAlarmSubscribeAddress: 192.168.1.23:47808. It only works for BACnet UDP addresses.
  • When subscribing using the BACnet address, you need the network number and the BACnet connector does not have any knowledge about it. This must be defined by adding the tag bacnetAlarmSubscribeNetwork on the connector or on the connTunningPolicy.
    The default value is 0.