Skip to main content

BACnetServer

BACnet is a protocol developed by ASHRAE for building automation and control networking, specifically designed to meet the communication needs of building automation and control systems for applications such as heating, ventilating, air-conditioning control, lighting control, access control and fire detection systems. HSYCO conforms to a functional subset of the BACnet protocol, as defined in ANSI/ASHRAE Standard 135-2010. HSYCO can be configured as a BACnet/IP client or server device. BACnet support is implemented as an I/O Server with a data point representation that you can use in the EVENTS language and Java to read and write BACnet’s objects and properties, and to manage asynchronous notification services.

note

The BACnet Vendor Identification Number that has been issued by ASHRAE to HSYCO S.r.l. (formerly Home Systems Consulting SpA) is 590.

Communication

HSYCO supports BACnet/IP, where the BACnet messaging protocol is transported over standard IP networks, over local networks. Routing of BACnet traffic is currently not supported by the HSYCO BACnet/IP I/O Server. You should configure only one I/O Server for each LAN used for BACnet traffic. Support for multiple BACnet/IP local networks is achieved by configuring one I/O Server for each network.

note

The BACnetServer I/O Server does not support segmented messages.

HSYCO Configuration

Add a BACnetServer I/O Server in the I/O Servers section of the Settings and set its parameters:

Communication

  • IP Address: broadcast IP address of the LAN used for BACnet traffic (e.g. 192.168.1.255)
  • IP Port: TCP/IP port to use, leave blank to use default port 47808.

High Availability

  • Shutdown when inactive: defaults to false.

Options

IDDefaultValuesDescription
deviceid5900000 ... 4194303BACnet device identifier assigned to the HSYCO BACnetServer
disableverbosedumpfalsetruewhen verbose log is enabled, don’t write IP packets dump to the log files
falsewhen verbose log is enabled, all BACnet IP packets are written to the log files
eventslogfalsetrueif the general eventsLog option is also true in System Settings, BACnet events for this gateway are written in the log files
falseBACnet events for this gateway are not written in the log files, even if the eventsLog option is true in System Settings
maxsubscriptions0 ... Nnumber of maximum subscriptions allowed at the same time

BACnetServer Utility

The BACnetServer Utility provides a graphical interface to show, create and delete objects, and modify any supported property's values.

Datapoints

The following services are supported:

  • Alarm and Event Services:
    • ConfirmedCOVNotification
    • UnconfirmedCOVNotification
    • SubscribeCOV
    • SubscribeCOVProperty
  • Object Access Services:
    • ReadProperty
    • WriteProperty
  • Remote Device Management Services:
    • Who-Is
    • I-Am

The BACnetServer I/O Server supports all standard object types and properties for the ReadProperty service, while object’s properties that could be written using the WriteProperty service are listed in the supported object types table.

Following HSYCO’s naming convention for BACnet, all object types and properties are written in lowercase letters with no spaces or underscore characters. For example, Present_Value is written as presentvalue, and the binary input object type is written as binaryinput.

The BACnet datapoint names always begin with the same format:

<object_type>.<object_id>

where <object_type> is the object type name with no spaces and all lowercase and <object_id> is the object instance numeric identifier.

Data point names returning properties values also have the object property identifier at the end with no spaces and all lowercase characters:

<object_type>.<object_id>.<property_id>

where <property_id> is the property name with no spaces and all lowercase.

For example this datapoint

analogoutput.1.presentvalue

represents the present value of the analog output BACnet object "1".

Datapoints Table

IDValueR/WDescription
<object_type>.<object_id>.<property_id>/<P><value>Wwrites the <value> in the <property_id> property of <object_type>.<object:id> object, formatted according to the application datatype. If the <object_id> does not exist, it will be created as a dinamic object, that will last until HSYCO is restarted.
active.subscriptions<value>Rcount of active subscriptions to objects or properties.

COV Notifications

The BACnetServer I/O Server supports Confirmed and Unconfirmed COVSubscriptions to objects and properties. The Unconfirmed type is a less reliable notification mechanism, but more efficient in terms of network usage and devices workload. After successfully subscribing, even with the COVIncrement property set, the first Change Of Value is always notified to clients. After that, the COVIncrement property, if set, is taken into consideration when notifying clients.

Supported Object Types

Object TypeWritable Properties
accumulator* description * devicetype * presentvalue * pulserate * valuebeforechange * valueset
analoginput* description * devicetype * covincrement * presentvalue
analogoutput* description * devicetype * covincrement * presentvalue * relinquishdefault
analogvalue* description * covincrement * presentvalue * relinquishdefault
binaryinput* activetext * description * devicetype * inactivetext * presentvalue
binaryoutput* activetext * description * devicetype * inactivetext * presentvalue * relinquishdefault
binaryvalue* activetext * description * inactivetext * presentvalue * relinquishdefault
command* description * presentvalue
device* description
multistateinput* description * devicetype * presentvalue
multistateoutput* description * devicetype * presentvalue * relinquishdefault
multistatevalue* description * presentvalue

Supported Application Datatypes

Tag#DescriptionHSYCO Data Type
0Nullnull
1Boolean0: false 1: true
2Unsigned Integer0 ... (232 - 1)
3Signed Integer-231 ... (231 - 1)
4Real (IEEE-754 floating point)floating point number (with decimal point separator)
5Double (IEEE-754 double precision floating point)double precision floating point number (with decimal point separator)
6Octet Stringthe hexadecimal representation of byte values, for example: 3b0ac2ff
7Character Stringa string. The default character set is UTF-8. Additional supported character sets are: ISO-8859-1, UCS-2, EUC-JP
8Bit Stringa string representing a sequence of bit values, for example: 111010001
9Enumerated0 ... (232 - 1)
10Date<yyyy>/<mm>/<dd>[/<dow>]<yyyy> is the year number; a * character is a wildcard matching any year, or an unspecified value.<mm> is the month number, with January as 1; a * character is a wildcard matching any month, or an unspecified value; odd represent all odd months; even represent all even months.<dd> is the day number, starting from 1 for the first day of the month; a * character is a wildcard matching any day, or an unspecified value; odd represent all odd days; even represent all even days; last represent the last day of the month.<dow> is the week day, and is only present if set to a day of the week, and not to the wildcard/unspecified value; days are represented as mon, tue, wed, thu, fri, sat, sun
11Time<hh>:<mm>:<ss>.<ff><hh> is the hour, using a 24-hour clock from 0 to 23; a * character is a wildcard matching any hour, or an unspecified value.<mm> is the minute, from 0 through 59; a * character is a wildcard matching any minute, or an unspecified value.<ss> is the seconds, from 0 through 59; a * character is a wildcard matching any second, or an unspecified value.<ff> is the hundreds of seconds number, from 0 to 99; a * character is a wildcard matching any fraction of second, or an unspecified value.
12BACnetObjectIdentifier<object_type>.<object_id><object_type> is represented with the type name for supported types, and with the BACnet object type number for unsupported objects.<object_id> is the object instance number

Examples

Writing the present value of an object

USER bac = 5 : IO bacserv.analoginput.0.presentvalue = 3
TIME : IO bacserv.analoginput.0.presentvalue/8 = $myvalue

The first line sets the Present Value property of object type Analog Input, object instance 0 to the value 3. The second line is similar, but this time the priority is set to 8. Also note that the value after presentvalue/8 is from a variable. To ensure that the variable name is translated to its value, leave a space before the variable name. This way the EVENTS interpreter will automatically concatenate the strings, also replacing the variable name with its value.

Release Notes

4.0.0

  • initial release

BACnet is a registered trademark of the American Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc.