LitmusEdge 4.0.x API Documentation/OPC UA - LE, LEM, LUNS API Docs
Get Node Root
POST {{edgeUrl}}/opcua/v2
Get Node Root
Returns the synthetic root node of the OPC UA hierarchy. The root has NodeID: "edgedevice", is a FOLDER, and has NodeSource: "import". Every other node lives under it.
Use this as the entry point when walking the tree -- list its Children, then call Get Nodes by Paths to traverse further.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query GetNodeRoot {
GetNodeRoot {
NodeID
ParentID
Name
NodeType
NodeSource
Data { DataType TopicName }
Children
Path
WorkerNodeID
WorkerNodeIDMode
ArrayLength
}
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
NodeID |
string | UUID (or sentinel edgedevice for the root). |
ParentID |
string | UUID of the parent node, empty string for the root. |
Name |
string | Display name (EdgeDevice for the root). |
NodeType |
string | FOLDER, DEVICE, or TAG. |
NodeSource |
string | import (auto from DH) or manual (created via API). |
Data |
object | Non-null only for TAG nodes. {DataType, TopicName}. |
Data.DataType |
string | OPC UA data type: bool, float, int, string, ... |
Data.TopicName |
string | Source topic (a DeviceHub-published topic the node subscribes to). |
Children |
array | Direct children. May be null for leaf nodes or when not requested in the selection. |
Path |
string[] | Slash-style address used by Get Nodes by Paths. Starts with "NODE", then UUIDs. |
WorkerNodeID |
string | Stable identifier exposed to OPC UA clients (e.g. EdgeDevice). |
WorkerNodeIDMode |
string | hierarchical (auto-derived) or fixed. |
ArrayLength |
integer | Non-null for tag nodes whose data is array-typed. |
{
"data": {
"GetNodeRoot": {
"NodeID": "edgedevice",
"ParentID": "",
"Name": "EdgeDevice",
"NodeType": "FOLDER",
"NodeSource": "import",
"Data": null,
"Children": null,
"Path": ["NODE", "edgedevice"],
"WorkerNodeID": "EdgeDevice",
"WorkerNodeIDMode": "fixed",
"ArrayLength": null
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query GetNodeRoot {
GetNodeRoot {
NodeID
ParentID
Name
NodeType
NodeSource
Data {
DataType
TopicName
}
Children
Path
WorkerNodeID
WorkerNodeIDMode
ArrayLength
}
}
Response
Status: 200 OK
{
"data": {
"GetNodeRoot": {
"NodeID": "edgedevice",
"ParentID": "",
"Name": "EdgeDevice",
"NodeType": "FOLDER",
"NodeSource": "import",
"Data": null,
"Children": null,
"Path": [
"NODE",
"edgedevice"
],
"WorkerNodeID": "EdgeDevice",
"WorkerNodeIDMode": "fixed",
"ArrayLength": null
}
}
}
Get Nodes by Paths
POST {{edgeUrl}}/opcua/v2
Get Nodes by Paths
Returns the children of the node addressed by Path. Use this to walk the hierarchy depth-first: start at ["NODE", "edgedevice"], read its children, then dive in by appending each child's NodeID.
The response is an array because the query supports addressing multiple nodes in one call (one path per element), although the Postman example uses a single path.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query GetNodesByPath($input: GetNodeByPathRequest!) {
GetNodesByPath(input: $input) {
NodeID
ParentID
Name
NodeType
NodeSource
Data { DataType TopicName }
Children
Path
WorkerNodeID
WorkerNodeIDMode
ArrayLength
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
Path |
[String!] |
Yes | Slash-style path. Starts with the literal "NODE", followed by NodeIDs from root downward. |
{
"input": {
"Path": ["NODE", "edgedevice"]
}
}
Response
200 OK -- application/json. Array of nodes -- the children of the addressed node. See Get Node Root for the per-field reference.
{
"data": {
"GetNodesByPath": [
{
"NodeID": "8b43db5e-e32e-4780-8387-63b37cf2ff00",
"ParentID": "edgedevice",
"Name": "tag1",
"NodeType": "TAG",
"NodeSource": "manual",
"Data": { "DataType": "bool", "TopicName": "tag1" },
"Children": null,
"Path": ["NODE", "edgedevice", "8b43db5e-e32e-4780-8387-63b37cf2ff00"],
"WorkerNodeID": "EdgeDevice.tag1",
"WorkerNodeIDMode": "hierarchical",
"ArrayLength": null
}
]
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query GetNodesByPath($input: GetNodeByPathRequest!) {
GetNodesByPath(input: $input) {
NodeID
ParentID
Name
NodeType
NodeSource
Data {
DataType
TopicName
}
Children
Path
WorkerNodeID
WorkerNodeIDMode
ArrayLength
}
}
Variables
{
"input": {
"Path": [
"NODE",
"edgedevice"
]
}
}
Response
Status: 200 OK
{
"data": {
"GetNodesByPath": [
{
"NodeID": "8b43db5e-e32e-4780-8387-63b37cf2ff00",
"ParentID": "edgedevice",
"Name": "tag1",
"NodeType": "TAG",
"NodeSource": "manual",
"Data": {
"DataType": "bool",
"TopicName": "tag1"
},
"Children": null,
"Path": [
"NODE",
"edgedevice",
"8b43db5e-e32e-4780-8387-63b37cf2ff00"
],
"WorkerNodeID": "EdgeDevice.tag1",
"WorkerNodeIDMode": "hierarchical",
"ArrayLength": null
}
]
}
}
Add Node - Folder
POST {{edgeUrl}}/opcua/v2
Add Node - Folder
Creates a new FOLDER node under an existing parent. Folders are purely organizational and do not bind to any data source.
Three node kinds use the same CreateNode mutation, differing only by the NodeType value:
FOLDER-- organizational container.DEVICE-- like FOLDER but semantically marks a device boundary.TAG-- leaf node bound to a DeviceHub topic viaData.TopicName/Data.DataType.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation CreateNode($input: NodeRequest!) {
CreateNode(input: $input)
}
Variables (input: NodeRequest!)
| Field | Type | Required | Description |
|---|---|---|---|
Name |
String! |
Yes | Display name. Must be unique among the parent's children. |
NodeType |
String! |
Yes | FOLDER, DEVICE, or TAG. |
ParentID |
String! |
Yes | UUID (or edgedevice for the root) of the parent node. |
WorkerNodeIDMode |
String! |
Yes | hierarchical (NodeID derived from path) or fixed (use WorkerNodeID explicitly). |
WorkerNodeID |
String? |
No | Required when WorkerNodeIDMode: "fixed". The literal NodeID exposed to OPC UA clients. |
Data |
NodeData? |
mixed | Required for NodeType: "TAG". {TopicName, DataType} binding the tag to a DeviceHub topic. |
Variables (example)
{
"input": {
"Name": "apiFolder",
"NodeType": "FOLDER",
"WorkerNodeIDMode": "hierarchical",
"ParentID": "edgedevice"
}
}
Response
200 OK -- application/json. Returns the new node's UUID as a string.
{
"data": {
"CreateNode": "1932e708-4a11-4d0e-87ac-a650bf4d7bf9"
}
}
Save the returned UUID as {{opc_node_id}} for follow-up calls.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation CreateNode($input: NodeRequest!) {
CreateNode(input: $input)
}
Variables
{
"input": {
"Name": "apiFolder",
"NodeType": "FOLDER",
"WorkerNodeIDMode": "hierarchical",
"ParentID": "edgedevice"
}
}
Response
Status: 200 OK
{
"data": {
"CreateNode": "1932e708-4a11-4d0e-87ac-a650bf4d7bf9"
}
}
Add Node - Device
POST {{edgeUrl}}/opcua/v2
Add Node - Device
Creates a new DEVICE node. DEVICE nodes are organizational like FOLDER but mark a logical device boundary so external OPC UA clients can detect device-level grouping.
Three node kinds use the same CreateNode mutation, differing only by the NodeType value:
FOLDER-- organizational container.DEVICE-- like FOLDER but semantically marks a device boundary.TAG-- leaf node bound to a DeviceHub topic viaData.TopicName/Data.DataType.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation CreateNode($input: NodeRequest!) {
CreateNode(input: $input)
}
Variables (input: NodeRequest!)
| Field | Type | Required | Description |
|---|---|---|---|
Name |
String! |
Yes | Display name. Must be unique among the parent's children. |
NodeType |
String! |
Yes | FOLDER, DEVICE, or TAG. |
ParentID |
String! |
Yes | UUID (or edgedevice for the root) of the parent node. |
WorkerNodeIDMode |
String! |
Yes | hierarchical (NodeID derived from path) or fixed (use WorkerNodeID explicitly). |
WorkerNodeID |
String? |
No | Required when WorkerNodeIDMode: "fixed". The literal NodeID exposed to OPC UA clients. |
Data |
NodeData? |
mixed | Required for NodeType: "TAG". {TopicName, DataType} binding the tag to a DeviceHub topic. |
Variables (example)
{
"input": {
"Name": "apiDevice",
"NodeType": "DEVICE",
"WorkerNodeIDMode": "hierarchical",
"WorkerNodeID": null,
"ParentID": "edgedevice"
}
}
Response
200 OK -- application/json. Returns the new node's UUID as a string.
{
"data": {
"CreateNode": "d508ec1b-25da-4ceb-abdd-20e4fe37f863"
}
}
Save the returned UUID as {{opc_node_id}} for follow-up calls.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation CreateNode($input: NodeRequest!) {
CreateNode(input: $input)
}
Variables
{
"input": {
"Name": "apiDevice",
"NodeType": "DEVICE",
"WorkerNodeIDMode": "hierarchical",
"WorkerNodeID": null,
"ParentID": "edgedevice"
}
}
Response
Status: 200 OK
{
"data": {
"CreateNode": "d508ec1b-25da-4ceb-abdd-20e4fe37f863"
}
}
Add Node - Tag
POST {{edgeUrl}}/opcua/v2
Add Node - Tag
Creates a new TAG node bound to a DeviceHub topic. TAGs are leaf nodes -- external OPC UA clients can read (and, if writable, write) their value, which is routed to the underlying topic.
Three node kinds use the same CreateNode mutation, differing only by the NodeType value:
FOLDER-- organizational container.DEVICE-- like FOLDER but semantically marks a device boundary.TAG-- leaf node bound to a DeviceHub topic viaData.TopicName/Data.DataType.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation CreateNode($input: NodeRequest!) {
CreateNode(input: $input)
}
Variables (input: NodeRequest!)
| Field | Type | Required | Description |
|---|---|---|---|
Name |
String! |
Yes | Display name. Must be unique among the parent's children. |
NodeType |
String! |
Yes | FOLDER, DEVICE, or TAG. |
ParentID |
String! |
Yes | UUID (or edgedevice for the root) of the parent node. |
WorkerNodeIDMode |
String! |
Yes | hierarchical (NodeID derived from path) or fixed (use WorkerNodeID explicitly). |
WorkerNodeID |
String? |
No | Required when WorkerNodeIDMode: "fixed". The literal NodeID exposed to OPC UA clients. |
Data |
NodeData? |
mixed | Required for NodeType: "TAG". {TopicName, DataType} binding the tag to a DeviceHub topic. |
Variables (example)
{
"input": {
"Name": "apiTag",
"NodeType": "TAG",
"WorkerNodeIDMode": "hierarchical",
"WorkerNodeID": null,
"Data": {
"TopicName": "devicehub.topic",
"DataType": "float"
},
"ParentID": "edgedevice"
}
}
Response
200 OK -- application/json. Returns the new node's UUID as a string.
{
"data": {
"CreateNode": "57983531-6e61-418c-aeeb-987a0d85c969"
}
}
Save the returned UUID as {{opc_node_id}} for follow-up calls.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation CreateNode($input: NodeRequest!) {
CreateNode(input: $input)
}
Variables
{
"input": {
"Name": "apiTag",
"NodeType": "TAG",
"WorkerNodeIDMode": "hierarchical",
"WorkerNodeID": null,
"Data": {
"TopicName": "devicehub.topic",
"DataType": "float"
},
"ParentID": "edgedevice"
}
}
Response
Status: 200 OK
{
"data": {
"CreateNode": "57983531-6e61-418c-aeeb-987a0d85c969"
}
}
Update Node by ID
POST {{edgeUrl}}/opcua/v2
Update Node by ID
Updates an existing node. The mutation is a full replacement of the node's fields (Name, Data, WorkerNodeID, etc.); pass the complete record.
NodeType is not re-assignable -- delete and recreate to change the kind.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation UpdateNode($nodeID: NodeID!, $input: NodeRequest!) {
UpdateNode(nodeID: $nodeID, input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
nodeID |
NodeID! |
Yes | UUID of the node to update. |
input |
NodeRequest! |
Yes | New node fields. Same shape as the Add Node mutations. |
{
"nodeID": "{{opc_node_id}}",
"input": {
"ParentID": "edgedevice",
"Name": "apiTag",
"NodeType": "TAG",
"Data": {
"DataType": "float",
"TopicName": "devicehub.topic"
},
"WorkerNodeID": "EdgeDevice.apiTag",
"WorkerNodeIDMode": "hierarchical"
}
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "UpdateNode": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation UpdateNode($nodeID: NodeID!, $input: NodeRequest!) {
UpdateNode(nodeID: $nodeID, input: $input)
}
Variables
{
"nodeID": "{{opc_node_id}}",
"input": {
"ParentID": "edgedevice",
"Name": "apiTag",
"NodeType": "TAG",
"Data": {
"DataType": "float",
"TopicName": "devicehub.topic"
},
"WorkerNodeID": "EdgeDevice.apiTag",
"WorkerNodeIDMode": "hierarchical",
"ArrayLength": null
}
}
Response
Status: 200 OK
{
"data": {
"UpdateNode": null
}
}
Remove Single Node by ID
POST {{edgeUrl}}/opcua/v2
Remove Single Node by ID
Deletes a single node by UUID. Child nodes (if any) are removed as well. To delete by category instead of by ID, see Reset Imported Hierarchy / Reset Manually Created Hierarchy / Reset All Hierarchy.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DeleteNode($input: NodeID!) {
DeleteNode(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
input |
NodeID! |
Yes | UUID of the node to delete. |
{ "input": "{{opc_node_id}}" }
Response
200 OK -- application/json. No data returned on success.
{ "data": { "DeleteNode": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation DeleteNode($input: NodeID!) {
DeleteNode(input: $input)
}
Variables
{
"input": "{{opc_node_id}}"
}
Response
Status: 200 OK
{
"data": {
"DeleteNode": null
}
}
Reset Imported Hierarchy
POST {{edgeUrl}}/opcua/v2
Reset Imported Hierarchy
Removes every node whose NodeSource is import -- i.e. every node that was auto-created when importing DeviceHub tags. Nodes created via the API (NodeSource: "manual") are preserved.
The ResetNodes mutation takes a single SourceType selector:
SourceType |
Effect |
|---|---|
Import |
Removes nodes auto-imported from DeviceHub (NodeSource: "import"). |
Manual |
Removes nodes created via this API (NodeSource: "manual"). |
All |
Removes every node (effectively wiping the address space back to the synthetic root). |
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ResetNodes($input: NodeResetRequest!) {
ResetNodes(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
SourceType |
String! |
Yes | One of Import, Manual, All. Selects which nodes to remove. |
{
"input": { "SourceType": "Import" }
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "ResetNodes": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
Recoverability
There is no undo. Snapshot the hierarchy with Export As JSON before calling this if you may want to restore.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ResetNodes($input: NodeResetRequest!) {
ResetNodes(input: $input)
}
Variables
{
"input": {
"SourceType": "Import"
}
}
Response
Status: 200 OK
{
"data": {
"ResetNodes": null
}
}
Reset Manually Created Hierarchy
POST {{edgeUrl}}/opcua/v2
Reset Manually Created Hierarchy
Removes every node whose NodeSource is manual -- i.e. every node created via the OPC UA API. Auto-imported DeviceHub nodes (NodeSource: "import") are preserved.
The ResetNodes mutation takes a single SourceType selector:
SourceType |
Effect |
|---|---|
Import |
Removes nodes auto-imported from DeviceHub (NodeSource: "import"). |
Manual |
Removes nodes created via this API (NodeSource: "manual"). |
All |
Removes every node (effectively wiping the address space back to the synthetic root). |
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ResetNodes($input: NodeResetRequest!) {
ResetNodes(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
SourceType |
String! |
Yes | One of Import, Manual, All. Selects which nodes to remove. |
{
"input": { "SourceType": "Manual" }
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "ResetNodes": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
Recoverability
There is no undo. Snapshot the hierarchy with Export As JSON before calling this if you may want to restore.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ResetNodes($input: NodeResetRequest!) {
ResetNodes(input: $input)
}
Variables
{
"input": {
"SourceType": "Manual"
}
}
Response
Status: 200 OK
{
"data": {
"ResetNodes": null
}
}
Reset All Hierarchy
POST {{edgeUrl}}/opcua/v2
Reset All Hierarchy
Removes every node, regardless of NodeSource. The hierarchy is reset to just the synthetic root.
The ResetNodes mutation takes a single SourceType selector:
SourceType |
Effect |
|---|---|
Import |
Removes nodes auto-imported from DeviceHub (NodeSource: "import"). |
Manual |
Removes nodes created via this API (NodeSource: "manual"). |
All |
Removes every node (effectively wiping the address space back to the synthetic root). |
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ResetNodes($input: NodeResetRequest!) {
ResetNodes(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
SourceType |
String! |
Yes | One of Import, Manual, All. Selects which nodes to remove. |
{
"input": { "SourceType": "All" }
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "ResetNodes": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
Recoverability
There is no undo. Snapshot the hierarchy with Export As JSON before calling this if you may want to restore.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ResetNodes($input: NodeResetRequest!) {
ResetNodes(input: $input)
}
Variables
{
"input": {
"SourceType": "All"
}
}
Response
Status: 200 OK
{
"data": {
"ResetNodes": null
}
}
Export As JSON
POST {{edgeUrl}}/opcua/v2
Export As JSON
Exports all of the nodes in the hierarchy as a nested JSON tree. In the LE UI this lives under the Hierarchy pane's Action menu and downloads straight to disk; the option only appears when a hierarchy exists.
Use this for backups, source-control snapshots, or migration to another device (re-import via Import JSON).
The query is named GetNodeTree; the response payload is the same shape UploadHierarchy (Import JSON) accepts.
Use Postman's Send and Download button if you want the response body saved straight to disk.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
```
The operation is chosen by the GraphQL query body, not the URL path.
## Authentication
HTTP Basic Auth. **Username** is your API token, **password** is empty. The same token is valid across `/devicehub/v2`, `/analytics/v2`, `/cc`, `/opcua`, and the other LE services.
## Request body
``` graphql
query GetNodeTree {
GetNodeTree
}
```
No arguments.
## Response
`200 OK` -- `application/json`. `data.GetNodeTree` is the root node of the tree, with `children` recursively populated. The wire field names are **lower_snake_case** in this projection (`worker_node_id`, `node_source`) -- contrast with the PascalCase used by `Get Node Root` / `GetNodesByPath`. Both shapes describe the same data; this one is the round-trip format for `Import JSON`.
``` json
{
"data": {
"GetNodeTree": {
"id": "edgedevice",
"parent_id": "",
"name": "EdgeDevice",
"type": "FOLDER",
"node_source": "import",
"data": null,
"children": null,
"path": ["NODE", "edgedevice"],
"worker_node_id": "EdgeDevice",
"worker_node_id_mode": "fixed"
}
}
}
```
## Errors
GraphQL endpoints return `200 OK` even on logical errors. Inspect the `errors` array in the response body:
``` json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```
| `extensions.code` | Meaning |
| --- | --- |
| `UNAUTHENTICATED` | Missing or invalid API token. |
| `FORBIDDEN` | Token lacks permission for this operation. |
| `BAD_USER_INPUT` | Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
| `NOT_FOUND` | The targeted entity does not exist. |
| `INTERNAL_SERVER_ERROR` | DeviceHub fault. Retry, then escalate via `System > Support`. |
A non-`200` HTTP response means DeviceHub itself is unreachable. See `Dashboard > DeviceHub Status`.
> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
### Request Body
**GraphQL Query**
```graphql
query GetNodeTree {
GetNodeTree
}
Response
Status: 200 OK
{
"data": {
"GetNodeTree": {
"id": "edgedevice",
"parent_id": "",
"name": "EdgeDevice",
"type": "FOLDER",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"edgedevice"
],
"worker_node_id": "EdgeDevice",
"worker_node_id_mode": "fixed"
}
}
}
Import JSON
POST {{edgeUrl}}/opcua/v2
Import JSON
Imports nodes from a JSON document into the OPC UA hierarchy. The imported nodes are merged with the existing hierarchy -- they do not replace it. Existing nodes whose IDs match nodes in the import are updated; the rest of the tree is left intact.
Action required after import: the OPC UA server must be reset for the merged hierarchy to take effect. Stop and start the server with
Management > Stop OPC UA Servicefollowed byManagement > Start OPC UA Service. See the LE UI's Manage the OPC UA Server documentation for the equivalent UI flow.
The mutation accepts the snake_case JSON shape produced by Export As JSON -- you can round-trip an export verbatim.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
```
The operation is chosen by the GraphQL query body, not the URL path.
## Authentication
HTTP Basic Auth. **Username** is your API token, **password** is empty. The same token is valid across `/devicehub/v2`, `/analytics/v2`, `/cc`, `/opcua`, and the other LE services.
## Request body
``` graphql
mutation UploadHierarchy($input: Any!) {
UploadHierarchy(input: $input)
}
```
### Variables
The `input` is the root tree from `Export As JSON` -- a single object with `id`, `name`, `type: "FOLDER"`, and a recursive `children` array.
``` json
{
"input": {
"id": "a335157b-013b-415e-8138-8c78faa571ee",
"parent_id": "",
"name": "EdgeDevice",
"type": "FOLDER",
"node_source": "manual",
"data": null,
"children": [
{
"id": "10c45ba5-589b-4034-8bfb-45684c67c9...",
"...": "..."
}
]
}
}
```
## Response
`200 OK` -- `application/json`. No data returned on success.
``` json
{ "data": { "UploadHierarchy": null } }
```
## Post-import steps
``` text
1. Import JSON -> hierarchy is merged in storage
2. Management > Stop OPC UA Service
3. Management > Start OPC UA Service -> merged hierarchy is now served
4. Connections > Get Server Metrics -> verify clients can reconnect
```
Until the service is reset, **external OPC UA clients continue to see the pre-import hierarchy** even though the storage has been merged.
## Errors
GraphQL endpoints return `200 OK` even on logical errors. Inspect the `errors` array in the response body:
``` json
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
```
| `extensions.code` | Meaning |
| --- | --- |
| `UNAUTHENTICATED` | Missing or invalid API token. |
| `FORBIDDEN` | Token lacks permission for this operation. |
| `BAD_USER_INPUT` | Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
| `NOT_FOUND` | The targeted entity does not exist. |
| `INTERNAL_SERVER_ERROR` | DeviceHub fault. Retry, then escalate via `System > Support`. |
A non-`200` HTTP response means DeviceHub itself is unreachable. See `Dashboard > DeviceHub Status`.
### To replace instead of merge
If you want a true replacement (not a merge), wipe first then import:
1. `Reset All Hierarchy` (`SourceType: "All"`).
2. `Import JSON`.
3. Stop / Start the service.
> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
### Request Body
**GraphQL Query**
```graphql
mutation UploadHierarchy($input: Any!) {
UploadHierarchy(input: $input)
}
Variables
{
"input": {
"id": "a335157b-013b-415e-8138-8c78faa571ee",
"parent_id": "",
"name": "EdgeDevice",
"type": "FOLDER",
"node_source": "manual",
"data": null,
"children": [
{
"id": "10c45ba5-589b-4034-8bfb-45684c67c9e1",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "device1",
"type": "DEVICE",
"node_source": "manual",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"10c45ba5-589b-4034-8bfb-45684c67c9e1"
]
},
{
"id": "231b695d-8603-4bc2-bcc9-abec6caca02a",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "Device1",
"type": "TAG",
"node_source": "manual",
"data": {
"dataType": "int32",
"topic": "tag1"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"231b695d-8603-4bc2-bcc9-abec6caca02a"
]
},
{
"id": "41FBD12E-C6CD-4539-AD50-336D278B207C",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "Rack 2b M258",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"41FBD12E-C6CD-4539-AD50-336D278B207C"
]
},
{
"id": "474E42B0-C7B8-42DE-8DE2-FFED7030A563",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "DTA windows tia",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"474E42B0-C7B8-42DE-8DE2-FFED7030A563"
]
},
{
"id": "4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "AB CLX API testing",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": [
{
"id": "8BA821A2-CC97-48DE-9AB4-35AA3CE69BDD",
"parent_id": "4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A",
"name": "cAM_BadVoltageAllPot",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.alias.AB_CLX_API_testing.cAM_BadVoltageAllPot"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A",
"8BA821A2-CC97-48DE-9AB4-35AA3CE69BDD"
]
}
],
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"4C4B9CCC-F5E4-4C2E-A4C0-EAF5C32B0D1A"
]
},
{
"id": "70a2d234-5df7-4e4c-8985-971f907e3a07",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "folder1",
"type": "FOLDER",
"node_source": "manual",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"70a2d234-5df7-4e4c-8985-971f907e3a07"
]
},
{
"id": "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "Simulator2",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": [
{
"id": "1A5572B2-8242-40C8-BC63-FFEBC7DAF1E4",
"parent_id": "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
"name": "apiTag",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A5572B2-8242-40C8-BC63-FFEBC7DAF1E4"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
"1A5572B2-8242-40C8-BC63-FFEBC7DAF1E4"
]
},
{
"id": "5CE8DB00-8A03-475D-865F-BB34887D51C6",
"parent_id": "779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
"name": "apiCSVTag",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5CE8DB00-8A03-475D-865F-BB34887D51C6"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"779F42F3-54FC-4A87-B9A6-CD39CFA4A97D",
"5CE8DB00-8A03-475D-865F-BB34887D51C6"
]
}
],
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"779F42F3-54FC-4A87-B9A6-CD39CFA4A97D"
]
},
{
"id": "79F3914E-32A1-4227-AC16-023E627EB26E",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "aa",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"79F3914E-32A1-4227-AC16-023E627EB26E"
]
},
{
"id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "ClassificationSimulator",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": [
{
"id": "0BB9BE0A-EBC8-4932-9CCC-D9E3A994D986",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic8",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic8"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"0BB9BE0A-EBC8-4932-9CCC-D9E3A994D986"
]
},
{
"id": "2ADE6AFF-A950-413B-82EA-2D142A76C741",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic1",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic1"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"2ADE6AFF-A950-413B-82EA-2D142A76C741"
]
},
{
"id": "5DA5BD59-D25E-488C-A37B-B0E90649F22D",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic6",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic6"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"5DA5BD59-D25E-488C-A37B-B0E90649F22D"
]
},
{
"id": "665E3EA1-7FFA-469F-ADCB-F9FB5472D16B",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic5",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic5"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"665E3EA1-7FFA-469F-ADCB-F9FB5472D16B"
]
},
{
"id": "A8091B99-DBCD-4C9B-BEE1-EE571D84797A",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic0",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic0"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"A8091B99-DBCD-4C9B-BEE1-EE571D84797A"
]
},
{
"id": "A9D97FFC-72B6-4775-AA5E-895378650B74",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic2",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic2"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"A9D97FFC-72B6-4775-AA5E-895378650B74"
]
},
{
"id": "E3DEC8C0-EE07-4D7F-8525-26C585E2B603",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic3",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic3"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"E3DEC8C0-EE07-4D7F-8525-26C585E2B603"
]
},
{
"id": "E4E22269-5B67-4EF2-BFD8-578072AE1A29",
"parent_id": "89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"name": "motionTopic4",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic4"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7",
"E4E22269-5B67-4EF2-BFD8-578072AE1A29"
]
}
],
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"89C52E9A-0901-4D8D-B842-7B533F64E1B7"
]
},
{
"id": "BAFD349E-21B6-408A-AE2F-B9C682912571",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "Boiler",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"BAFD349E-21B6-408A-AE2F-B9C682912571"
]
},
{
"id": "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "sim1",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": [
{
"id": "5EAEBA93-B17D-45FC-8291-CA5CFCEFB994",
"parent_id": "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
"name": "sine1",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.sim1.sine1"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"CDC283FB-72E2-42DF-A587-4D6299D70C9A",
"5EAEBA93-B17D-45FC-8291-CA5CFCEFB994"
]
},
{
"id": "A21EB566-296F-41A8-8436-C5C73E2C5448",
"parent_id": "CDC283FB-72E2-42DF-A587-4D6299D70C9A",
"name": "sine2",
"type": "TAG",
"node_source": "import",
"data": {
"dataType": "float64",
"topic": "devicehub.alias.sim1.sine2"
},
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"CDC283FB-72E2-42DF-A587-4D6299D70C9A",
"A21EB566-296F-41A8-8436-C5C73E2C5448"
]
}
],
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"CDC283FB-72E2-42DF-A587-4D6299D70C9A"
]
},
{
"id": "D0C3FE53-5069-4FD7-B565-4F362AED18E9",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "aba",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"D0C3FE53-5069-4FD7-B565-4F362AED18E9"
]
},
{
"id": "EEF5EE7F-54C7-415A-B1C7-4F9386112DEB",
"parent_id": "a335157b-013b-415e-8138-8c78faa571ee",
"name": "D14 Boiler Power PAC4200",
"type": "DEVICE",
"node_source": "import",
"data": null,
"children": null,
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee",
"EEF5EE7F-54C7-415A-B1C7-4F9386112DEB"
]
}
],
"path": [
"NODE",
"a335157b-013b-415e-8138-8c78faa571ee"
]
}
}
Response
Status: 200 OK
{
"data": {
"UploadHierarchy": null
}
}
Import Some DH Tags
POST {{edgeUrl}}/opcua/v2
Import Some DH Tags
Imports a subset of DeviceHub tags into the OPC UA hierarchy by listing specific (DeviceID, RegistersID[]) groups. Each register becomes a TAG node under a DEVICE node (created if it doesn't exist).
Use this when you want to expose only a curated slice of DeviceHub tags over OPC UA. For bulk imports, see Import all DH Tags of a Device or Import ALL DH Tags.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
ImportSomeDeviceHubTags(input: $input) {
ImportedCount
FailedCount
SkippedCount
}
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
Tags |
[TagGroup!]! |
Yes | One entry per device. |
Tags[].DeviceID |
ID! |
Yes | DeviceHub device UUID. |
Tags[].RegistersID |
[ID!]! |
Yes | DeviceHub register UUIDs to import for that device. Empty array imports every register on the device (same as Import all DH Tags of a Device). |
{
"input": {
"Tags": [
{
"DeviceID": "{{deviceID}}",
"RegistersID": ["{{register_id}}"]
}
]
}
}
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.ImportSomeDeviceHubTags.ImportedCount |
integer | Newly imported tags. |
data.ImportSomeDeviceHubTags.FailedCount |
integer | Tags that could not be imported (missing register, name collision, etc.). |
data.ImportSomeDeviceHubTags.SkippedCount |
integer | Tags already present in the hierarchy and left unchanged. |
{
"data": {
"ImportSomeDeviceHubTags": {
"ImportedCount": 1,
"FailedCount": 0,
"SkippedCount": 0
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
ImportSomeDeviceHubTags(input: $input) {
ImportedCount
FailedCount
SkippedCount
}
}
Variables
{
"input": {
"Tags": [
{
"DeviceID": "{{deviceID}}",
"RegistersID": [
"{{register_id}}"
]
}
]
}
}
Response
Status: 200 OK
{
"data": {
"ImportSomeDeviceHubTags": {
"ImportedCount": 1,
"FailedCount": 0,
"SkippedCount": 0
}
}
}
Import all DH Tags of a Device
POST {{edgeUrl}}/opcua/v2
Import all DH Tags of a Device
Imports every DeviceHub tag from a single device into the OPC UA hierarchy. Convenience form of Import Some DH Tags with an empty RegistersID array.
The mutation reused under the hood is ImportSomeDeviceHubTags; this endpoint exists to make the "all-on-one-device" intent obvious in the collection.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
ImportSomeDeviceHubTags(input: $input) {
ImportedCount
FailedCount
SkippedCount
}
}
Variables
{
"input": {
"Tags": [
{
"DeviceID": "{{deviceID}}",
"RegistersID": []
}
]
}
}
RegistersID: [] is the "all registers on this device" signal.
Response
Same shape as Import Some DH Tags. Typical response for a device with 230 tags:
{
"data": {
"ImportSomeDeviceHubTags": {
"ImportedCount": 230,
"FailedCount": 0,
"SkippedCount": 0
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ImportSomeDeviceHubTags($input: ImportSomeDeviceTagsRequest!) {
ImportSomeDeviceHubTags(input: $input) {
ImportedCount
FailedCount
SkippedCount
}
}
Variables
{
"input": {
"Tags": [
{
"DeviceID": "{{deviceID}}",
"RegistersID": []
}
]
}
}
Response
Status: 200 OK
{
"data": {
"ImportSomeDeviceHubTags": {
"ImportedCount": 230,
"FailedCount": 0,
"SkippedCount": 0
}
}
}
Import ALL DH Tags
POST {{edgeUrl}}/opcua/v2
Import ALL DH Tags
Imports every DeviceHub tag from every device into the OPC UA hierarchy in one call. This is the wholesale "expose everything" shortcut.
The response is the full resulting tree -- handy for verifying the import succeeded without a separate Get Node Root / Get Nodes by Paths walk.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ImportDeviceHubTag {
ImportDeviceHubTags
}
No arguments.
Response
200 OK -- application/json. data.ImportDeviceHubTags is the root of the resulting hierarchy (same shape as Export As JSON).
{
"data": {
"ImportDeviceHubTags": {
"name": "EdgeDevice",
"type": "FOLDER",
"id": "edgedevice",
"data": null,
"children": [
{
"name": "apiTestDevice",
"type": "DEVICE",
"id": "apiTestDevice",
"node_source": "import",
"worker_node_id": "EdgeDevice.apiTestDevice",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ImportDeviceHubTag {
ImportDeviceHubTags
}
Response
Status: 200 OK
{
"data": {
"ImportDeviceHubTags": {
"name": "EdgeDevice",
"type": "FOLDER",
"id": "edgedevice",
"data": null,
"children": [
{
"name": "apiTestDevice",
"type": "DEVICE",
"id": "apiTestDevice",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.apiTestDevice",
"worker_node_id_mode": "hierarchical",
"children": [
{
"name": "fake123",
"type": "TAG",
"id": "fake123",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.apiTestDevice.fake123"
},
"worker_node_id": "EdgeDevice.apiTestDevice.fake123",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "asdf",
"type": "TAG",
"id": "asdf",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.apiTestDevice.asdf"
},
"worker_node_id": "EdgeDevice.apiTestDevice.asdf",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
},
{
"name": "Rack_2b_M258",
"type": "DEVICE",
"id": "Rack_2b_M258",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.Rack 2b M258",
"worker_node_id_mode": "hierarchical",
"children": [
{
"name": "fake",
"type": "TAG",
"id": "fake",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.41FBD12E-C6CD-4539-AD50-336D278B207C.EAFA65F1-C38B-48F5-BC81-1B6F5DC126C6"
},
"worker_node_id": "EdgeDevice.Rack 2b M258.fake",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
},
{
"name": "DTA_windows_tia",
"type": "DEVICE",
"id": "DTA_windows_tia",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.DTA windows tia",
"worker_node_id_mode": "hierarchical",
"children": null
},
{
"name": "AB_CLX_API_testing",
"type": "DEVICE",
"id": "AB_CLX_API_testing",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.AB CLX API testing",
"worker_node_id_mode": "hierarchical",
"children": [
{
"name": "cAM_BadVoltageAllPot",
"type": "TAG",
"id": "cAM_BadVoltageAllPot",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.alias.AB_CLX_API_testing.cAM_BadVoltageAllPot"
},
"worker_node_id": "EdgeDevice.AB CLX API testing.cAM_BadVoltageAllPot",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
},
{
"name": "Simulator2",
"type": "DEVICE",
"id": "Simulator2",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.Simulator2",
"worker_node_id_mode": "hierarchical",
"children": [
{
"name": "AirFlow16PV",
"type": "TAG",
"id": "AirFlow16PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.007398CD-51DC-47B8-A3FD-F51929EA61DF"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow16PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow7SP",
"type": "TAG",
"id": "WaterFlow7SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.01133640-EFBC-44F1-8188-A1447C00A5CC"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow7SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step7PressureSP",
"type": "TAG",
"id": "Step7PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.020EF751-10AB-433E-BF38-A9013A4B8971"
},
"worker_node_id": "EdgeDevice.Simulator2.Step7PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow13PV",
"type": "TAG",
"id": "WaterFlow13PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.035CD2C9-35CF-405D-A984-1E5DFC816583"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow13PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel18PV",
"type": "TAG",
"id": "AirChannel18PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.049ED31A-F0A3-491B-92BC-D47E85237174"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel18PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration14SP",
"type": "TAG",
"id": "AirDuration14SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.04C0FEB1-227D-400B-87F7-6C8478DA7944"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration14SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration11SP",
"type": "TAG",
"id": "AirDuration11SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.05E3241F-43BB-4045-BF69-4A26EE4F5705"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration11SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay16SP",
"type": "TAG",
"id": "WaterDelay16SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.05FE7CD0-8751-4C0B-AE1F-185B86E974F8"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay16SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration19SP",
"type": "TAG",
"id": "AirDuration19SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0671BF01-6365-482B-A08D-404ABB2BB075"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration19SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay13SP",
"type": "TAG",
"id": "WaterDelay13SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.07611094-25D2-4FF5-BD6F-8EB4B00C5CE4"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay13SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration12SP",
"type": "TAG",
"id": "WaterDuration12SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.08463862-6FF0-48DB-9B38-3B25AC7F13FC"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration12SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow3SP",
"type": "TAG",
"id": "AirFlow3SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.09EDAB62-CF5C-4841-9FE4-96E8A7BB53A0"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow3SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "PressurisationSP",
"type": "TAG",
"id": "PressurisationSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0A39EA69-3EBB-4321-AA5C-0C004EF73829"
},
"worker_node_id": "EdgeDevice.Simulator2.PressurisationSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step1PressureSP",
"type": "TAG",
"id": "Step1PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0A760E01-3953-49FB-BBF2-04157B193C0E"
},
"worker_node_id": "EdgeDevice.Simulator2.Step1PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow18SP",
"type": "TAG",
"id": "AirFlow18SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0B370978-F01B-45B8-9A45-4BB8A3B520AD"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow18SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration7SP",
"type": "TAG",
"id": "AirDuration7SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0B3BE0F5-1969-4116-AF67-D14D18C65F29"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration7SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel5PV",
"type": "TAG",
"id": "AirChannel5PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0BF9FE07-1348-4FAC-83B3-37713C4611FC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel5PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel16PV",
"type": "TAG",
"id": "AirChannel16PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0F7F573F-AD8A-435D-A9E5-1A253EAA9052"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel16PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration4SP",
"type": "TAG",
"id": "WaterDuration4SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0FCDA97E-6418-4DF4-AB0B-9B719C8148E0"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration4SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel8PV",
"type": "TAG",
"id": "AirChannel8PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.0FFEBA8C-3BD1-4257-B637-F55AD8A8DE05"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel8PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow4PV",
"type": "TAG",
"id": "AirFlow4PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.105EED56-0778-40FB-BA0F-1DD98B23D892"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow4PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow19PV",
"type": "TAG",
"id": "AirFlow19PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.10CE0BEA-D926-4E6D-83FC-461A79AB1DA8"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow19PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow10PV",
"type": "TAG",
"id": "WaterFlow10PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1399FCAF-FA13-4CA3-A32D-9C366126B5A0"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow10PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow1SP",
"type": "TAG",
"id": "AirFlow1SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.13DEA627-851E-4B00-801C-5C428F3E5EBC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow1SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration1SP",
"type": "TAG",
"id": "AirDuration1SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1425F7ED-0017-4BD6-BD4B-87727648AA2F"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration1SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow11PV",
"type": "TAG",
"id": "WaterFlow11PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1530314B-613A-4E8A-BC0D-BD28D0E9C5EB"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow11PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay9SP",
"type": "TAG",
"id": "AirDelay9SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.16953B90-212E-4A40-A8D5-81CDA2280A5C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay9SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow11SP",
"type": "TAG",
"id": "AirFlow11SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A297B2B-2365-45CF-8FFB-28C5BCD67C0C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow11SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow17SP",
"type": "TAG",
"id": "AirFlow17SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A6A591B-5552-4BA0-9F24-4D452CFD2D77"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow17SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow5SP",
"type": "TAG",
"id": "WaterFlow5SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1A90845F-8949-436F-BD15-4CB5153F32EB"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow5SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow23SP",
"type": "TAG",
"id": "AirFlow23SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1CAE0D52-E438-4F67-A9AE-844C65649A1E"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow23SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay10SP",
"type": "TAG",
"id": "AirDelay10SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.1D113184-E045-493C-BA3A-A1504AD96B65"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay10SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow3PV",
"type": "TAG",
"id": "AirFlow3PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2326983B-9990-4A14-8214-D62F128DE158"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow3PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "MoldTemp1PV",
"type": "TAG",
"id": "MoldTemp1PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.23C11F34-D27C-4F2A-B7DA-ABCAA0A4FB64"
},
"worker_node_id": "EdgeDevice.Simulator2.MoldTemp1PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow6PV",
"type": "TAG",
"id": "WaterFlow6PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.26D1C814-82D0-4EA4-A706-57EA008C3520"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow6PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow1PV",
"type": "TAG",
"id": "WaterFlow1PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2741C160-07FD-4284-AEDD-6085D80004AA"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow1PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel7PV",
"type": "TAG",
"id": "AirChannel7PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2750B941-11C6-45D4-B186-4F7333C672CD"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel7PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow13PV",
"type": "TAG",
"id": "AirFlow13PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.28084D2B-AF2A-4F45-9977-B296558C5124"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow13PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow9PV",
"type": "TAG",
"id": "WaterFlow9PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.28EBC92A-3DE4-44E5-ADC8-489AD7DCBAAC"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow9PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "RamSpeedUp",
"type": "TAG",
"id": "RamSpeedUp",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2B284910-42E0-4876-A0BE-47A4253064ED"
},
"worker_node_id": "EdgeDevice.Simulator2.RamSpeedUp",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel11PV",
"type": "TAG",
"id": "AirChannel11PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2BB70BB8-A7EC-442E-AF3F-835F1D778E6B"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel11PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel24PV",
"type": "TAG",
"id": "AirChannel24PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2BBC85B9-9A2C-44E5-A160-84D13AE40322"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel24PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow8SP",
"type": "TAG",
"id": "AirFlow8SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2C696F5C-2082-44E3-9D7C-00DACCFB95E4"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow8SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration9SP",
"type": "TAG",
"id": "AirDuration9SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2CE02B16-7BF1-4CDA-9EB2-CAD1C9AC7ED6"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration9SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay12SP",
"type": "TAG",
"id": "AirDelay12SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2D173909-8A22-4B1B-9D27-E9A4C24D70DD"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay12SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step5PressureSP",
"type": "TAG",
"id": "Step5PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2E833A1F-2700-4A41-A4A6-5B4B51D4DE0E"
},
"worker_node_id": "EdgeDevice.Simulator2.Step5PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow2SP",
"type": "TAG",
"id": "AirFlow2SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2ECC5790-C2C8-4E20-A5CD-1649FA0C7259"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow2SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HalfCycle1",
"type": "TAG",
"id": "HalfCycle1",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2F63B774-B35F-43CA-B25F-394FD41FFD5C"
},
"worker_node_id": "EdgeDevice.Simulator2.HalfCycle1",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow4SP",
"type": "TAG",
"id": "AirFlow4SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.2F884021-E5A8-4934-9BF7-9CA73B224596"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow4SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HFDoorOpen",
"type": "TAG",
"id": "HFDoorOpen",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.30A2F3B9-83A2-46B7-8318-E975E51D54A4"
},
"worker_node_id": "EdgeDevice.Simulator2.HFDoorOpen",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow13SP",
"type": "TAG",
"id": "WaterFlow13SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.313E6FF2-5169-4DFC-9595-DFBAB62EB6FA"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow13SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration15SP",
"type": "TAG",
"id": "WaterDuration15SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.342D8268-951A-4831-BBA7-D66E3D11F0E5"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration15SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay23SP",
"type": "TAG",
"id": "AirDelay23SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.34B14B4C-3CBC-41D0-9561-2AB91BF17D22"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay23SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel2PV",
"type": "TAG",
"id": "AirChannel2PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.352A50A9-21AE-4D40-B9D1-4BDC710306DC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel2PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterChannel12PV",
"type": "TAG",
"id": "WaterChannel12PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.37687BD5-6546-49C9-89DB-1C2841167226"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterChannel12PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HFMetalTempPV",
"type": "TAG",
"id": "HFMetalTempPV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.38982E38-89BC-4C0C-8DB6-0A8EFEED0C5D"
},
"worker_node_id": "EdgeDevice.Simulator2.HFMetalTempPV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow20PV",
"type": "TAG",
"id": "AirFlow20PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.38E30062-C936-4037-8B08-9C02BA082960"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow20PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel10PV",
"type": "TAG",
"id": "AirChannel10PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3A277C99-3181-4FF5-B536-D060C91D7399"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel10PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay7SP",
"type": "TAG",
"id": "AirDelay7SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3C0CCB7A-6392-4668-B095-03B450903D9F"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay7SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step2TimeSP",
"type": "TAG",
"id": "Step2TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3CE02796-3711-400E-87EA-0AE7D3FAB287"
},
"worker_node_id": "EdgeDevice.Simulator2.Step2TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow1SP",
"type": "TAG",
"id": "WaterFlow1SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3D8FC076-57B3-46E8-8DDC-55CA58228C8D"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow1SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay2SP",
"type": "TAG",
"id": "WaterDelay2SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3DBF7A4B-9FA7-45F5-B69A-3AF4F4A646BB"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay2SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration10SP",
"type": "TAG",
"id": "AirDuration10SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3E28C867-FC8E-41C0-A060-549186244137"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration10SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay11SP",
"type": "TAG",
"id": "WaterDelay11SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3E36835D-D1B8-4551-93FD-A077094E827A"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay11SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration15SP",
"type": "TAG",
"id": "AirDuration15SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.3EDBDDAF-9707-4687-B250-D4FC846D309C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration15SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel19PV",
"type": "TAG",
"id": "AirChannel19PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4146B7AA-06C9-452B-A94D-DFF4751719B8"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel19PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "MoldTemp4PV",
"type": "TAG",
"id": "MoldTemp4PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.43011C4F-90D3-4491-B8AE-04E11C4BD614"
},
"worker_node_id": "EdgeDevice.Simulator2.MoldTemp4PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Mold",
"type": "TAG",
"id": "Mold",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.458B95A1-5079-4A26-8A3C-3993C423C963"
},
"worker_node_id": "EdgeDevice.Simulator2.Mold",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay4SP",
"type": "TAG",
"id": "WaterDelay4SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.45DEB525-CE9F-4733-8BDC-55F719999E50"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay4SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration18SP",
"type": "TAG",
"id": "AirDuration18SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.47EFDBA0-517B-4791-ABAD-2526B90B2275"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration18SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterTempPV",
"type": "TAG",
"id": "WaterTempPV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4813C546-8947-4D42-8B3B-496F71703C4F"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterTempPV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow16PV",
"type": "TAG",
"id": "WaterFlow16PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.495C9AF9-E495-4948-9811-D6457191CE64"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow16PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow4PV",
"type": "TAG",
"id": "WaterFlow4PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4A28046D-948B-485F-B449-A797A642B603"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow4PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HFMetalTempSP",
"type": "TAG",
"id": "HFMetalTempSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4CBEEB37-C07A-43D8-BFC9-C591CC523FFD"
},
"worker_node_id": "EdgeDevice.Simulator2.HFMetalTempSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow15PV",
"type": "TAG",
"id": "AirFlow15PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4CCBBA4A-40EA-4062-96B3-BE2BE59AD4D6"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow15PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow16SP",
"type": "TAG",
"id": "AirFlow16SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4D6C1FB5-EBB9-41C3-828C-D90F267B8491"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow16SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration8SP",
"type": "TAG",
"id": "WaterDuration8SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4E4CDE8D-2879-41B2-ACFB-945B2E151B7F"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration8SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay19SP",
"type": "TAG",
"id": "AirDelay19SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.4F1E2CE9-7317-4114-9CFF-8E52B81ACF50"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay19SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step5TimeSP",
"type": "TAG",
"id": "Step5TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.55F4925D-82CA-4800-BEA8-0A3449726D1C"
},
"worker_node_id": "EdgeDevice.Simulator2.Step5TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow11PV",
"type": "TAG",
"id": "AirFlow11PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5603E3A3-502F-491B-BA10-EC2E45042136"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow11PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay14SP",
"type": "TAG",
"id": "WaterDelay14SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.586B583A-C111-475D-B13D-EA27228007F6"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay14SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration6SP",
"type": "TAG",
"id": "WaterDuration6SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.58B3CD67-57D2-4D9E-9B7E-8FB4D5E95154"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration6SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow8PV",
"type": "TAG",
"id": "WaterFlow8PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5980A582-E5A5-4B8D-8FAA-797170FCB053"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow8PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow6SP",
"type": "TAG",
"id": "WaterFlow6SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5A77DBE1-0446-48FA-8552-EB8617B5D7E9"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow6SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay15SP",
"type": "TAG",
"id": "AirDelay15SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5BDDD1EB-6D2C-407E-B8DA-E7AC6A2B25CE"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay15SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step7TimeSP",
"type": "TAG",
"id": "Step7TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5DFA21D6-FC78-4DC9-9E9A-FA73D9551EA0"
},
"worker_node_id": "EdgeDevice.Simulator2.Step7TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration13SP",
"type": "TAG",
"id": "WaterDuration13SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.5E8D6D28-A577-48EF-9059-C9B5A0AF7D27"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration13SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration5SP",
"type": "TAG",
"id": "WaterDuration5SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6088D0F0-66FE-4A71-A1A1-BE15229285A7"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration5SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel3PV",
"type": "TAG",
"id": "AirChannel3PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.61073BD5-4D06-4588-85D9-B9EABFC58FD9"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel3PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow14SP",
"type": "TAG",
"id": "AirFlow14SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.611A1DEA-DA2C-4337-8D62-CC4D3D49D4DF"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow14SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step6PressureSP",
"type": "TAG",
"id": "Step6PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.617E1B9D-F11D-4D8B-9CC7-6D51BD8899E4"
},
"worker_node_id": "EdgeDevice.Simulator2.Step6PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration24SP",
"type": "TAG",
"id": "AirDuration24SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.65E499B4-56F5-43AE-8133-320DD1AB66F0"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration24SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay2SP",
"type": "TAG",
"id": "AirDelay2SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.67B86F3A-518A-4F5B-9858-AABB9D5A2E07"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay2SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "PartId2",
"type": "TAG",
"id": "PartId2",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.684E0337-2981-429A-AE1B-F8C281FC1B4B"
},
"worker_node_id": "EdgeDevice.Simulator2.PartId2",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "PressurisationPV",
"type": "TAG",
"id": "PressurisationPV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.693FD8A3-D186-4D2C-97D3-B2ABFA3BF7BD"
},
"worker_node_id": "EdgeDevice.Simulator2.PressurisationPV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Product",
"type": "TAG",
"id": "Product",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6B2DDA4D-F4C7-42FB-8BF6-582914B76719"
},
"worker_node_id": "EdgeDevice.Simulator2.Product",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay3SP",
"type": "TAG",
"id": "WaterDelay3SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6B59BA54-ADA6-4F9E-BB85-A0BA264A9F60"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay3SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow12PV",
"type": "TAG",
"id": "AirFlow12PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6D5EC569-FFD6-4642-9599-BEAC0EDE71B4"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow12PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration11SP",
"type": "TAG",
"id": "WaterDuration11SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.6D6FBCE3-DA5E-4FB4-BB93-596D7AD3068C"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration11SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirTempPV",
"type": "TAG",
"id": "AirTempPV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.70FFE8BC-D156-4256-9291-A825057EBAFC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirTempPV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration8SP",
"type": "TAG",
"id": "AirDuration8SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.72011829-8CC7-4A56-BC8D-A71A25D5EE65"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration8SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow24PV",
"type": "TAG",
"id": "AirFlow24PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.753BBAEF-FFB3-4A72-B6C6-35E6BE8F06C4"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow24PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel4PV",
"type": "TAG",
"id": "AirChannel4PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.75A6A198-ACBF-45E2-A09E-3E4CFB9A1807"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel4PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay16SP",
"type": "TAG",
"id": "AirDelay16SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.772AB7FD-900E-4209-B36E-48324BA02C5B"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay16SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay3SP",
"type": "TAG",
"id": "AirDelay3SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.77C7B31A-9F21-4345-9589-0DA26AD2032E"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay3SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration6SP",
"type": "TAG",
"id": "AirDuration6SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.782D14D8-EFBB-49E6-A047-7E47F8E456F3"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration6SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration20SP",
"type": "TAG",
"id": "AirDuration20SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7A4FA8A3-C52A-42C3-9282-01A06BDA881C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration20SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow14PV",
"type": "TAG",
"id": "WaterFlow14PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7A62E47A-F2B7-4906-859E-33B7E88D998E"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow14PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay14SP",
"type": "TAG",
"id": "AirDelay14SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7A7F95C4-44FD-46E2-81A5-D03BD1EA79BA"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay14SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow2PV",
"type": "TAG",
"id": "AirFlow2PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7ACF6C69-8B83-48F6-9EBF-71C62D72B39C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow2PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "PartId1",
"type": "TAG",
"id": "PartId1",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7C086C70-E2FF-4418-A77B-292E1132A166"
},
"worker_node_id": "EdgeDevice.Simulator2.PartId1",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step2PressureSP",
"type": "TAG",
"id": "Step2PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7E3544DE-E813-4688-B9A5-97C0CDF51709"
},
"worker_node_id": "EdgeDevice.Simulator2.Step2PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay8SP",
"type": "TAG",
"id": "AirDelay8SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7E778672-79FB-48F6-902C-18D237CE819F"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay8SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow24SP",
"type": "TAG",
"id": "AirFlow24SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.7F16DDB2-62FB-49BD-96FF-259F46C7EAE6"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow24SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "MoldTemp2PV",
"type": "TAG",
"id": "MoldTemp2PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.80B8C0D9-D61A-4B52-9493-A85DD794CDE2"
},
"worker_node_id": "EdgeDevice.Simulator2.MoldTemp2PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow19SP",
"type": "TAG",
"id": "AirFlow19SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8179CF1A-8D84-4AEB-946C-3903BBC48389"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow19SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow22SP",
"type": "TAG",
"id": "AirFlow22SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.823D577D-B4FE-44E0-AC07-D5506FFDA025"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow22SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration4SP",
"type": "TAG",
"id": "AirDuration4SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.82693835-30E8-42EF-9F1A-3BB649B5F738"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration4SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow14SP",
"type": "TAG",
"id": "WaterFlow14SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.826DFC1E-3C4E-401D-BBDD-F4834D0B398F"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow14SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow4SP",
"type": "TAG",
"id": "WaterFlow4SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.829BAA07-6F60-4711-9E72-ED3608EC6F69"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow4SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay1SP",
"type": "TAG",
"id": "WaterDelay1SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.83FFCB83-32F2-42B0-8720-660E73F4A346"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay1SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow20SP",
"type": "TAG",
"id": "AirFlow20SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.84BF47D7-9DBD-415B-808E-98A010D9A2E2"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow20SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay8SP",
"type": "TAG",
"id": "WaterDelay8SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8562F827-6E1E-43DD-A58A-D6AC13EA21BF"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay8SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "NormalCycle",
"type": "TAG",
"id": "NormalCycle",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.85D5E4F4-DE3B-4CD0-AE51-62A17F441BF7"
},
"worker_node_id": "EdgeDevice.Simulator2.NormalCycle",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow18PV",
"type": "TAG",
"id": "AirFlow18PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.86A215A6-6665-4F4C-9076-A6955822D16F"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow18PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay24SP",
"type": "TAG",
"id": "AirDelay24SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.88C85F1E-AA58-4C73-9998-A9D42EBE86DE"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay24SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HalfCycle3",
"type": "TAG",
"id": "HalfCycle3",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8925F28D-53B3-42BB-B3A8-FA8B33618D39"
},
"worker_node_id": "EdgeDevice.Simulator2.HalfCycle3",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HoldingTimeSP",
"type": "TAG",
"id": "HoldingTimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8B4A2274-D4E3-463E-BBD0-36B1603CD295"
},
"worker_node_id": "EdgeDevice.Simulator2.HoldingTimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay9SP",
"type": "TAG",
"id": "WaterDelay9SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8BD09C94-C269-4A8B-B34F-5CB8E317178D"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay9SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration16SP",
"type": "TAG",
"id": "AirDuration16SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8BD353FE-B6A4-4C20-A828-B569C68FAB1C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration16SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow12SP",
"type": "TAG",
"id": "AirFlow12SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8D405273-0132-42FC-96B0-6FF6D1B4279C"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow12SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration1SP",
"type": "TAG",
"id": "WaterDuration1SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.8ED3098F-349E-4B08-A087-6EEB80F29F56"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration1SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration13SP",
"type": "TAG",
"id": "AirDuration13SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.90A5F721-3B86-4A8A-95C7-D539387C36C5"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration13SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "CatcherSpeedOut",
"type": "TAG",
"id": "CatcherSpeedOut",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.93A9D9FF-15E6-41B1-A103-1F38DEB2E19E"
},
"worker_node_id": "EdgeDevice.Simulator2.CatcherSpeedOut",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow3SP",
"type": "TAG",
"id": "WaterFlow3SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.95C40711-9381-4CE2-AE69-8C795AA4E1FD"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow3SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel13PV",
"type": "TAG",
"id": "AirChannel13PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.97DE4DD2-D0BE-4159-86BE-4FACCDDDB602"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel13PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow7SP",
"type": "TAG",
"id": "AirFlow7SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.988FAC5F-CAFA-477A-916C-BBA4DBB0AE11"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow7SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration3SP",
"type": "TAG",
"id": "WaterDuration3SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.99065854-8756-458C-B819-830CF8AAD847"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration3SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration9SP",
"type": "TAG",
"id": "WaterDuration9SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.99428415-F8B3-4532-B51C-0FCAF2E0B7F7"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration9SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay22SP",
"type": "TAG",
"id": "AirDelay22SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9C40696C-3940-46AE-9571-CDBE55DBB897"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay22SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow17PV",
"type": "TAG",
"id": "AirFlow17PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9CEF13C7-83B5-42F3-8791-D584E164D060"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow17PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel15PV",
"type": "TAG",
"id": "AirChannel15PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9E66BA53-24A3-4C5E-965A-DF620B0CB9AF"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel15PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow12SP",
"type": "TAG",
"id": "WaterFlow12SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9FA96094-04F9-4F55-A659-2E189A17A91F"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow12SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow15SP",
"type": "TAG",
"id": "WaterFlow15SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.9FCCB844-4E7D-4CA3-B074-3832A43271CE"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow15SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow8SP",
"type": "TAG",
"id": "WaterFlow8SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A31733ED-84B6-4110-9653-61A2E5046EF2"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow8SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "MoldTemp3PV",
"type": "TAG",
"id": "MoldTemp3PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A46AF57B-48F3-49DA-BF68-B19668D04A4F"
},
"worker_node_id": "EdgeDevice.Simulator2.MoldTemp3PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow15SP",
"type": "TAG",
"id": "AirFlow15SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A4A8C0F3-5824-419F-BFD7-40DFE8D0F350"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow15SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel22PV",
"type": "TAG",
"id": "AirChannel22PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A4E328FA-9832-4D7B-AC03-996BDF32E9B1"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel22PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterChannel15PV",
"type": "TAG",
"id": "WaterChannel15PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A52DA03B-E852-4699-8910-1245DFC833C0"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterChannel15PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow6SP",
"type": "TAG",
"id": "AirFlow6SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A5A9C47E-BD7B-4E8E-9403-F23B323BD989"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow6SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step8TimeSP",
"type": "TAG",
"id": "Step8TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A5F9922A-1026-42EB-BACC-D9429F186EBD"
},
"worker_node_id": "EdgeDevice.Simulator2.Step8TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow22PV",
"type": "TAG",
"id": "AirFlow22PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A62FA8B2-BA7A-414B-BEA6-723B0FE07BF0"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow22PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "PartWeightSP",
"type": "TAG",
"id": "PartWeightSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A8C800D0-9B13-40CD-84B9-817A23AC17B1"
},
"worker_node_id": "EdgeDevice.Simulator2.PartWeightSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay12SP",
"type": "TAG",
"id": "WaterDelay12SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.A9530283-8C7F-4CEB-A60A-D376EFADC8C4"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay12SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay17SP",
"type": "TAG",
"id": "AirDelay17SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AA0609EF-6E31-4EDA-959A-79AED0582B69"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay17SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration7SP",
"type": "TAG",
"id": "WaterDuration7SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AB25B043-2561-4D11-B6D4-3DA86140F967"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration7SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay5SP",
"type": "TAG",
"id": "WaterDelay5SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AC3DCCF4-B843-40DE-8A1B-4FDAFF6FFBB5"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay5SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow2SP",
"type": "TAG",
"id": "WaterFlow2SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.AD17B4A5-7CE3-4FB7-A4CA-2570C16A2011"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow2SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow10PV",
"type": "TAG",
"id": "AirFlow10PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B02A9EC4-E4EA-493F-BC82-9258A1AEB548"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow10PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step3TimeSP",
"type": "TAG",
"id": "Step3TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B2F0EE2A-AE46-4EBA-A510-C990CFB3C3FC"
},
"worker_node_id": "EdgeDevice.Simulator2.Step3TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow23PV",
"type": "TAG",
"id": "AirFlow23PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B3619189-9417-46A6-9A7D-5ACC63837C88"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow23PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow7PV",
"type": "TAG",
"id": "AirFlow7PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B4A8620F-C4A6-4C9F-A0F0-E079C39D5BF2"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow7PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow9SP",
"type": "TAG",
"id": "WaterFlow9SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B7B06973-CCB7-4314-A400-C2786F8EEB10"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow9SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration21SP",
"type": "TAG",
"id": "AirDuration21SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.B8CDF42B-8B6F-4646-92A4-52E4417A7A10"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration21SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow5SP",
"type": "TAG",
"id": "AirFlow5SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.BB156F9D-04F8-4B5B-B731-7600739DDEAC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow5SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow9PV",
"type": "TAG",
"id": "AirFlow9PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.BD468C80-C257-4D1F-8C06-29ACE23FE7DC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow9PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel21PV",
"type": "TAG",
"id": "AirChannel21PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C030A692-C00F-4A02-B4AA-1FEAC7E5DA1A"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel21PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "DieClose",
"type": "TAG",
"id": "DieClose",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C1816CDF-B574-4881-8421-0FFED125DC1A"
},
"worker_node_id": "EdgeDevice.Simulator2.DieClose",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay6SP",
"type": "TAG",
"id": "AirDelay6SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C309619E-7B7D-4AB4-B71E-66C535FF56C0"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay6SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay20SP",
"type": "TAG",
"id": "AirDelay20SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C3C09DC0-B9F1-40CC-95BD-EF334EC766B8"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay20SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow9SP",
"type": "TAG",
"id": "AirFlow9SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C5E2FBC0-F33B-48DD-AF87-46B784C328C9"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow9SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterChannel11PV",
"type": "TAG",
"id": "WaterChannel11PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C80B1464-5737-49A6-9381-F78A249CDA14"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterChannel11PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay5SP",
"type": "TAG",
"id": "AirDelay5SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C82A4F43-1258-4CE1-B1F7-94180FA478ED"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay5SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow5PV",
"type": "TAG",
"id": "WaterFlow5PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C967C859-D305-421A-AFF5-7C93F1A66790"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow5PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow10SP",
"type": "TAG",
"id": "WaterFlow10SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C96C2752-CDC2-487D-A1A3-606B10A5539A"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow10SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel20PV",
"type": "TAG",
"id": "AirChannel20PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.C98EB2DA-32B1-4B0F-B792-CE3BB39DBB9B"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel20PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration12SP",
"type": "TAG",
"id": "AirDuration12SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CA132DD6-2067-4829-8A7C-17842E9A1B51"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration12SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel17PV",
"type": "TAG",
"id": "AirChannel17PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CA6DEB17-9C5B-4E66-9B8F-63D96306B359"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel17PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration17SP",
"type": "TAG",
"id": "AirDuration17SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CAAA6CBA-27B6-430E-B77C-AE04F5258CC8"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration17SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow5PV",
"type": "TAG",
"id": "AirFlow5PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CAAD3E6B-3328-4FDE-99A4-9445A397598D"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow5PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay21SP",
"type": "TAG",
"id": "AirDelay21SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CEA6A376-6D3F-4F67-8B1B-C6DF73509BAF"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay21SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow2PV",
"type": "TAG",
"id": "WaterFlow2PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.CF5CB0A3-0F27-4BB2-82F7-B5A5CE37AE69"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow2PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel9PV",
"type": "TAG",
"id": "AirChannel9PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D002C41C-5FA8-4F95-B5EF-14C675C12B27"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel9PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration5SP",
"type": "TAG",
"id": "AirDuration5SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D00F2440-EFDA-4162-8E7F-5479AB380D7F"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration5SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterChannel16PV",
"type": "TAG",
"id": "WaterChannel16PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D114FFB2-FBB3-4533-8864-1EDA1AB6ED8C"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterChannel16PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration3SP",
"type": "TAG",
"id": "AirDuration3SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D23E4621-00ED-4ECE-A557-471663543807"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration3SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step4PressureSP",
"type": "TAG",
"id": "Step4PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D3AECF25-D405-4F3A-9DF1-D31D365C79B5"
},
"worker_node_id": "EdgeDevice.Simulator2.Step4PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow10SP",
"type": "TAG",
"id": "AirFlow10SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D3BCD35A-3A92-4224-B80C-C2A5059D9DCC"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow10SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "MoldTempSP",
"type": "TAG",
"id": "MoldTempSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D538C95E-569D-4591-9C3C-6297B0F8B4DD"
},
"worker_node_id": "EdgeDevice.Simulator2.MoldTempSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel12PV",
"type": "TAG",
"id": "AirChannel12PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.D78378B6-40CB-49F9-834E-182C45C353C8"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel12PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay6SP",
"type": "TAG",
"id": "WaterDelay6SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DAA82093-385B-45F4-83F1-E61795423426"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay6SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirPressurePV",
"type": "TAG",
"id": "AirPressurePV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DAB98F8D-8A1F-44AD-962C-6BDA4AD09AE0"
},
"worker_node_id": "EdgeDevice.Simulator2.AirPressurePV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step4TimeSP",
"type": "TAG",
"id": "Step4TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DC7C05E1-5BA0-4FA3-8A6F-CD3987C85F6F"
},
"worker_node_id": "EdgeDevice.Simulator2.Step4TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration23SP",
"type": "TAG",
"id": "AirDuration23SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DCBF1103-2F1F-4FDB-809F-89F6B247E804"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration23SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay7SP",
"type": "TAG",
"id": "WaterDelay7SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DD2D8CD1-EE9C-4339-8901-3E620E8E3B44"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay7SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step8PressureSP",
"type": "TAG",
"id": "Step8PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.DF0DD4C5-EE23-4996-97AC-874A38DD6225"
},
"worker_node_id": "EdgeDevice.Simulator2.Step8PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow7PV",
"type": "TAG",
"id": "WaterFlow7PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E04CE55E-2012-4F2F-B790-5C7C8051350E"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow7PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterChannel14PV",
"type": "TAG",
"id": "WaterChannel14PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E0787392-4F33-4FB6-9993-C95F0E5C840F"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterChannel14PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step3PressureSP",
"type": "TAG",
"id": "Step3PressureSP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E1572296-76A2-4051-9AA1-C40B7820698C"
},
"worker_node_id": "EdgeDevice.Simulator2.Step3PressureSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterChannel13PV",
"type": "TAG",
"id": "WaterChannel13PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E31C9AF4-BF1E-4125-A8EF-4795F815DD29"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterChannel13PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step6TimeSP",
"type": "TAG",
"id": "Step6TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E32CAC30-CF64-42B9-B06B-36241887BB67"
},
"worker_node_id": "EdgeDevice.Simulator2.Step6TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration16SP",
"type": "TAG",
"id": "WaterDuration16SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E35E01B9-7AC6-418D-ABE6-8401951F2285"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration16SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay13SP",
"type": "TAG",
"id": "AirDelay13SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E6F0988E-BEA9-474B-9EAC-014696F62FBE"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay13SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration14SP",
"type": "TAG",
"id": "WaterDuration14SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E72F80AF-01CD-4F1A-A5B4-3D8F8D1CF738"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration14SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow13SP",
"type": "TAG",
"id": "AirFlow13SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E7DAAD1E-D54F-4EB7-9936-0A37C0560109"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow13SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow3PV",
"type": "TAG",
"id": "WaterFlow3PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E8034707-FBEE-4AEE-880F-838271FD83DF"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow3PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow21SP",
"type": "TAG",
"id": "AirFlow21SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.E99351F2-13F6-47C6-87C8-6A1BB75DD58E"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow21SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel14PV",
"type": "TAG",
"id": "AirChannel14PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EB35803F-E727-4608-ABF7-43BEC104DDFE"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel14PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "Step1TimeSP",
"type": "TAG",
"id": "Step1TimeSP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EB773C85-095E-4BBB-AD60-54645275D32C"
},
"worker_node_id": "EdgeDevice.Simulator2.Step1TimeSP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel23PV",
"type": "TAG",
"id": "AirChannel23PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EC2034AD-36DC-4EFA-B541-A237B0049A29"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel23PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "RamSpeedDown",
"type": "TAG",
"id": "RamSpeedDown",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.ECBEE0DF-FEC8-459D-AFE9-7F2AB5EEDF30"
},
"worker_node_id": "EdgeDevice.Simulator2.RamSpeedDown",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay11SP",
"type": "TAG",
"id": "AirDelay11SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.EFFDA90B-2702-4D61-897C-752AB8E06214"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay11SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay4SP",
"type": "TAG",
"id": "AirDelay4SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F1088E8E-857E-4BE6-B06C-1927A7C797ED"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay4SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow14PV",
"type": "TAG",
"id": "AirFlow14PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F2781CA8-1650-48E0-A30E-3DF888FEAB25"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow14PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay15SP",
"type": "TAG",
"id": "WaterDelay15SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F371E13D-B253-41D1-8AEB-562BC0C9AB00"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay15SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow16SP",
"type": "TAG",
"id": "WaterFlow16SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F416870F-AC5B-4037-95DF-055C9226CDEB"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow16SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow11SP",
"type": "TAG",
"id": "WaterFlow11SP",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F5F04E37-4E04-4D1E-866F-A08D448EAA31"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow11SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDelay10SP",
"type": "TAG",
"id": "WaterDelay10SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F81A3607-161C-4878-A837-E23A577A1892"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDelay10SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirChannel6PV",
"type": "TAG",
"id": "AirChannel6PV",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F81C8C33-F8F9-490F-812F-DAE1B19A9E10"
},
"worker_node_id": "EdgeDevice.Simulator2.AirChannel6PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration2SP",
"type": "TAG",
"id": "WaterDuration2SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F85E5877-A90E-4180-BB27-577493D5C401"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration2SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow15PV",
"type": "TAG",
"id": "WaterFlow15PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F862300A-63F4-43AF-B857-DC1A8F2B2391"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow15PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterDuration10SP",
"type": "TAG",
"id": "WaterDuration10SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F8F814E5-438A-4CC0-B678-2F49A2EE3A3F"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterDuration10SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "WaterFlow12PV",
"type": "TAG",
"id": "WaterFlow12PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.F94700D2-EEDE-478C-85B4-2FADD12F3384"
},
"worker_node_id": "EdgeDevice.Simulator2.WaterFlow12PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration22SP",
"type": "TAG",
"id": "AirDuration22SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FB31AAB2-54F5-41ED-836E-D32C03136A5F"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration22SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow6PV",
"type": "TAG",
"id": "AirFlow6PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FB9F1277-B0D2-4377-96D7-C6AE550938A0"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow6PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDuration2SP",
"type": "TAG",
"id": "AirDuration2SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FBBF571B-16A2-40D1-818D-74ABE0B9FDD1"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDuration2SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "HalfCycle2",
"type": "TAG",
"id": "HalfCycle2",
"node_source": "import",
"data": {
"dataType": "bool",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FBE1A6FD-9D94-4BEB-968A-73F8BF9F520B"
},
"worker_node_id": "EdgeDevice.Simulator2.HalfCycle2",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow8PV",
"type": "TAG",
"id": "AirFlow8PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FBEA9C28-6F8C-46BD-93E1-E76D2C7C0911"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow8PV",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirDelay18SP",
"type": "TAG",
"id": "AirDelay18SP",
"node_source": "import",
"data": {
"dataType": "string",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FCF20558-5E63-4AD2-8883-2F4BC05820AD"
},
"worker_node_id": "EdgeDevice.Simulator2.AirDelay18SP",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "AirFlow21PV",
"type": "TAG",
"id": "AirFlow21PV",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.raw.779F42F3-54FC-4A87-B9A6-CD39CFA4A97D.FD47CC85-6139-4FD3-AAF1-4ABAF29BBA61"
},
"worker_node_id": "EdgeDevice.Simulator2.AirFlow21PV",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
},
{
"name": "ClassificationSimulator",
"type": "DEVICE",
"id": "ClassificationSimulator",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.ClassificationSimulator",
"worker_node_id_mode": "hierarchical",
"children": [
{
"name": "motionTopic8",
"type": "TAG",
"id": "motionTopic8",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic8"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic8",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic1",
"type": "TAG",
"id": "motionTopic1",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic1"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic1",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic6",
"type": "TAG",
"id": "motionTopic6",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic6"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic6",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic5",
"type": "TAG",
"id": "motionTopic5",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic5"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic5",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic0",
"type": "TAG",
"id": "motionTopic0",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic0"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic0",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic2",
"type": "TAG",
"id": "motionTopic2",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic2"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic2",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic3",
"type": "TAG",
"id": "motionTopic3",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic3"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic3",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "motionTopic4",
"type": "TAG",
"id": "motionTopic4",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.ClassificationSimulator.motionTopic4"
},
"worker_node_id": "EdgeDevice.ClassificationSimulator.motionTopic4",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
},
{
"name": "Boiler",
"type": "DEVICE",
"id": "Boiler",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.Boiler",
"worker_node_id_mode": "hierarchical",
"children": null
},
{
"name": "sim1",
"type": "DEVICE",
"id": "sim1",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.sim1",
"worker_node_id_mode": "hierarchical",
"children": [
{
"name": "sine1",
"type": "TAG",
"id": "sine1",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.sim1.sine1"
},
"worker_node_id": "EdgeDevice.sim1.sine1",
"worker_node_id_mode": "hierarchical",
"children": []
},
{
"name": "sine2",
"type": "TAG",
"id": "sine2",
"node_source": "import",
"data": {
"dataType": "double",
"topic": "devicehub.alias.sim1.sine2"
},
"worker_node_id": "EdgeDevice.sim1.sine2",
"worker_node_id_mode": "hierarchical",
"children": []
}
]
},
{
"name": "newest_device",
"type": "DEVICE",
"id": "newest_device",
"node_source": "import",
"data": null,
"worker_node_id": "EdgeDevice.newest device",
"worker_node_id_mode": "hierarchical",
"children": null
}
]
}
}
}
Get Service Configuration
POST {{edgeUrl}}/opcua/v2
Get Service Configuration
Returns the OPC UA server's bind configuration: the host interface, the port, and the NodeUnderRoot flag controlling address-space layout.
Endpoint
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query GetServiceConfig {
GetServiceConfig {
Host
NodeUnderRoot
Port
}
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.GetServiceConfig.Host |
string | Bind address. 0.0.0.0 listens on every interface; otherwise an interface IP. |
data.GetServiceConfig.NodeUnderRoot |
boolean | If true, nodes are exposed under the server's standard root; if false, in a custom namespace. |
data.GetServiceConfig.Port |
integer | OPC UA TCP port. Standard is 4840. |
{
"data": {
"GetServiceConfig": {
"Host": "0.0.0.0",
"NodeUnderRoot": true,
"Port": 4840
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query GetServiceConfig {
GetServiceConfig {
Host
NodeUnderRoot
Port
}
}
Response
Status: 200 OK
{
"data": {
"GetServiceConfig": {
"Host": "0.0.0.0",
"NodeUnderRoot": true,
"Port": 4840
}
}
}
Change Service Configuration
POST {{edgeUrl}}/opcua/v2
Change Service Configuration
Updates the OPC UA server's bind configuration. The new settings take effect after the next Stop OPC UA Service / Start OPC UA Service cycle -- the running listener is not reconfigured live.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation SetServiceConfig($input: ServiceConfigRequest!) {
SetServiceConfig(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
Host |
String! |
Yes | New bind address. Use 0.0.0.0 to listen on every interface, or a specific IP. |
Port |
Int! |
Yes | TCP port (typical: 4840). Conflicts cause Start OPC UA Service to fail. |
NodeUnderRoot |
Boolean! |
Yes | Address-space layout flag (see Get Service Configuration). |
{
"input": {
"Host": "10.30.50.1",
"Port": 4840,
"NodeUnderRoot": true
}
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "SetServiceConfig": null } }
Remember to restart the service for the change to apply.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation SetServiceConfig($input: ServiceConfigRequest!) {
SetServiceConfig(input: $input)
}
Variables
{
"input": {
"NodeUnderRoot": true,
"Host": "10.30.50.1",
"Port": 4840
}
}
Response
Status: 200 OK
{
"data": {
"SetServiceConfig": null
}
}
Start OPC UA Service
POST {{edgeUrl}}/opcua/v2
Start OPC UA Service
Starts the OPC UA server listener. The server binds to Host:Port from Get Service Configuration and begins accepting external OPC UA clients. Idempotent for already-running servers.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ServiceStart {
ServiceStart
}
No arguments.
Response
200 OK -- application/json. No data returned on success.
{ "data": { "ServiceStart": null } }
A successful return does not guarantee the server is reachable -- it means the start was accepted. Confirm by calling Connections > Get Server Metrics after a brief moment.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ServiceStart {
ServiceStart
}
Response
Status: 200 OK
{
"data": {
"ServiceStart": null
}
}
Stop OPC UA Service
POST {{edgeUrl}}/opcua/v2
Stop OPC UA Service
Stops the OPC UA server listener. External clients are disconnected gracefully; existing sessions terminate. The hierarchy is preserved in storage; restart with Start OPC UA Service.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation ServiceStop {
ServiceStop
}
No arguments.
Response
200 OK -- application/json. No data returned on success.
{ "data": { "ServiceStop": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation ServiceStop {
ServiceStop
}
Response
Status: 200 OK
{
"data": {
"ServiceStop": null
}
}
Get Security and Authentication Settings
POST {{edgeUrl}}/opcua/v2
Get Security and Authentication Settings
Returns the OPC UA server's enabled security modes, security policies, and authentication modes -- the surface external clients negotiate against when connecting.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query GetConnectionSettings {
GetConnectionSettings {
EnabledSecurityModes
EnabledSecurityPolicies
EnabledAuthModes
}
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.GetConnectionSettings.EnabledSecurityModes |
string[] | OPC UA security modes enabled: None, Sign, SignAndEncrypt. |
data.GetConnectionSettings.EnabledSecurityPolicies |
string[] | OPC UA security policies enabled: Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. |
data.GetConnectionSettings.EnabledAuthModes |
string[] | OPC UA user-auth modes: Anonymous, Password, Certificate. |
{
"data": {
"GetConnectionSettings": {
"EnabledSecurityModes": ["SignAndEncrypt", "Sign", "None"],
"EnabledSecurityPolicies": [
"Basic256Sha256",
"Aes256_Sha256_RsaPss",
"Basic128Rsa15",
"Aes128_Sha256_RsaOaep",
"Basic256"
],
"EnabledAuthModes": ["Certificate", "Password", "Anonymous"]
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query GetConnectionSettings {
GetConnectionSettings {
EnabledSecurityModes
EnabledSecurityPolicies
EnabledAuthModes
}
}
Response
Status: 200 OK
{
"data": {
"GetConnectionSettings": {
"EnabledSecurityModes": [
"SignAndEncrypt",
"Sign",
"None"
],
"EnabledSecurityPolicies": [
"Basic256Sha256",
"Aes256_Sha256_RsaPss",
"Basic128Rsa15",
"Aes128_Sha256_RsaOaep",
"Basic256"
],
"EnabledAuthModes": [
"Certificate",
"Password",
"Anonymous"
]
}
}
}
Change Security and Authentication Settings
POST {{edgeUrl}}/opcua/v2
Change Security and Authentication Settings
Updates the OPC UA server's enabled security modes, policies, and auth modes. Takes effect on the next start/restart.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation UpdateConnectionSettings($input: UpdateConnectionSettingsRequest!) {
UpdateConnectionSettings(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
EnabledSecurityModes |
[String!]! |
Yes | Subset of None, Sign, SignAndEncrypt. |
EnabledSecurityPolicies |
[String!]! |
Yes | Subset of Basic128Rsa15, Basic256, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. |
EnabledAuthModes |
[String!]! |
Yes | Subset of Anonymous, Password, Certificate. |
{
"input": {
"EnabledSecurityModes": ["None", "Sign", "SignAndEncrypt"],
"EnabledSecurityPolicies": [
"Basic256Sha256",
"Basic256",
"Basic128Rsa15",
"Aes128_Sha256_RsaOaep",
"Aes256_Sha256_RsaPss"
],
"EnabledAuthModes": ["Anonymous", "Password", "Certificate"]
}
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "UpdateConnectionSettings": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
Security recommendations
- Production: disable
Nonesecurity mode andAnonymousauth. - Pilot / testing: leave them on for ease of access.
Basic128Rsa15is deprecated in newer OPC UA stacks; remove unless you have legacy clients that require it.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation UpdateConnectionSettings($input: UpdateConnectionSettingsRequest!) {
UpdateConnectionSettings(input: $input)
}
Variables
{
"input": {
"EnabledSecurityModes": [
"None",
"Sign",
"SignAndEncrypt"
],
"EnabledSecurityPolicies": [
"Basic256Sha256",
"Basic256",
"Basic128Rsa15",
"Aes128_Sha256_RsaOaep",
"Aes256_Sha256_RsaPss"
],
"EnabledAuthModes": [
"Anonymous",
"Certificate",
"Password"
]
}
}
Response
Status: 200 OK
{
"data": {
"UpdateConnectionSettings": null
}
}
Download Server Logs
POST {{edgeUrl}}/opcua/v2
Download Server Logs
Returns the OPC UA server's log file as a base64-encoded blob in data.DownloadServerLog. Decode client-side to read the text. Use this for support tickets or local diagnostics.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query DownloadServerLog {
DownloadServerLog
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.DownloadServerLog |
string | Base64-encoded log file contents. Decode to recover the plaintext log. |
{
"data": {
"DownloadServerLog": "WzIwMjQtMDctMzEgMTA6NDE6MTQuMTI5XSBbc2VydmljZV0gW2luZm9d..."
}
}
To decode (example with Python):
import base64
plain = base64.b64decode(resp["data"]["DownloadServerLog"]).decode("utf-8")
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query DownloadServerLog {
DownloadServerLog
}
Response
Status: 200 OK
{
"data": {
"DownloadServerLog": "WzIwMjQtMDctMzEgMTA6NDE6MTQuMTI5XSBbc2VydmljZV0gW2luZm9dIGxvYWRpbmcgY29uZmlndXJhdGlvbgpbMjAyNC0wNy0zMSAxMDo0MToxNC4xOTNdIFtzZXJ2aWNlXSBbaW5mb10gc3RhcnRpbmcgc2VydmVyIHdpdGggY29uZmlnIGZpbGUgL3RtcC9jb25maWdfZmlsZS5pbmkKWzIwMjQtMDctMzEgMTA6NDE6MTQuMjE1XSBbc2VydmljZV0gW2luZm9dIGluaXRpYWxpemUKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTZXJ2ZXIgb3BlbmVkIGVuZHBvaW50cyBmb3IgZm9sbG93aW5nIFVSTHM6CiAgICAgb3BjLnRjcDovLzEwLjMwLjUwLjE6NDg0MAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKWzIwMjQtMDctMzEgMTA6NDE6MTUuMTg2XSBbc2VydmljZV0gW2luZm9dIHN0YXJ0aW5nIGhlYXJ0YmVhdCBwcm9jZXNzaW5nIGZvciAxMjcuMC4wLjE6OTA5MyBlbmRwb2ludApbMjAyNC0wNy0zMSAxMDo0MToxNi4wOTVdIFtzZXJ2aWNlXSBbaW5mb10gZmluaXNoZWQuClsyMDI0LTA3LTMxIDEwOjQyOjAzLjc3OF0gW3NlcnZpY2VdIFtpbmZvXSBsb2FkaW5nIGNvbmZpZ3VyYXRpb24KWzIwMjQtMDctMzEgMTA6NDI6MDMuODAwXSBbc2VydmljZV0gW2luZm9dIHN0YXJ0aW5nIHNlcnZlciB3aXRoIGNvbmZpZyBmaWxlIC90bXAvY29uZmlnX2ZpbGUuaW5pClsyMDI0LTA3LTMxIDEwOjQyOjAzLjgwMF0gW3NlcnZpY2VdIFtpbmZvXSBpbml0aWFsaXplCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU2VydmVyIG9wZW5lZCBlbmRwb2ludHMgZm9yIGZvbGxvd2luZyBVUkxzOgogICAgIG9wYy50Y3A6Ly8xMC4zMC41MC4xOjQ4NDAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClsyMDI0LTA3LTMxIDEwOjQyOjA0Ljc5OV0gW3NlcnZpY2VdIFtpbmZvXSBzdGFydGluZyBoZWFydGJlYXQgcHJvY2Vzc2luZyBmb3IgMTI3LjAuMC4xOjkwOTMgZW5kcG9pbnQKWzIwMjQtMDctMzEgMTA6NDI6MzkuODQ2XSBbc2VydmljZV0gW2luZm9dIGZpbmlzaGVkLgo="
}
}
List Users
POST {{edgeUrl}}/opcua/v2
List Users
Returns every OPC UA-level user provisioned on the server. These are the credentials external OPC UA clients use to authenticate when the server is configured with Password auth -- separate from the LE API token.
Endpoint
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query ListUsers {
ListUsers {
Disabled
Password
Username
}
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.ListUsers[].Username |
string | User name. |
data.ListUsers[].Password |
string | null |
data.ListUsers[].Disabled |
boolean | true if the account is disabled. |
{
"data": {
"ListUsers": [
{ "Disabled": false, "Password": null, "Username": "apiOPCusername" }
]
}
}
Note: user creation is performed via the LE UI's OPC UA admin page rather than a dedicated mutation on this surface. Once created, use
Update Userto change the disabled flag.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query ListUsers {
ListUsers {
Disabled
Password
Username
}
}
Response
Status: 200 OK
{
"data": {
"ListUsers": [
{
"Disabled": false,
"Password": null,
"Username": "apiOPCusername"
}
]
}
}
Update User
POST {{edgeUrl}}/opcua/v2
Update User
Updates an OPC UA-level user's state. The exposed fields here are Username (the selector) and Disabled (the enable/disable toggle). Password rotation is handled via the LE UI's OPC UA admin page.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation UpdateUser($input: UserRequest!) {
UpdateUser(input: $input)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
Username |
String! |
Yes | User to update. |
Disabled |
Boolean! |
Yes | true to disable, false to enable. |
{
"input": {
"Username": "{{opc_username}}",
"Disabled": false
}
}
Response
200 OK -- application/json. No data returned on success.
{ "data": { "UpdateUser": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation UpdateUser($input: UserRequest!) {
UpdateUser(input: $input)
}
Variables
{
"input": {
"Username": "{{opc_username}}",
"Disabled": false
}
}
Response
Status: 200 OK
{
"data": {
"UpdateUser": null
}
}
Delete User
POST {{edgeUrl}}/opcua/v2
Delete User
Deletes an OPC UA-level user. External clients that connect with the deleted credentials will fail on the next session establishment.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
mutation DeleteUser($username: String!) {
DeleteUser(username: $username)
}
Variables
| Field | Type | Required | Description |
|---|---|---|---|
username |
String! |
Yes | User name to delete. |
{ "username": "{{opc_username}}" }
Response
200 OK -- application/json. No data returned on success.
{ "data": { "DeleteUser": null } }
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
mutation DeleteUser($username: String!) {
DeleteUser(username: $username)
}
Variables
{
"username": "{{opc_username}}"
}
Response
Status: 200 OK
{
"data": {
"DeleteUser": null
}
}
Get Server Metrics
POST {{edgeUrl}}/opcua/v2
Get Server Metrics
Returns the server's live session counters: how many external OPC UA clients are currently connected, with their session IDs, session names, and client application names.
Use this to confirm an external client has established a session after configuration changes, or to render a "Connected clients" tile.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query GetServerMetrics {
GetServerMetrics {
ActiveSessionsCount
ActiveSessions {
ID
Name
ClientName
}
}
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.GetServerMetrics.ActiveSessionsCount |
integer | Number of currently established sessions. |
data.GetServerMetrics.ActiveSessions |
object[] | One entry per active session. |
data.GetServerMetrics.ActiveSessions[].ID |
string | Session UUID. |
data.GetServerMetrics.ActiveSessions[].Name |
string | Session display name. |
data.GetServerMetrics.ActiveSessions[].ClientName |
string | Client-supplied application name (e.g. UaExpert, B&R Automation Studio). |
{
"data": {
"GetServerMetrics": {
"ActiveSessionsCount": 0,
"ActiveSessions": []
}
}
}
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query GetServerMetrics {
GetServerMetrics {
ActiveSessionsCount
ActiveSessions {
ID
Name
ClientName
}
}
}
Response
Status: 200 OK
{
"data": {
"GetServerMetrics": {
"ActiveSessionsCount": 0,
"ActiveSessions": []
}
}
}
Download Server Certificates
POST {{edgeUrl}}/opcua/v2
Download Server Certificates
Returns the OPC UA server's self-signed server certificate as a base64-encoded DER blob in data.GetServerCertificate. Save this to disk and import it into your OPC UA client's trust store to enable Sign or SignAndEncrypt security modes.
For end-entity certificate trust, also import the issuing CA if required by your client.
Endpoint
POST {{edgeUrl}}/opcua/v2
Content-Type: application/json
The operation is chosen by the GraphQL query body, not the URL path.
Authentication
HTTP Basic Auth. Username is your API token, password is empty. The same token is valid across /devicehub/v2, /analytics/v2, /cc, /opcua, and the other LE services.
Request body
query GetServerCertificate {
GetServerCertificate
}
No arguments.
Response
200 OK -- application/json
| Field | Type | Description |
|---|---|---|
data.GetServerCertificate |
string | Base64-encoded DER certificate. Decode and write to a .der (or convert to PEM) for client trust stores. |
{
"data": {
"GetServerCertificate": "MIIFrDCCBJSgAwIBAgIE..."
}
}
Saving the certificate
import base64
with open("server.der", "wb") as f:
f.write(base64.b64decode(resp["data"]["GetServerCertificate"]))
Convert DER to PEM with openssl x509 -inform der -in server.der -out server.pem.
Errors
GraphQL endpoints return 200 OK even on logical errors. Inspect the errors array in the response body:
{ "errors": [ { "message": "...", "path": ["..."], "extensions": { "code": "..." } } ] }
extensions.code |
Meaning |
|---|---|
UNAUTHENTICATED |
Missing or invalid API token. |
FORBIDDEN |
Token lacks permission for this operation. |
BAD_USER_INPUT |
Invalid argument (wrong type, missing required field, malformed UUID, unknown ID, etc.). |
NOT_FOUND |
The targeted entity does not exist. |
INTERNAL_SERVER_ERROR |
DeviceHub fault. Retry, then escalate via System > Support. |
A non-200 HTTP response means DeviceHub itself is unreachable. See Dashboard > DeviceHub Status.
TLS note: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.
Request Body
GraphQL Query
query GetServerCertificate {
GetServerCertificate
}
Response
Status: 200 OK
{
"data": {
"GetServerCertificate": "MIIFrDCCBJSgAwIBAgIEZqp3OjANBgkqhkiG9w0BAQsFADCBpDEoMCYGCgmSJomT8ixkARkWGGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzELMAkGA1UEBhMCVVMxFTATBgNVBAcMDExvY2F0aW9uTmFtZTEVMBMGA1UECgwMT3JnYW5pemF0aW9uMQ0wCwYDVQQLDARVbml0MS4wLAYDVQQDDCVvcGN1YV93b3JrZXJAbGl0bXVzLWVkZ2UtMDA1MDU2YjlhZmQzMB4XDTI0MDczMTE3NDExNFoXDTI5MDczMDE3NDExNFowgaQxKDAmBgoJkiaJk/IsZAEZFhhsaXRtdXMtZWRnZS0wMDUwNTZiOWFmZDMxCzAJBgNVBAYTAlVTMRUwEwYDVQQHDAxMb2NhdGlvbk5hbWUxFTATBgNVBAoMDE9yZ2FuaXphdGlvbjENMAsGA1UECwwEVW5pdDEuMCwGA1UEAwwlb3BjdWFfd29ya2VyQGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALFSV5egpaXXakJHhtNnhPgG9OjiFYygtpVQwnpSnhDjUPl/gk4A0t7u1Jwa39YdMkflmZ6baip9TgSz5391jqzEHsA4d0f0BHF7qH70RoKJA4IugMbVRG20Sq/85/ZV5teL7KfoGpHnNVLMGrpQaPAbeyh3lytIaqsYSSd94+yKA63I16FotoYICH/0glG2Aqx4v3ujEgaSTDvZ+oYcs9qV/5yhurb59XoLCUnT9haMFvFkgADPR52IhLimuNUcT/+oOX51VMawk1aoDT49m2KN6TZBKM0rn9nU7RuGgSQ6Z47s0uCEJdSsdOLQboJRH9tThz5zRPruVPH2KHRLpM0CAwEAAaOCAeIwggHeMBIGA1UdEwEB/wQIMAYBAf8CAQAwUAYJYIZIAYb4QgENBEMWQSJHZW5lcmF0ZWQgd2l0aCBVbmlmaWVkIEF1dG9tYXRpb24gVUEgQmFzZSBMaWJyYXJ5IHVzaW5nIE9wZW5TU0wiMB0GA1UdDgQWBBRsjLQFZ7mfRHgUpigHRAQ3BGG0rDCB1AYDVR0jBIHMMIHJgBRsjLQFZ7mfRHgUpigHRAQ3BGG0rKGBqqSBpzCBpDEoMCYGCgmSJomT8ixkARkWGGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzELMAkGA1UEBhMCVVMxFTATBgNVBAcMDExvY2F0aW9uTmFtZTEVMBMGA1UECgwMT3JnYW5pemF0aW9uMQ0wCwYDVQQLDARVbml0MS4wLAYDVQQDDCVvcGN1YV93b3JrZXJAbGl0bXVzLWVkZ2UtMDA1MDU2YjlhZmQzggRmqnc6MA4GA1UdDwEB/wQEAwIC9DAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTgYDVR0RBEcwRYYpdXJuOmxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzpvcGN1YV93b3JrZXKCGGxpdG11cy1lZGdlLTAwNTA1NmI5YWZkMzANBgkqhkiG9w0BAQsFAAOCAQEAj0BAOyvaa6rMJhRFp1YUPoTa0/NsBJtaIwKJit2gE8ZRf9YW2gkk/FiGohltcDjCn91cBOoi9qQbzbzQsZ2siF3RZOhSSyUQRT3JfLxZ7RZv0ogNiYzL2gtlysBqZGJFoIYTWHqj9NHlmCCovywbcCsv/qXb4CHfTtrGnsig9+eS42xT28oe/ZToQITAQx97R+sUVqJ4RHyHRyENMHhW4GSz0eVnXXrtve1ITVki5CvzdVDCstfPRrMQUoDGNma7DAf6P0xF9A12ai0IfATyTgWaiCfInZEqCOLd0IRZ6dEfeEMbomoTRHf6n02Qqas/Gq50d4seUzVLnHbnJb6sug=="
}
}