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.
The code is licenced under MPL-2.0. Like all open source code, you use this code at your own risk.
Read the setup for instructions on building OPCUA for Rust and more in-depth thoughts on the whys and wherefores about the implementation.
Read the change log for changes per version as well as aspirational / upcoming work.
The API documentation is generated from the latest published crates which may be some way behind current development.
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:
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.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.discovery-client
- an OPC UA client that connects to a discovery server and lists the servers registered on it.gfx-client
- an OPC UA client that displays changing values graphically.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.demo-server
- an OPC UA server that will implements more functionality than the simple server and may become a compliance server in time.mqtt-client
- an OPC UA client that subscribes to some values and publishes them to an MQTT brokerweb-client
- an OPC UA client that subscribes to some values and streams them over a websocket.