pyzonneplan
Asynchronous Python client for the Zonneplan API.
About
pyzonneplan is an async client for the Zonneplan API, focused on:
- Solar (PV) installation data
- Dynamic pricing and energy consumption data
- Home battery monitoring and control modes
- EV charge point sessions and schedules
The library is under active development and endpoint coverage will keep expanding.
Installation
pip install pyzonneplan
Usage
Zonneplan authenticates with a one-time password mailed to the account address, rather than a plain username/password login:
import asyncio
from aiohttp import ClientSession
from pyzonneplan import ZonneplanAuth
async def main() -> None:
async with ClientSession() as session:
auth = ZonneplanAuth(session=session)
challenge = await auth.async_request_otp("you@example.com", source_name="pyzonneplan")
otp = input("Enter the one-time password mailed to you: ")
token = await auth.async_submit_otp(challenge, otp)
print("Access token:", token.access_token)
if __name__ == "__main__":
asyncio.run(main())
Store token.as_dict() and restore it later with Token.from_dict(...); refresh it
with auth.async_refresh_token(token) once it is close to token.expires_at.
More examples can be found in the examples directory.
Documentation
Project documentation and API reference: https://erwindouna.github.io/pyzonneplan/
Contributing
Contributions are welcome. Please open an issue or pull request.
For local development:
uv sync --all-groups && uv run pre-commit install
Run checks:
uv run pre-commit run --all-files
Run tests:
uv run pytest
License
MIT License
Copyright (c) 2026 Erwin Douna
Metadata
Release files for pyzonneplan 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyzonneplan-0.1.2.tar.gz | 15.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyzonneplan-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.7 kB
Release files / pyzonneplan-0.1.2.tar.gz
| Download URL | pyzonneplan-0.1.2.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76f820460ce7fbe794ce4bc43cf7904bc49b671e7d98c3aeb2f2bf00db302d0a
|
|
BLAKE2b-256 checksum How to use checksums |
2306cb89c3ce73f57a4adeff7ef4cfc737d3e454fa5e984d76e8c099a67c37c7
|
| 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 Aug 30, 2026.
Transparency logRelease files / pyzonneplan-0.1.2-py3-none-any.whl
| Download URL | pyzonneplan-0.1.2-py3-none-any.whl |
|---|---|
| Size | 17.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
54e23e5ced8dda4aca66f277e23632d073880333966acb14ea74ff887a60d364
|
|
BLAKE2b-256 checksum How to use checksums |
6b58253cd3235194817e79067048763e4d546150025c18773441a0e434562fc9
|
| 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 Aug 30, 2026.
Transparency log