Overview

In Bacnet, alarms are Event Notifications of type alarm.

They may be sent each time a point changes its state.

A bacnet point has 3 states (that we support): 

An alarm may need to be acknowledged or not, depending on the flags set on the Event Notification.

See 13. ALARM AND EVENT SERVICES of the BACnet standard

Functionality supported by BACnet Alarms: 

Setup

The connector record may contain the tag:

- "bacnetAlarmPid" - 'Number'

It specifies the connector will only handle alarms associated with that process identifier. If the tag is missing then the connector will handle alarms associated with any process identifier.

Workflow

1. At connector startup, if the connecting device supports Event Notification, then for each Bacnet  point that was dragged in DB Builder:

2. When Finstack receives an Event Notification:

The added Bacnet Alarms can be seen in the Alarms App.
*** Brief info about the Alarms App and Alarms framework:

*** Skyspark Alarms framework allows you to create any numbers of alarms for a point. An alarm can be

*** acknowledged, and by doing so, the next time the same alarm is set (updated) the timestamp of the

*** acknowledgement will be stored.

3. Because Bacnet points have 3 states: NORMAL, OFFNORMAL and FAULT, an alarm is added for each state.

Example:

Each point may end up with a maximum of 3 different alarms. Each time an alarm arrives the timestamp of arival is stored. The alarms can be acknowledged from the Alarms App, and the acknowledgement timestamp is stored.

Acknowledging an alarm in the Alarms App will NOT send an AcknowledgeAlarm message to the device.

Tags that a bacnet alarm has (in addition to a normal alarm):

- "processIdentifier" - 'Number'
- "eventType" - 'Str'
- "notifyType" - 'Str'
- "notificationClass" - 'Number'
- "fromState" - 'Str'
- "toState" - 'Str'
- "ackRequired" - ''
- "priority" - 'Number'
- "alarmText" - 'Str'
- "timeStamp" - 'Number'
- "initiatingDeviceIdentifier" - 'Str'
- "eventObjectIdentifier" - 'Str'
- "bacnetConnRef" - 'Ref'
- "pointRef" - 'Ref;
- "last_ts" - 'DateTime'
- "his" - 'Str'
- "audit" - 'Str'

4. Special cases:

If a Bacnet alarm notification arrives it will match all the (ex.:3) DB points.

If from each device a bacnet point is dragged over different DB points, this ends up with 3 DB points  referencig 3 bacnet points, but only one Bacnet Object on the device.

If a Bacnet alarm notification arrives it will match all the (ex.:9) DB points.


Functions

Grid bacnetGetAlarms(Obj conn) - Returns the unhandled alarms of Bacnet connector.

Parameters:
 - conn: the BACnet connection used to query the object properties
Examples:
bacnetGetAlarms(@connRef).