Skip to main content

devolo PLC API

GitHub Workflow Status PyPI - Downloads Code Climate maintainability Coverage Status

This project implements parts of the devolo PLC devices API in Python. Communication to the devices is formatted in protobuf and the IDLs were kindly provided by devolo. Nevertheless, we might miss updates to the IDLs. If you discover a breakage, please feel free to report an issue.

System requirements

Defining the system requirements with exact versions typically is difficult. But there is a tested environment:

  • Linux
  • Python 3.9.22
  • pip 25.0.1
  • ifaddr 0.2.0
  • httpx 0.28.1
  • protobuf 5.28.3
  • segno 1.6.1
  • tenacity 9.0.0
  • zeroconf 0.146.1

Other versions and even other operating systems might work. Feel free to tell us about your experience. If you want to run our unit tests, you also need:

  • pytest 7.4.4
  • pytest-asyncio 0.26.0
  • pytest-httpx 0.35.0
  • syrupy 4.9.1

Versioning

In our versioning we follow Semantic Versioning.

Installing for usage

The Python Package Index takes care for you. Just use pip.

pip install devolo-plc-api

Installing for development

First, you need to get the sources.

git clone git@github.com:2Fake/devolo_plc_api.git

Then you need to take care of the requirements.

cd devolo_plc_api
python setup.py install

If you want to run out tests, install the extra requirements and start pytest.

pip install -e .[test]
pytest

Usage

All features we currently support on device basis are shown in our examples. If you want to use the package asynchronously, please check example_async.py. If you want to use it synchronously, please check example_sync.py.

If you don't know the IP addresses of your devices, you can discover them. You will get a dictionary with the device's serial number as key. The connections to the devices will be already established, but you will have to take about disconnecting.

from devolo_plc_api.network import async_discover_network

devices = await async_discover_network()
await asyncio.gather(*[device.async_connect() for device in _devices.values()])
# Do your magic
await asyncio.gather(*[device.async_disconnect() for device in devices.values()])

Or in a synchronous setup:

from devolo_plc_api.network import discover_network

devices = discover_network()
for device in _devices.values():
        device.connect()
# Do your magic
[device.disconnect() for device in devices.values()]

Supported device

The following devolo devices were queried with at least one call to verify functionality:

  • Magic 2 WiFi 6 next
  • Magic 2 WiFi 6
  • Magic 2 WiFi next
  • Magic 2 WiFi 2-1
  • Magic 2 LAN triple
  • Magic 2 DinRail
  • Magic 2 LAN 1-1
  • Magic 1 WiFi mini
  • Magic 1 WiFi 2-1
  • Magic 1 LAN 1-1
  • Repeater 5400
  • Repeater 3000
  • Repeater 1200
  • Repeater ac+
  • Repeater ac
  • dLAN 1200+ WiFi ac
  • dLAN 550+ Wifi
  • dLAN 550 WiFi

However, other devices might work, some might have a limited functionality. Also firmware version will matter. If you discover something weird, we want to know.

Metadata

Release files for devolo-plc-api 1.6.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 devolo-plc-api 1.6.0
File Size Uploaded
devolo_plc_api-1.6.0.tar.gz 67.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for devolo-plc-api 1.6.0
File Interpreter ABI Platform
devolo_plc_api-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 128.2 kB

Release files / devolo_plc_api-1.6.0.tar.gz

Download URL devolo_plc_api-1.6.0.tar.gz
Size 67.2 kB
Tags Source
SHA-256 checksum
How to use checksums
da78188e3bc5688e46e01a8abb4f11f05e71f6a5b046f9cc2f1abe5afd8b3038
BLAKE2b-256 checksum
How to use checksums
dd589d390cffa9d0da0057c31502e39b1f5456a5c179267a7722800c0d9e2f18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / devolo_plc_api-1.6.0-py3-none-any.whl

Download URL devolo_plc_api-1.6.0-py3-none-any.whl
Size 60.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d04efc1924f70e836e9ad04192968b6bda9110ef20a7c4e63dce572e04eb86c
BLAKE2b-256 checksum
How to use checksums
77a723d0c9f2d332a63297c99c13990c21db95f96c7b2c0271d93f04466fab21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

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