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.
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
{
"payload": {
"action": "read",
"objectType": "analogInput",
"objectInstance": 1,
"propertyId": "presentValue"
}
} {
"payload": {
"action": "write",
"objectType": "analogValue",
"objectInstance": 1,
"propertyId": "presentValue",
"value": 72.0,
"priority": 8
}
} {
"payload": {
"action": "whois",
"lowLimit": 0,
"highLimit": 4194303
}
} Outputs
{
"payload": {
"deviceId": 1234,
"objectType": "analogInput",
"instance": 1,
"presentValue": 72.5,
"units": "degreesFahrenheit",
"statusFlags": {
"inAlarm": false,
"fault": false,
"overridden": false,
"outOfService": false
}
}
} {
"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.