OPC DA Nodes
OPC DA (Data Access) is the classic COM/DCOM-based protocol found in virtually every legacy SCADA and DCS installation. MaestroHub connects to OPC DA servers through a lightweight Windows agent and exposes read, write, and browse capabilities as pipeline nodes.
Configuration Quick Reference
| Field | What you choose | Details |
|---|---|---|
| Parameters | Connection, Function, Function Parameters, Timeout Override | Select the OPC DA connection profile, function, configure function parameters with expression support, and optionally override timeout. |
| Settings | Description, Timeout (seconds), Retry on Timeout, Retry on Fail, On Error | Node description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values. |
OPC DA Write Node
OPC DA Write Node
Write values to OPC DA server items. Supports writing multiple items in a single execution and dynamic values through expression syntax.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
OPC DA Write (opcda.write) | Send values to OPC DA server items | Update setpoints, write control commands, push recipe parameters |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | OPC DA connection profile to use |
| Function | Selection | Yes | Write function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema. See your OPC DA connection functions for full parameter details. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Function parameters for Write:
| Parameter | Type | Required | Description |
|---|---|---|---|
data | Array of objects | Yes | Array of path/value pairs to write (1–50 items) |
data[].path | String | Yes | OPC DA item path to write to |
data[].value | Any | Yes | Value to write |
All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.
Output Structure
{
"success": true,
"functionId": "<function-id>",
"data": {
"results": [
{
"path": "Channel1.Device1.Setpoint",
"success": true
},
{
"path": "Channel1.Device1.Command",
"success": false,
"error": "Access denied"
}
],
"successCount": 1,
"failureCount": 1
},
"durationMs": 15,
"timestamp": "2026-01-15T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
success | boolean | true when the function executed without errors |
functionId | string | ID of the executed function |
data.results | array | Per-item write results |
data.results[].path | string | OPC DA item path |
data.results[].success | boolean | Whether this item was written successfully |
data.results[].error | string | Error message (present only on failure) |
data.successCount | number | Number of items written successfully |
data.failureCount | number | Number of items that failed |
durationMs | number | Execution time in milliseconds |
timestamp | string | ISO 8601 / RFC 3339 UTC timestamp |
Always implement validation and safety checks before writing to industrial equipment. Consider adding condition nodes to verify values are within safe ranges.
OPC DA Read Node
OPC DA Read Node
Read tag values from an OPC DA server. Supports reading multiple items and optional direct device reads bypassing the server cache.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
OPC DA Read (opcda.read) | Fetch current item values from OPC DA server | Equipment telemetry, quality checks, process monitoring |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | OPC DA connection profile to use |
| Function | Selection | Yes | Read function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema. See your OPC DA connection functions for full parameter details. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Function parameters for Read:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
tags | Array of strings | Yes | — | OPC DA item paths to read (1–50 items) |
fromDevice | Boolean | No | false | Read directly from the device instead of the server cache. Ensures the most current values but may be slower. |
All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.
Output Structure
{
"success": true,
"functionId": "<function-id>",
"data": {
"values": [
{
"path": "Channel1.Device1.Temperature",
"value": 78.5,
"quality": "Good",
"timestamp": "2026-01-15T08:30:00.123Z"
},
{
"path": "Channel1.Device1.Pressure",
"value": 145.2,
"quality": "Good",
"timestamp": "2026-01-15T08:30:00.150Z"
}
]
},
"durationMs": 42,
"timestamp": "2026-01-15T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
success | boolean | true when the function executed without errors |
functionId | string | ID of the executed function |
data.values | array | Array of item read results |
data.values[].path | string | Full OPC DA item path |
data.values[].value | any | Current item value — type depends on the OPC DA item data type |
data.values[].quality | string | Quality indicator ("Good", "Bad", "Uncertain", "Bad_CommFailure", etc.) |
data.values[].timestamp | string | ISO 8601 timestamp from the OPC DA server |
durationMs | number | Execution time in milliseconds |
timestamp | string | ISO 8601 / RFC 3339 UTC timestamp |

OPC DA Browse Node
OPC DA Browse Node
Browse the OPC DA server tag hierarchy to discover available items. Useful for dynamic tag discovery, building tag catalogs, and verifying server structure within pipelines.
Supported Function Types:
| Function Name | Purpose | Common Use Cases |
|---|---|---|
OPC DA Browse (opcda.browse) | Traverse server tag hierarchy | Tag discovery, catalog building, server structure verification |
Node Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| Connection | Selection | Yes | OPC DA connection profile to use |
| Function | Selection | Yes | Browse function from the selected connection |
| Function Parameters | Dynamic | Varies | Auto-populated from the function schema. See your OPC DA connection functions for full parameter details. |
| Timeout Override | Number (seconds) | No | Override the default function timeout |
Function parameters for Browse:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | String | No | "" | Item path to browse. Empty string browses from the root. |
limit | Number | No | 5000 | Maximum number of nodes to return (100–50,000) |
All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.
Output Structure
{
"success": true,
"functionId": "<function-id>",
"data": {
"nodes": [
{
"name": "Channel1",
"itemId": "Channel1",
"type": "branch",
"hasChildren": true
},
{
"name": "Temperature",
"itemId": "Channel1.Device1.Temperature",
"type": "leaf",
"accessRights": "readWrite",
"hasChildren": false
}
]
},
"durationMs": 85,
"timestamp": "2026-01-15T08:30:00Z"
}
| Field | Type | Description |
|---|---|---|
success | boolean | true when the function executed without errors |
functionId | string | ID of the executed function |
data.nodes | array | Array of discovered nodes |
data.nodes[].name | string | Display name of the node |
data.nodes[].itemId | string | Full OPC DA item identifier |
data.nodes[].type | string | "branch" (folder) or "leaf" (tag) |
data.nodes[].accessRights | string | "read", "write", or "readWrite" (leaf nodes only) |
data.nodes[].hasChildren | boolean | Whether this node has child items |
durationMs | number | Execution time in milliseconds |
timestamp | string | ISO 8601 / RFC 3339 UTC timestamp |
Settings Tab
All OPC DA node types share the same Settings tab:
| Setting | Type | Default | Description |
|---|---|---|---|
| Description | Text | — | Optional description displayed on the node |
| Timeout (seconds) | Number | Pipeline default | Maximum time the node may run before timing out |
| Retry on Timeout | Toggle | Pipeline default | Automatically retry the node if it times out |
| Retry on Fail | Toggle | Pipeline default | Automatically retry the node if it fails |
| On Error | Selection | Pipeline default | Error 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.