What the Lighting Output Object Is
The Lighting Output object, defined in Clause 12.54 of ANSI/ASHRAE 135-2024, is how a BACnet device represents a dimmable lighting output. It is analog in nature: Present_Value is a normalized level from 0.0% (off) to 100.0% (brightest). What sets it apart from a plain Analog Output is a set of lighting-specific behaviors built into the object, so a controller does not have to program fades, ramps, steps, and occupant blink-warnings itself.
The level can be set two ways: writing an absolute value to Present_Value, which is commandable through a priority array, or writing Lighting_Command to trigger a ramp, step, fade, or blink-warn. The blink-warn mechanism flashes the lights to warn occupants before an automatic shut-off, holding them on for an egress time first. Lighting Output objects have no off-normal event algorithm (the spec assigns them the NONE algorithm), so their intrinsic reporting is limited to fault conditions rather than a value alarm.
Where You’ll See It
- Dimmable fixtures and zones. A 0-10V, DALI (Digital Addressable Lighting Interface), or networked driver channel a lighting controller dims is a Lighting Output object.
- Lighting controllers. Devices carrying the B-LD Lighting Device profile host Lighting Output objects, often driven by a B-LS Lighting Supervisor or a Channel fan-out.
- Scheduled scenes with egress warning. A scheduler writes a WARN_RELINQUISH lighting command at end of day, the lights blink to warn occupants, stay on for the egress time, then relinquish.
How Commanding Works
Writing an absolute level to Present_Value does not set the output directly. It places the value in one of 16 slots of the Priority_Array, chosen by the write’s priority (1 = highest, 16 = lowest). The object presents the highest-priority non-Null slot and drives the light to match. Writing Null at a priority clears that slot; when every slot is Null, the output falls back to Relinquish_Default. Current_Command_Priority reports which slot is in control. This is the same priority-array arbitration used by an Analog Output.
Lighting_Command layers the lighting-specific functions on top: a WriteProperty to it can ramp or fade the level over time, step it up or down, or issue a blink-warn (WARN, WARN_RELINQUISH, or WARN_OFF) at a chosen priority. Tracking_Value reports the actual clamped output while a transition is in progress, and In_Progress reports whether a fade or ramp is currently running.
Required Properties
Clause 12.54 requires every Lighting Output object to provide these properties. Datatypes are the spec’s names: REAL is a floating-point number, Unsigned an integer, BOOLEAN a true/false flag, and the 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 lighting-output for this object |
Present_Value | REAL | The commanded normalized level, 0.0 to 100.0%. Writable, but through the priority array, not as a direct store |
Tracking_Value | REAL | The actual output level, clamped and updated as a transition runs |
Lighting_Command | BACnetLightingCommand | Writable command that triggers ramp, step, fade, or blink-warn behavior |
In_Progress | BACnetLightingInProgress | Whether a fade, ramp, or other transition is currently running |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Out_Of_Service | BOOLEAN | When true, Present_Value is decoupled from the physical output for testing |
Blink_Warn_Enable | BOOLEAN | Whether the blink-warn mechanism is allowed |
Egress_Time | Unsigned | How long the lights stay on after a warn-relinquish, in seconds |
Egress_Active | BOOLEAN | Whether an egress countdown is currently running |
Default_Fade_Time | Unsigned | The fade duration used when a command specifies none |
Default_Ramp_Rate | REAL | The ramp rate used when a command specifies none |
Default_Step_Increment | REAL | The step size used when a command specifies none |
Priority_Array | BACnetPriorityArray | The 16 command slots; the highest-priority non-Null slot wins |
Relinquish_Default | REAL | The level taken when every priority slot is Null |
Lighting_Command_Default_Priority | Unsigned | The priority used for lighting commands that do not specify one |
Current_Command_Priority | BACnetOptionalUnsigned | Which priority slot (1-16) is currently in control, or none |
Last_On_Value | REAL | The level the output held the last time it was on, used to restore it |
Default_On_Value | REAL | The level used when the output is turned on without a specified level |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are the lighting group (Min_Actual_Value, Max_Actual_Value, High_End_Trim, Low_End_Trim, Feedback_Value), the power-metering fields (Power, Instantaneous_Power), and the color companions (Color_Reference, Override_Color_Reference). The intrinsic-reporting group generally appears or is absent as a set and reports faults only. The Audit_Level, Auditable_Operations, and Audit_Priority_Filter properties are the audit-logging controls added in 135-2024.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Reliability | BACnetReliability | Fault detection |
Transition | BACnetLightingTransition | Lighting |
Feedback_Value | REAL | Lighting |
Power | REAL | Lighting |
Instantaneous_Power | REAL | Lighting |
Min_Actual_Value | REAL | Lighting |
Max_Actual_Value | REAL | Lighting |
High_End_Trim | REAL | Lighting |
Low_End_Trim | REAL | Lighting |
Trim_Fade_Time | Unsigned | Lighting |
Color_Reference | BACnetObjectIdentifier | Lighting |
Color_Override | BOOLEAN | Lighting |
Override_Color_Reference | BACnetObjectIdentifier | Lighting |
COV_Increment | REAL | COV reporting |
Event_State | BACnetEventState | Intrinsic reporting |
Event_Detection_Enable | BOOLEAN | 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 |
Reliability_Evaluation_Inhibit | BOOLEAN | Fault detection |
Value_Source | BACnetValueSource | Commanding |
Value_Source_Array | BACnetARRAY[16] of BACnetValueSource | Commanding |
Last_Command_Time | BACnetTimeStamp | Commanding |
Command_Time_Array | BACnetARRAY[16] of BACnetTimeStamp | Commanding |
Audit_Level | BACnetAuditLevel | Auditing |
Auditable_Operations | BACnetAuditOperationFlags | Auditing |
Audit_Priority_Filter | BACnetOptionalPriorityFilter | Auditing |
Tags | BACnetARRAY[N] of BACnetNameValue | Tagging and profile |
Profile_Location | CharacterString | Tagging and profile |
Profile_Name | CharacterString | Tagging and profile |
Related Objects
- Binary Lighting Output: the on/off lighting counterpart with the same blink-warn model but no dimming.
- Analog Output: the general-purpose commandable analog output, without lighting-specific commands.
- Channel: fans a single written value out to many lighting outputs at once through the WriteGroup service.
What Chipkin Provides
The Lighting Output object, including its priority array, lighting commands, and blink-warn egress model, is a first-class object type in the CAS BACnet Stack. Talk to us about modeling your device’s points.