This app is an OPC UA Client and fetches data from any machine providing a OPC UA interface. You can specify which data points to read and these are then collected in a structured way in your fleet database.
- (Industrial) PC registered in IronFlock (For Details on registering devices click here)
- Any OPC UA server on the same network as the industrial PC.
For setup the edge PC needs a working internet connection, so you can configure it remotely using the IronFlock Platform.
Go the settings of this app on your device and configure it as detailed below:
| Parameter | Meaning | Default |
|---|---|---|
| OPCUA_URL | IP address of OPC UA Server for OPC UA Client to listen to | opc.tcp://0.0.0.0:4840/opcuaserver |
| OPCUA_NAMESPACE | Fallback namespace (used if not specified in OPCUA_VARIABLES) | example:ironflock:com |
| OPCUA_VARIABLES | OPC UA NodeSet JSON or legacy schema to extract and store | See examples below |
| PUBLISH_INTERVAL | read every x seconds | 2 |
Namespace Priority: If OPCUA_VARIABLES contains a full NodeSet with NamespaceUris, that namespace takes priority over OPCUA_NAMESPACE.
You can specify variables to read in two formats:
Provide an array of OPC UA node definitions following the NodeSet2 XML JSON schema.
Example: Extract Status and Temperature variables
[
{
"NodeClass": "Variable",
"NodeId": "ns=1;i=6001",
"BrowseName": "1:Status",
"DisplayName": { "Locale": "en", "Text": "Status" },
"DataType": "String",
"ValueRank": -1
},
{
"NodeClass": "Variable",
"NodeId": "ns=1;i=7001",
"BrowseName": "1:Temperature",
"DisplayName": { "Locale": "en", "Text": "Temperature" },
"DataType": "i=11",
"ValueRank": -1
}
]Alternative NodeId formats:
[
{
"NodeClass": "Variable",
"NodeId": "ns=2;s=Tank.Temperature",
"BrowseName": "Temperature",
"DisplayName": "Tank Temperature"
},
{
"NodeClass": "Variable",
"NodeId": {"IdType": "String", "Id": "Machine.Voltage", "Namespace": 2},
"BrowseName": "Voltage"
}
]The application automatically handles newlines and whitespace in the JSON.
Nested Variables with NodeSet:
The enhanced NodeSet parser automatically extracts hierarchy from the NodeId path. For example:
[
{
"NodeClass": "Variable",
"NodeId": "ns=1;s=Machine1.Tank.Temperature",
"BrowseName": "Temperature"
},
{
"NodeClass": "Variable",
"NodeId": "ns=1;s=Machine1.Motor.Speed",
"BrowseName": "Speed"
}
]This creates the nested structure: Machine1.Tank.Temperature and Machine1.Motor.Speed
The path is parsed from the NodeId string identifier (the part after ;s=), split by dots.
The legacy custom schema format is still supported:
{
"Tank": "Temperature",
"Machine": {
"Status": "Voltage"
}
}The system automatically detects which format you're using.
The data collected from the OPC UA machine will be stored in the following structure in your fleet database. You can use this data in any custom dashboard created in your fleet.
- id: tsp
name: Timestamp
description: Timestamp of Measurement
dataType: timestamp
- id: namespace
name: Namespace
description: OPCUA Namespace
dataType: string
- id: variable
name: Variable
description: OPCUA Variable Name
dataType: string
- id: value
name: Value
description: OPCUA Variable Value
dataType: numeric
- id: devname
name: Device Name
description: Name of Edge PC
dataType: stringThe data is redundantly stored as a flat key value store as well:
- id: tsp
name: Timestamp
description: Timestamp of Measurement
path: args[2].tsp
dataType: timestamp
- id: namespace
name: Namespace
description: OPCUA Namespace
path: args[0]
dataType: string
- id: machine_name
name: Machine Name
description: Given Machine Name
path: args[1]
dataType: string
- id: leaf_path
name: Object Path
description: "Path to the leaf in the OPC UA data object"
path: args[2].variable
dataType: string
- id: value
name: Value
description: OPCUA Data Value
path: args[2].value
dataType: string
- id: devname
name: Device Name
description: Name of Device
path: kwargs.DEVICE_NAME
dataType: stringCopyright 2025 Record Evolution GmbH All rights reserved
