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_Transitionsbits, 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.
| Situation | Error class | Error code |
|---|---|---|
| The object does not exist | OBJECT | UNKNOWN_OBJECT |
| The object exists but does not support or is not configured for event generation | OBJECT | NO_ALARM_CONFIGURED |
| The requesting device is not authorized to acknowledge this alarm | SERVICES | SERVICE_REQUEST_DENIED |
| The timestamp does not match the latest timestamp for the transition being acknowledged | SERVICES | INVALID_TIMESTAMP |
| The acknowledged event state does not match the “To State” of the original notification | SERVICES | INVALID_EVENT_STATE |
Reading these in the field:
INVALID_TIMESTAMPusually 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_CONFIGUREDmeans the object exists but has no intrinsic or algorithmic reporting set up, so there is nothing to acknowledge.SERVICE_REQUEST_DENIEDis 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.
| Direction | Required by BIBB | Profiles |
|---|---|---|
| Execute (record the acknowledgment) | AE-ACK-B | Controllers that generate alarms: B-BC, B-AAC, and the advanced life-safety, access-control, and elevator controllers |
| Initiate (send the acknowledgment) | AE-ACK-A | Operator 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.
Related Pages
- BACnet
- BACnet Services
- BACnet ConfirmedEventNotification Service
- BACnet UnconfirmedEventNotification Service
- BACnet GetEventInformation Service
- BACnet B-BC Building Controller Profile
- BACnet AcknowledgeAlarm and the Operator Workflow: the re-fire failure mode and why the timestamp match matters