What the Timer Object Is
The Timer object, defined in Clause 12.57 of ANSI/ASHRAE 135-2024, is a countdown timer a BACnet device exposes as an object. It counts down from a timeout value, reports how much time remains, and changes state when it expires. It can also write values to other objects at each state change, so a timer can start or stop equipment after a delay without custom logic.
Present_Value holds the remaining time, Timer_State reports whether the timer is idle, running, or expired, and Timer_Running is a simple running flag. State_Change_Values and List_Of_Object_Property_References let the timer write configured values to other objects as it transitions, using Priority_For_Writing as the command priority. When it supports intrinsic reporting the Timer applies the CHANGE_OF_TIMER event algorithm, delivering notifications through the event notification services when its state changes.
Where You’ll See It
- Delayed actions. A Timer runs a fixed interval after an event, then writes an output at expiration to start a fan, close a damper, or clear an override.
- Minimum on/off timing. A Timer enforces a minimum run or off time on equipment, holding a state until the countdown completes.
- Occupancy overrides. A tenant push-button starts a Timer that holds a zone occupied for a set period, then releases it automatically when the timer expires.
Required Properties
Clause 12.57 requires every Timer object to provide these properties. Datatypes are the spec’s names: Unsigned is an integer, BOOLEAN a true/false flag, and the BACnet-prefixed types are structured values defined by the standard. BACnetTimerState reports the timer’s phase.
| 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 timer for this object |
Present_Value | Unsigned | The time remaining on the timer |
Status_Flags | BACnetStatusFlags | Four health flags: in-alarm, fault, overridden, out-of-service |
Timer_State | BACnetTimerState | Whether the timer is idle, running, or expired |
Timer_Running | BOOLEAN | True while the timer is counting down |
Property_List | BACnetARRAY[N] of BACnetPropertyIdentifier | The list of properties this instance actually implements |
Optional Properties
The properties integrators meet most are Initial_Timeout and Default_Timeout (how long the timer runs), Expiration_Time (when it will elapse), and the State_Change_Values / List_Of_Object_Property_References pair that drives other objects at each transition. The intrinsic-reporting group generally appears or is absent as a set.
| Property | Datatype | Group |
|---|---|---|
Description | CharacterString | General |
Event_State | BACnetEventState | General |
Out_Of_Service | BOOLEAN | General |
Update_Time | BACnetDateTime | Timing |
Last_State_Change | BACnetTimerTransition | Timing |
Expiration_Time | BACnetDateTime | Timing |
Initial_Timeout | Unsigned | Timing |
Default_Timeout | Unsigned | Timing |
State_Change_Values | BACnetARRAY[7] of BACnetTimerStateChangeValue | Timing |
List_Of_Object_Property_References | BACnetLIST of BACnetDeviceObjectPropertyReference | Timing |
Priority_For_Writing | Unsigned | Timing |
Min_Pres_Value | Unsigned | Value range |
Max_Pres_Value | Unsigned | Value range |
Resolution | Unsigned | Value range |
Event_Detection_Enable | BOOLEAN | Intrinsic reporting |
Notification_Class | Unsigned | Intrinsic reporting |
Time_Delay | Unsigned | Intrinsic reporting |
Time_Delay_Normal | Unsigned | Intrinsic reporting |
Alarm_Values | BACnetLIST of BACnetTimerState | 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_Algorithm_Inhibit_Ref | BACnetObjectPropertyReference | Intrinsic reporting |
Event_Algorithm_Inhibit | BOOLEAN | Intrinsic reporting |
Reliability | BACnetReliability | Fault detection |
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
- Schedule: time-of-day and calendar control, where the Timer counts a relative interval from an event.
- Binary Value: a common target a Timer writes at expiration.
- Notification Class: routes the CHANGE_OF_TIMER notification a Timer raises.
What Chipkin Provides
The Timer object is modeled in the CAS BACnet Stack and served with its timing and state properties; the countdown and state-change behavior is object behavior the device supplies. Talk to us about modeling your device’s points.