Skip to main content
Version: 2.7-dev

BACnet/IP Nodes

Read property values from BACnet/IP building automation devices and integrate building data into your orchestration pipelines. Two nodes are available: the BACnet Read node for a single read function, and the BACnet Read Group node for reading many functions from one device in a single node.

Configuration Quick Reference

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the BACnet connection profile, choose a read function, configure function parameters with expression support, and optionally override timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.

BACnet/IP Read node configuration

BACnet Read Node

BACnet Read Node

Read one or more property values from BACnet objects using ReadPropertyMultiple. Each read item is identified by a user-defined name, which becomes the key in the result output.

Supported Function Types:

Function NamePurposeCommon Use Cases
Read Properties (bacnet.read)Read property values from one or more BACnet objects in a single requestTemperature readings, HVAC status, energy meters, alarm states

Node Configuration

ParameterTypeRequiredDescription
ConnectionSelectionYesBACnet/IP connection profile to use
FunctionSelectionYesRead function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your BACnet/IP connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.

Input

The node receives the output of the previous node as input. Input data can be referenced in function parameter expressions using $input.

Output Structure

On success the node produces:

{
"success": true,
"functionId": "<function-id>",
"data": { ... },
"durationMs": 42,
"timestamp": "2026-01-15T08:30:00Z"
}
FieldTypeDescription
successbooleantrue when the function executed without errors
functionIdstringID of the executed function
dataobjectFunction-specific result data (see below)
durationMsnumberExecution time in milliseconds
timestampstringISO 8601 / RFC 3339 UTC timestamp

Function-Specific Output Data

Read Properties (bacnet.read):

{
"results": {
"Zone Temperature": {
"object_type": 0,
"object_instance": 1,
"property_id": 85,
"value": 72.5
},
"Damper Position": {
"object_type": 1,
"object_instance": 10,
"property_id": 85,
"value": 45.0
},
"Occupancy Sensor": {
"object_type": 3,
"object_instance": 5,
"property_id": 85,
"value": 1
}
}
}

Each result entry is keyed by the Item Name defined in the read function:

FieldTypeDescription
object_typenumberBACnet object type code that was read
object_instancenumberObject instance number
property_idnumberBACnet property ID that was read
valueanyThe property value returned by the device
errorstringError message (present only if the individual item failed)

Read Item Configuration

Each read item in the function is configured with:

FieldTypeRequiredDefaultDescription
nameStringYesUnique name for this item — used as the key in results
object_typeNumberYesBACnet object type code (e.g., 0 = AnalogInput, 3 = BinaryInput)
object_instanceNumberYesObject instance number
property_idNumberNo85 (Present_Value)BACnet property to read

Supported Object Types

CodeNameTypical Use
0AnalogInputTemperature sensors, pressure sensors, flow meters
1AnalogOutputValve positions, damper commands, setpoints
2AnalogValueInternal calculated values, configurable setpoints
3BinaryInputOccupancy sensors, switch states, alarms
4BinaryOutputRelay commands, on/off controls
5BinaryValueInternal binary states, mode flags
8DeviceThe device itself (instance = Device ID)
12LoopPID control loops
13MultiStateInputMulti-position switches, fan speed states
14MultiStateOutputMulti-position actuator commands
17ScheduleWeekly schedules
20TrendLogHistorical data logs

Common Property IDs

IDNameDescription
85Present_ValueCurrent value — the most commonly read property
77Object_NameHuman-readable name of the object
28DescriptionText description of the object
36Event_StateCurrent alarm/event state
103ReliabilityReliability status of the object
111Status_FlagsBitmask: in-alarm, fault, overridden, out-of-service
117UnitsEngineering units (e.g., degrees-Fahrenheit, percent)
ReadPropertyMultiple

The BACnet Read node uses the ReadPropertyMultiple service to read all configured items in a single BACnet request. This is more efficient than reading properties one at a time, especially when acquiring data from many objects on the same device. If a function holds more items than fit in the device's APDU size, the connector automatically splits them into multiple requests (and halves a chunk that still comes back too large), so large functions never fail outright — failed items are reported individually.


BACnet Read Group Node

The BACnet Read Group node reads many objects from a single BACnet device across multiple read functions in one node — the efficient way to acquire hundreds to thousands of points without wiring a separate Read node per function. It supports selective function lists, a Read All mode, label-based selection, and parallel or sequential execution.

Each function's items are automatically split to fit the device's APDU size (see the Read node's ReadPropertyMultiple note above), and reads are bounded by the connection's Max Concurrent Reads setting so the device is never flooded.

Node Configuration

ParameterTypeRequiredDefaultDescription
ConnectionSelectionYesBACnet/IP connection profile
Read AllToggleNofalseWhen enabled, executes every bacnet.read function defined on the connection
FunctionsArray of {functionId, alias}When Read All is off[]List of specific functions to execute. Each entry requires a functionId; alias is optional and becomes the result key.
Execution ModeSelectionNoparallelparallel — functions run concurrently (bounded by Max Concurrent Reads). sequential — functions run one after another.
Continue on ErrorToggleNotrueWhen enabled, the node continues executing remaining functions even if one fails
Debug ModeToggleNofalseEnable detailed logging for troubleshooting

Functions can also be selected dynamically by label instead of a fixed list — useful when the set of points grows over time. Set the selection mode to by labels in the node and choose the label values to include.

Read All Mode

When Read All is enabled the function list is ignored. The node automatically discovers and executes every read function defined on the selected connection.

Function TypeDescription
bacnet.readRead Properties (ReadPropertyMultiple)

Input

The node receives the output of the previous node as input.

Output Structure

{
"results": {
"Floor 1 Sensors": {
"value": {
"Zone Temperature": { "object_type": 0, "object_instance": 1, "property_id": 85, "value": 72.5 },
"Damper Position": { "object_type": 1, "object_instance": 10, "property_id": 85, "value": 45.0 }
},
"success": true,
"duration": 48,
"timestamp": "2026-01-15T08:30:00Z"
},
"Floor 2 Sensors": {
"value": {
"Zone Temperature": { "object_type": 0, "object_instance": 2, "property_id": 85, "value": 70.1 }
},
"success": true,
"duration": 41,
"timestamp": "2026-01-15T08:30:00Z"
}
},
"_metadata": {
"connectionId": "conn-123",
"connectionName": "AHU-1 Controller",
"total": 2,
"successful": 2,
"failed": 0,
"totalDuration": 89,
"executionMode": "parallel",
"originalRequests": 2
}
}

Each function result contains:

FieldTypeDescription
valueobjectThe function's read results, keyed by each read item's name
successbooleanWhether this function succeeded
errorstringError message (present only on failure)
durationnumberExecution time in milliseconds
timestampstringISO 8601 / RFC 3339 UTC timestamp

The _metadata object provides an execution summary:

FieldTypeDescription
connectionIdstringConnection profile ID
connectionNamestringConnection profile display name
totalnumberTotal functions executed
successfulnumberCount of successful executions
failednumberCount of failed executions
totalDurationnumberWall-clock time for the entire group (ms)
executionModestringparallel or sequential
originalRequestsnumberNumber of function configs submitted
keyCollisionsstring[]Output keys that appeared more than once (omitted when empty)

Output Key Resolution

Each function result is keyed in the output map using the first available value:

  1. Alias — the custom alias set in the function entry
  2. Function Name — the name defined on the connection function
  3. Function ID — the unique function identifier (fallback)

Execution Modes

Parallel (default)

  • Functions execute concurrently, up to the connection's Max Concurrent Reads limit.
  • Fastest total execution time, and safe because the per-connection limit caps how many requests hit the device at once.

Sequential

  • Functions execute one after another in list order.
  • Lowest peak load on the device and the most predictable timing.
  • When Continue on Error is off, execution stops at the first failure.
Tuning for the device

BACnet field controllers tolerate only a few simultaneous transactions. The connection's Max Concurrent Reads (default 4, range 1–16) is the ceiling on in-flight requests for both execution modes. If you see dropped packets or timeouts under load, lower it to 12; raise it only for robust controllers. See the BACnet connection Advanced settings.

Error Handling

Continue on ErrorBehavior
true (default)The node completes even if individual functions fail. Failed functions include an error field in their result. The node output remains successful.
falseThe node fails as soon as any function fails. In sequential mode, remaining functions are skipped. The node result is marked as failed.

Validation Rules

  • connectionId is required.
  • executionMode must be parallel or sequential.
  • When Read All is off, at least one function entry is required.

Settings Tab

SettingTypeDefaultDescription
DescriptionTextOptional description displayed on the node
Timeout (seconds)NumberPipeline defaultMaximum time the node may run before timing out
Retry on TimeoutTogglePipeline defaultAutomatically retry the node if it times out
Retry on FailTogglePipeline defaultAutomatically retry the node if it fails
On ErrorSelectionPipeline defaultError strategy: stop the pipeline, continue to the next node, or follow the error output path

When left at their defaults, these settings inherit from the pipeline-level execution configuration.