BACnet Guide

Integrate building automation devices over BACnet/IP and MS/TP.

Overview

ControlBird speaks BACnet natively in both client and server roles. As a client, ControlBird reads and writes properties on remote BACnet devices and discovers devices on the network. As a server, ControlBird exposes tags as BACnet objects so that third-party supervisors, workstations, and controllers can read and command them.

The IO Manager connects over BACnet/IP (UDP, IPv4 or IPv6) and BACnet MS/TP (a station on an RS-485 serial trunk that sends requests directly to a device's station address). You set everything up in the IO Manager app. Each BACnet property you read or write is a tag with a dotted ID that is unique in your tenant, for example Building.Floor2.Zone1.Temperature. See the IO Manager guide for the app as a whole.

Where BACnet fits

BACnet is the dominant protocol for HVAC, lighting, access control, and life-safety equipment in commercial buildings. Use the client role to pull data from existing building controllers; use the server role to publish ControlBird tags into a building management system.

Transports

TransportMediumConnection settings
BACnet/IPUDP, IPv4 or IPv6Host, port, local port, network interface, IP version, and optional BBMD host, port, and registration lifetime
BACnet MS/TPRS-485 serialSerial port, baud rate, parity, data bits, stop bits, and MAC address

Default ports

BACnet/IP uses UDP port 47808 (0xBAC0) by default, for the remote device and for a server's listen port. The client's local UDP port defaults to 47810. MS/TP defaults to a baud rate of 38400 on /dev/ttyUSB0.

Connect a BACnet device

In the IO Manager, open the Tags section and choose Add tag to start Create Custom Device.

  1. Pick the card for the transport and role you need: BACnet for BACnet/IP (client or server), or BACnet MS/TP Client or BACnet MS/TP Server for an RS-485 trunk.
  2. Enter a Device Name and fill in the connection form: the device's host, port (default 47808), network interface, and IP version. Set the device ID to the target BACnet device instance number. For MS/TP, enter the serial port, baud rate, parity, data bits, stop bits, and your MAC address instead of the host and port. The MAC address is ControlBird's own station address on the trunk. The device ID is the remote station's MS/TP MAC address (0 to 127).
  3. In the Points step, choose Add Point for each value. Give it a tag ID, a type, a source path, and a direction.
  4. Finish the wizard. The connection starts and your tags show live values in the Tags section.

Add more than one endpoint to a connection to run them as a redundant group. If the active endpoint loses contact, a standby endpoint takes over and your tags keep their configuration.

For a hands-on device setup, see walkthrough step 6: Connect Your First Device.

Device discovery

On BACnet/IP, the client locates devices with the standard Who-Is / I-Am exchange, using the device instance number you entered. The discovery timeout defaults to 5 seconds.

Tag source addresses

A BACnet tag's source path names one property of one object, written ObjectType:Instance:Property, with an optional fourth part for an array index:

Source pathMeaning
AnalogInput:1:PresentValuePresent value of analog input 1
BinaryOutput:3:PresentValuePresent value of binary output 3
AnalogValue:0:UnitsEngineering units of analog value 0
AnalogValue:7:87:2Element 2 of property 87 (Priority_Array) of analog value 7

Object types also accept the short names AI, AO, AV, BI, BO, BV, MSI, MSO, and MSV, and a property may be given by name or by its standard number.

Object types and properties

FamilyObject types
AnalogAnalogInput, AnalogOutput, AnalogValue
BinaryBinaryInput, BinaryOutput, BinaryValue
Multi-stateMultiStateInput, MultiStateOutput, MultiStateValue
SystemDevice

The properties you can pick are PresentValue (the default), StatusFlags, OutOfService, Description, ObjectName, Units, MinPresValue, and MaxPresValue. For a server, StateText, NumberOfStates, ActiveText, and InactiveText are also available.

Write priority

BACnet writes use a 16-level priority array. A tag's priority runs from 1 (highest) to 16 (lowest) and defaults to 16. A write occupies that slot in the device's priority array, so lower-priority writes from other controllers do not override a higher-priority value.

Array index semantics

For array-valued properties, index 0 returns the size of the array, while indices 1 and above return individual elements. Leave the index out for scalar properties such as PresentValue.

Serve data as a BACnet device

Create a BACnet server connection the same way, then select a tag, choose Publish… on its detail, pick the connection, then choose Expose read-only, Expose with write-back, or Configure… to edit the tag ID and address first. Clients then see the tag as a BACnet object with the object type, instance, and property you chose.

The server's connection form also sets how it appears to clients: device ID (default 4194303), device name, and vendor ID (default 0).

Reliability

  • Automatic reconnection with exponential backoff, from 1 second up to 60 seconds by default.
  • Redundant endpoints that fail over automatically.
  • Communication logging with a configurable file count and size.