node-red-contrib-opcua icon indicating copy to clipboard operation
node-red-contrib-opcua copied to clipboard

node-red crash using ExtensionObjectArray

Open IW3IJQ opened this issue 10 months ago • 0 comments

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:

image

(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

image

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)

IW3IJQ avatar Apr 17 '24 12:04 IW3IJQ