Skip to content
Version 6.1.0
Contact Us

Timer

A Timer object is a countdown timer that clients can see and control. A client starts it, stops it or forces it to expire, and reads how much time remains. It can write values into other objects when it starts, expires or stops.

  • Run a fan for 15 minutes after a button press
  • Bathroom or hallway light timeout
  • Hold an override for a set time, then release it
  • Delay before a pump restarts
  • Alarm when a timer expires
Property What it holds
Present_Value Remaining time in milliseconds while the timer runs, and zero otherwise. Writing a time starts the timer.
Timer_State Idle, running or expired. A client writes idle to clear the timer.
Timer_Running True while the timer runs. Writing true starts it with Default_Timeout; writing false while it runs makes it expire.
Default_Timeout The duration used when a client starts the timer by writing Timer_Running.
State_Change_Values The value to write to the referenced properties for each kind of state change.
List_Of_Object_Property_References The properties that receive those values.

The object has no priority array. When it reports intrinsic events, the standard pairs it with the CHANGE_OF_TIMER algorithm, which goes off-normal when Timer_State enters a chosen state, typically expired.

Enable it with the STACK_OPTION_OBJECT_TYPE_TIMER build option. It is on in the full target; in the embedded target, define it yourself (see Configuring a build). CASBACnetStackDLL.h has no function dedicated to this type, so create it with BACnetStack_AddObject. The stack serves the object identifier, object type, property list and status flags itself; your callbacks serve every other property, so your application runs the countdown. To arm alarms, enable alarms for the object and call BACnetStack_SetIntrinsicChangeOfTimerAlgorithm, which needs both STACK_OPTION_ALARMS_AND_EVENTS and STACK_OPTION_OBJECT_TYPE_TIMER. Call BACnetStack_UpdateValue for Timer_State when it changes, or no event is ever sent.

Schedule, Calendar, Command

The properties ASHRAE 135-2024 clause 12.57 defines for this object type.

How to read the table:

  • Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
  • Present by default: yes means the stack presents the property as soon as you add the object; no means it is optional and you turn it on with BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code.
  • Writable is whether a client can write the property by default. Change it with BACnetStack_SetPropertyWritable.
  • not in profile means the stack does not offer this property for this object type.
  • Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
Property Datatype Conformance Present by default Writable Value when your callback does not answer
Object_Identifier BACnetObjectIdentifier R yes no Held by the stack.
Object_Name CharacterString R yes no "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1.
Object_Type BACnetObjectType R yes no Held by the stack.
Description CharacterString O no no ""
Present_Value Unsigned R1 yes no (yes while Out_Of_Service is true) No default: value-not-initialized.
Status_Flags BACnetStatusFlags R yes no Built by the stack from your callbacks.
Event_State BACnetEventState O3 no no 0
Reliability BACnetReliability O1 no no (yes while Out_Of_Service is true) 0
Out_Of_Service Boolean O no no false
Timer_State BACnetTimerState R2 yes no 0
Timer_Running Boolean R2 yes no false
Update_Time BACnetDateTime O3 no no No default: the read fails.
Last_State_Change BACnetTimerTransition O no no 0
Expiration_Time BACnetDateTime O no no No default: the read fails.
Initial_Timeout Unsigned O no no 0
Default_Timeout Unsigned O no no 0
Min_Pres_Value Unsigned O4 no no 0
Max_Pres_Value Unsigned O4 no no 0
Resolution Unsigned O no no 0
State_Change_Values BACnetARRAY[7] of BACnetTimerStateChangeValue O5 no no No default: the read fails.
List_Of_Object_Property_References BACnetLIST of BACnetDeviceObjectPropertyReference O5 no no Held by the stack.
Priority_For_Writing Unsigned(1..16) O5 no no 0
Event_Detection_Enable Boolean O3,6 no no false
Notification_Class Unsigned O3,6 no no 0
Time_Delay Unsigned O3,6 no no 0
Time_Delay_Normal Unsigned O3,6 no no 0
Alarm_Values BACnetLIST of BACnetTimerState O3,6 no no 0
Event_Enable BACnetEventTransitionBits O3,6 no no An empty bit string.
Acked_Transitions BACnetEventTransitionBits O3,6 no no An empty bit string.
Notify_Type BACnetNotifyType O3,6 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O3,6 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O6 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O6 no no ""
Event_Algorithm_Inhibit_Ref BACnetObjectPropertyReference O6 no no No default: the read fails.
Event_Algorithm_Inhibit Boolean O6,7 no no false
Reliability_Evaluation_Inhibit Boolean O8 no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Audit_Level BACnetAuditLevel O9 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O9 not in profile not in profile No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Profile_Name CharacterString O no no ""