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.7.

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
$ pip install pykoplenti

Using the command line interface

Installing the libray with CLI provides a new 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
  • setuptools - Python packager
  • 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.4.0.tar.gz (27.4 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.4.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pykoplenti-1.4.0.tar.gz
Algorithm Hash digest
SHA256 8a5b14f7de1f5c77dda7ddf75c002b1e5fe062ab137d601720f12558bd612dae
MD5 81515c9c6d3165aa912fcab9d47be010
BLAKE2b-256 0ac610eec6ac1bef0d72c9854621c7016a30c48dbbbb4a398e8d591b3ba37879

See more details on using hashes here.

Provenance

The following attestation bundles were made for pykoplenti-1.4.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.4.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pykoplenti-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 17f227578f9a67cc6a97e465e43aa3834618a9b05448df3f4255ff49b9476aae
MD5 19a6c8fb083b1675a0e613b70656a65b
BLAKE2b-256 50a7bbf19458bac058348c14decd337b268a495aacc58d8817fcaea4da75f437

See more details on using hashes here.

Provenance

The following attestation bundles were made for pykoplenti-1.4.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