What is a BACnet Life Safety object?
BACnet Integration Solutions
Chipkin has BACnet integration solutions for almost every situation. We specialize in network protocol communications and have over 20+ years of experience. Click for more information:
The BACnet standard defines two Life Safety object types used for fire, safety, and security applications: Life Safety Point and Life Safety Zone. These objects provide a standardized way for BACnet clients (workstations, supervisory controllers, gateways, etc.) to monitor and control life-safety related devices and zones.
Life Safety object types
- Life Safety Point – represents a single monitored/controlled point (e.g., smoke detector, pull station, horn/strobe).
- Life Safety Zone – represents a logical grouping of points and/or zones (e.g., “Floor 3 West Fire Zone”).
Both object types are typically evaluated through two key concepts: Mode and State. Mode is usually operator-driven (e.g., enabled, disabled, test). State reflects the device or zone condition as determined by internal logic (e.g., normal, alarm, pre-alarm, fault).
For broader BACnet development and troubleshooting, you may also want: BACnet Explorer diagnostic tool and the CAS BACnet protocol stack.
Life Safety Point object
A Life Safety Point object models an individual life-safety endpoint. Typical examples include:
- Automatic fire detectors (smoke, heat, multi-criteria detectors)
- Audible/visual annunciators (sirens, sounders, horn/strobes)
- Manual initiating devices (pull stations)
Common properties and datatypes (Life Safety Point)
The table below summarizes common Life Safety Point object properties and their BACnet datatypes. (Exact required/optional status depends on the standard revision and device profile.)
| Property | Datatype |
|---|---|
| Object_Identifier | BACnet Object Identifier |
| Object_Name | Character String |
| Object_Type | BACnet Object Type |
| Present_Value | BACnet Life Safety State |
| Tracking_Value | BACnet Life Safety State |
| Description | Character String |
| Device_Type | Character String |
| Status_Flags | BACnet Status Flags |
| Event_State | BACnet Event State |
| Reliability | BACnet Reliability |
| Out_Of_Service | Boolean |
| Mode | BACnet Life Safety Mode |
| Accepted_Modes | List of BACnet Life Safety Mode |
| Time_Delay | Unsigned |
| Notification_Class | Unsigned |
| Life_Safety_Alarm_Values | List of BACnet Life Safety State |
| Alarm_Values | List of BACnet Life Safety State |
| Fault_Values | List of BACnet Life Safety State |
| Event_Enable | BACnet Event Transition Bits |
| Acked_Transitions | BACnet Event Transition Bits |
| Notify_Type | BACnet Notify Type |
| Event_Time_Stamps | BACnet ARRAY (3) of BACnet Time Stamp |
| Silenced | BACnet Silenced State |
| Operation_Expected | BACnet Life Safety Operation |
| Maintenance_Required | BACnet Maintenance |
| Setting | Unsigned |
| Direct_Reading | Real |
| Units | BACnet Engineering Units |
| Member_Of | List of BACnet Device Object Reference |
| Profile_Name | Character String |
Life Safety Zone object
The Life Safety Zone object is conceptually similar to the Life Safety Point object, but it focuses on a group of points and/or zones. A zone might represent a floor, smoke compartment, stairwell, or any logical fire zone used by a facility’s life-safety design.
Common properties and datatypes (Life Safety Zone)
Many properties are shared with the Life Safety Point object, but zone-specific properties typically include membership lists (e.g., Zone_Members).
| Property | Datatype |
|---|---|
| Object_Identifier | BACnet Object Identifier |
| Object_Name | Character String |
| Object_Type | BACnet Object Type |
| Present_Value | BACnet Life Safety State |
| Tracking_Value | BACnet Life Safety State |
| Description | Character String |
| Status_Flags | BACnet Status Flags |
| Event_State | BACnet Event State |
| Reliability | BACnet Reliability |
| Out_Of_Service | Boolean |
| Mode | BACnet Life Safety Mode |
| Accepted_Modes | List of BACnet Life Safety Mode |
| Time_Delay | Unsigned |
| Notification_Class | Unsigned |
| Life_Safety_Alarm_Values | List of BACnet Life Safety State |
| Alarm_Values | List of BACnet Life Safety State |
| Fault_Values | List of BACnet Life Safety State |
| Event_Enable | BACnet Event Transition Bits |
| Acked_Transitions | BACnet Event Transition Bits |
| Notify_Type | BACnet Notify Type |
| Event_Time_Stamps | BACnet ARRAY (3) of BACnet Time Stamp |
| Silenced | BACnet Silenced State |
| Operation_Expected | BACnet Life Safety Operation |
| Maintenance_Required | Boolean |
| Zone_Members | List of BACnet Device Object Reference |
| Member_Of | List of BACnet Device Object Reference |
| Profile_Name | Character String |
Implementation notes (Mode and State)
When integrating BACnet Life Safety objects, focus on how Mode interacts with Present_Value (State). For example, a device in TEST mode may deliberately report a non-normal state for validation purposes. Your client application should also treat Status_Flags, Reliability, and Event_State as first-class inputs when deciding whether an alarm condition should be annunciated.
>
Examples from a real automation context
The following two examples illustrate typical Life Safety objects: a Point representing a smoke detector and a Zone representing a building fire zone. The values below are structured for readability (attribute → value).
Example: Life Safety Point (smoke detector)
| Attribute | Value |
|---|---|
| Object_Identifier | (Life Safety Point, Instance 2) |
| Object_Name | SMK3W |
| Object_Type | LIFE_SAFETY_POINT |
| Present_Value | PREALARM |
| Tracking_Value | PREALARM |
| Description | Floor 3, West Zone Smoke Detector |
| Device_Type | Old Smokey model 123 |
| Status_Flags | {TRUE, FALSE, FALSE, FALSE} |
| Event_State | LIFE_SAFETY_ALARM |
| Reliability | NO_FAULT_DETECTED |
| Out_Of_Service | FALSE |
| Mode | ON |
| Accepted_Modes | {ENABLED, DISABLED, TEST} |
| Time_Delay | 10 |
| Notification_Class | 39 |
| Life_Safety_Alarm_Values | (ALARM) |
| Alarm_Values | (PREALARM) |
| Fault_Values | (FAULT) |
| Event_Enable | {TRUE, TRUE, TRUE} |
| Acked_Transitions | {TRUE, TRUE, TRUE} |
| Notify_Type | ALARM |
| Event_Time_Stamps | ((23-MAR-95, 18:50:21.2), (*-*-*, *:*:*.*), (23-MAR-95, 19:01:34.0)) |
| Silenced | SILENCE_AUDIBLE |
| Operation_Expected | RESET_ALARM |
| Maintenance_Required | NONE |
| Setting | 50 |
| Direct_Reading | 84.3 |
| Units | PERCENT-OBSCURATION-PER-METER |
| Member_Of | ((Life Safety Zone, Instance 5)) |
Example: Life Safety Zone (fire zone)
| Attribute | Value |
|---|---|
| Object_Identifier | (Life Safety Zone, Instance 2) |
| Object_Name | SMK3 |
| Object_Type | LIFE_SAFETY_ZONE |
| Present_Value | PREALARM |
| Tracking_Value | PREALARM |
| Description | Floor 3 Smoke |
| Status_Flags | {TRUE, FALSE, FALSE, FALSE} |
| Event_State | LIFE_SAFETY_ALARM |
| Reliability | NO_FAULT_DETECTED |
| Out_Of_Service | FALSE |
| Mode | ON |
| Accepted_Modes | {ENABLED, DISABLED, TEST} |
| Time_Delay | 10 |
| Notification_Class | 39 |
| Life_Safety_Alarm_Values | (ALARM) |
| Alarm_Values | (PREALARM) |
| Fault_Values | (FAULT) |
| Event_Enable | {TRUE, TRUE, TRUE} |
| Acked_Transitions | {TRUE, TRUE, TRUE} |
| Notify_Type | ALARM |
| Event_Time_Stamps | ((23-MAR-95, 18:50:21.2), (*-*-*, *:*:*.*), (23-MAR-95, 19:01:34.0)) |
| Silenced | UNSILENCED |
| Operation_Expected | SILENCE_AUDIBLE |
| Maintenance_Required | NONE |
| Zone_Members | ((Life Safety Point, Instance 22), (Life Safety Point, Instance 23)) |
| Member_Of | ((Life Safety Zone, Instance 5)) |
Technical FAQ
What is the practical difference between Mode and Present_Value?
Mode is typically an operational setting (enabled/disabled/test) controlled by an operator or supervisory logic. Present_Value is the current life-safety state (normal, alarm, pre-alarm, fault) driven by device inputs and internal evaluation.
Why do Status_Flags and Reliability matter for life-safety integration?
These fields provide quality context. A state that appears “normal” may still be unreliable or overridden (e.g., out of service). For alarming and annunciation, client logic should evaluate Present_Value along with Status_Flags, Reliability, and Event_State.
How are zones typically used in BACnet life-safety systems?
Zones group multiple points into a single conceptual fire/safety region. This supports higher-level alarming (annunciate “Floor 3 Smoke”) while still permitting point-level drill-down (identify the initiating detector).