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 10.23 or above
API Documentation
- check out the API documentation
tutorials and guided examples
Getting professional support
NodeOPCUA is developed and maintained by sterfive.com.
To get professional support, consider subscribing to the node-opcua membership community:
or contact sterfive for dedicated consulting and more advanced support.
Supporting the development effort - Sponsors & Backers
If you like node-opcua and if you are relying on node-opcua in one of your projects, please consider becoming a backer and sponsoring us, this helps us to maintain a high-quality stack and constant evolution of the stack.
If your company would like to participate and influence the development of future versions of node-opcua please contact sterfive.
Road-map
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
- 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 install
$ 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 install
$ 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
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() | ||
| GetEndpoints() | ||
| RegisterServer() | ||
| RegisterServer2() | ||
| FindServersOnNetwork() | ||
| 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 | deprecated in 1.04 | |
| Basic256 | deprecated in 1.04 | |
| 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 | Sponsors wanted | |
| 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 | Sponsors wanted | |
| Redundancy Visible Server | Sponsors wanted | |
| Node Management Server | Sponsors wanted | |
| Auditing Server | ||
| Complex Type Server | (sponsored) | |
| Session Diagnostics | (sponsored) | |
| Subscription Diagnostics | (sponsored) | |
| Alarms & Conditions | (sponsored) | |
| Pub & Sub | 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







