OPC-UA Multiple Example

An example using OPC-UA multiple reads.

[{"id":"fe85ba5b.b23e08","type":"tab","label":"MULTIPLE READ/WRITE","disabled":false,"info":""},{"id":"bb039652.dcf5a8","type":"OpcUa-Endpoint","endpoint":"opc.tcp://H7Q8Q13.vstage.co:53530/OPCUA/SimulationServer","secpol":"None","secmode":"None","none":true,"login":false,"usercert":false,"usercertificate":"","userprivatekey":""},{"id":"83439742.083188","type":"OpcUa-Endpoint","endpoint":"opc.tcp://0.0.0.0:4840/","secpol":"None","secmode":"None","login":false},{"id":"440c46c6.769ab8","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false},{"id":"b59ed3ae.9ea3","type":"ui_base","theme":{"name":"theme-light","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"},"themeState":{"base-color":{"default":"#0094CE","value":"#0094CE","edited":false},"page-titlebar-backgroundColor":{"value":"#0094CE","edited":false},"page-backgroundColor":{"value":"#fafafa","edited":false},"page-sidebar-backgroundColor":{"value":"#ffffff","edited":false},"group-textColor":{"value":"#1bbfff","edited":false},"group-borderColor":{"value":"#ffffff","edited":false},"group-backgroundColor":{"value":"#ffffff","edited":false},"widget-textColor":{"value":"#111111","edited":false},"widget-backgroundColor":{"value":"#0094ce","edited":false},"widget-borderColor":{"value":"#ffffff","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey"}},"site":{"name":"Node-RED Dashboard","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"85144921.8931b8","type":"ui_group","name":"OPCUA","tab":"440c46c6.769ab8","order":1,"disp":true,"width":"6","collapse":false},{"id":"58241fb2.5e084","type":"OpcUa-Endpoint","endpoint":"opc.tcp://localhost:53881/","secpol":"None","secmode":"None","login":false},{"id":"2a25d3ea.021ccc","type":"OpcUa-Endpoint","endpoint":"opc.tcp://opcuademo.sterfive.com:26543","secpol":"None","secmode":"None","login":false},{"id":"9cd7df76dded4d0a","type":"OpcUa-Endpoint","endpoint":"opcua://localhost:53888","secpol":"None","secmode":"None","login":false,"usercert":true,"usercertificate":"cert.pem","userprivatekey":"key.pem"},{"id":"52fbc0dc.c0617","type":"inject","z":"fe85ba5b.b23e08","name":"Add variable","props":[{"p":"payload","v":"","vt":"str"},{"p":"topic","v":"","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"","payloadType":"str","x":190,"y":140,"wires":[["5073ffdc.49f6f"]]},{"id":"90cfbe2d.7924d","type":"debug","z":"fe85ba5b.b23e08","name":"Read response array","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1140,"y":240,"wires":[]},{"id":"1d47a4b3.54b6ab","type":"OpcUa-Client","z":"fe85ba5b.b23e08","endpoint":"bb039652.dcf5a8","action":"readmultiple","deadbandtype":"a","deadbandvalue":1,"time":10,"timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","folderName4PKI":"MULTI1","useTransport":false,"maxChunkCount":"","maxMessageSize":"","receiveBufferSize":"","sendBufferSize":"","name":"READ MULTIPLE","x":730,"y":240,"wires":[["90cfbe2d.7924d","bd012347.39fd1"]]},{"id":"5073ffdc.49f6f","type":"OpcUa-Item","z":"fe85ba5b.b23e08","item":"ns=3;i=1001","datatype":"Double","value":"","name":"Counter","x":360,"y":140,"wires":[["1d47a4b3.54b6ab","c2d18bce37ba266c"]]},{"id":"e78b36a6.a6a058","type":"inject","z":"fe85ba5b.b23e08","name":"Add variable","props":[{"p":"payload","v":"","vt":"str"},{"p":"topic","v":"","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"","payloadType":"str","x":190,"y":200,"wires":[["f55416ad.878e68"]]},{"id":"f55416ad.878e68","type":"OpcUa-Item","z":"fe85ba5b.b23e08","item":"ns=3;i=1002","datatype":"Double","value":"","name":"Random","x":360,"y":200,"wires":[["1d47a4b3.54b6ab","c2d18bce37ba266c"]]},{"id":"b57fd94f.8c6048","type":"inject","z":"fe85ba5b.b23e08","name":"Read all","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"readmultiple","payload":"","payloadType":"str","x":180,"y":240,"wires":[["1d47a4b3.54b6ab"]]},{"id":"2e60e5fb.a3b8fa","type":"inject","z":"fe85ba5b.b23e08","name":"Add variable","props":[{"p":"payload","v":"","vt":"str"},{"p":"topic","v":"","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":150,"y":340,"wires":[["74f6f09b.a3159"]]},{"id":"2210ba4a.85d506","type":"debug","z":"fe85ba5b.b23e08","name":"Write response status array","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1160,"y":420,"wires":[]},{"id":"1b6a502f.18a9","type":"OpcUa-Client","z":"fe85ba5b.b23e08","endpoint":"bb039652.dcf5a8","action":"writemultiple","deadbandtype":"a","deadbandvalue":1,"time":10,"timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","folderName4PKI":"D:/TEMP/MULTI2","useTransport":false,"maxChunkCount":"","maxMessageSize":"","receiveBufferSize":"","sendBufferSize":"","name":"WRITE MULTIPLE","x":730,"y":420,"wires":[["2210ba4a.85d506"]]},{"id":"74f6f09b.a3159","type":"OpcUa-Item","z":"fe85ba5b.b23e08","item":"ns=5;s=Double","datatype":"Double","value":"22.3","name":"Double","x":360,"y":340,"wires":[["1b6a502f.18a9","f409c9e0799338e5"]]},{"id":"f1eb00a9.88095","type":"inject","z":"fe85ba5b.b23e08","name":"Add variable","props":[{"p":"payload","v":"","vt":"str"},{"p":"topic","v":"","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":150,"y":400,"wires":[["9a469e78.97c7c"]]},{"id":"9a469e78.97c7c","type":"OpcUa-Item","z":"fe85ba5b.b23e08","item":"ns=5;s=Int32","datatype":"Int32","value":"32","name":"Int32","x":350,"y":400,"wires":[["1b6a502f.18a9"]]},{"id":"b0c04db7.2b0cd","type":"inject","z":"fe85ba5b.b23e08","name":"Write all","props":[{"p":"payload","v":"","vt":"str"},{"p":"topic","v":"writemultiple","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"writemultiple","payload":"","payloadType":"str","x":170,"y":540,"wires":[["1b6a502f.18a9"]]},{"id":"2d203d01.24cbc2","type":"inject","z":"fe85ba5b.b23e08","name":"Clear","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"clearitems","payload":"","payloadType":"str","x":170,"y":280,"wires":[["1d47a4b3.54b6ab"]]},{"id":"e8bf1448.f65228","type":"inject","z":"fe85ba5b.b23e08","name":"Clear","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"clearitems","payload":"","payloadType":"str","x":170,"y":580,"wires":[["1b6a502f.18a9"]]},{"id":"bd012347.39fd1","type":"function","z":"fe85ba5b.b23e08","name":"","func":"var variableName = msg.topic.nodeId.toString();\n// substring(7); // Part after ns=3;i= or ns=1;s=\nvariableName = variableName.substring(7);\nif (context.get(variableName) === undefined) {\n    context.set(variableName, msg.payload.toString())\n}\nconsole.log(\"Variable: \" + variableName + \" value:\" +msg.payload.toString())\n\n// Use # as delimeter\nif (context.get(\"variables\") === undefined) {\n    context.set(\"variables\", variableName)\n    variables=variableName;\n}\nelse {\n    variables = context.get(\"variables\") + \"#\" + variableName; // Append\n}\nif (context.get(\"values\") === undefined) {\n    context.set(\"values\", msg.payload.toString());\n    values=msg.payload.toString();\n}\nelse {\n    values = context.get(\"values\") + \"#\" + msg.payload.toString(); // Append\n}\n\nnames = variables.split(\"#\");\nvals  = values.split(\"#\");\n\nconsole.log(\"Names:\" + JSON.stringify(names));\nconsole.log(\"Vals :\" + JSON.stringify(vals));\nvar newmsg = {};\nnewmsg.payload = {};\nnewmsg.payload.variables = names;\nnewmsg.payload.values = vals;\n\nif (names.length == 2) {\n    return newmsg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":300,"wires":[["d65f1531.7e76c8"]]},{"id":"d65f1531.7e76c8","type":"debug","z":"fe85ba5b.b23e08","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1090,"y":300,"wires":[]},{"id":"5226ceb8df8db269","type":"OpcUa-Client","z":"fe85ba5b.b23e08","endpoint":"bb039652.dcf5a8","action":"register","deadbandtype":"a","deadbandvalue":1,"time":10,"timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","name":"RegisterNodes","x":720,"y":80,"wires":[["6f63640e5611cf58"]]},{"id":"6f63640e5611cf58","type":"debug","z":"fe85ba5b.b23e08","name":"Register","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1100,"y":80,"wires":[]},{"id":"c2d18bce37ba266c","type":"function","z":"fe85ba5b.b23e08","name":"","func":"msg.payload = [];\nmsg.payload.push(msg.topic);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":80,"wires":[["5226ceb8df8db269"]]},{"id":"f409c9e0799338e5","type":"debug","z":"fe85ba5b.b23e08","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":340,"wires":[]},{"id":"95620cbd7f45f33d","type":"inject","z":"fe85ba5b.b23e08","name":"Add variable","props":[{"p":"payload","v":"","vt":"str"},{"p":"topic","v":"","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":150,"y":440,"wires":[["028467e1b1821fc2"]]},{"id":"028467e1b1821fc2","type":"OpcUa-Item","z":"fe85ba5b.b23e08","item":"ns=5;s=Int3XX","datatype":"Int32","value":"32","name":"IntXX (wrog node id)","x":360,"y":440,"wires":[["1b6a502f.18a9"]]}]

Flow Info

Created 1 year, 9 months ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • debug (x5)
  • function (x2)
  • inject (x9)
Other
  • OpcUa-Client (x3)
  • OpcUa-Endpoint (x5)
  • OpcUa-Item (x5)
  • tab (x1)
  • ui_base (x1)
  • ui_group (x1)
  • ui_tab (x1)

Tags

  • OPC-UA
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option