Python bindings for yadnp3 -- Yet Another opendnp3 fork (IEEE-1815 DNP3 protocol)
Project description
yadnp3
Yet Another opendnp3 fork -- an experimental fork of opendnp3, the de facto reference implementation of the DNP3 (IEEE-1815) protocol stack.
The upstream project reached end-of-life on September 1, 2022. This fork extends it with new protocol features, Python bindings, and modern CI.
For commercial or production use, consider Step Function I/O's DNP3 library — a modern, commercially supported Rust implementation with C, C++, Java, and .NET bindings.
Features
Protocol — Master operations:
- Integrity / class / range / all-objects scans (periodic and on-demand)
- Select-before-operate and direct-operate commands (CROB, analog outputs)
- File transfer: read, write, delete, get info, directory listing, abort, authenticate
- Device attributes (Group 0)
- Analog input dead bands (Group 34)
- Freeze operations
- Cold/warm restart
- Time synchronization (LAN and serial modes)
- Link status check
Protocol — Outstation:
- Static and event reporting for all standard data types
- Unsolicited responses with configurable retries
- Command handling (select/operate, direct operate)
- File transfer handler interface
- Broadcast support
- Configurable event buffer and class assignment
Transports:
- TCP client and server
- Outstation TCP client mode (outstation connects to master)
- UDP
- Serial
- TLS (client and server, requires OpenSSL)
Bindings:
- Python (pybind11) —
pip install yadnp3 - Java (JNI)
- .NET (C++/CLI, Windows)
Python Quick Start
pip install yadnp3
import opendnp3
# Create a manager with 1 thread
manager = opendnp3.DNP3Manager(1)
# ... create channels, masters, outstations
# See python/tests/ for full examples
manager.Shutdown()
Building from Source
Prerequisites
- CMake >= 3.11
- C++14 compiler (GCC, Clang, or MSVC 2015+)
- OpenSSL >= 1.1.1 (optional, for TLS)
- Python 3.9+ and pybind11 (optional, for Python bindings)
Quick Build
mkdir build && cd build
cmake .. -DDNP3_TLS=ON -DDNP3_TESTS=ON
cmake --build . --parallel $(nproc)
ctest --output-on-failure
CMake Options
| Option | Default | Description |
|---|---|---|
DNP3_TLS |
OFF | TLS support (requires OpenSSL) |
DNP3_TESTS |
OFF | Unit and integration tests |
DNP3_EXAMPLES |
OFF | Example applications |
DNP3_PYTHON |
OFF | Python bindings (pybind11) |
DNP3_JAVA |
OFF | Java JNI bindings |
DNP3_DOTNET |
OFF | .NET bindings (Windows) |
DNP3_STATIC_LIBS |
platform | Static libraries |
DNP3_EVERYTHING |
OFF | All optional targets |
Python Wheel (Docker)
docker build -f Dockerfile --build-arg PYTHON_VERSION=3.12 -t yadnp3-build .
docker create --name whl yadnp3-build
docker cp whl:/wheels/. ./dist/
docker rm whl
pip install dist/*.whl
Project Structure
yadnp3/
├── cpp/lib/ Core C++ library (~79k lines)
│ ├── include/opendnp3/ Public API headers
│ └── src/ Private implementation
├── cpp/tests/ Unit, integration, and interop tests
├── cpp/examples/ Example master/outstation applications
├── python/ Python bindings (pybind11)
├── java/ Java bindings (JNI + Maven)
├── dotnet/ .NET bindings (C++/CLI)
├── generation/ Code generation (Scala/SBT)
├── Dockerfile Linux wheel build
└── .github/workflows/ CI (build, test, wheel packaging)
License
Licensed under the Apache License 2.0.
Copyright (c) 2010-2011 Green Energy Corp Copyright (c) 2013-2022 Step Function I/O LLC Copyright (c) 2024-2026 f0rw4rd (yadnp3 fork) Copyright (c) 2010-2022 various contributors
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yadnp3-3.2.0.1.tar.gz.
File metadata
- Download URL: yadnp3-3.2.0.1.tar.gz
- Upload date:
- Size: 62.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c46c320ccc9bd6dff68a3b340b46a86a7f6a1ac1ebbbebb0159303474ebbe778
|
|
| MD5 |
1560d130b0b99a32f889f85b04504cf4
|
|
| BLAKE2b-256 |
c2970560672a05d2bb947a321ad2b3c7b571cc97e042b6b44b7f2c267208fc69
|
File details
Details for the file yadnp3-3.2.0.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e6f77ebcc67ec408c1795823685aec6143647a3a79dd763ee6e0df3e3fcd635
|
|
| MD5 |
18ccf8bfc21c3107826d0c6907b79451
|
|
| BLAKE2b-256 |
b09e6db66d12dc505e5ed96ae0739a3e0736e824b9c8678ba46714c5de99119d
|
File details
Details for the file yadnp3-3.2.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aabf68bb289011802f09d91f386e348439505482a049da5a1b76aca8a23a5b71
|
|
| MD5 |
33c55e60597ee316e519da355754b78f
|
|
| BLAKE2b-256 |
f9a14c9bf1465fe3ce5469177797a90500dea9699b958bfed8e024c2e55bcb5e
|
File details
Details for the file yadnp3-3.2.0.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8726b04a1212be9d6141cd1607aeea095819f1847c88530c2d6dc502565f9b1
|
|
| MD5 |
67a638e723585d8a999c8bfb4890a9ac
|
|
| BLAKE2b-256 |
1f35feff352d4cd107a6abd655c325b37efe93b026970aee880274d817f317a9
|
File details
Details for the file yadnp3-3.2.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39ef55767d1cb1b59a9b5776d71614809e5bd23bf2872eaeaaa8b55915c4d0c4
|
|
| MD5 |
f29e23ac92665d43e7a264799f1a0288
|
|
| BLAKE2b-256 |
8c820debc0c8a68c41f83b6e124a98765446d400d3b20a009d55d356493297a7
|
File details
Details for the file yadnp3-3.2.0.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2a4c56b0dbdbd459ab25d357080111bd1c08b2804a39ff77a2cd8e825eeb943
|
|
| MD5 |
14577f913e06f5e922a26c6375d6756f
|
|
| BLAKE2b-256 |
5d1f440f759d4c940137783e6cf034268440f3583c0796d62e6e078f090ac155
|
File details
Details for the file yadnp3-3.2.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f95bcfc5e3334c564e8e3d4ef61c7d2379c69bd410f58b8e6b1d74b77a57da6a
|
|
| MD5 |
ad6c3023eec0caae110f78e05a131d7f
|
|
| BLAKE2b-256 |
48d3c8854f0913f5a8a6772eb0a72fc700337e0e749c8098158c6ad543d22b8e
|
File details
Details for the file yadnp3-3.2.0.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d127fed4d033887db3c92ec8816bd695d1e4c929665b579d888cb85b687cc855
|
|
| MD5 |
4ff94731d36dfeac64e5faba68d28a1e
|
|
| BLAKE2b-256 |
0bdee0c3fe2647297584b0399554b2cc1e1b34e07a003602344a4fdbcff4e98e
|
File details
Details for the file yadnp3-3.2.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae491d714ac8502439d609f14928ccec1ad7b2f483df7ba695d491c6d1e534da
|
|
| MD5 |
fd669bce9b22b4fb94d2b7c8081b06e6
|
|
| BLAKE2b-256 |
dc1c5a17c472d988b480b12d2b7db7441c588bd4e6364e3280325438552d7dbb
|
File details
Details for the file yadnp3-3.2.0.1-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2863dab1f8bf7be05dd9f151225fab09e98b7fe8fb619e2f7b145d338aac275
|
|
| MD5 |
242545aaa8ae3acefc2e7b4726731356
|
|
| BLAKE2b-256 |
f4e861541687e38839a2ac92b22ce910bfc227a77cd5fcd2f0cd4df20b4b6eaf
|
File details
Details for the file yadnp3-3.2.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: yadnp3-3.2.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.9, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d61db8963965f5b0d40882d19f89931d7b6b13cd62d94051105c74430b866ebf
|
|
| MD5 |
8163333e86ae08b89856645a11a78d9a
|
|
| BLAKE2b-256 |
1c06f6de94f4d860e2db9a37bbb9e009636233bf9a07d94bd385d5f535845319
|