LogoLogo
Contact Uscybus.io
Connectware 1.8.0
Connectware 1.8.0
  • Getting Started
    • Introduction
    • Installing Connectware
      • System Requirements
      • Acquiring your License Key
      • Installing Connectware on Docker
      • Installing Connectware on Kubernetes
    • Connectware Admin UI
    • Basic Components of Connectware
    • Connecting your First Machine
      • Your First Service Commissioning File
  • Documentation
    • Services
      • Service Commissioning Files
        • Structure of Service Commissioning Files
          • description
          • metadata
          • parameters
          • definitions
          • resources
            • Cybus::Connection
            • Cybus::Endpoint
            • Cybus:Mapping
            • Cybus::Container
              • Docker problem with network changes
            • Cybus::Link
            • Cybus::IngressRoute
            • Cybus::User
            • Cybus::Role
            • Cybus::Volume
            • Cybus::File
            • Cybus::Server
            • Cybus::Node
        • Sample Service Commissioning Files
          • Modbus
            • “Bearbeitungszentrum BAZ” - Single File
            • “Bearbeitungszentrum BAZ” - Multiple Files
            • “Bearbeitungszentrum BAZ” - Single File and Custom Topics
            • “Bearbeitungszentrum BAZ” - Agent Mode
          • Machine Condition Monitoring : OPC UA + InfluxDB + Grafana Dashboard
            • “Machine Condition Monitoring Example” - Single File
          • Machine Utilization Example (Multi file service composition) : Modbus TCP + InfluxDB + Grafana + MSS
            • “Machine Utilization Example” - Machine Connectivity
            • “Machine Utilization Example” - Dashboards with role based access permission
            • “Machine Utilization Example” - Push data to MSSQL Database
      • Services View
      • Setting Up and Configuring Services
        • Installing Services
        • Enabling Services
        • Updating Services
        • Disabling Services
        • Deleting Services
      • Service Details View
      • ServiceID
      • Inter-Service Referencing
      • Deviation
      • Service Logs
        • Logs of Individual Services
        • Logs of All Services
      • Rule Engine
        • Data Processing Rules
        • Rule Sandbox
      • API Definition
    • Resources
      • Servers
      • Containers
      • Volumes
      • Connections
      • Endpoints
      • Mappings
      • Nodes
      • API Definition
    • User Management
      • Users and Roles View
      • Users
      • Roles
      • Permissions
      • Password Policy Rules
      • Default Admin User
      • MQTT Users
      • Adding a MQTT Publish Prefix for Users
      • Multi-Factor Authentication
      • Long lived JSON Web Tokens
      • Access Permissions for Admin-UI
        • UI Access
        • Minimum Access Role Pages
      • API Definition
    • Client Registry
      • Implicit Flow
      • Explicit Flow
      • Granting Access
      • API Definition
    • Certificates
    • Monitoring
      • Data Explorer
      • Live Data
    • Workbench
      • Flows in Git Repositories
    • System Status
      • Info
      • Metrics
      • Status
      • Retrieving More System Information
      • System Health
      • API Definition
    • Backup and Restore
      • Volumes
      • User Database
    • Configuration
      • Environment Variables
      • LDAP Configuration
      • MFA Configuration
    • Agents
      • Agents View
      • Installing Agents
        • Installing Agents via Docker
        • Installing Agents via Docker Compose
        • Installing Agents via Kubernetes
        • Using Mutual TLS for Agents
      • Registering Agents in Connectware
      • Using Agents
      • Monitoring Agents
      • Troubleshooting Agents
    • Industry Protocol Details
      • ADS
        • AdsConnection
        • AdsEndpoint
      • BACnet
        • BacnetConnection
        • BacnetEndpoint
      • EtherNet/IP
        • EthernetIpConnection
        • EthernetIpEndpoint
      • Focas
        • FocasConnection
        • FocasEndpoint
      • Generic VRPC
        • GenericVrpcConnection
        • GenericVrpcEndpoint
      • Hottinger Baldwin Messtechnik (HBM)
        • HbmdaqConnection
        • HbmdaqEndpoint
      • Heidenhain DNC
        • HeidenhainConnection
        • HeidenhainEndpoint
      • HTTP/REST
        • HttpConnection
        • HttpEndpoint
      • HTTP Server
        • HttpServer
        • HttpNode
      • InfluxDB
        • InfluxdbConnection
        • InfluxdbEndpoint
      • Kafka
        • KafkaConnection
        • KafkaEndpoint
      • Modbus/TCP
        • ModbusConnection
        • ModbusEndpoint
      • MQTT
        • MqttConnection
        • MqttEndpoint
      • MSSQL
        • MssqlConnection
        • MssqlEndpoint
      • OPC DA
        • OpcdaConnection
        • OpcdaEndpoint
      • OPC UA
        • OPC UA Client
          • OpcuaConnection
          • OpcuaEndpoint
        • OPC UA Server
          • OpcuaServer
          • OpcuaNode
        • OPC UA Object Types
        • OPC UA Server References
          • OpcuaReferenceNode
          • OpcuaObjectNode
      • Siemens SIMATIC S7
        • S7Connection
        • S7Endpoint
      • Shdr
        • ShdrConnection
        • ShdrEndpoint
      • Sinumerik
        • SinumerikConnection
        • SinumerikEndpoint
      • Sopas
        • SopasConnection
        • SopasEndpoint
      • SQL
        • SqlConnection
        • SqlEndpoint
      • Werma WIN Ethernet
        • WermaConnection
        • WermaEndpoint
      • Systemstate
        • SystemstateConnection
        • SystemstateEndpoint
      • API Definition
    • Connectware Licensing
    • Changelog
      • General changes from 0.x to 1.0
        • Upgrading from 0.x to 1.0
    • Upgrade Guide
      • Upgrading from 1.x to 1.7.0
      • Upgrading from 1.x to 1.5.0
Powered by GitBook
LogoLogo

Cybus

  • Terms and Condition
  • Imprint
  • Data Privacy

© Copyright 2025, Cybus GmbH

On this page
  • BACnet glossary (advanced reading)
  • Example Configuration
  • Input Format
  • Output Format on Read
  • Further reading:

Was this helpful?

  1. Documentation
  2. Industry Protocol Details

BACnet

PreviousAdsEndpointNextBacnetConnection

Last updated 6 months ago

Was this helpful?

BACnet is a data communication protocol for Building Automation and Control networks. A data communication protocol is a set of rules governing the exchange of data over a computer network. The rules take the form of a written specification that spells out what is required to conform to the protocol.

BACnet glossary (advanced reading)

Device

The device represents a server that is managing one or more BACnet objects. A device has a unique device instance number (which is sufficient for addressing if using the same network interface) and a unique UDP port as device address (in the format <ip-address>:<port-number>) which can be used for addressing throughout the entire LAN. Technically, the device is an object with the name device. The device instance in fact is its object instance with the additional requirement to be unique.

Object

An object reflects a physical hardware actor or sensor (i.e. an I/O device). BACnet defines a list of standardized object types (such as analog-input, analog-output, binary-input, binary-output, etc.). Object types are identified by a fixed number or by a fixed ASCII string identifier (s.a.). Depending on the installation, a device may serve an arbitrary number of object instances of arbitrary type. A device may for example run 3 analog-inputs, 1 analog-value and two binary-outputs. An object is addressed using its type and numeric instance ID which must only be unique within the device.

Property

Every object contains a type-dependent set of properties. The most important property that exists in every object is the present-value property. This is conceptually very similar to the process-variable (PV) of other industry protocols. Like object types, the properties are identified by a fixed number or by a fixed ASCII string (e.g. present-value). Examples of other properties are version or object-name. The property is the final data-endpoint where values can be read from or written to. The value type can be any scalar value, arrays of scalars or specific complex types (this depends on the object type).

For unambiguously addressing any data endpoint (in BACnet: property) the following information must be provided:

  • At the :

    1. deviceAddress (e.g. 192.168.2.160:43712)

    2. deviceInstance (e.g. 27335)

  • At the :

    1. objectType (e.g. analog-input)

    2. objectInstance (e.g. 2)

    3. property (e.g. present-value)

If only one device is running on a given host (with fixed IP), the port can be omitted from the deviceAddress field.

Example Configuration

The following example demonstrates how to configure a simple BACnet connection and endpoint that subscribes to an analog-input BACnet object.

Download:

# ----------------------------------------------------------------------------#
# BACnet Commissioning File Example
# ----------------------------------------------------------------------------#
# Copyright: Cybus GmbH (2021)
# Contact: support@cybus.io
# ----------------------------------------------------------------------------#
# Source Interface Definition - BACnet
# ----------------------------------------------------------------------------#

description: |
    Sample commissioning file for Bacnet protocol connectivity and data mapping

metadata:
    name: Bacnet Protocol Connectivity
    icon: https://www.cybus.io/wp-content/uploads/2019/03/Cybus-logo-Claim-lang.svg
    provider: cybus
    homepage: https://www.cybus.io
    version: 0.0.1

parameters:
    IP_Address:
        type: string
        default: 192.168.10.30

    Port_Number:
        type: number
        default: 47808

    Device_Instance:
        type: number
        default: 2000

    initialReconnectDelay:
        type: integer
        default: 1000

    maxReconnectDelay:
        type: integer
        default: 30000

    factorReconnectDelay:
        type: integer
        default: 2

resources:
    # Lets define the connection to the device.
    bacnetConnection:
        type: Cybus::Connection
        properties:
            protocol: Bacnet
            targetState: connected
            connection:
                deviceInstance: !ref Device_Instance
                deviceAddress: !sub '${IP_Address}:${Port_Number}'
                connectionStrategy:
                    initialDelay: !ref initialReconnectDelay
                    maxDelay: !ref maxReconnectDelay
                    incrementFactor: !ref factorReconnectDelay

    # The Bacnet protocol supports endpoints of type read, write and subscribe.
    # Below are example on how to configure such operations.
    # Read endpoint
    bacnetReadBinaryOutput:
        type: Cybus::Endpoint
        properties:
            protocol: Bacnet
            connection: !ref bacnetConnection
            # Specifying the topic here instead of using a Mapping block allow us to remove an extra hop.
            read:
                objectType: binary-output
                objectInstance: 303
                property: present-value

    # Write endpoint
    bacnetWriteBinaryOutput:
        type: Cybus::Endpoint
        properties:
            protocol: Bacnet
            connection: !ref bacnetConnection
            write:
                objectType: binary-output
                objectInstance: 303
                property: present-value
                priority: 8
                propertyTag: 7

    # Subscription endpoint
    bacnetSubscribeBinaryOutput:
        type: Cybus::Endpoint
        properties:
            protocol: Bacnet
            connection: !ref bacnetConnection
            subscribe:
                objectType: binary-output
                objectInstance: 303
                property: present-value
                interval: 1000

Input Format

To write data to BACnet a request must be sent to the MQTT endpoint of the service using a /set suffix providing a JSON object with the following format:

{ "value": "<value>" }

No response message is written to the /res topic of the Endpoint for this protocol.

Output Format on Read

For a read endpoint, additionally a correlation id (id) can be set in the payload of the message request, to ensure the correct identification of responses to specific requests.

When data is read results are published to the /res topic of the Endpoint. The output message is an object with the following format:

{
  "value": "<value>",
  "timestamp": "<msSinceEpoch>"
  "id": "<correlation id>"
}

Further reading:

Cybus::Connection
Cybus::Endpoint
Connection Properties
Endpoint Properties
BACnet FAQ
The language of BACnet
BACnet ASHRAE Standard
3KB
bacnet-example.yml