node-red-contrib-opcua
node-red-contrib-opcua copied to clipboard
node-red crash using ExtensionObjectArray
Hello! I'm using client node and I have to write a Variat array into an opc-ua server. It's the same of case described here.
The variable is /HostComputer/f078 (in previous there are the exact stucture) af a moulding machine.
Browsing this variable I get this:
{
"payload":[
{
"item":{
"referenceTypeId":"ns=0;i=47",
"isForward":true,
"nodeId":"ns=2;i=115682",
"browseName":{
"namespaceIndex":2,
"name":"Value"
},
"displayName":{
"locale":"en",
"text":"f078-Value"
},
"nodeClass":2,
"typeDefinition":"ns=2;i=906090",
"value":null,
"dataType":"Variant"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=47",
"isForward":true,
"nodeId":"ns=2;i=115681",
"browseName":{
"namespaceIndex":2,
"name":"State"
},
"displayName":{
"locale":"en",
"text":"f078-State"
},
"nodeClass":2,
"typeDefinition":"ns=2;i=906032",
"value":2,
"dataType":"UInt16"
}
}
],
"endpoint":"opc.tcp://xxx.xxx.xxx.xxx:4880/Arburg",
"_msgid":"85269960dddcd3be"
}
my target is f078-Value ns=2;i=115682 and the type is ns=2;i=906090
Browsing custom types I get:
{
"payload":[
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906034",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeNumber"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeNumber"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906048",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeAscii"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeAscii"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906052",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeUtf8"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeUtf8"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906056",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeUInt32"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeUInt32"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906064",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeFilename"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeFilename"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906080",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeInt32"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeInt32"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906090",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeOrderList"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeOrderList"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906098",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeNodeID"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeNodeID"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906105",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeHour"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeHour"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906109",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeDate"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeDate"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906113",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeTime"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeTime"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906119",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeYear"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeYear"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906123",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeDayOfWeek"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeDayOfWeek"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906143",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeYesNo"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeYesNo"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906147",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeSecond"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeSecond"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906153",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeFloat"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeFloat"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906182",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeDay"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeDay"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906188",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeWeightInKg"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeWeightInKg"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906192",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeShotWeight"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeShotWeight"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906200",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeMinuteSecond"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeMinuteSecond"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906204",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeScrewDiameter"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeScrewDiameter"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906210",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeVolumeScrew"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeVolumeScrew"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906214",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypePressureScrew"
},
"displayName":{
"locale":"en",
"text":"ArbVTypePressureScrew"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906221",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeTemperatur"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeTemperatur"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
},
{
"item":{
"referenceTypeId":"ns=0;i=45",
"isForward":true,
"nodeId":"ns=2;i=906228",
"browseName":{
"namespaceIndex":2,
"name":"ArbVTypeFloatMutable"
},
"displayName":{
"locale":"en",
"text":"ArbVTypeFloatMutable"
},
"nodeClass":16,
"typeDefinition":"ns=0;i=0",
"value":null,
"dataType":"Null"
}
}
],
"endpoint":"opc.tcp://xxx.xxx.xxx.xxx:4880/Arburg",
"_msgid":"8a8d127aa6b819f6"
}
Using this Item:
(value is into payload of inject node) node-red crashes when I try to write:
17 Apr 14:45:47 - [red] Uncaught Exception:
17 Apr 14:45:47 - [error] TypeError: Cannot convert undefined or null to object
at Function.assign (<anonymous>)
at /home/nodetest/.node-red/node_modules/node-red-contrib-opcua/opcua/102-opcuaclient.js:1767:43
at Array.forEach (<anonymous>)
at build_new_extensionObject_dataValue (/home/nodetest/.node-red/node_modules/node-red-contrib-opcua/opcua/102-opcuaclient.js:1761:25)
at write_action_input (/home/nodetest/.node-red/node_modules/node-red-contrib-opcua/opcua/102-opcuaclient.js:1741:17)
at OpcUaClientNode.processInputMsg [as _inputCallback] (/home/nodetest/.node-red/node_modules/node-red-contrib-opcua/opcua/102-opcuaclient.js:830:11)
at /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:214:26
at Object.trigger (/usr/lib/node_modules/node-red/node_modules/@node-red/util/lib/hooks.js:166:13)
at Node._emitInput (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:206:11)
at Node.emit (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:190:25)
Checking the sources I seem to understand that typeId have to be filled in "Item" but there are no check about this. If I add typeId
I get a crash with a different message:
12:51:22.892Z :populate_data_type_manager_104:41 Cannot find dataType Definition ! with nodeId =ns=2;i=906090
17 Apr 14:51:22 - [red] Uncaught Exception:
17 Apr 14:51:22 - [error] Error: Cannot find StructureType constructor for dataType ns=2;i=906090
at DataTypeFactory.findStructureInfoForDataType (/home/nodetest/.node-red/node_modules/node-opcua-factory/dist/datatype_factory.js:91:15)
at ExtraDataTypeManager.getExtensionObjectConstructorFromDataType (/home/nodetest/.node-red/node_modules/node-opcua-client-dynamic-extension-object/dist/extra_data_type_manager.js:46:45)
at getExtensionObjectConstructor (/home/nodetest/.node-red/node_modules/node-opcua-client-dynamic-extension-object/dist/get_extension_object_constructor.js:24:39)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async ClientSessionImpl.constructExtensionObject (/home/nodetest/.node-red/node_modules/node-opcua-client/dist/private/client_session_impl.js:1123:29)
at async build_new_extensionObject_dataValue (/home/nodetest/.node-red/node_modules/node-red-contrib-opcua/opcua/102-opcuaclient.js:1751:36)
at async write_action_input (/home/nodetest/.node-red/node_modules/node-red-contrib-opcua/opcua/102-opcuaclient.js:1741:11)