6th April 2019 Knowledge Base 0

BACnet is a communications protocol for Building Automation and Control (BAC) networks that leverage the ASHRAEANSI, and ISO 16484-5 standard[ protocol.

BACnet was designed to allow communication of building automation and control systems for applications such as heating, ventilating, and air-conditioning control (HVAC), lighting control, access control, and fire detection systems and their associated equipment. The BACnet protocol provides mechanisms for computerised building automation devices to exchange information, regardless of the particular building service they perform.


The development of the BACnet protocol began in June, 1987, in Nashville, Tennessee, at the inaugural meeting of the ASHRAE BACnet committee, known at that time as SPC 135P, “EMCS Message Protocol”.[2] The committee worked at reaching consensus using working groups to divide up the task of creating a standard. The working groups focused on specific areas and provided information and recommendations to the main committee. The first three working groups were the Data Type and Attribute Working Group, Primitive Data Format Working Group, and the Application Services Working Group.

BACnet became ASHRAE/ANSI Standard 135 in 1995, and ISO 16484-5 in 2003. The Method of Test for Conformance to BACnet was published in 2003 as BSR/ASHRAE Standard 135.1. BACnet is under continuous maintenance by the ASHRAE Standing Standard Project Committee 135.

BACnet had an almost immediate impact on the HVAC controls industry. In 1996 Alerton announced a complete BACnet product line for HVAC controls, from the operator’s workstation down to small variable air volume (VAV) controllers.[3] Automated Logic Corporation and Delta Controls soon followed suit. On July 12, 2017 BACnet reached a milestone with the issuance of the 1000th Vendor ID. Vendor IDs are assigned by ASHRAE and are distributed internationally. Those vendor identifiers can be viewed at the BACnet website.

H. Michael (Mike) Newman, Manager of the Computer Section of the Utilities and Energy Management Department at Cornell University, served as the BACnet committee chairman until June, 2000, when he was succeeded by his vice-chair of 13 years, Steven (Steve) Bushby from NIST.

During Steve Bushby’s four-year term as committee chair the BACnet standard was republished twice, in 2001 and 2004, each time with new capabilities added to the standard. The 2001 version featured, among other things, extensions to support fire / life-safety systems.

In June, 2004, 17 years after the first BACnet meeting and back in Nashville, William (Bill) Swan (a.k.a. “BACnet Bill”) from Alerton began his four-year stint as committee chair. During his term the number of committee working groups grew to 11, pursuing areas such as support for lighting, access control, energy utility/building integration and wireless communications.

In January 2006 the BACnet Manufacturers Association and the BACnet Interest Group of North America combined their operation in a new organization called BACnet International.

In June 2008, in Salt Lake City, Dave Robin from Automated Logic Corporation took over the reins as the new committee chair after serving 4 years as vice chair. During Dave’s term, 22 addenda were published for the 135-2008 standard and republished as 135-2010. Several addenda were published for 135-2010 and the standard was republished as 135-2012.

In June 2012, in San Antonio, Carl Neilson from Delta Controls took over the reins as the new committee chair after serving 4 years as vice chair. During Carl’s term, 12 addenda were published for the 135-2012 standard and the it was republished as 135-2016. Carl stepped down as chair in June 2015.

In June 2015, Bernhard Isler, from Siemens, became chair after serving 3 years as vice chair and 4 years as secretary. During Bernhard’s term, 10 addenda were published for the 135-2016 standard. Once addenda to 135.1-2013 was also published. Bernhard stepped down as chair in June 2018.

In June 2018, Michael Osborne from Reliable Controls, became chair after serving 3 years as secretary and 3 years as vice chair.

Protocol Overview

The BACnet protocol defines a number of services that are used to communicate between building devices. The protocol services include Who-Is, I-Am, Who-Has, I-Have, which are used for Device and Object discovery. Services such as Read-Property and Write-Property are used for data sharing. As of ANSI/ASHRAE 135-2016, the BACnet protocol defines 60 object types that are acted upon by the services.

The BACnet protocol defines a number of data link / physical layers, including ARCNETEthernet, BACnet/IP, BACnet/IPv6, BACnet/MSTP, Point-To-Point over RS-232, Master-Slave/Token-Passing over RS-485ZigBee, and LonTalk.

BACnet Layers

This is the UDP Port number used by BACnet communications over IP. The common default value is 0xBAC0 or 47808. 0xBAC1 or 47809 is common too, although there is no requirement to limit the port to these values. In fact, the new BACnet Port Object requires support in the ranges 47808 – 47823 (0xBAC0 – 0xBACF) and 49152 – 65535. (The range 49152 – 65535 is the ‘dynamic port’ range).

BACnet Objects

ANSI/ASHRAE 135-2016 specifies 60 standard object types:

  • Access Credential
  • Access Door
  • Access Point
  • Access Rights
  • Access User
  • Access Zone
  • Accumulator
  • Alert Enrollment
  • Analog Input
  • Analog Output
  • Analog Value
  • Averaging
  • Binary Input
  • Binary Lighting Output
  • Binary Output
  • Binary Value
  • BitString Value
  • Calendar
  • Channel
  • CharacterString Value
  • Command
  • Credential Data Input
  • Date Pattern Value
  • Date Value
  • DateTime Pattern Value
  • DateTime Value
  • Device
  • Elevator Group
  • Escalator
  • Event Enrollment
  • Event Log
  • File
  • Global Group
  • Group
  • Integer Value
  • Large Analog Value
  • Life Safety Point
  • Life Safety Zone
  • Lift
  • Lighting Output
  • Load Control
  • Loop
  • Multi-state Input
  • Multi-state Output
  • Multi-state Value
  • Network Port
  • Network Security
  • Notification Class
  • Notification Forwarder
  • Octetstring Value
  • Positive Integer Value
  • Program
  • Pulse Converter
  • Schedule
  • Structured View
  • Time Pattern Value
  • Time Value
  • Timer
  • Trend Log
  • Trend Log Multiple