Description
node-opcua is an implementation of an OPC UA stack fully written in Typescript for NodeJS.
Node-opcua is the OPC-UA stack running on NodeJS.
Why NodeJS ?
Because nodeJs is a great framework to design asynchronous applications.
node-opcua alternatives and similar modules
Based on the "Hardware" category.
Alternatively, view node-opcua alternatives based on common mentions on social networks and blogs.
-
johnny-five
JavaScript Robotics and IoT programming framework, developed at Bocoup. -
serialport
Access serial ports with JavaScript. Linux, OSX and Windows. Welcome your robotic JavaScript overlords. Better yet, program them! -
cylon.js
JavaScript framework for robotics, drones, and the Internet of Things (IoT) -
pigpio
Fast GPIO, PWM, servo control, state change notification and interrupt handling with Node.js on the Raspberry Pi
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of node-opcua or a related project?
README
node-opcua
node-opcua is an implementation of an OPC UA stack fully written in Typescript for NodeJS.
Node-opcua is the OPC-UA stack running on NodeJS.
Why NodeJS ?
Because nodeJs is a great framework to design asynchronous applications.
Getting started
installing node-opcua as a node package
$ mkdir mytest
$ cd mytest
$ npm init
$ npm install node-opcua --unsafe-perms
$ # create your first app.js file!
installing node-opcua samples as a node package
$ mkdir myserver
$ cd myserver
$ npm init
$ npm install node-opcua-samples --unsafe-perms
$ ./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"
or
$ ./node_modules/.bin/simple_client -e "opc.tcp://opcuademo.sterfive.com:26543"
Minimum nodejs requirement
- nodejs version 14 or above
tutorials and guided examples
. This book provides a large number of practical and ready-to-use and fully documented example. It's the best starting point to learn about node-opcua.
Sponsors & Backers
The funding of node-opcua enterly relies on its users.
We appreciate that, once you have evaluated the software and you have decided to use it in one of your application, you consider supporting our effort by either financially contributing to one of our sponsor programs:
Grants ensure the following:
- 🔨 Long term maintenance of the project
- ⚙️ maintain the website and continuous integration platform
- 🛣 Progress on the road-map
- 🐛 Quick responses to bug reports
- 🚀 New features & enhancements
- ⚖️ representing the node-opcua user community at the OPC Foundation
Getting professional support
To get professional support, consider subscribing to the node-opcua membership community:
Registered members have access to a extended set of online documentation.
Registered members can post and query sterfive for any question related to NodeOPCUA in a private chat room.
or contact sterfive for dedicated consulting and more advanced support or for a certified version of node-opcua. ([email protected]).
Road-map
If your company would like to participate and influence the development of future versions of node-opcua please contact sterfive.
Those are the items we would like to achieve in the next version of the API.
- improved documentation
- Compliance testing and certification (CTT)
- Pub-sub support
- support for redundancy
- session less transactions
- WebSocket transport
- JTokens and OAuth
- reversed connection
- more tutorials
Advanced topics
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 -g pnpm
$ pnpm recursive install
$ pnpm build
$ 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 -g pnpm
$ pnpm recursive install
$ pnpm build
$ 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
- create a server
-
- more tutorials are available in the book (https://leanpub.com/node-opcuabyexample)
- more advanced examples and training material are available for the NodeOPCUA Subscription members at (https://support.sterfive.com)
API reference
- check out the API documentation
Contributing
$ git clone git://github.com/node-opcua/node-opcua.git
$ cd node-opcua
$ npm install -g pnpm
$ pnpm install
$ pnpm recursive install
$ pnpm build
Supported Features
Service | ||
---|---|---|
Discovery Service Set | ||
FindServers() | :white_check_mark: | |
GetEndpoints() | :white_check_mark: | |
RegisterServer() | :white_check_mark: | |
RegisterServer2() | :white_check_mark: | |
FindServersOnNetwork() | :white_check_mark: | |
Secure Channel Service Set | ||
OpenSecureChannel() | :white_check_mark: | |
CloseSecureChannel() | :white_check_mark: | |
Session Service Set | ||
CreateSession() | :white_check_mark: | |
CloseSession() | :white_check_mark: | |
ActivateSession() | :white_check_mark: | |
Cancel() | ||
View Service Set | ||
Browse() | :white_check_mark: | |
BrowseNext() | :white_check_mark: | |
TranslateBrowsePathsToNodeIds() | :white_check_mark: | |
RegisterNodes() | :white_check_mark: | |
UnregisterNodes() | :white_check_mark: | |
Attribute Service Set | ||
Read() | :white_check_mark: | |
Write() | :white_check_mark: | |
HistoryRead() | :waxing_crescent_moon: | |
HistoryUpdate() | :waxing_crescent_moon: | |
MonitoredItems Service Set | ||
CreateMonitoredItems() | :white_check_mark: | |
ModifyMonitoredItems() | :white_check_mark: | |
SetMonitoringMode() | :white_check_mark: | |
SetTriggering() | :new_moon: | |
DeleteMonitoredItems() | :white_check_mark: | |
Subscription Service Set | ||
CreateSubscription() | :white_check_mark: | |
ModifySubscription() | :white_check_mark: | |
DeleteSubscriptions() | :white_check_mark: | |
Publish() | :white_check_mark: | |
Republish() | :white_check_mark: | |
TransferSubscriptions() | :white_check_mark: | |
Node Management Service Set | ||
AddNodes() | :new_moon: | |
AddReferences() | :new_moon: | |
DeleteNodes() | :new_moon: | |
DeleteReferences() | :new_moon: | |
Query Service Set | ||
QueryFirst() | :new_moon: | |
QueryNext() | :new_moon: | |
PubSUB | as a commercial module | :white_check_mark: |
GDS | as a commercial module | :white_check_mark: |
Transport Protocol | ||
Transport | Status | Comment |
UA-TCP UA-SC UA Binary | :white_check_mark: | OPC.TCP - Binary |
SOAP-HTTP WS-SC UA Binary | :new_moon: | HTTP/HTTPS - Binary |
SOAP-HTTP WS-SC UA XML | :new_moon: | |
SOAP-HTTP WS-SC UA XML-UA Binary | :new_moon: | |
Security Policies | ||
Policy | Status | Comment |
None | :white_check_mark: | |
Basic128Rsa15 | :white_check_mark: | deprecated in 1.04 |
Basic256 | :white_check_mark: | deprecated in 1.04 |
Basic256Sha256 | :white_check_mark: | |
Authentication | Status | Comment |
Anonymous | :white_check_mark: | |
User Name Password | :white_check_mark: | |
X509 Certificate | :white_check_mark: | |
client facets | ||
Base Client Behaviour | :white_check_mark: | |
AddressSpace Lookup | :white_check_mark: | |
Attribute Read | :white_check_mark: | |
DataChange Subscription | :white_check_mark: | |
DataAccess | :white_check_mark: | |
Discovery | :white_check_mark: | |
Event Subscription | :white_check_mark: | |
Method call | :white_check_mark: | |
Historical Access | :first_quarter_moon: | |
Advanced Type | :white_check_mark: | |
Programming | :new_moon: | |
Auditing | :first_quarter_moon: | |
Redundancy | :new_moon: | Sponsors wanted |
server profiles | ||
Core Server | :white_check_mark: | |
Data Access Server | :white_check_mark: | |
Embedded Server | :white_check_mark: | |
Nano Embedded Device Server | :white_check_mark: | |
Micro Embedded Device Server | :white_check_mark: | |
Standard DataChange Subscription Server | :white_check_mark: | |
Standard Event Subscription Server | :white_check_mark: | |
Standard UA Server | :white_check_mark: | |
Redundancy Transparent Server | :new_moon: | Sponsors wanted |
Redundancy Visible Server | :new_moon: | Sponsors wanted |
Node Management Server | :new_moon: | Sponsors wanted |
Auditing Server | :first_quarter_moon: | |
Complex Type Server | :white_check_mark: | (sponsored) |
Session Diagnostics | :white_check_mark: | (sponsored) |
Subscription Diagnostics | :white_check_mark: | (sponsored) |
Alarms & Conditions | :white_check_mark: | (sponsored) |
Pub & Sub | :new_moon: | Sponsors wanted |
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
About licensing
The node-opcua core module is [copyrighted and licenced under the term of the "The MIT License"](./LICENSE).
This means that :
- node-opcua comes without any warranty of any kind.
- you can freely reuse in an open-source application or a commercial application
- you have to clearly include the software copyright notice in all copies or substantial portions of the software.
You are strongly encourage to apply to our NodeOPCUA Membership to get additional benefits and support.
Copyright
Copyright (c) 2022 Sterfive SAS - 833264583 RCS ORLEANS - France (https://www.sterfive.com)
Copyright (c) 2014-2022 Etienne Rossignon
*Note that all licence references and agreements mentioned in the node-opcua README section above
are relevant to that project's source code only.