BACnet Device Object

The BACnet Device object (Clause 12.11) is the one object every BACnet device has: its identity, capabilities, and network parameters

What the Device Object Is

The Device object, defined in Clause 12.11 of ANSI/ASHRAE 135-2024, is the one object every BACnet device has exactly one of. It carries the device’s identity (who it is, who made it, what firmware it runs), its capabilities (which services and object types it supports), its object list, and the network parameters other devices need to talk to it.

The Device object’s instance number is the device’s network-wide identity: the number a client learns from an I-Am and uses to address it. When a tool discovers a device, the first object it reads is the Device object, because everything else about the device is described there.

Where You’ll See It

  • Discovery and identification. The device list in a tool like the CAS BACnet Explorer is built from each device’s Device object identity properties.
  • Capability checks. Confirming a device supports a service or object type before relying on it means reading Protocol_Services_Supported and Protocol_Object_Types_Supported.
  • Commissioning. Setting the device instance, name, and APDU parameters, and reading Protocol_Revision to know which edition of the standard the device implements.

Required Properties

Clause 12.11 requires every Device object to provide these properties. Datatypes are the spec’s names: Unsigned is an integer, CharacterString is text, and the BACnet-prefixed types are structured values defined by the standard.

PropertyDatatypeWhat it holds
Object_IdentifierBACnetObjectIdentifierThe device instance, this device’s network-wide identity
Object_NameCharacterStringThe device name, unique across the internetwork
Object_TypeBACnetObjectTypeAlways device for this object
System_StatusBACnetDeviceStatusThe device’s overall state (operational, download-in-progress, non-operational)
Vendor_NameCharacterStringThe manufacturer’s name
Vendor_IdentifierUnsignedThe manufacturer’s BACnet vendor ID, assigned by ASHRAE
Model_NameCharacterStringThe product model
Firmware_RevisionCharacterStringThe device firmware version
Application_Software_VersionCharacterStringThe application or configuration version
Protocol_VersionUnsignedThe BACnet protocol version (1)
Protocol_RevisionUnsignedThe BACnet protocol revision, which edition of the standard the device implements
Protocol_Services_SupportedBACnetServicesSupportedA bit string of which BACnet services the device supports
Protocol_Object_Types_SupportedBACnetObjectTypesSupportedA bit string of which object types the device supports
Object_ListBACnetARRAY[N] of BACnetObjectIdentifierEvery object the device contains
Max_APDU_Length_AcceptedUnsignedThe largest message the device accepts in one exchange
Segmentation_SupportedBACnetSegmentationWhether the device can split large messages across packets, and in which direction
APDU_TimeoutUnsignedHow long the device waits for a reply before retrying, in milliseconds
Number_Of_APDU_RetriesUnsignedHow many times the device retries a request
Device_Address_BindingBACnetLIST of BACnetAddressBindingThe device’s cache of other devices’ instance-to-address bindings
Database_RevisionUnsignedA counter that changes when the device’s object database changes
Property_ListBACnetARRAY[N] of BACnetPropertyIdentifierThe list of properties this Device object implements

Object_List is often too large to read in one response; a client reads it by array index (index 0 gives the count) or uses ReadRange, which is why segmentation support matters. Reading Device 4194303 (the wildcard instance) with ReadProperty makes any device answer as its own Device object, the standard way to learn a device’s instance number.

Optional Properties

The Device object has a large optional set covering time, backup and restore, restart, and event reporting. The properties integrators meet most are Location and Description, the time properties (Local_Time, Local_Date, UTC_Offset), Max_Master and Max_Info_Frames on MS/TP devices, and Last_Restart_Reason.

PropertyDatatypeGroup
LocationCharacterStringGeneral
DescriptionCharacterStringGeneral
Serial_NumberCharacterStringGeneral
Structured_Object_ListBACnetARRAY[N] of BACnetObjectIdentifierGeneral
Max_Segments_AcceptedUnsignedSegmentation and APDU
APDU_Segment_TimeoutUnsignedSegmentation and APDU
Max_MasterUnsignedSegmentation and APDU
Max_Info_FramesUnsignedSegmentation and APDU
Local_TimeTimeTime
Local_DateDateTime
UTC_OffsetINTEGERTime
Daylight_Savings_StatusBOOLEANTime
Time_Synchronization_RecipientsBACnetLIST of BACnetRecipientTime
UTC_Time_Synchronization_RecipientsBACnetLIST of BACnetRecipientTime
Time_Synchronization_IntervalUnsignedTime
Align_IntervalsBOOLEANTime
Interval_OffsetUnsignedTime
Configuration_FilesBACnetARRAY[N] of BACnetObjectIdentifierBackup and restore
Last_Restore_TimeBACnetTimeStampBackup and restore
Backup_Failure_TimeoutUnsignedBackup and restore
Backup_Preparation_TimeUnsignedBackup and restore
Restore_Preparation_TimeUnsignedBackup and restore
Restore_Completion_TimeUnsignedBackup and restore
Backup_And_Restore_StateBACnetBackupStateBackup and restore
Last_Restart_ReasonBACnetRestartReasonRestart
Time_Of_Device_RestartBACnetTimeStampRestart
Restart_Notification_RecipientsBACnetLIST of BACnetRecipientRestart
Active_COV_SubscriptionsBACnetLIST of BACnetCOVSubscriptionCOV reporting
Active_COV_Multiple_SubscriptionsBACnetLIST of BACnetCOVMultipleSubscriptionCOV reporting
Status_FlagsBACnetStatusFlagsIntrinsic reporting
Event_StateBACnetEventStateIntrinsic reporting
ReliabilityBACnetReliabilityIntrinsic reporting
Event_Detection_EnableBOOLEANIntrinsic reporting
Notification_ClassUnsignedIntrinsic 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
Reliability_Evaluation_InhibitBOOLEANIntrinsic reporting
VT_Classes_SupportedBACnetLIST of BACnetVTClassVirtual terminal (legacy)
Active_VT_SessionsBACnetLIST of BACnetVTSessionVirtual terminal (legacy)
Audit_LevelBACnetAuditLevelAuditing
Auditable_OperationsBACnetAuditOperationFlagsAuditing
TagsBACnetARRAY[N] of BACnetNameValueTagging and profile
Profile_LocationCharacterStringTagging and profile
Deployed_Profile_LocationCharacterStringTagging and profile
Profile_NameCharacterStringTagging and profile
  • Network Port: carries the per-network address, port, and datalink settings the Device object summarizes.
  • Analog Input and the other object types: the points a Device object’s Object_List enumerates.

What Chipkin Provides

The Device object, including the full identity, capability, time, and backup-and-restore property set, is implemented in the CAS BACnet Stack; it is the foundation every device built on the stack exposes. Talk to us about modeling your device’s points.