7.3 BACnetDeviceType

7.3.1 General

This OPC UA ObjectType represents a BACnet Device object type. There is exactly one BACnetDeviceType in each BACnet Device. The Object_Identifier property of the BACnetDeviceType identifies the device and is unique throughout the BACnet internetwork. This ObjectType exposes standard BACnet services through OPC UA methods. These methods may be invoked to manage the configuration of the BACnet Device.

Figure 11 shows an overview for the BACnetDeviceType with its Properties and related ObjectTypes. It is formally defined in Table 10.

Figure 11 – BACnetDeviceType overview

7.3.2 ObjectType definition

The BACnetDeviceType is formally defined in Table 10.

Table 10 – BACnetDeviceType Definition
Attribute Value
BrowseNameBACnetDeviceType
IsAbstractFalse
References Node Class BrowseName DataType TypeDefinition Other
Subtype of the BACnetObjectType defined in 7.1
0:HasComponentObjectObject_ListBaseObjectTypeM
0:HasComponentObjectStructured_Object_ListBaseObjectTypeO
0:HasComponentObjectTimeManagementBACnetTimeManagementTypeO
0:HasComponentObjectBackupRestoreBACnetBackup RestoreTypeO
0:HasComponentObjectMstpMasterBACnetMstp MasterTypeO
0:HasComponentObjectDeviceRestartBACnetDevice RestartTypeO
0:HasNotifierObject<Notifier_Object_Name>BACnetNotifier TypeOP
0:HasPropertyVariableSystem_StatusBACnetDeviceStatus0:PropertyTypeM
0:HasPropertyVariableVendor_Name0:String0:PropertyTypeM
0:HasPropertyVariableVendor_Identifier0:UInt160:PropertyTypeM
0:HasPropertyVariableModel_Name0:String0:PropertyTypeM
0:HasPropertyVariableSerial_Number0:String0:PropertyTypeM
0:HasPropertyVariableFirmware_Revision0:String0:PropertyTypeM
0:HasPropertyVariableApplication_Software_Version0:String0:PropertyTypeM
0:HasPropertyVariableLocation0:String0:PropertyTypeO
0:HasPropertyVariableProtocol_Version0:UInteger0:PropertyTypeM
0:HasPropertyVariableProtocol_Revision0:UInteger0:PropertyTypeM
0:HasPropertyVariableProtocol_Services_SupportedBACnetServices SupportedBits0:PropertyTypeM
0:HasPropertyVariableProtocol_Object_Types_SupportedBACnetObjectType SupportedBits0:PropertyTypeM
0:HasPropertyVariableMax_APDU_Length_Accepted0:UInteger0:PropertyTypeM
0:HasPropertyVariableSegmentation_SupportedBACnetSegmentation0:PropertyTypeM
0:HasPropertyVariableMax_Segments_Accepted0:UInteger0:PropertyTypeO
0:HasPropertyVariableAPDU_Segment_Timeout0:UInteger0:PropertyTypeO
0:HasPropertyVariableAPDU_Timeout0:UInteger0:PropertyTypeM
0:HasPropertyVariableNumber_Of_APDU_Retries0:UInteger0:PropertyTypeM
0:HasPropertyVariableDevice_Address_BindingBACnetAddressBinding[]0:PropertyTypeM
0:HasPropertyVariableDatabase_Revision0:UInteger0:PropertyTypeM
0:HasPropertyVariableActive_COV_SubscriptionsBACnetCOV Subscription[]0:PropertyTypeO
0:HasComponentMethodCreateObjectO
0:HasComponentMethodDeleteObjectO
0:HasComponentMethodReinitializeDeviceO
0:HasComponentMethodDeviceCommunicationControlO
0:HasComponentMethodTextMessageO
0:HasComponentMethodAddDeviceAddressBindingsO
0:HasComponentMethodRemoveDeviceAddressBindingsO
0:GeneratesEventObjectTypeBACnetNotificationType

The BACnetDeviceType ObjectType is a concrete type and can be used directly.

The components of the BACnetDeviceType have additional subcomponents which are defined in Table 11.

Table 11 – BACnetDeviceType Additional Subcomponents
BrowsePath References NodeClass BrowseName DataType TypeDefinition Others
Object_List0:HasPropertyVariableObject_ListBACnetObjectIdentifier []0:PropertyTypeM
Object_List0:HasComponentObject<BACnetObjectName>BACnetObjectTypeOP
Structured_Object_List0:HasPropertyVariableStructured_Object_ListBACnetObjectIdentifier []0:PropertyTypeM
Structured_Object_List0:HasComponentObject<BACnetStructuredView Name>BACnetStructuredViewTypeOP

7.3.3 ObjectType Description

7.3.3.1 EventNotifier Attribute

If the BACnet device object contains BACnet notification class objects, the SubscribeToEvents flag is set in the EventNotifier OPC UA Attribute.

7.3.3.2 Object Object_List

Object_List gathers the references to BACnet objects of the BACnet device provided through the BACnet property Object_List.

The OPC UA Property Object_List on the Object_List object, of DataType BACnetObjectIdentifier[], represents the BACnet property Object_List. The BACnetObjectIdentifier DataType is defined in 10.2.1. It contains a list of BACnet objects within the device.

The list of BACnetObjectTypes on the Object_List object contains the list of BACnet objects within the device. The list may be limited through configuration of the BACnetUaMapper.

7.3.3.3 Object Structured_Object_List

Structured_Object_List gathers the references to all BACnet structured view objects of the BACnet device provided through the BACnet property Structured_Object_List.

The OPC UA Property Structured_Object_List on the Structured_Object_List object, of DataType BACnetObjectIdentifier[], represents the BACnet property Structured_Object_List. The BACnetObjectIdentifier DataType is defined in 10.2.1. It contains a list of BACnet structured view objects within the device.

The list of BACnetStructuredViewTypes on the Structured_Object_List object contains the list of BACnet structured view objects within the device. The list may be limited through configuration of the BACnetUaMapper.

7.3.3.4 Object TimeManagement

This optional OPC UA Object, of type BACnetTimeManagementType, provides localized time and date information to consumers of the device object.

If an automatic time synchronization master is available, the special subtype BACnetAutomaticTimeSynchronizationMasterType is used.

7.3.3.5 Object BackupRestore

This optional OPC UA Object, of type BACnetBackupRestoreType, provides backup and restore status to consumers of the device object. This status provides information about the last restore time, backup failures, preparation and completion times, and so on.

7.3.3.6 Object MstpMaster

This optional OPC UA Object, of type BACnetMstpMasterType, describes paramters that are relevant if the device objects functions as a master on an MS/TP network.

7.3.3.7 Object DeviceRestart

This optional OPC UA Object, of type BACnetDeviceRestartType, provides information related to restarting the device. The last restart time and the set of devices that are notified when the device is restarted are provided by this object.

7.3.3.8 Notifier Objects

OPC UA Objects that have the EventNotifier Attribute set to SubscribeToEvents are so called event notifiers. They can be used by OPC UA Clients to subscribe for Events from the OPC UA Server. The OPC UA ReferenceType HasNotifier is used to build an event notifier tree starting from the Server Object.

BACnetNotifierType Objects like instances of BACnetNotificationClassTypes are used together with instances of the BACnetDeviceType to represent the OPC UA event notifier hierarchy starting from the Server object.

Figure 12 shows an example of BACnet objects referencing each other with BACnetObjectIdentifiers and the representation with OPC UA Objects and References. The example contains a BACnet Device object, one Analog Input object that creates alarms and therefore references a Notification Class object.

Figure 12 – Event notifiers in BACnet and OPC UA
7.3.3.9 Variable System_Status

This OPC UA Property, of DataType BACnetDeviceStatus, represents the BACnet property System_Status. The BACnetDeviceStatus DataType is defined in 10.4.9.

The property is an enumeration that describes the current operating state of the device. Some example states are “operational”, “non-operational”, “backup in progress”, and so forth.

7.3.3.10 Variable Vendor_Name

This OPC UA Property, of DataType String, represents the BACnet property Vendor_Name.

This property identifies the manufacturer of the BACnet device.

7.3.3.11 Variable Vendor_Identifier

This OPC UA Property, of DataType UInt16, represents the BACnet property Vendor_Identifier.

This property represents a unique identification code, assigned by ASHRAE. The code is used to identify proprietary extensions to the protocol.

7.3.3.12 Variable Model_Name

This OPC UA Property, of DataType String, represents the BACnet property Model_Name.

This property identifies the model name of the BACnet device.

7.3.3.13 Variable Serial_Number

This OPC UA Property, of DataType String, represents the BACnet property Serial_Number.

This property identifies the serial number of the BACnet device.

7.3.3.14 Variable Firmware_Revision

This OPC UA Property, of DataType String, represents the BACnet property Firmware_Revision.

This property identifies the firmware installed in the BACnet device.

7.3.3.15 Variable Application_Software_Version

This OPC UA Property, of DataType String, represents the BACnet property Application_Software_Version.

This property identifies the application software version installed in the BACnet device.

7.3.3.16 Variable Location

This optional OPC UA Property, of DataType String, represents the BACnet property Location.

This property identifies the physical location of the BACnet device.

7.3.3.17 Variable Protocol_Version

This OPC UA Property, of DataType UInteger, represents the BACnet property Protocol_Version.

This property identifies the major version of the BACnet protocol supported by this device.

7.3.3.18 Variable Protocol_Revision

This OPC UA Property, of DataType UInteger, represents the BACnet property Protocol_Revision.

7.3.3.19 Variable Protocol_Services_Supported

This OPC UA Property, of DataType BACnetServicesSupportedBits, represents the BACnet property Protocol_Services_Supported. The BACnetServicesSupportedBits DataType is defined in 10.3.6.

The BACnetServicesSupportedBits identifies the standardized protocol services that are executed by the implementation of the protocol on this device. See the BACnet specification for minimum supported service requirements.

7.3.3.20 Variable Protocol_Object_Types_Supported

This OPC UA Property, of DataType BACnetObjectTypeSupportedBits, represents the BACnet property Protocol_Object_Types_Supported. The BACnetObjectTypeSupportedBits DataType is defined in 10.3.5.

This property identifies the standardized BACnet object types (like analog inputs, binary outputs, calendars, and so on) that can be represented by this device’s implementation of the BACnet protocol. The minimum set of supported objects shall be at least Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, and Binary Value.

7.3.3.21 Variable Max_APDU_Length_Accepted

This OPC UA Property, of DataType UInteger, represents the BACnet property Max_APDU_Length_Accepted.

This property describes the maxium number of octets that may be packaged into a single application layer protocol data unit. The data type of this variable is an unsigned integer and its value shall be greater than or equal to 50.

7.3.3.22 Variable Segmentation_Supported

This OPC UA Property, of DataType BACnetSegmentation, represents the BACnet property Segmentation_Supported. The BACnetSegmentation DataType is defined in 10.4.30.

The BACnetSegmentation is an enumeration that indicates whether the BACnet device supports message segmentation and, if so, whether it supports segmented transmission, reception, or both.

7.3.3.23 Variable Max_Segments_Accepted

This optional OPC UA Property, of DataType UInteger, represents the BACnet property Max_Segments_Accepted.

The Max_Segments_Accepted property indicates the maximum number of segments of an APDU that the device will accept.

7.3.3.24 Variable APDU_Segment_Timeout

This optional OPC UA Property, of DataType UInteger, represents the BACnet property APDU_Segment_Timeout.

The APDU_Segment_Timeout property indicates the amount of time (in milliseconds) between retransmission of an APDU segment. See the BACnet specification for recommended default values and best practices.

7.3.3.25 Variable APDU_Timeout

This OPC UA Property, of DataType UInteger, represents the BACnet property APDU_Timeout.

The APDU_Timeout property indicates the amount of time (in milliseconds) between retransmissions of an APDU that requires acknowledgement, but for which no acknowledgement has been received. See the BACnet specification for recommended default values and best practices.

7.3.3.26 Variable Number_Of_APDU_Retries

This OPC UA Property, of DataType UInteger, represents the BACnet property Number_Of_APDU_Retries.

The Number_Of_APDU_Retries property indicates the maximum number of times that an ADPU is retransmitted. See the BACnet specification for recommended default values and best practices.

7.3.3.27 Variable Device_Address_Binding

This OPC UA Property, containing an array of DataType BACnetAddressBinding, represents the BACnet property Device_Address_Binding. The BACnetAddressBinding DataType is defined in 10.5.3.

The BACnetAddressBinding data type identify the actual device address that will be used when the remote device must be accessed using a BACnet service request. See the BACnet specification for rules related to zero network-number addresses and empty lists.

7.3.3.28 Variable Database_Revision

This OPC UA Property, of DataType UInteger, represents the BACnet property Database_Revision.

The Database_Revision property describes a logical revision number for the device database. The revision is incremented when an object is created, an object is deleted, an object’s name is changed, an object’s Object_Identifier property is changed, or a restore is performed. See the BACnet specification for exceptions.

7.3.3.29 Variable Active_COV_Subscriptions

This OPC UA Property, containing an array of DataType BACnetCOVSubscription, represents the BACnet property Active_COV_Subscriptions. The BACnetCOVSubscription DataType is defined in 10.5.4.

The BACnetCOVSubscription value provides a network-visible indication of those COV subscriptions that are active at any given time. When a COV subscription is created using the BACnet COV subscription services, a ew entry is added to the Active_COV_Subscriptions list. The entry is removed when the subscription is terminated.

7.3.3.30 Method CreateObject

This method represents the BACnet service CreateObject. It is used to create a new instance of an object. The BACnet properties of standard objects created with this Method may be initialized in two ways: initial values may be provided as part of the CreateObject Method call or values may be written to the newly created object using OPC UA Write.

Signature

	CreateObject (
		[in]	BACnetObjectIdentifier		ObjectSpecifier
	[in]	0:KeyValuePair[]			ListOfInitialValues
		);
	
Argument Description
ObjectSpecifierProvides the information about the BACnet object type to be created or the BACnet object identifier if the object to be created. The instance information shall be undefined if only the object type is passed in. The BACnetObjectIdentifier DataType is defined in 10.2.1.
ListOfInitialValuesA list of initial values that shall be used to initialize the values of the specified properties of the newly created object.

Method Result Codes

ResultCode Description
BadOutOfMemoryThis status is returned for the BACnet error code NO_SPACE_FOR_OBJECT
BadNotSupportedThis status is returned for the BACnet error code DYNAMIC_CREATION_NOT_SUPPORTED
BadTypeDefinitionInvalidThis status is returned for the BACnet error code UNSUPPORTED_OBJECT_TYPE
BadNodeIdInvalidThis status is returned for the BACnet error code OBJECT_IDENTIFIER_ALREADY_EXISTS
BadTypeMismatchThis status is returned for the BACnet error code INVALID_DATATYPE
BadOutOfRangeThis status is returned for the BACnet error code VALUE_OUT_OF_RANGE
BadNodeIdInvalidThis status is returned for the BACnet error code UNKNOWN_PROPERTY
BadTypeMismatchThis status is returned for the BACnet error code CHARACTER_SET_NOT_SUPPORTED
BadNotWritableThis status is returned for the BACnet error code WRITE_ACCESS_DENIED
BadTypeMismatchThis status is returned for the BACnet error code DATATYPE_NOT_SUPPORTED
7.3.3.31 Method DeleteObject

This method represents the BACnet service DeleteObject. It can be used to delete objects that may be created and deleted dynamically.

Signature

	DeleteObject (
		[in]	BACnetObjectIdentifier		ObjectIdentifier
		);
	
Argument Description
ObjectIdentifierSpecifies the BACnet object to be deleted. The BACnetObjectIdentifier DataType is defined in 10.2.1.

Method Result Codes

ResultCode Description
BadNodeIdUnknownThis status is returned for the BACnet error code UNKNOWN_OBJECT
BadUserAccessDeniedThis status is returned for the BACnet error code OBJECT_DELETION_NOT_PERMITTED
7.3.3.32 Method ReinitializeDevice

This method represents the BACnet service ReinitializeDevice. It is used to instruct a remote device to reboot itself (cold start), reset itself to some predefined initial state (warm start), or to control the backup or restore procedure. Resetting or rebooting a device is primarily initiated by a human operator for diagnostic purposes.

Remark: Since the method contains the Password, this method should only be available if the connection is encrypted.

Signature

	ReinitializeDevice (
		[in]	BACnetReinitializedStateofDevice ReinitializedStateofDevice
		[in]	0:String					Password
		);
	
Argument Description
ReinitializedStateofDeviceThis parameter allows the caller to specify the desired state of the device after its reinitialization. The BACnetReinitializedStateofDevice DataType is defined in 10.4.27.
Passwordpassword parameter.

Method Result Codes

ResultCode Description
BadInvalidStateThis status is returned for the BACnet error code CONFIGURATION_IN_PROGRESS
BadUserAccessDeniedThis status is returned for the BACnet error code PASSWORD_FAILURE
BadNoCommunicationThis status is returned for the BACnet error code COMMUNICATION_DISABLED
7.3.3.33 Method DeviceCommunicationControl

This method represents the BACnet service DeviceCommunicationControl. It is used to instruct a remote device to stop initiating communication and optionally stop responding to communication for a specified duration of time.

Remark: Since the method contains the Password, this method should only be available if the connection is encrypted.

Signature

	DeviceCommunicationControl (
		[in]	0:UInt16					TimeDurationInMinutes
		[in]	BACnetDeviceCommunicationEnabled	EnableDisable
		[in]	0:String					Password
		);
	
Argument Description
TimeDurationInMinutesThis optional parameter of DataType 0:UInt16 indicates the number of minutes that the remote device shall stop communication. If the parameter is not specified, 0 shall be passed in as value.
EnableDisableThis parameter is an enumeration that may take on the values ENABLE, DISABLE, or DISABLE_INITIATION. It is used to indicate whether the device should enable all, disable initiation, or disable all communications on the network interface. The BACnetDeviceCommunicationEnabled DataType is defined in 10.4.8.
Passwordpassword parameter.

Method Result Codes

ResultCode Description
BadUserAccessDeniedThis status is returned for the BACnet error code PASSWORD_FAILURE
BadNotSupportedThis status is returned for the BACnet error code O_FUNCTIONALITY_NOT_SUPPORTED
7.3.3.34 Method TextMessage

This method represents the BACnet services ConfirmedTextMessage and UnconfirmedTextMessage.

The UnconfirmedTextMessage service is used by a client BACnet-user to send a text message to one or more BACnet devices. This service may be broadcast, multicast, or addressed to a single recipient. This service may be used in cases where confirmation that the text message was received is not required. Messages may be prioritized into normal or urgent categories. In addition, a given text message may optionally be classified by a numeric class code or class identification string. This classification may be used by receiving BACnet devices to determine how to handle the text message. For example, the message class might indicate a particular output device on which to print text or a set of actions to take when the text message is received. In any case, the interpretation of the class is a local matter.

The ConfirmedTextMessage service is used by a client BACnet-user to send a text message to another BACnet device. This service is not a broadcast or multicast service. This service may be used in cases when confirmation that the text message was received is required. The confirmation does not guarantee that a human operator has seen the message. Messages may be prioritized into normal or urgent categories. In addition, a given text message may be optionally classified by a numeric class code or class identification string. This classification may be used by the receiving BACnet device to determine how to handle the text message. For example, the message class might indicate a particular output device on which to print text or a set of actions to take when the text is received. In any case, the interpretation of the class is a local matter.

Signature

	TextMessage (
		[in]	0:Boolean				SendUnconfirmed
		[in]	BACnetObjectIdentifier		TextMessageSourceDevice
		[in]	BACnetMessageClass		MessageClass
		[in]	BACnetMessagePriority		MessagePriority
		[in]	0:String				Message
		);
	
Argument Description
SendUnconfirmedFlag indicating if the BACnet service UnconfirmedTextMessage (TRUE) or ConfirmedTextMessage (FALSE) is used.
TextMessageSourceDeviceThis parameter, of type BACnetObjectIdentifier, shall convey the value of the Object_Identifier property of the Device object of the device that initiated this text message.
MessageClassThis parameter, if present, shall indicate the classification of the received message. The datatype of this parameter shall be a choice of Unsigned or CharacterString. The interpretation of the meaning of any particular value for this parameter shall be a local matter.
MessagePriorityThis parameter, of type ENUMERATED, shall indicate the priority for message handling: {NORMAL, URGENT}
MessageThis parameter, of type CharacterString, shall be used to convey the text message.

Method Result Codes

ResultCode Description
BadUserAccessDeniedThis status is returned for the BACnet error code PASSWORD_FAILURE
BadNotSupportedThis status is returned for the BACnet error code O_FUNCTIONALITY_NOT_SUPPORTED
7.3.3.35 Method AddDeviceAddressBindings

This Method adds entries to the BACnet property Device_Address_Binding.

Signature

	AddDeviceAddressBindings (
		[in]	BACnetAddressBinding []		AddressBindings
		[out]	0:UInt32					FirstFailedElementNumber
		);
	
Argument Description
AddressBindingsArray of address bindings to add to the entries in the BACnet property Device_Address_Binding. The BACnetAddressBinding DataType is defined in 10.5.3.
FirstFailedElementNumberThe numerical position, starting at 1, of the failed element in the AddressBindings. If the call succeeds or fails for other reasons, the returned value shall be 0.

Method Result Codes

ResultCode Description
BadNodeIdUnknownThis status is returned for the BACnet error codes UNKNOWN_OBJECT and UNKNOWN_PROPERTY
BadTypeMismatchThis status is returned for the BACnet error codes INVALID_DATATYPE and DATATYPE_NOT_SUPPORTED
BadOutOfRangeThis status is returned for the BACnet error code VALUE_OUT_OF_RANGE
BadNotWritableThis status is returned for the BACnet error code WRITE_ACCESS_DENIED
BadOutOfMemoryThis status is returned for the BACnet error code NO_SPACE_TO_ADD_LIST_ELEMENT
7.3.3.36 Method RemoveDeviceAddressBindings

This Method removes entries from the BACnet property Device_Address_Binding.

Signature

	RemoveDeviceAddressBindings (
		[in]	BACnetAddressBinding[]			AddressBindings
		[out]	0:UInt32					FirstFailedElementNumber
		);
	
Argument Description
AddressBindingsArray of address bindings to remove from the entries in the BACnet property Device_Address_Binding. The BACnetAddressBinding DataType is defined in 10.5.3.
FirstFailedElementNumberThe numerical position, starting at 1, of the failed element in the AddressBindings. If the call succeeds or fails for other reasons, the returned value shall be 0.

Method Result Codes

ResultCode Description
BadNodeIdUnknownThis status is returned for the BACnet error codes UNKNOWN_OBJECT and UNKNOWN_PROPERTY
BadTypeMismatchThis status is returned for the BACnet error codes INVALID_DATATYPE
BadOutOfRangeThis status is returned for the BACnet error code VALUE_OUT_OF_RANGE
BadNotWritableThis status is returned for the BACnet error code WRITE_ACCESS_DENIED
BadNotFoundThis status is returned for the BACnet error code LIST_ELEMENT_NOT_FOUND