Skip to content
Version 6.1.0
Contact Us

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.

Analog Input 1 and Binary Input 4 both name Notification_Class 5. Its Recipient_List sends their events to an operator workstation on weekdays from 08 to 17 for all transitions, and to an alarm printer every day for offnormal and fault only.

  • 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
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.

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.

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.

Notification Forwarder, Event Enrollment, Alert Enrollment

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 ""