{"id":22266720,"url":"https://github.com/2fake/devolo_plc_api","last_synced_at":"2025-04-04T20:15:38.395Z","repository":{"id":40469158,"uuid":"287279622","full_name":"2Fake/devolo_plc_api","owner":"2Fake","description":"devolo PLC device API in Python","archived":false,"fork":false,"pushed_at":"2025-03-28T13:20:07.000Z","size":497,"stargazers_count":20,"open_issues_count":2,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-28T19:12:37.427Z","etag":null,"topics":["devolo","hacktoberfest","iot","magic","plc","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2Fake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-13T12:54:45.000Z","updated_at":"2025-03-28T13:20:04.000Z","dependencies_parsed_at":"2023-10-03T11:04:03.191Z","dependency_job_id":"82891ea4-e626-4414-b5c0-e96996b544b0","html_url":"https://github.com/2Fake/devolo_plc_api","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Fake%2Fdevolo_plc_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Fake%2Fdevolo_plc_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Fake%2Fdevolo_plc_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2Fake%2Fdevolo_plc_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2Fake","download_url":"https://codeload.github.com/2Fake/devolo_plc_api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242681,"owners_count":20907134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devolo","hacktoberfest","iot","magic","plc","python"],"created_at":"2024-12-03T10:23:44.243Z","updated_at":"2025-04-04T20:15:38.379Z","avatar_url":"https://github.com/2Fake.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# devolo PLC API\n\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/2Fake/devolo_plc_api/pythonpackage.yml?branch=main)](https://github.com/2Fake/devolo_plc_api/actions?query=workflow%3A%22Python+package%22)\n[![PyPI - Downloads](https://img.shields.io/pypi/dd/devolo-plc-api)](https://pypi.org/project/devolo-plc-api/)\n[![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/2Fake/devolo_plc_api)](https://codeclimate.com/github/2Fake/devolo_plc_api)\n[![Coverage Status](https://coveralls.io/repos/github/2Fake/devolo_plc_api/badge.svg?branch=development)](https://coveralls.io/github/2Fake/devolo_plc_api?branch=development)\n\nThis 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](https://github.com/2Fake/devolo_plc_api/issues).\n\n## System requirements\n\nDefining the system requirements with exact versions typically is difficult. But there is a tested environment:\n\n* Linux\n* Python 3.8.12\n* pip 20.2.4\n* httpx 0.21.0\n* protobuf 3.17.3\n* segno 1.5.2\n* zeroconf 0.70.0\n\nOther 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:\n\n* pytest 6.2.5\n* pytest-asyncio 0.15.1\n* pytest-httpx 0.18\n\n## Versioning\n\nIn our versioning we follow [Semantic Versioning](https://semver.org/).\n\n## Installing for usage\n\nThe Python Package Index takes care for you. Just use pip.\n\n```bash\npip install devolo-plc-api\n```\n\n## Installing for development\n\nFirst, you need to get the sources.\n\n```bash\ngit clone git@github.com:2Fake/devolo_plc_api.git\n```\n\nThen you need to take care of the requirements.\n\n```bash\ncd devolo_plc_api\npython setup.py install\n```\n\nIf you want to run out tests, install the extra requirements and start pytest.\n\n```bash\npip install -e .[test]\npytest\n```\n\n## Usage\n\nAll 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](https://github.com/2Fake/devolo_plc_api/blob/master/example_async.py). If you want to use it synchronously, please check [example_sync.py](https://github.com/2Fake/devolo_plc_api/blob/master/example_sync.py).\n\nIf 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.\n\n```python\nfrom devolo_plc_api.network import async_discover_network\n\ndevices = await async_discover_network()\nawait asyncio.gather(*[device.async_connect() for device in _devices.values()])\n# Do your magic\nawait asyncio.gather(*[device.async_disconnect() for device in devices.values()])\n```\n\nOr in a synchronous setup:\n\n```python\nfrom devolo_plc_api.network import discover_network\n\ndevices = discover_network()\nfor device in _devices.values():\n        device.connect()\n# Do your magic\n[device.disconnect() for device in devices.values()]\n```\n\n## Supported device\n\nThe following devolo devices were queried with at least one call to verify functionality:\n\n* Magic 2 WiFi next\n* Magic 2 WiFi 2-1\n* Magic 2 LAN triple\n* Magic 2 DinRail\n* Magic 2 LAN 1-1\n* Magic 1 WiFi mini\n* Magic 1 WiFi 2-1\n* Magic 1 LAN 1-1\n* Repeater 5400\n* Repeater 3000\n* Repeater 1200\n* Repeater ac+\n* Repeater ac\n* dLAN 1200+ WiFi ac\n* dLAN 550+ Wifi\n* dLAN 550 WiFi\n\nHowever, other devices might work, some might have a limited functionality. Also firmware version will matter. If you discover something weird, [we want to know](https://github.com/2Fake/devolo_plc_api/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2fake%2Fdevolo_plc_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2fake%2Fdevolo_plc_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2fake%2Fdevolo_plc_api/lists"}