Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yadnp3-3.2.0.1.tar.gz (62.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

yadnp3-3.2.0.1-cp313-cp313-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.13Windows x86-64

yadnp3-3.2.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

yadnp3-3.2.0.1-cp312-cp312-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.12Windows x86-64

yadnp3-3.2.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

yadnp3-3.2.0.1-cp311-cp311-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.11Windows x86-64

yadnp3-3.2.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

yadnp3-3.2.0.1-cp310-cp310-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.10Windows x86-64

yadnp3-3.2.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

yadnp3-3.2.0.1-cp39-cp39-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.9Windows x86-64

yadnp3-3.2.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

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

Hashes for yadnp3-3.2.0.1.tar.gz
Algorithm Hash digest
SHA256 c46c320ccc9bd6dff68a3b340b46a86a7f6a1ac1ebbbebb0159303474ebbe778
MD5 1560d130b0b99a32f889f85b04504cf4
BLAKE2b-256 c2970560672a05d2bb947a321ad2b3c7b571cc97e042b6b44b7f2c267208fc69

See more details on using hashes here.

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

Hashes for yadnp3-3.2.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6e6f77ebcc67ec408c1795823685aec6143647a3a79dd763ee6e0df3e3fcd635
MD5 18ccf8bfc21c3107826d0c6907b79451
BLAKE2b-256 b09e6db66d12dc505e5ed96ae0739a3e0736e824b9c8678ba46714c5de99119d

See more details on using hashes here.

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

File hashes

Hashes for yadnp3-3.2.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aabf68bb289011802f09d91f386e348439505482a049da5a1b76aca8a23a5b71
MD5 33c55e60597ee316e519da355754b78f
BLAKE2b-256 f9a14c9bf1465fe3ce5469177797a90500dea9699b958bfed8e024c2e55bcb5e

See more details on using hashes here.

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

Hashes for yadnp3-3.2.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b8726b04a1212be9d6141cd1607aeea095819f1847c88530c2d6dc502565f9b1
MD5 67a638e723585d8a999c8bfb4890a9ac
BLAKE2b-256 1f35feff352d4cd107a6abd655c325b37efe93b026970aee880274d817f317a9

See more details on using hashes here.

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

File hashes

Hashes for yadnp3-3.2.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39ef55767d1cb1b59a9b5776d71614809e5bd23bf2872eaeaaa8b55915c4d0c4
MD5 f29e23ac92665d43e7a264799f1a0288
BLAKE2b-256 8c820debc0c8a68c41f83b6e124a98765446d400d3b20a009d55d356493297a7

See more details on using hashes here.

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

Hashes for yadnp3-3.2.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c2a4c56b0dbdbd459ab25d357080111bd1c08b2804a39ff77a2cd8e825eeb943
MD5 14577f913e06f5e922a26c6375d6756f
BLAKE2b-256 5d1f440f759d4c940137783e6cf034268440f3583c0796d62e6e078f090ac155

See more details on using hashes here.

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

File hashes

Hashes for yadnp3-3.2.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f95bcfc5e3334c564e8e3d4ef61c7d2379c69bd410f58b8e6b1d74b77a57da6a
MD5 ad6c3023eec0caae110f78e05a131d7f
BLAKE2b-256 48d3c8854f0913f5a8a6772eb0a72fc700337e0e749c8098158c6ad543d22b8e

See more details on using hashes here.

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

Hashes for yadnp3-3.2.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d127fed4d033887db3c92ec8816bd695d1e4c929665b579d888cb85b687cc855
MD5 4ff94731d36dfeac64e5faba68d28a1e
BLAKE2b-256 0bdee0c3fe2647297584b0399554b2cc1e1b34e07a003602344a4fdbcff4e98e

See more details on using hashes here.

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

File hashes

Hashes for yadnp3-3.2.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ae491d714ac8502439d609f14928ccec1ad7b2f483df7ba695d491c6d1e534da
MD5 fd669bce9b22b4fb94d2b7c8081b06e6
BLAKE2b-256 dc1c5a17c472d988b480b12d2b7db7441c588bd4e6364e3280325438552d7dbb

See more details on using hashes here.

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

Hashes for yadnp3-3.2.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b2863dab1f8bf7be05dd9f151225fab09e98b7fe8fb619e2f7b145d338aac275
MD5 242545aaa8ae3acefc2e7b4726731356
BLAKE2b-256 f4e861541687e38839a2ac92b22ce910bfc227a77cd5fcd2f0cd4df20b4b6eaf

See more details on using hashes here.

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

File hashes

Hashes for yadnp3-3.2.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d61db8963965f5b0d40882d19f89931d7b6b13cd62d94051105c74430b866ebf
MD5 8163333e86ae08b89856645a11a78d9a
BLAKE2b-256 1c06f6de94f4d860e2db9a37bbb9e009636233bf9a07d94bd385d5f535845319

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page