node-opcua
an implementation of a OPC UA stack fully written in javascript and nodejs
Node-opcua is an full OPC-UA stack written in NodeJS.
Why NodeJS ?
Because nodeJs is a great framework to design asynchronous application.
Getting started
installing node-opcua as a node package
$ npm install node-opcua
installing node-opcua samples as a node package
$ npm install node-opcua-samples
$ ./node_modules/.bin/simple_server
or
$ ./node_modules/.bin/simple_client -e "opc.tcp://opcserver.mAutomation.net:4841" -n="ns=1;s=EVR2.system.RTC_SEC"
installing node-opcua from source
running the demo server from source
$ git clone https://github.com/node-opcua/node-opcua.git
$ cd node-opcua
$ npm install
$ node packages/node-opcua-samples/bin/simple_server
running the demo client from source
$ git clone https://github.com/node-opcua/node-opcua.git
$ cd node-opcua
$ npm install
$ node packages/node-opcua-samples/bin/simple_client.js -e "opc.tcp://opcserver.mAutomation.net:4841" -n="ns=1;s=EVR2.system.RTC_SEC"
Tutorials
API Documentation
- check out the API documentation
Minimum nodejs requirement
- nodejs version 6.10 or above
Contributing
$ git clone git://github.com/node-opcua/node-opcua.git
$ cd node-opcua
$ npm install
$ npm test
Supporting the project
If you like the project, please . This will give us full of motivation to carry on and keep working on the roadmap.
Getting commercial support
To get commercial support, please contact sterfive
Supported Features
Service | ||
---|---|---|
Discovery Service Set | ||
FindServers() | ✅ | |
GetEndpoints() | ✅ | |
RegisterServer() | ✅ | |
Secure Channel Service Set | ||
OpenSecureChannel() | ✅ | |
CloseSecureChannel() | ✅ | |
Session Service Set | ||
CreateSession() | ✅ | |
CloseSession() | ✅ | |
ActivateSession() | ✅ | |
Cancel() | ||
View Service Set | ||
Browse() | ✅ | |
BrowseNext() | ✅ | |
TranslateBrowsePathsToNodeIds() | ✅ | |
RegisterNodes() | ✅ | |
UnregisterNodes() | ✅ | |
Attribute Service Set | ||
Read() | ✅ | |
Write() | ✅ | |
HistoryRead() | 🌒 | |
HistoryUpdate() | 🌒 | |
MonitoredItems Service Set | ||
CreateMonitoredItems() | ✅ | |
ModifyMonitoredItems() | ✅ | |
SetMonitoringMode() | ✅ | |
SetTriggering() | 🌑 | |
DeleteMonitoredItems() | ✅ | |
Subscription Service Set | ||
CreateSubscription() | ✅ | |
ModifySubscription() | ✅ | |
DeleteSubscriptions() | ✅ | |
Publish() | ✅ | |
Republish() | ✅ | |
TransferSubscriptions() | 🌒 | |
Node Management Service Set | ||
AddNodes() | 🌑 | |
AddReferences() | 🌑 | |
DeleteNodes() | 🌑 | |
DeleteReferences() | 🌑 | |
Query Service Set | ||
QueryFirst() | 🌑 | |
QueryNext() | 🌑 |
Transport Protocol | ||
Transport | Status | Comment |
UA-TCP UA-SC UA Binary | ✅ | OPC.TCP - Binary |
SOAP-HTTP WS-SC UA Binary | 🌑 | HTTP/HTTPS - Binary |
SOAP-HTTP WS-SC UA XML | 🌑 | |
SOAP-HTTP WS-SC UA XML-UA Binary | 🌑 | |
Security Policies | ||
Policy | Status | Comment |
None | ✅ | |
Basic128Rsa15 | ✅ | |
Basic256 | ✅ | |
Basic256Sha256 | ✅ | |
Authentication | Status | Comment |
Anonymous | ✅ | |
User Name Password | ✅ | |
X509 Certificate | 🌑 | |
client facets | ||
Base Client Behaviour | ✅ | |
AddressSpace Lookup | ✅ | |
Attribute Read | ✅ | |
DataChange Subscription | ✅ | |
DataAccess | ✅ | |
Discovery | ✅ | |
Event Subscription | ✅ | |
Method call | ✅ | |
Historical Access | 🌓 | |
Advanced Type | ✅ | |
Programming | 🌑 | |
Auditing | 🌑 | |
Redundancy | 🌑 | |
server profiles | ||
Core Server | ✅ | |
Data Access Server | ✅ | |
Embedded Server | ✅ | |
Nano Embedded Device Server | ✅ | |
Micro Embedded Device Server | ✅ | |
Standard DataChange Subscription Server | ||
Standard Event Subscription Server | ||
Standard UA Server | ||
Redundancy Transparent Server | 🌑 | |
Redundancy Visible Server | 🌑 | |
Node Management Server | 🌑 | |
Auditing Server | 🌑 | |
Complex Type Server |
Road-map
This are the item we would like to achieve in the next version of the API.
- improved documentation
- Compliance testing and certification (CTT)
- HA Support : improved support of historizing service
- more tutorials
Feedback
-
if you're using node-opcua in one of your project, please feel free to leave a comment and a quick description in the wiki
-
if you have a particular wish or found a issue, let us known and create an issue