/opcua

Native Erlang implementation of OPCUA

Primary LanguageErlangApache License 2.0Apache-2.0

OPC UA

A native Erlang implementation of the OPCUA Binary Protocol.

We use erlang 25 to develop and test this application.

Tests License Version


Quick Start

# clone
git clone https://github.com/stritzinger/opcua.git
cd opcua

# you can generate the certificates with
./scripts/generate_certificates.sh

# optionally update the nodesets
./scripts/update_nodeset

You can quickly try it with the erlang shell:

# run default server
rebar3 as server shell

# run default client
rebar3 as client shell

Read the Wiki to learn about the available command line API.


Client-Server Features

We base our development on release v1.04 of the OPCUA specification.

Striked checkboxes are not planned. Empty ones will be added in future.

Encoding

  • OPC UA Binary
  • OPC UA JSON
  • OPC UA XML

Transport

  • OPC UA TCP (opc.tcp)
  • OPC UA HTTPS
  • OPC UA XML
  • WebSockets

Security

Modes

  • none
  • sign
  • sign_and_encypt

Policies

  • Basic256Sha256
  • Aes128-Sha256-RsaOaep

Authentication

  • Anonymous
  • User Name Password
  • X509 Certificate

Certificate Validation

  • x509 validation (signature, validity ecc ...)
  • Hostname & Application Uri ecc ...
  • Certificate Revocation Lists (CRL)

Services

The current sets of supported services.

Service Set Service Supported Notes
Discovery Service Set FindServers
FindServersOnNetwork
GetEndpoints Yes
RegisterServer
RegisterServer2
Secure Channel Service Set OpenSecureChannel Yes
CloseSecureChannel Yes
Session Service Set CreateSession Yes
CloseSession Yes
ActivateSession Yes
Cancel
Node Management Service Set AddNodes
AddReferences
DeleteNodes
DeleteReferences
View Service Set Browse Yes
BrowseNext
TranslateBrowsePathsToNodeIds
RegisterNodes
UnregisterNodes
Query Service Set QueryFirst
QueryNext
Attribute Service Set Read Yes
Write Yes
HistoryRead
HistoryUpdate
Method Service Set Call
MonitoredItems Service Set CreateMonitoredItems
DeleteMonitoredItems
ModifyMonitoredItems
SetMonitoringMode
SetTriggering
Subscription Service Set CreateSubscription
ModifySubscription
SetPublishingMode
Publish
Republish
DeleteSubscriptions
TransferSubscriptions

PubSub Features

OPCUA PubSub can work with or without an OPCUA client and server.

This component is still in early development on a secondary branch.