Skip to content
/ opcua Public
forked from locka99/opcua

A client and server implementation of the OPC UA specification written in Rust

License

Notifications You must be signed in to change notification settings

nkbai/opcua

Repository files navigation

Introduction

An OPC UA server / client API implementation for Rust.

Linux
Windows

OPC UA is an industry standard for monitoring of data. It's used extensively for embedded devices, industrial control, IoT, etc. - just about anything that has data that something else wants to monitor, control or visualize.

Rust is a systems programming language and is therefore a natural choice for implementing OPC UA. This implementation supports the embedded, micro and nano profiles but may grow to support features in time.

License

The code is licenced under MPL-2.0. Like all open source code, you use this code at your own risk.

Documentation

See the CHANGELOG.md for changes per version as well as aspirational / upcoming work.

See the design docs for more in-depth thoughts on the whys and wherefores of implementing OPC UA in Rust.

The documentation is generated from the latest published crates which may be some way behind current development.

Client Client side APIs to connect to an OPC UA server.
Server Server side APIs to hose an OPC UA server, create new nodes, push/pull changes.
Core Core functionality shared by client and server - encryption, certificate management, chunking.
Types OPC UA core types and encoding implementations.

Samples

If you want to get stuck in, there are a number of samples in the samples/ folder. The simple-client and the simple-server projects are minimal client and server programs respectively.

# In one bash
cd opcua/samples/simple-server
cargo run
# In another bash
cd opcua/samples/simple-client
cargo run

The full list of samples:

  1. simple-server - an OPC UA server that adds 4 variables v1, v2, v3 and v4 and updates them from a timer via push and pull mechanisms.
  2. simple-client - an OPC UA client that connects to a server and requests the values of v1, v2, v3 and v4. It may also subscribe to changes to these values.
  3. discovery-client - an OPC UA client that connects to a discovery server and lists the servers registered on it.
  4. gfx-client - an OPC UA client that displays changing values graphically.
  5. chess-server - an OPC UA server that connects to a chess engine as its back end and updates variables representing the state of the game.
  6. demo-server - an OPC UA server that will implements more functionality than the simple server and may become a compliance server in time.
  7. mqtt-client - an OPC UA client that subscribes to some values and publishes them to an MQTT broker

About

A client and server implementation of the OPC UA specification written in Rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.1%
  • Other 0.9%