Skip to main content

bacnet

Interface with BACnet building automation systems for monitoring and controlling HVAC, lighting, fire safety, and access control.

Overview

The bacnet node provides connectivity to BACnet (Building Automation and Control Networks) systems over IP. It supports reading and writing BACnet object properties, Change of Value (COV) subscriptions, and device discovery via Who-Is/I-Am services for comprehensive building management integration.

IP
BACnet/IP
47808
Default Port
25+
Object Types
COV
Subscriptions

Common BACnet Object Types

Object Type Abbreviation Description Example
Analog Input AI Sensor readings (temperature, humidity) Room temperature sensor
Analog Output AO Control outputs (valve position, damper) Cooling valve setpoint
Binary Input BI On/off status (fan, pump, switch) Fan running status
Binary Output BO On/off control (relay, switch) Lighting on/off command
Analog Value AV Calculated or configurable values Temperature setpoint
Schedule SCH Time-based control schedules Occupancy schedule

Properties

Property Type Required Default Description
address string Yes - BACnet device IP address
port number No 47808 BACnet/IP UDP port (0xBAC0)
deviceId number Yes - BACnet device instance number
objectType string Yes - "analogInput", "analogOutput", "binaryInput", etc.
objectInstance number Yes - Object instance number
propertyId string No "presentValue" BACnet property identifier to read/write
covIncrement number No 0.5 COV subscription increment threshold

Inputs

Read Present Value
{
  "payload": {
    "action": "read",
    "objectType": "analogInput",
    "objectInstance": 1,
    "propertyId": "presentValue"
  }
}
Write Setpoint
{
  "payload": {
    "action": "write",
    "objectType": "analogValue",
    "objectInstance": 1,
    "propertyId": "presentValue",
    "value": 72.0,
    "priority": 8
  }
}
Device Discovery
{
  "payload": {
    "action": "whois",
    "lowLimit": 0,
    "highLimit": 4194303
  }
}

Outputs

Read Response
{
  "payload": {
    "deviceId": 1234,
    "objectType": "analogInput",
    "instance": 1,
    "presentValue": 72.5,
    "units": "degreesFahrenheit",
    "statusFlags": {
      "inAlarm": false,
      "fault": false,
      "overridden": false,
      "outOfService": false
    }
  }
}
COV Notification
{
  "payload": {
    "deviceId": 1234,
    "objectType": "analogInput",
    "instance": 1,
    "presentValue": 73.2,
    "statusFlags": "normal",
    "covType": "confirmed"
  }
}

Use Cases

HVAC Control

Monitor and adjust air handling units, chillers, boilers, and VAV boxes for optimal comfort and energy efficiency.

Lighting Automation

Control lighting levels, schedules, and occupancy-based dimming across commercial buildings and campuses.

Fire Safety

Integrate with fire alarm panels and smoke detection systems for centralized monitoring and emergency response.

Energy Management

Track energy consumption patterns, optimize schedules, and implement demand response strategies across building systems.

Example: HVAC Temperature Monitoring

Subscribe to zone temperature changes and adjust setpoints dynamically.

[
  {
    "id": "bacnet-reader",
    "type": "bacnet",
    "address": "192.168.1.200",
    "deviceId": 1234,
    "objectType": "analogInput",
    "objectInstance": 1,
    "action": "subscribeCOV",
    "covIncrement": 0.5
  },
  {
    "id": "comfort-check",
    "type": "function",
    "func": "if (msg.payload.presentValue > 76) { msg.payload.action = 'cool'; } else if (msg.payload.presentValue < 68) { msg.payload.action = 'heat'; } else { msg.payload.action = 'maintain'; } return msg;"
  },
  {
    "id": "setpoint-adjust",
    "type": "bacnet",
    "address": "192.168.1.200",
    "deviceId": 1234,
    "objectType": "analogValue",
    "objectInstance": 10
  }
]

Tips & Best Practices

Device Discovery: Use Who-Is/I-Am services to discover all BACnet devices on the network before configuring point mappings.

Write Priorities: BACnet uses a 16-level priority array. Use priority 8 for normal supervisory control. Priority 1 is reserved for manual/safety overrides.

COV Subscriptions: Use Change of Value subscriptions instead of polling for efficient data collection. Set appropriate increment thresholds to avoid excessive notifications.

BBMD Configuration: For multi-subnet BACnet networks, configure a BACnet Broadcast Management Device (BBMD) to route broadcast messages between subnets.

Related Nodes