What the Event Log Object Is
The Event Log object, defined in Clause 12.27 of ANSI/ASHRAE 135-2024, is how a BACnet device keeps a history of event notifications rather than of property values. Each record holds a received or generated event notification, timestamped, in an internal buffer for later retrieval. Where a Trend Log answers “what was this value over time,” an Event Log answers “what alarms and events happened.”
Which notifications land in the buffer is a local matter, and it can include events that were never transmitted as an APDU (Application Protocol Data Unit). The buffer is read back with the ReadRange service, and writing zero to Record_Count clears it. When an Event Log supports intrinsic reporting it applies the BUFFER_READY event algorithm, notifying recipients once Notification_Threshold new records have accumulated.
Where You’ll See It
- Alarm history. An Event Log gives operators an on-device record of alarm and event activity that survives independent of the head end (the central BMS server).
- Audit and forensics. Because it can capture events never sent on the wire, an Event Log helps reconstruct what a controller experienced during an incident.
- Automatic collection. With intrinsic reporting enabled, BUFFER_READY signals a fileserver to fetch the new records with a ReadRange request.
Required Properties
Clause 12.27 requires every Event Log object to provide these properties. Datatypes are the spec’s names: BOOLEAN is a true/false flag, Unsigned an integer, BACnetLIST of BACnetEventLogRecord is the timestamped buffer of notifications, and the other BACnet-prefixed types are structured values defined by the standard.
| Property | Datatype | What it holds |
|---|---|---|
Object_Identifier | BACnetObjectIdentifier | The object’s type and instance number, unique within the device |
Object_Name | CharacterString | The human-readable point name, unique within the device |
Object_Type | BACnetObjectType | Always event-log for this object |
Enable | BOOLEAN | Writable; turns logging on and off |
Stop_When_Full | BOOLEAN | When true, logging stops once the buffer fills instead of overwriting |
Buffer_Size | Unsigned | The maximum number of records the buffer holds |
Log_Buffer | BACnetLIST of BACnetEventLogRecord | The stored timestamped event notifications, read with ReadRange |
Record_Count | Unsigned | Writable; the number of records in the buffer, and writing zero clears it |
Total_Record_Count | Unsigned32 | The running total of records ever collected. Monotonic: it does not decrease on wrap, and rolls over from 4294967295 to 1, used as the sequence number |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Event_State | BACnetEventState | The object’s current event state. It stays normal for buffer-ready reporting, which is dispatched as a TO-NORMAL transition from NORMAL. See BUFFER_READY |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are Start_Time and Stop_Time (the window during which the log collects) and the intrinsic-reporting group that drives automatic fetching. The intrinsic-reporting group appears or is absent as a set.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Start_Time | BACnetDateTime | Logging |
Stop_Time | BACnetDateTime | Logging |
Reliability | BACnetReliability | Fault detection |
Notification_Threshold | Unsigned | Intrinsic reporting |
Records_Since_Notification | Unsigned | Intrinsic reporting |
Last_Notify_Record | Unsigned | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Event_Enable | BACnetEventTransitionBits | Intrinsic reporting |
Acked_Transitions | BACnetEventTransitionBits | Intrinsic reporting |
Notify_Type | BACnetNotifyType | Intrinsic reporting |
Event_Time_Stamps | BACnetARRAY[3] of BACnetTimeStamp | Intrinsic reporting |
Event_Message_Texts | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Message_Texts_Config | BACnetARRAY[3] of CharacterString | Intrinsic reporting |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Event_Algorithm_Inhibit_Ref | BACnetObjectPropertyReference | Intrinsic reporting |
Event_Algorithm_Inhibit | BOOLEAN | Intrinsic reporting |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Trend Log: logs a property’s value over time rather than event notifications.
- Trend Log Multiple: logs a set of properties in lockstep.
- Notification Class: routes the BUFFER_READY notification to its recipients.
What Chipkin Provides
The Event Log object stores event notifications in a ReadRange-accessible buffer with BUFFER_READY intrinsic reporting. Talk to us about modeling your device’s points.
Related Pages
- BACnet
- BACnet Objects
- BACnet ReadRange Service
- BACnet Trend Log Object
- BACnet Object Types & Properties Reference
- BACnet Total_Record_Count vs Record_Count: what the counters mean and what actually loses history
- BACnet BUFFER_READY: The Event That Fires Without a State Change: why the notification this object depends on silently never arrives