next up previous contents
Next: Echelon i.LON 100 SOAP/XML Up: Existing Solutions for SOAP Previous: oBIX - Open Building   Contents

BACNet/WS - Web Services for Building Automation and Control Networks

In October 2004, the American Society of Heating, Refrigerating and Air Conditioning Engineers, Inc. (ASHRAE) released an addendum to standard 130-2004, called BACNet/WS42 where ``WS'' stands for ``Web Service''. More information about this standard can be found in [BACNET/WS].

The BACNet/WS standard is designed to be a general Web Service-based communication protocol in the industrial and home automation which can be applied to any fieldbus system. BACNet/WS is currently a public review but is expected to become standardized in the near future.

BACNet/WS does not define the SOAP message format and it does not provide WSDL code or XML Schemas. Instead, it concentrates on defining an interface that can be used by higher level programming languages, such as C++ or Visual Basic. This interface specification covers topics like data structure, data types or available Web Service methods. BACNet/WS was designed with the idea that the custom interface is preliminary to the actual SOAP/XML message specifications. However, it is expected that this or another standard will provide WSDL documents in the near future which can be used to access a BACNet/WS compliant server.

BACNet/WS stores its data in so-called ``nodes'' which are organized in a hierarchical tree structure, similar to oBIX. Nodes may have one or multiple children but always have one parent. The topmost node is called ``root node''. Nodes present their state with so-called ``attributes'', such as its value or quality. Some attributes are mandatory for a node, others are optional. One special attribute, the ``Value'', is the holder of the actual value of the node and is the only attribute that may be written.

Nodes and its attributes are addressed with a ``path'' similar to a path in a URL, such as /temperature/room2/sensor1 for a node address or /temperature/room2/sensor1:Value for an attribute of this node.

The BACNet/WS standard introduces so-called ``Reference Nodes'' which are pointers to real nodes. Reference nodes can be handled equally to their referred counterparts and are distinguished only by the special node attributes ``Reference'' and ``Aliases''43. With the use of reference nodes, multiple logical trees can be built, as depicted in figure 22. The right tree in the figure illustrates a logical/geographical data organization where reference nodes such as ``sensor1'' are referring to nodes in the left tree.

Figure 22: Data Organization in BACNet
\begin{figure}\centering
\includegraphics[scale=0.7]{graphics/bacnet_tree.eps}\end{figure}

BACNet provides the following key elements:

Localization:
BACNet/WS compliant servers may support multiple locales and return strings or specific data types in a localized format. In addition, BACNet servers have to provide data in its ``canonical'' format, which is a locale-independent standardized form44. The localized format is intended for presentation to humans while the canonicalized format is meant for machine processing.

Data Types:
The standard specifies the following data types for node attributes: None, String, Real, Integer, Multistate, Boolean, Date, Time, DateTime, Duration. Moreover, BACNet/WS defines so-called ``polymorphic'' parameters, where a specific data type cannot be assigned45. Therefore these parameters are always of the type ``string'' and have to be converted to an appropriate data type by the application.

Units:
BACNet/WS defines a special node attribute which can optionally be used to define the unit of the node value. The standard provides a huge list of units that may be used. The complete list can be found in [BACNET/WS].

Attributes:
Every BACNet compliant node contains attributes which provide information about the node and its data. The most significant attribute is the ``Value'' which contains the actual node data. The value is accompanied by the attributes ``ValueType'', ``Units'', ``Resolution'' and ``Minimum/Maximum'' which provide information about the data type and format of the value. Other interesting attributes are ``ValueAge'' for specifying the actual time the value was valid, ``HasHistory'' for informing the client that the node provides historic data and ``InAlarm'' which can be used to inform clients that the node is in a special alarm state.

Services:
The specification introduces so-called ``Services'' which represent methods for accessing and manipulating data in the server. Figure 23 gives an overview about available services.

Figure 23: Available BACNet services
\begin{figure}\centering
\includegraphics[scale=0.7]{graphics/bacnet_services.eps}\end{figure}

getValue:
This service reads data from node attributes. The returned value is polymorphically encoded and is therefore of the type ``string''. In case of an error, the server replies with an error message as defined in [BACNET/WS]. The getValue Service can also be used to retrieve arrays, in which case the returned value contains a string, consisting of array elements delimited by semicolons. The service ``getValues'' provides retrieval of multiple attributes in one Web Service call.
getArray:
The getArray service may be used to retrieve array attributes as an array of strings instead of a single string. This service is accompanied by the two services ``getArrayRange''46 and ``getArraySize''47.
getHistoryPeriodic:
[BACNET/WS] specifies historical data retrieval by the service ``getHistoryPeriodic''. The service returns an array of strings, which may be limited by the service parameters ``start'', ``count'' and ``interval''48.
setValue:
This service writes data to node attributes, which is only allowed for the attribute ``Value''. For verification purposes, the service implements a special parameter ``readback'', which - if specified - forces the server to read back the written data. In case of success, the service returns an empty string or the value, if the parameter ``readback'' is specified. The standard furthermore provides the service ``setValues'' which can be utilized to write multiple attributes at once.

BACNet/WS does not provide methods for system notifications, such as subscription. Moreover, it does not specify how to obtain information about the BACNet Server. Methods for browsing are also not defined49. However, it is possible that these missing points will be addressed in future releases of the standard.


next up previous contents
Next: Echelon i.LON 100 SOAP/XML Up: Existing Solutions for SOAP Previous: oBIX - Open Building   Contents
Hermann Himmelbauer 2006-09-27