BACnet Timer Object

The BACnet Timer object (Clause 12.57) is a countdown timer that changes state on expiration and can drive other objects

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.

PropertyDatatypeWhat it holds
Object_IdentifierBACnetObjectIdentifierThe object’s type and instance number, unique within the device
Object_NameCharacterStringThe human-readable point name, unique within the device
Object_TypeBACnetObjectTypeAlways timer for this object
Present_ValueUnsignedThe time remaining on the timer
Status_FlagsBACnetStatusFlagsFour health flags: in-alarm, fault, overridden, out-of-service
Timer_StateBACnetTimerStateWhether the timer is idle, running, or expired
Timer_RunningBOOLEANTrue while the timer is counting down
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe 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.

PropertyDatatypeGroup
DescriptionCharacterStringGeneral
Event_StateBACnetEventStateGeneral
Out_Of_ServiceBOOLEANGeneral
Update_TimeBACnetDateTimeTiming
Last_State_ChangeBACnetTimerTransitionTiming
Expiration_TimeBACnetDateTimeTiming
Initial_TimeoutUnsignedTiming
Default_TimeoutUnsignedTiming
State_Change_ValuesBACnetARRAY[7] of BACnetTimerStateChangeValueTiming
List_Of_Object_Property_ReferencesBACnetLIST of BACnetDeviceObjectPropertyReferenceTiming
Priority_For_WritingUnsignedTiming
Min_Pres_ValueUnsignedValue range
Max_Pres_ValueUnsignedValue range
ResolutionUnsignedValue range
Event_Detection_EnableBOOLEANIntrinsic reporting
Notification_ClassUnsignedIntrinsic reporting
Time_DelayUnsignedIntrinsic reporting
Time_Delay_NormalUnsignedIntrinsic reporting
Alarm_ValuesBACnetLIST of BACnetTimerStateIntrinsic reporting
Event_EnableBACnetEventTransitionBitsIntrinsic reporting
Acked_TransitionsBACnetEventTransitionBitsIntrinsic reporting
Notify_TypeBACnetNotifyTypeIntrinsic reporting
Event_Time_StampsBACnetARRAY[3] of BACnetTimeStampIntrinsic reporting
Event_Message_TextsBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Message_Texts_ConfigBACnetARRAY[3] of CharacterStringIntrinsic reporting
Event_Algorithm_Inhibit_RefBACnetObjectPropertyReferenceIntrinsic reporting
Event_Algorithm_InhibitBOOLEANIntrinsic reporting
ReliabilityBACnetReliabilityFault detection
Reliability_Evaluation_InhibitBOOLEANFault detection
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • 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.