BACnet AcknowledgeAlarm Service

AcknowledgeAlarm records that an operator saw an alarm (Clause 13.5): how it works, the error codes it returns, and which device profiles require it.

What AcknowledgeAlarm Is

AcknowledgeAlarm is an alarm-and-event service in BACnet, defined in Clause 13.5 of ANSI/ASHRAE 135-2024. A notification client uses it to tell the device that raised an alarm that a human operator has seen and responded to an event notification whose AckRequired flag was TRUE. It is a confirmed service: the device that owns the alarm answers with a result, or with an error naming why the acknowledgment could not be recorded.

Acknowledgment is about the operator, not the transport. A ConfirmedEventNotification already confirms that a device received the alarm. AcknowledgeAlarm is the separate step that records a person acted on it. Whether the acknowledgment truly came from someone with authority is a local matter for the acknowledging device.

How It Works

The client sends the acknowledging process identifier, the event object identifier, the event state being acknowledged, the timestamp copied from the original notification, an acknowledgment source string, and the time of acknowledgment. The device matches the timestamp against the most recent transition, sets the matching bit in the object’s Acked_Transitions property, and returns a positive result. It then issues an acknowledgment notification (a notification with a notify type of ACK_NOTIFICATION) to the same recipients that would receive a normal event notification for that transition, so every workstation watching the alarm learns it was acknowledged.

Where You’ll See It

  • Operator acknowledgment. When an operator clicks “acknowledge” on an alarm at a head end (the central BMS server), that action becomes an AcknowledgeAlarm request back to the device that raised the alarm.
  • Alarm-state bookkeeping. The acknowledgment sets the object’s Acked_Transitions bits, which is what tells a later GetEventInformation query that the transition no longer needs attention.
  • Multi-workstation sites. The follow-up acknowledgment notification is how a second workstation sees that someone at the first workstation already handled the alarm.

AcknowledgeAlarm Error Codes

Clause 13.5 defines the error class and code a device returns for each failure. The general error model lives in Clause 18 of the standard.

SituationError classError code
The object does not existOBJECTUNKNOWN_OBJECT
The object exists but does not support or is not configured for event generationOBJECTNO_ALARM_CONFIGURED
The requesting device is not authorized to acknowledge this alarmSERVICESSERVICE_REQUEST_DENIED
The timestamp does not match the latest timestamp for the transition being acknowledgedSERVICESINVALID_TIMESTAMP
The acknowledged event state does not match the “To State” of the original notificationSERVICESINVALID_EVENT_STATE

Reading these in the field:

  • INVALID_TIMESTAMP usually means the alarm changed state again between the notification and the acknowledgment, so the timestamp the operator is acknowledging is already stale. Re-read the current event state and acknowledge the latest transition.
  • NO_ALARM_CONFIGURED means the object exists but has no intrinsic or algorithmic reporting set up, so there is nothing to acknowledge.
  • SERVICE_REQUEST_DENIED is an authorization refusal, not a data problem: the device requires credentials this request did not carry.
  • No response at all is not an AcknowledgeAlarm error. A timeout means the request never reached the device or the reply never came back, which is a transport or addressing problem.

Profiles That Require It

AcknowledgeAlarm splits by direction. Executing it (recording the acknowledgment) comes from the AE-ACK-B building block and is required of the controllers that generate acknowledgeable alarms. Initiating it (sending the acknowledgment) comes from AE-ACK-A and is an operator-workstation behavior.

DirectionRequired by BIBBProfiles
Execute (record the acknowledgment)AE-ACK-BControllers that generate alarms: B-BC, B-AAC, and the advanced life-safety, access-control, and elevator controllers
Initiate (send the acknowledgment)AE-ACK-AOperator workstations and the operator-display profiles

What Chipkin Provides

The CAS BACnet Stack executes AcknowledgeAlarm on the server side and maintains the Acked_Transitions bookkeeping the acknowledgment notification depends on; the operator-workstation initiate side is implemented in Chipkin’s BACnet test tooling. Talk to us about adding BACnet client or server support to your device.