Skip to main content

Python REST-Client for Kostal Plenticore Solar Inverters

Project description

Python Library for Accessing Kostal Plenticore Inverters

This repository provides a python library and command line interface for the REST-API of Kostal Plenticore Solar Inverter.

This library is not affiliated with Kostal and is no offical product. It uses the interfaces of the inverter like other libs (eg. https://github.com/kilianknoll/kostal-RESTAPI) and uses information from their swagger documentation (ip-addr/api/v1/).

CI

Features

  • Authenticate
  • Read/Write settings
  • Read process data
  • Read events
  • Download of log data
  • Full async-Support for reading and writing data
  • Commandline interface for shell access
  • Dynamic data model - adapts automatically to new process data or settings
  • Virtual Process Data values

Getting Started

Prerequisites

You will need Python >=3.9.

Installing the library

Packages of this library are released on PyPI and can be installed with pip. Alternatively the packages can also be downloaded from GitHub.

I recommend to use a virtual environment for this, because it installs the dependecies independently from the system. The installed CLI tools can then be called without activating the virtual environment it.

# Install with command line support
$ pip install pykoplenti[cli]

# Install without command line support (library only)
$ pip install pykoplenti

Using the command line interface

After installing with CLI support, you can use the command:

$ pykoplenti --help
Usage: python -m pykoplenti.cli [OPTIONS] COMMAND [ARGS]...

  Handling of global arguments with click

Options:
  --host TEXT           Hostname or IP of the inverter
  --port INTEGER        Port of the inverter  [default: 80]
  --password TEXT       Password or master key (also device id)
  --service-code TEXT   service code for installer access
  --password-file FILE  Path to password file - deprecated, use --credentials
                        [default: secrets]
  --credentials FILE    Path to the credentials file. This has a simple ini-
                        format without sections. For user access, use the
                        'password'. For installer access, use the 'master-key'
                        and 'service-key'.
  --help                Show this message and exit.

Commands:
  all-processdata   Returns a list of all available process data.
  all-settings      Returns the ids of all settings.
  download-log      Download the log data from the inverter to a file.
  read-events       Returns the last events
  read-processdata  Returns the values of the given process data.
  read-settings     Read the value of the given settings.
  repl              Provides a simple REPL for executing API requests to...
  write-settings    Write the values of the given settings.

Visit Command Line Help for example usage.

Using the library from python

The library is fully async, there for you need an async loop and an async ClientSession. Please refer to the example directory for full code.

Import the client module:

from pykoplenti import ApiClient

To communicate with the inverter you need to instantiate the client:

# session is a aiohttp ClientSession
client = ApiClient(session, '192.168.1.100')

Login to gain full access to process data and settings:

await client.login(passwd)

Now you can access the API. For example to read process data values:

data = await client.get_process_data_values('devices:local', ['Inverter:State', 'Home_P'])

device_local = data['devices:local']
inverter_state = device_local['Inverter:State']
home_p = device_local['Home_P']

See the full example here: read_process_data.py.

If you should need installer access use the master key (printed on a label at the side of the inverter) and additionally pass your service code:

await client.login(my_master_key, service_code=my_service_code)

Documentation

Built With

  • AIOHTTPO - asyncio for HTTP
  • click - command line interface framework
  • black - Python code formatter
  • ruff - Python linter
  • pydantic - Data validation library
  • pytest - Python test framework
  • mypy - Python type checker
  • hatchling - Modern Python build backend
  • tox - Automate testing

License

apache-2.0

Acknowledgments

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

pykoplenti-1.5.0.tar.gz (154.1 kB view details)

Uploaded Source

Built Distribution

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

pykoplenti-1.5.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file pykoplenti-1.5.0.tar.gz.

File metadata

  • Download URL: pykoplenti-1.5.0.tar.gz
  • Upload date:
  • Size: 154.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pykoplenti-1.5.0.tar.gz
Algorithm Hash digest
SHA256 b2210ab4c6fbec98132ed5ec3c41b40174e3238bb4dcee362e9674290131b496
MD5 6d491e85f4de88417dbce694b9c71d2f
BLAKE2b-256 bd074598bc64ec9d8f4d7ea897badd68f812a86101b17781eb03a82413ad8b5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pykoplenti-1.5.0.tar.gz:

Publisher: ci.yaml on stegm/pykoplenti

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pykoplenti-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: pykoplenti-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 22.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pykoplenti-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59f70db9343c426f46a217e33ffc559c3c8ba0e098362fbb195766d86046c37f
MD5 a41a5adb90dcab0a02c75a4799d25b0c
BLAKE2b-256 9562cff7be2bd0f61cb871a4c164f708309f766a584306a75251411f092b2031

See more details on using hashes here.

Provenance

The following attestation bundles were made for pykoplenti-1.5.0-py3-none-any.whl:

Publisher: ci.yaml on stegm/pykoplenti

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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