Skip to main content

s7commplus

Pure-Python S7CommPlus communication for Siemens S7-1200 and S7-1500 PLCs. It supports S7CommPlus V1, V2 (TLS), and V3; synchronous and asyncio clients; and a server emulator for testing. Both clients support legacy V1 SessionKey authentication, validated on a real S7-1200 (sync and async clients), an S7-1500 (sync client), and S7-PLCSIM Advanced (sync and async clients).

Installation

Install the latest stable release from PyPI:

python -m pip install --upgrade s7commplus

See the s7commplus documentation for the complete user guide and API reference.

from s7commplus import Client

with Client() as client:
    client.connect("192.168.1.10", 0, 1)
    data = client.db_read(1, 0, 4)

S7CommPlus is used by newer S7-1200/1500 PLCs when classic PUT/GET access is disabled. This is an unofficial implementation and is not affiliated with, endorsed by, or supported by Siemens AG. Test against an isolated controller before using it in production or safety-relevant environments.

Some older PLCs advertise only their SessionKey family instead of a complete public-key fingerprint. Client and AsyncClient try the bounded set of bundled keys from that family on fresh sessions and cache the confirmed key for the PLC. Set allow_legacy_key_fallback=False on connect() when key probing must be disabled.

The order number a PLC reports during connect can be turned into a readable module name and family:

from s7commplus import device_family, device_name

device_name("6ES7 512-1DK01-0AB0")   # 'CPU 1512SP-1 PN'
device_family("6ES7 512-1DK01-0AB0")  # 's7-1500-sp'

DEVICE_NAMES holds the full table (S7-1200/1500 controllers, SIPLUS variants, software controllers and PLCSIM; classic S7-300/400 is out of scope). python tools/check_devices_table.py validates its shape.

Installing the package also installs a s7commplus command-line tool:

s7commplus browse --host 192.168.1.10
s7commplus read --host 192.168.1.10 DB1.Motor.Speed

See the command-line interface guide in the documentation.

Development

Cloning the repository is only necessary for developing or testing s7commplus. To use the stable library in an application, install it from PyPI as shown above.

git clone https://github.com/gijzelaerr/s7commplus.git
cd s7commplus
python -m pip install -e '.[test,docs]'
pytest
mypy s7commplus
ruff check s7commplus tests
ruff format --check s7commplus tests

The published documentation is hosted on Read the Docs and validated in CI. To build it locally from a development checkout:

sphinx-build -W --keep-going -b html docs docs/_build/html

The V1 SessionKey implementation derives from HarpoS7; its MIT license is included at s7commplus/v1_session_key/LICENSE-HarpoS7.

Metadata

Release files for s7commplus 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for s7commplus 0.3.0
File Size Uploaded Provenance
s7commplus-0.3.0.tar.gz 521.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for s7commplus 0.3.0
File Interpreter ABI Platform
s7commplus-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 798.7 kB

Release files / s7commplus-0.3.0.tar.gz

Download URL s7commplus-0.3.0.tar.gz
Size 521.4 kB
Tags Source
SHA-256 checksum
How to use checksums
bd8fdd98e17846f8da02b6bd464c06ee9e63b4561d94442876ea5e47559b1027
BLAKE2b-256 checksum
How to use checksums
54e3809868ef87d4033fc517edf8e63e3f421343723f30e4234fd4c82a8e681a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / s7commplus-0.3.0-py3-none-any.whl

Download URL s7commplus-0.3.0-py3-none-any.whl
Size 277.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
35297ad59d100a5aa1155968cd56ce4099c382eabb9f0346262aa71d7a2b94e8
BLAKE2b-256 checksum
How to use checksums
d940d5567fda09352bd37b5e4b60910803a61248ad8e1c5bf422bd92305f6784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for s7commplus 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for s7commplus-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page