Notification Class
A Notification Class object decides where alarm and event notifications go and how urgent they are. Objects that report events name a notification class, and the class supplies the priorities, the acknowledgement rules and the list of recipients. One class can serve many objects, so you change the destinations in one place.
Typical uses
Section titled “Typical uses”- Critical alarms sent to the operator workstation
- Maintenance events sent to a service tool
- After-hours alarms routed to a different recipient
- Separate priorities for alarms and for return-to-normal
- Events that need operator acknowledgement
Key properties
Section titled “Key properties”| Property | What it holds |
|---|---|
| Notification_Class | The number that objects use to refer to this class. It normally matches the object instance. |
| Priority | Three priorities, one each for to-offnormal, to-fault and to-normal transitions. A lower number means a more urgent event. |
| Ack_Required | Three flags saying which of those transitions an operator must acknowledge. |
| Recipient_List | The destinations. Each entry gives valid days, a time window, the recipient, a process identifier, whether to send confirmed notifications, and which transitions to send. |
How it behaves
Section titled “How it behaves”A Notification Class is not commandable and the standard applies no event algorithm to it. A client can read and write Recipient_List. The stack does not check who writes it: any client that can reach the device can add, change or remove recipients, so limit which networks can reach the device if that matters.
With the CAS BACnet Stack
Section titled “With the CAS BACnet Stack”Enable it with the STACK_OPTION_ALARMS_AND_EVENTS build option, which also turns on STACK_OPTION_OBJECT_TYPE_NOTIFICATION_CLASS. Add the object with BACnetStack_AddNotificationClassObject, passing the three priorities and the three acknowledgement flags. Do not use BACnetStack_AddObject: the object would then fail almost every read. The stack stores Priority, Ack_Required and Recipient_List itself, and you add recipients with BACnetStack_AddRecipientToNotificationClass. Only Object_Name and, if you enable it, Description come from callbacks. Point an alarming object at the class with BACnetStack_SetAlarmsAndEventsForObjectEnabled.
Related object types
Section titled “Related object types”Notification Forwarder, Event Enrollment, Alert Enrollment
Properties
Section titled “Properties”The properties ASHRAE 135-2024 clause 12.21 defines for this object type.
How to read the table:
- Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
- Present by default: yes means the stack presents the property as soon as you add the object; no means it
is optional and you turn it on with
BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code. - Writable is whether a client can write the property by default. Change it with
BACnetStack_SetPropertyWritable. - not in profile means the stack does not offer this property for this object type.
- Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
| Property | Datatype | Conformance | Present by default | Writable | Value when your callback does not answer |
|---|---|---|---|---|---|
| Object_Identifier | BACnetObjectIdentifier | R | yes | no | Held by the stack. |
| Object_Name | CharacterString | R | yes | no | "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1. |
| Object_Type | BACnetObjectType | R | yes | no | Held by the stack. |
| Description | CharacterString | O | no | no | "" |
| Notification_Class | Unsigned | O1,2 | no | no | Held by the stack. |
| Priority | BACnetARRAY[3] of Unsigned | R | yes | no | Held by the stack. |
| Ack_Required | BACnetEventTransitionBits | R | yes | no | Held by the stack. |
| Recipient_List | BACnetLIST of BACnetDestination | R | yes | no | Held by the stack. |
| Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | R | yes | no | Held by the stack. |
| Status_Flags | BACnetStatusFlags | O1 | no | no | Held by the stack. |
| Event_State | BACnetEventState | O1 | no | no | 0 |
| Reliability | BACnetReliability | O1 | no | no | 0 |
| Event_Detection_Enable | Boolean | O1,2 | no | no | false |
| Event_Enable | BACnetEventTransitionBits | O1,2 | no | no | An empty bit string. |
| Acked_Transitions | BACnetEventTransitionBits | O1,2 | no | no | An empty bit string. |
| Notify_Type | BACnetNotifyType | O1,2 | no | no | 0 |
| Event_Time_Stamps | BACnetARRAY[3] of BACnetTimeStamp | O1,2 | no | no | No default: the read fails. |
| Event_Message_Texts | BACnetARRAY[3] of CharacterString | O2 | no | no | "" |
| Event_Message_Texts_Config | BACnetARRAY[3] of CharacterString | O2 | no | no | "" |
| Reliability_Evaluation_Inhibit | Boolean | O3 | no | no | false |
| Audit_Level | BACnetAuditLevel | O4 | not in profile | not in profile | No default: the read fails. |
| Auditable_Operations | BACnetAuditOperationFlags | O4 | not in profile | not in profile | No default: the read fails. |
| Tags | BACnetARRAY[N] of BACnetNameValue | O | no | no | No default: the read fails. |
| Profile_Location | CharacterString | O | no | no | "" |
| Profile_Name | CharacterString | O | no | no | "" |
