node-red-contrib-opcua
A Node-RED nodes to communicate or serve via OPC UA.
based on node-opcua
Install
Run command on Node-RED installation directory.
npm install node-red-contrib-opcua
or run command for global installation.
npm install -g node-red-contrib-opcua
Usage
Use OpcUa-Item to define variables. Use OpcUa-Client to read / write / subscribe / browse OPC UA server.
See some flows under Examples. Updated server sub-flow example OPCUA-TEST-NODES.json look commands: addFolder, addVariable, addMethod, setFolder. Added new opcua-rights node to set folder/variable access level and role & permissions.
Here you got some ready to use examples. You can use the Import in Node-RED in the right upper corner menu.
Examples are available for Schneider IGSS and Prosys Simulation Server as Node-RED flow. Search for OPC UA on: http://flows.nodered.org/
Message parameters
Input message
Property | Function/Value | Notes |
---|---|---|
payload | set interval for subscription or monitorItem | |
interval | Subscription interval | |
queueSize | Subscription queue size | |
deadbandType | "a" abs. or "p" percent | Action monitor |
deadbandValue | integer for deadband | Action monitor |
topic | NodeId and DataType in format ns=3;s=Counter;datatype=Int32 | |
action | subscribe | nodeId / variable |
unsubscribe | nodeId / variable | |
deletesubscription | subscription | |
browse | nodeId / folder | |
info | nodeId | |
read | nodeId | |
write | nodeId & value | |
monitor | deadbandtype abs/pro | |
events | nodeId | |
readmultiple | [nodeId + datatype] | |
writemultiple | [nodeId + datatype + value] |
readmultiple to readmultiple items writemultiple to write multiple items clearitems to empty multiple items (readmultiple / writemultiple)
NOTE: With datatype=xxxArray msg.payload.range = "2:4" can used as indexRange to read/write partial array
Output message
Property | Function/Value | Notes |
---|---|---|
payload | dataValue.value.value | |
statusCode | OPC UA StatusCode | |
sourceTimestamp | Source timestamp | |
serverTimestamp | Server´s timestamp |
Release history (only couple of older releases):
v0.2.223
Fixed: Namespace index used with variables (set value).
Enhancements: Initial value can be set to server variable, server returns nodeId as variable created. Added support for StringArray.
v0.2.117
Enhancement: Added users to server. Users.json contains username, password and role for each user.
v0.2.116
Enhancement: server allow anonymous, added verbose to show trusted/rejected folders.
v0.2.115
Enhancement: server node security settings; mode and policy
v0.2.114
Fix: added to client certificate manager
v0.2.113
Enhancement: server commands: registerNamespace and getNamespaceIndex, user can addVariables with registered namespaces like ns=5.
Enhancement: msg.topic = readmultiple AND msg.payload = ALL then msg.payload = values
v0.2.112
Added DateTime to server.
v0.2.111
Fixed DateTime conversion (write).
v0.2.110
Added 2D and 3D array support. Examples:
ns=1;s=Float2D;datatype=FloatArray[5,5]
ns=1;s=Float3D;datatype=FloatArray[5,5,5]
NOTE: Write range uses msg.range
New feature msg.payload.range can be used to read part of Array
New feature msg.range can be used to write part of Array
Updated example OPCUA-TEST-NODES.json
v0.2.109
Added array range examples (examples/OPCUA-TEST-NODES.json).
Send only if payload contains something.
Added msg.payload.range usage
New feature msg.payload.range can be used to read/write part of Array
Fix: FQDN -> hostname in makeAplicationUri
EventId and statustext as clear string
EventId as hex string
v0.2.108 and older
Fixed support for server Array variables
Browse will create topic and datatype thus output can be connected. Next node can progress output msg.
Refactored browse action fast and simple
Merged event payload fix. Merge pull request #265 from list3f/master
Put OPC UA event data in msg.payload
Authors
- since 2015 Mika Karaila
- since 2016 Klaus Landsdorf
Testing
karma start opcua.conf.js --log-level debug --single-run
TBD List
Nodes | Function | Done |
---|---|---|
All | ||
Project structure | ✅ | |
Async calls | 🌒 | |
UnitTesting | 🌑 | |
Documentation | 🌓 | |
Item | ✅ | |
Browser | ||
Browse | ✅ | |
Simple UI interface | 🌓 | |
Client | ||
Read | ✅ | |
Read Multiple | ✅ | |
Write | ✅ | |
Write Multiple | ✅ | |
Subscribe | ✅ | |
Unsubscribe | ✅ | |
DeleteSubscription | ✅ | |
Info | ✅ | |
Browse | ✅ | |
AE | 🌑 | |
reconnect on error | 🌒 | |
Server | ||
Commands | ||
Restart | ✅ | |
Add Folder | ✅ | |
Set Folder | ✅ | |
Add Variable | ✅ | |
Add Object | 🌑 | |
Add Method | 🌑 | |
Add Equipment | 🌓 | |
Add PhysicalAssets | 🌓 | |
Delete by NodeId | ✅ | |
Examples | ||
Methods | ||
Structures | ||
Variables | ||
Objects | ||
AE | ||
Alarm and Events | ||
Subscribe | ✅ | |