node-red-contrib-iiot-opcua
Version:
An Industrial IoT OPC UA toolbox contribution package for Node-RED based on node-opcua.
783 lines • 25.1 kB
JSON
[
{
"id": "45689007.c2c51",
"type": "tab",
"label": "OPC UA IIoT JWT EFC",
"disabled": false,
"info": ""
},
{
"id": "83836f37.817158",
"type": "OPCUA-IIoT-Flex-Connector",
"z": "45689007.c2c51",
"name": "",
"showStatusActivities": false,
"showErrors": true,
"connector": "c441ba33.56b788",
"x": 1000,
"y": 220,
"wires": [
[
"35f9ab6c.f9e5fc"
]
]
},
{
"id": "9b0e53cf.81f448",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 86",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"discoveryUrl\":null,\"endpoint\":\"opc.tcp://localhost:55386/\",\"keepSessionAlive\":true,\"securityPolicy\":\"None\",\"securityMode\":\"None\",\"name\":\"LOCAL FLEXIBLE INJECTED SERVER\",\"showErrors\":true,\"publicCertificateFile\":null,\"privateKeyFile\":null,\"defaultSecureTokenLifetime\":0,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false,\"strategyMaxRetry\":0,\"strategyInitialDelay\":0,\"strategyMaxDelay\":0,\"strategyRandomisationFactor\":0,\"requestedSessionTimeout\":0,\"connectionStartDelay\":0,\"reconnectDelay\":0}",
"payloadType": "json",
"x": 760,
"y": 160,
"wires": [
[
"83836f37.817158"
]
]
},
{
"id": "35f9ab6c.f9e5fc",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1170,
"y": 220,
"wires": []
},
{
"id": "c0121b6b.5efed",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 89",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"endpoint\":\"opc.tcp://localhost:55389/\",\"keepSessionAlive\":true,\"showErrors\":true,\"defaultSecureTokenLifetime\":360000,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false}",
"payloadType": "json",
"x": 760,
"y": 240,
"wires": [
[
"83836f37.817158"
]
]
},
{
"id": "51c6e598.bbb54c",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 88",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"discoveryUrl\":null,\"endpoint\":\"opc.tcp://localhost:55388/\",\"keepSessionAlive\":true,\"securityPolicy\":\"None\",\"securityMode\":\"None\",\"name\":\"LOCAL FLEXIBLE INJECTED SERVER\",\"showErrors\":true,\"publicCertificateFile\":null,\"privateKeyFile\":null,\"defaultSecureTokenLifetime\":0,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false,\"strategyMaxRetry\":0,\"strategyInitialDelay\":0,\"strategyMaxDelay\":0,\"strategyRandomisationFactor\":0,\"requestedSessionTimeout\":0,\"connectionStartDelay\":0,\"reconnectDelay\":0}",
"payloadType": "json",
"x": 760,
"y": 200,
"wires": [
[
"83836f37.817158"
]
]
},
{
"id": "37eeab5f.7b5204",
"type": "OPCUA-IIoT-Server",
"z": "45689007.c2c51",
"port": "55386",
"endpoint": "",
"acceptExternalCommands": true,
"maxAllowedSessionNumber": "",
"maxConnectionsPerEndpoint": "",
"maxAllowedSubscriptionNumber": "",
"alternateHostname": "",
"name": "Demos Server 86",
"showStatusActivities": false,
"showErrors": true,
"asoDemo": true,
"allowAnonymous": true,
"individualCerts": false,
"isAuditing": false,
"serverDiscovery": false,
"users": [],
"xmlsets": [],
"publicCertificateFile": "",
"privateCertificateFile": "",
"registerServerMethod": 1,
"discoveryServerEndpointUrl": "",
"capabilitiesForMDNS": "",
"maxNodesPerRead": 1000,
"maxNodesPerBrowse": 2000,
"delayToClose": 1000,
"x": 270,
"y": 580,
"wires": [
[]
]
},
{
"id": "181cf4fa.a57d1b",
"type": "OPCUA-IIoT-Flex-Server",
"z": "45689007.c2c51",
"port": "55378",
"endpoint": "",
"acceptExternalCommands": true,
"maxAllowedSessionNumber": "",
"maxConnectionsPerEndpoint": "",
"maxAllowedSubscriptionNumber": "",
"alternateHostname": "",
"name": "Flex Server 78",
"showStatusActivities": false,
"showErrors": true,
"allowAnonymous": true,
"individualCerts": false,
"isAuditing": false,
"serverDiscovery": true,
"users": [],
"xmlsets": [],
"publicCertificateFile": "",
"privateCertificateFile": "",
"registerServerMethod": 1,
"discoveryServerEndpointUrl": "",
"capabilitiesForMDNS": "",
"maxNodesPerRead": 1000,
"maxNodesPerBrowse": 2000,
"delayToClose": 1000,
"addressSpaceScript": "function constructAlarmAddressSpace(server, addressSpace, eventObjects, done) {\n // server = the created node-opcua server\n // addressSpace = script placeholder\n // eventObjects = to hold event variables in memory from this script\n\n // internal global sandbox objects are \n // node = node of the flex server, \n // coreServer = core iiot server object for debug and access to nodeOPCUA,\n // and scriptObjects to hold variables and functions\n const LocalizedText = opcua.LocalizedText\n const namespace = addressSpace.getOwnNamespace()\n\n coreServer.internalDebugLog('init dynamic address space')\n node.warn('construct new address space for OPC UA')\n\n // from here - see the node-opcua docs how to build address sapces\n let tanks = namespace.addObject({\n browseName: 'Tanks',\n description: 'The Object representing some tanks',\n organizedBy: addressSpace.rootFolder.objects,\n notifierOf: addressSpace.rootFolder.objects.server\n })\n\n let oilTankLevel = namespace.addVariable({\n browseName: 'OilTankLevel',\n displayName: [\n new LocalizedText({ text: 'Oil Tank Level', locale: 'en-US' }),\n new LocalizedText({ text: 'Öl Tank Füllstand', locale: 'de-DE' })\n ],\n description: 'Fill level in percentage (0% to 100%) of the oil tank',\n propertyOf: tanks,\n dataType: 'Double',\n eventSourceOf: tanks\n })\n\n // ---------------------------------------------------------------------------------\n // Let's create a exclusive Limit Alarm that automatically raise itself\n // when the tank level is out of limit\n // ---------------------------------------------------------------------------------\n let exclusiveLimitAlarmType = addressSpace.findEventType('ExclusiveLimitAlarmType')\n let oilTankLevelCondition = namespace.instantiateExclusiveLimitAlarm(exclusiveLimitAlarmType, {\n componentOf: tanks,\n conditionSource: oilTankLevel,\n browseName: 'OilTankLevelCondition',\n displayName: [\n new LocalizedText({ text: 'Oil Tank Level Condition', locale: 'en-US' }),\n new LocalizedText({ text: 'Öl Tank Füllstand Bedingung', locale: 'de-DE' })\n ],\n description: 'ExclusiveLimitAlarmType Condition',\n conditionName: 'OilLevelCondition',\n optionals: [\n 'ConfirmedState', 'Confirm' // confirm state and confirm Method\n ],\n inputNode: oilTankLevel, // the letiable that will be monitored for change\n highHighLimit: 0.9,\n highLimit: 0.8,\n lowLimit: 0.2\n })\n\n // --------------------------------------------------------------\n // Let's create a second letiable with no Exclusive alarm\n // --------------------------------------------------------------\n let gasTankLevel = namespace.addVariable({\n browseName: 'GasTankLevel',\n displayName: [\n new LocalizedText({ text: 'Gas Tank Level', locale: 'en-US' }),\n new LocalizedText({ text: 'Gas Tank Füllstand', locale: 'de-DE' })\n ],\n description: 'Fill level in percentage (0% to 100%) of the gas tank',\n propertyOf: tanks,\n dataType: 'Double',\n eventSourceOf: tanks\n })\n\n let nonExclusiveLimitAlarmType = addressSpace.findEventType('NonExclusiveLimitAlarmType')\n let gasTankLevelCondition = namespace.instantiateNonExclusiveLimitAlarm(nonExclusiveLimitAlarmType, {\n componentOf: tanks,\n conditionSource: gasTankLevel,\n browseName: 'GasTankLevelCondition',\n displayName: [\n new LocalizedText({ text: 'Gas Tank Level Condition', locale: 'en-US' }),\n new LocalizedText({ text: 'Gas Tank Füllstand Bedingung', locale: 'de-DE' })\n ],\n description: 'NonExclusiveLimitAlarmType Condition',\n conditionName: 'GasLevelCondition',\n optionals: [\n 'ConfirmedState', 'Confirm' // confirm state and confirm Method\n ],\n inputNode: gasTankLevel, // the letiable that will be monitored for change\n highHighLimit: 0.9,\n highLimit: 0.8,\n lowLimit: 0.2\n })\n\n // variable with value\n if (scriptObjects.testReadWrite === undefined || scriptObjects.testReadWrite === null) {\n scriptObjects.testReadWrite = 1000.0\n }\n\n let myVariables = namespace.addObject({\n browseName: 'MyVariables',\n description: 'The Object representing some variables',\n organizedBy: addressSpace.rootFolder.objects,\n notifierOf: addressSpace.rootFolder.objects.server\n })\n\n if (coreServer.core) {\n namespace.addVariable({\n componentOf: myVariables,\n nodeId: 'ns=1;s=TestReadWrite',\n browseName: 'TestReadWrite',\n displayName: [\n new LocalizedText({ text: 'Test Read and Write', locale: 'en-US' }),\n new LocalizedText({ text: 'Test Lesen Schreiben', locale: 'de-DE' })\n ],\n dataType: 'Double',\n value: {\n get: function () {\n return new opcua.Variant({\n dataType: 'Double',\n value: scriptObjects.testReadWrite\n })\n },\n set: function (variant) {\n scriptObjects.testReadWrite = parseFloat(variant.value)\n return opcua.StatusCodes.Good\n }\n }\n\n })\n\n let memoryVariable = namespace.addVariable({\n componentOf: myVariables,\n nodeId: 'ns=1;s=free_memory',\n browseName: 'FreeMemory',\n displayName: [\n new LocalizedText({ text: 'Free Memory', locale: 'en-US' }),\n new LocalizedText({ text: 'ungenutzer RAM', locale: 'de-DE' })\n ],\n dataType: 'Double',\n\n value: {\n get: function () {\n return new opcua.Variant({\n dataType: 'Double',\n value: coreServer.core.availableMemory()\n })\n }\n }\n })\n addressSpace.installHistoricalDataNode(memoryVariable)\n\n } else {\n coreServer.internalDebugLog('coreServer.core needed for opcua')\n }\n\n // hold event objects in memory \n eventObjects.oilTankLevel = oilTankLevel\n eventObjects.oilTankLevelCondition = oilTankLevelCondition\n\n eventObjects.gasTankLevel = gasTankLevel\n eventObjects.gasTankLevelCondition = gasTankLevelCondition\n\n done()\n}",
"x": 260,
"y": 520,
"wires": [
[]
]
},
{
"id": "2ec8dabd.dd9246",
"type": "comment",
"z": "45689007.c2c51",
"name": "Server 88 is Default Demo Server",
"info": "",
"x": 310,
"y": 480,
"wires": []
},
{
"id": "7aabc096.22f898",
"type": "OPCUA-IIoT-Browser",
"z": "45689007.c2c51",
"nodeId": "ns=1;i=1234",
"name": "",
"justValue": true,
"sendNodesToRead": true,
"sendNodesToBrowser": true,
"sendNodesToListener": true,
"multipleOutputs": false,
"showStatusActivities": false,
"showErrors": true,
"recursiveBrowse": false,
"recursiveDepth": "",
"delayPerMessage": "",
"connector": "c441ba33.56b788",
"x": 900,
"y": 520,
"wires": [
[
"3d8e0d88.f3829a",
"7c4d582a.9602",
"53d8b17b.0c7688",
"92b651a5.62441"
]
]
},
{
"id": "ecc74a99.a94b38",
"type": "OPCUA-IIoT-Inject",
"z": "45689007.c2c51",
"injectType": "inject",
"payload": "",
"payloadType": "date",
"topic": "",
"repeat": "",
"crontab": "",
"once": true,
"startDelay": "",
"name": "Root",
"addressSpaceItems": [],
"x": 750,
"y": 520,
"wires": [
[
"7aabc096.22f898"
]
]
},
{
"id": "3d8e0d88.f3829a",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1110,
"y": 520,
"wires": []
},
{
"id": "7c4d582a.9602",
"type": "OPCUA-IIoT-Response",
"z": "45689007.c2c51",
"name": "",
"compressStructure": true,
"showStatusActivities": false,
"showErrors": false,
"activateUnsetFilter": false,
"activateFilters": false,
"negateFilter": false,
"filters": [],
"x": 1110,
"y": 580,
"wires": [
[
"75d66df8.232fbc",
"ccc15fa3.258c68"
]
]
},
{
"id": "75d66df8.232fbc",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1310,
"y": 580,
"wires": []
},
{
"id": "ccc15fa3.258c68",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1290,
"y": 540,
"wires": []
},
{
"id": "53d8b17b.0c7688",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 1090,
"y": 480,
"wires": []
},
{
"id": "bbc9cee9.e4ba1",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 78",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"discoveryUrl\":null,\"endpoint\":\"opc.tcp://localhost:55378/\",\"keepSessionAlive\":true,\"securityPolicy\":\"None\",\"securityMode\":\"None\",\"name\":\"LOCAL FLEXIBLE INJECTED SERVER\",\"showErrors\":true,\"publicCertificateFile\":null,\"privateKeyFile\":null,\"defaultSecureTokenLifetime\":0,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false,\"strategyMaxRetry\":0,\"strategyInitialDelay\":0,\"strategyMaxDelay\":0,\"strategyRandomisationFactor\":0,\"requestedSessionTimeout\":0,\"connectionStartDelay\":0,\"reconnectDelay\":0}",
"payloadType": "json",
"x": 760,
"y": 280,
"wires": [
[
"83836f37.817158"
]
]
},
{
"id": "23cbf8b0.8d702",
"type": "OPCUA-IIoT-Browser",
"z": "45689007.c2c51",
"nodeId": "ns=1;i=1234",
"name": "",
"justValue": false,
"sendNodesToRead": false,
"sendNodesToBrowser": false,
"sendNodesToListener": false,
"multipleOutputs": false,
"showStatusActivities": false,
"showErrors": true,
"recursiveBrowse": false,
"recursiveDepth": "",
"delayPerMessage": "",
"connector": "c441ba33.56b788",
"x": 900,
"y": 580,
"wires": [
[
"53d8b17b.0c7688",
"3d8e0d88.f3829a",
"7c4d582a.9602",
"92b651a5.62441"
]
]
},
{
"id": "ddc2a09c.6929e8",
"type": "OPCUA-IIoT-Inject",
"z": "45689007.c2c51",
"injectType": "inject",
"payload": "",
"payloadType": "date",
"topic": "",
"repeat": "",
"crontab": "",
"once": true,
"startDelay": "",
"name": "Root",
"addressSpaceItems": [],
"x": 750,
"y": 580,
"wires": [
[
"23cbf8b0.8d702"
]
]
},
{
"id": "1f51b891.b195d7",
"type": "JWT-OUT",
"z": "45689007.c2c51",
"name": "",
"algoType": "HASH",
"signature": "",
"algoHash": "HS256",
"privateKeyFile": "",
"algoFile": "RS256",
"tokenPayload": "",
"selectedProperty": "",
"entireMessage": false,
"showErrors": true,
"useOptions": false,
"issuer": "",
"subject": "",
"audience": "",
"jwtId": "",
"tokenExpires": false,
"expiresIn": 60,
"expiresInUnit": "s",
"tokenNotBefore": false,
"notBefore": 1,
"notBeforeUnit": "s",
"x": 380,
"y": 380,
"wires": [
[
"972dc8a8.6837c",
"40186644.91411"
]
]
},
{
"id": "35357b9f.7e6264",
"type": "JWT-IN",
"z": "45689007.c2c51",
"name": "Correct JWT In",
"algoType": "HASH",
"signature": "",
"publicKeyFile": "",
"tokenPayload": "",
"selectedProperty": "",
"entireMessage": false,
"showErrors": true,
"useOptions": false,
"issuer": "",
"subject": "",
"audience": "",
"jwtId": "",
"ignoreExpiration": false,
"ignoreNotBefore": false,
"clockTolerance": 1,
"clockToleranceUnit": "s",
"useMaxAge": false,
"maxAge": 120,
"maxAgeUnit": "s",
"x": 760,
"y": 380,
"wires": [
[
"83836f37.817158",
"d55ad35e.bfa44"
]
]
},
{
"id": "dd30bd0f.d5e8b",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 86",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"discoveryUrl\":null,\"endpoint\":\"opc.tcp://localhost:55386/\",\"keepSessionAlive\":true,\"securityPolicy\":\"None\",\"securityMode\":\"None\",\"name\":\"LOCAL FLEXIBLE INJECTED SERVER\",\"showErrors\":true,\"publicCertificateFile\":null,\"privateKeyFile\":null,\"defaultSecureTokenLifetime\":0,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false,\"strategyMaxRetry\":0,\"strategyInitialDelay\":0,\"strategyMaxDelay\":0,\"strategyRandomisationFactor\":0,\"requestedSessionTimeout\":0,\"connectionStartDelay\":0,\"reconnectDelay\":0}",
"payloadType": "json",
"x": 200,
"y": 380,
"wires": [
[
"1f51b891.b195d7"
]
]
},
{
"id": "972dc8a8.6837c",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 530,
"y": 340,
"wires": []
},
{
"id": "40186644.91411",
"type": "delay",
"z": "45689007.c2c51",
"name": "Network Delay",
"pauseType": "delay",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 560,
"y": 380,
"wires": [
[
"35357b9f.7e6264"
]
]
},
{
"id": "d55ad35e.bfa44",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 970,
"y": 380,
"wires": []
},
{
"id": "b4997eda.d58de8",
"type": "JWT-IN",
"z": "45689007.c2c51",
"name": "Wrong JWT In",
"algoType": "HASH",
"signature": "heh",
"publicKeyFile": "",
"tokenPayload": "",
"selectedProperty": "",
"entireMessage": false,
"showErrors": true,
"useOptions": false,
"issuer": "",
"subject": "",
"audience": "",
"jwtId": "",
"ignoreExpiration": false,
"ignoreNotBefore": false,
"clockTolerance": 1,
"clockToleranceUnit": "s",
"useMaxAge": false,
"maxAge": 120,
"maxAgeUnit": "s",
"x": 760,
"y": 80,
"wires": [
[
"9a47a373.8aa918",
"83836f37.817158"
]
]
},
{
"id": "9a47a373.8aa918",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 970,
"y": 80,
"wires": []
},
{
"id": "53e12b73.1a62f4",
"type": "JWT-OUT",
"z": "45689007.c2c51",
"name": "",
"algoType": "HASH",
"signature": "",
"algoHash": "HS256",
"privateKeyFile": "",
"algoFile": "RS256",
"tokenPayload": "",
"selectedProperty": "",
"entireMessage": false,
"showErrors": true,
"useOptions": false,
"issuer": "",
"subject": "",
"audience": "",
"jwtId": "",
"tokenExpires": false,
"expiresIn": 60,
"expiresInUnit": "s",
"tokenNotBefore": false,
"notBefore": 1,
"notBeforeUnit": "s",
"x": 380,
"y": 80,
"wires": [
[
"7a4ead94.7b51c4",
"b4997eda.d58de8"
]
]
},
{
"id": "83857d33.c303b8",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 86",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"discoveryUrl\":null,\"endpoint\":\"opc.tcp://localhost:55386/\",\"keepSessionAlive\":true,\"securityPolicy\":\"None\",\"securityMode\":\"None\",\"name\":\"LOCAL FLEXIBLE INJECTED SERVER\",\"showErrors\":true,\"publicCertificateFile\":null,\"privateKeyFile\":null,\"defaultSecureTokenLifetime\":0,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false,\"strategyMaxRetry\":0,\"strategyInitialDelay\":0,\"strategyMaxDelay\":0,\"strategyRandomisationFactor\":0,\"requestedSessionTimeout\":0,\"connectionStartDelay\":0,\"reconnectDelay\":0}",
"payloadType": "json",
"x": 200,
"y": 80,
"wires": [
[
"53e12b73.1a62f4"
]
]
},
{
"id": "7a4ead94.7b51c4",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 530,
"y": 40,
"wires": []
},
{
"id": "92b651a5.62441",
"type": "debug",
"z": "45689007.c2c51",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload.endpoint",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1140,
"y": 640,
"wires": []
},
{
"id": "d2200982.614e",
"type": "inject",
"z": "45689007.c2c51",
"name": "Server 80",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"discoveryUrl\":null,\"endpoint\":\"opc.tcp://localhost:55380/\",\"keepSessionAlive\":true,\"securityPolicy\":\"None\",\"securityMode\":\"None\",\"name\":\"LOCAL FLEXIBLE INJECTED SERVER\",\"showErrors\":true,\"publicCertificateFile\":null,\"privateKeyFile\":null,\"defaultSecureTokenLifetime\":0,\"endpointMustExist\":false,\"autoSelectRightEndpoint\":false,\"strategyMaxRetry\":0,\"strategyInitialDelay\":0,\"strategyMaxDelay\":0,\"strategyRandomisationFactor\":0,\"requestedSessionTimeout\":0,\"connectionStartDelay\":0,\"reconnectDelay\":0}",
"payloadType": "json",
"x": 760,
"y": 320,
"wires": [
[
"83836f37.817158"
]
]
},
{
"id": "c441ba33.56b788",
"type": "OPCUA-IIoT-Connector",
"z": "45689007.c2c51",
"discoveryUrl": "",
"endpoint": "opc.tcp://localhost:55388/",
"endpointMustExist": false,
"keepSessionAlive": true,
"loginEnabled": false,
"name": "LOCAL FLEX CONECTOR SERVER",
"showErrors": true,
"securityPolicy": "None",
"securityMode": "None",
"publicCertificateFile": "",
"privateKeyFile": "",
"defaultSecureTokenLifetime": "",
"autoSelectRightEndpoint": false,
"strategyMaxRetry": "",
"strategyInitialDelay": "",
"strategyMaxDelay": "",
"strategyRandomisationFactor": "",
"requestedSessionTimeout": "",
"connectionStartDelay": "",
"reconnectDelay": ""
}
]