Skip to content
Version 6.1.0
Contact Us

Device

The Device object describes the BACnet device itself: who made it, what it supports and which objects it holds. Every device has exactly one. Clients read it first to learn what they are talking to, then read its Object_List to find the rest.

  • Identify the vendor and model
  • List every object the product exposes
  • Check which services the device supports
  • Detect that the configuration changed
  • Read the device’s local date and time
Property What it holds
Object_List Every object in the device. Clients read it to discover the device’s points.
Vendor_Identifier The number ASHRAE assigned to the manufacturer.
Protocol_Services_Supported Which BACnet services the device accepts.
Protocol_Object_Types_Supported Which object types the device can hold.
Database_Revision Changes whenever the object list or object names change. Clients use it to know when to re-read.
System_Status Whether the device is operational, in a backup or restore, or otherwise limited.

The standard defines no event algorithm for a Device. Clients cannot create or delete a Device object.

Call BACnetStack_AddDevice once, before any other setup call. A second call is rejected. Add further logical devices with BACnetStack_AddDeviceToVirtualNetwork. The stack keeps Object_Identifier, Object_Type, Object_List, System_Status and Device_Address_Binding, and updates Database_Revision as objects are added. It also holds the segmentation properties, which you set with BACnetStack_SetSegmentationEnabled. Your callbacks serve the rest: Vendor_Name and Model_Name through the callback you register with BACnetStack_RegisterCallbackGetPropertyCharacterString, and Vendor_Identifier through the BACnetStack_RegisterCallbackGetPropertyUnsignedInteger callback. Until they answer, the stack serves the defaults in the table below, which name Chipkin, so serve your own. APDU_Timeout and Number_Of_APDU_Retries default to 10000 ms and 3 unless you serve them. The standard applies no event algorithm to a Device and the stack serves no event state for it, so there is nothing to arm: BACnetStack_SetAlarmsAndEventsForObjectEnabled accepts the object but changes nothing a client can see.

Network Port, File, Notification Class, Calendar

The properties ASHRAE 135-2024 clause 12.11 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 "Chipkin BACnet Device"
Object_Type BACnetObjectType R yes no Held by the stack.
System_Status BACnetDeviceStatus R yes no Held by the stack.
Vendor_Name CharacterString R yes no "Chipkin Automation Systems"
Vendor_Identifier Unsigned16 R yes no 389
Model_Name CharacterString R yes no "CAS BACnet Stack"
Firmware_Revision CharacterString R yes no The stack version as four numbers, such as "6.0.0.0".
Application_Software_Version CharacterString R yes no "v1"
Location CharacterString O no no ""
Description CharacterString O no no ""
Protocol_Version Unsigned R yes no 1
Protocol_Revision Unsigned R yes no 30, the stack’s protocol revision.
Protocol_Services_Supported BACnetServicesSupported R yes no Computed from the services that are enabled.
Protocol_Object_Types_Supported BACnetObjectTypesSupported R yes no Computed from the object types that are supported.
Object_List BACnetARRAY[N] of BACnetObjectIdentifier R yes no Held by the stack.
Structured_Object_List BACnetARRAY[N] of BACnetObjectIdentifier O no no No default: the read fails.
Max_APDU_Length_Accepted Unsigned R yes no 1476
Segmentation_Supported BACnetSegmentation R yes no Held by the stack: 0 (segmented-both) in a build with segmentation, otherwise 3 (no segmentation). Change it with BACnetStack_SetSegmentationEnabled.
Max_Segments_Accepted Unsigned O1 yes in a build with segmentation, which a default device supports (Table 12-13 footnote 1); no when the device is set to no segmentation no Held by the stack: 16 in a build with segmentation, otherwise not served. Change it with BACnetStack_SetSegmentationEnabled.
VT_Classes_Supported BACnetLIST of BACnetVTClass O2 no no 0
Active_VT_Sessions BACnetLIST of BACnetVTSession O2 no no No default: the read fails.
Local_Time Time O3,4,12 no no No default: value-not-initialized until a callback or a client write supplies one.
Local_Date Date O3,4,12 no no No default: value-not-initialized until a callback or a client write supplies one.
UTC_Offset Integer O4 no no 0
Daylight_Savings_Status Boolean O4 no no false
APDU_Segment_Timeout Unsigned O1 yes in a build with segmentation, which a default device supports (Table 12-13 footnote 1); no when the device is set to no segmentation no Held by the stack: 5000 (ms) in a build with segmentation, otherwise not served. Change it with BACnetStack_SetSegmentationEnabled.
APDU_Timeout Unsigned R yes no 10000 (ms)
Number_Of_APDU_Retries Unsigned R yes no 3: a confirmed request is sent up to four times. Serve 0 to send it once.
Time_Synchronization_Recipients BACnetLIST of BACnetRecipient O5 no yes Held by the stack.
Max_Manager Unsigned(0..127) O6 no no 0
Max_Info_Frames Unsigned O6 no no 0
Device_Address_Binding BACnetLIST of BACnetAddressBinding R yes no Held by the stack.
Database_Revision Unsigned R yes no Held by the stack; a Get callback that answers wins.
Configuration_Files BACnetARRAY[N] of BACnetObjectIdentifier O7 no no Held by the stack.
Last_Restore_Time BACnetTimeStamp O7 no no Held by the stack.
Backup_Failure_Timeout Unsigned16 O8 no yes Held by the stack.
Backup_Preparation_Time Unsigned16 O13 no no Held by the stack.
Restore_Preparation_Time Unsigned16 O13 no no Held by the stack.
Restore_Completion_Time Unsigned16 O13 no no Held by the stack.
Backup_And_Restore_State BACnetBackupState O7 no no Held by the stack.
Active_COV_Subscriptions BACnetLIST of BACnetCOVSubscription O9 no no Held by the stack.
Last_Restart_Reason BACnetRestartReason O10 no no 0
Time_Of_Device_Restart BACnetTimeStamp O10 no no No default: the read fails.
Restart_Notification_Recipients BACnetLIST of BACnetRecipient O14 no no No default: the read fails.
UTC_Time_Synchronization_Recipients BACnetLIST of BACnetRecipient O5 no yes Held by the stack.
Time_Synchronization_Interval Unsigned O5 no yes 0
Align_Intervals Boolean O5 no yes false
Interval_Offset Unsigned O5 no yes 0
Serial_Number CharacterString O11 no no ""
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Status_Flags BACnetStatusFlags O15 no no Built by the stack from your callbacks.
Event_State BACnetEventState O15 no no 0
Reliability BACnetReliability O15 no no 0
Event_Detection_Enable Boolean O15,16 no no false
Notification_Class Unsigned O15,16 no no 0
Event_Enable BACnetEventTransitionBits O15,16 no no An empty bit string.
Acked_Transitions BACnetEventTransitionBits O15,16 no no An empty bit string.
Notify_Type BACnetNotifyType O15,16 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O15,16 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O16 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O16 no no ""
Reliability_Evaluation_Inhibit Boolean O17 no no false
Active_COV_Multiple_Subscriptions BACnetLIST of BACnetCOVMultipleSubscription O18 no no Held by the stack.
Audit_Notification_Recipient BACnetRecipient O19,20 no yes No default: the read fails.
Audit_Level BACnetAuditLevel O21 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O21 not in profile not in profile No default: the read fails.
Device_UUID OctetString (Size(16)) O22 no no An empty octet string.
Authorization_Server BACnetAuthorizationServer O23 no no No default: the read fails.
Authorization_Status BACnetAuthorizationStatus O23 no no No default: the read fails.
Authorization_Policy BACnetARRAY of BACnetAuthorizationPolicy O no no No default: the read fails.
Authorization_Scope BACnetARRAY of BACnetAuthorizationScopeDescription O no no No default: the read fails.
Authorization_Cache BACnetLIST of BACnetAccessToken O24 no no No default: the read fails.
Authorization_Groups BACnetARRAY of Unsigned O no no 0
Max_Proxied_I_Ams_Per_Second Unsigned O25 no yes 0
Device_Address_Proxy_Table BACnetLIST of BACnetDeviceAddressProxyTableEntry O26 no no No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Deployed_Profile_Location CharacterString O19 no yes ""
Profile_Name CharacterString O no no ""