A Python wrapper for the KEBA KeEnergy API.
Project description
KEBA KeEnergy API
A Python wrapper for the KEBA KeEnergy API.
Getting started
pip install keba-keenergy-api
Usage
import asyncio
from typing import Any
from keba_keenergy_api import KebaKeEnergyAPI
from keba_keenergy_api.constants import HeatCircuitOperatingMode
from keba_keenergy_api.constants import HeatCircuit
async def main() -> None:
client = KebaKeEnergyAPI(host="YOUR-IP-OR-HOSTNAME", ssl=True)
# Get current outdoor temperature
outdoor_temperature: float = await client.get_outdoor_temperature()
# Get heat circuit temperature from heat circuit 2
heat_circuit_temperature: float = await client.heat_circuit.get_temperature(position=2)
# Read multiple values
data: dict[str, tuple[float | int | str]] = await client.read_values(
request=[
HeatCircuit.TEMPERATURE,
HeatCircuit.DAY_TEMPERATURE,
],
)
# Enable "day" mode for heat circuit 2
await client.heat_circuit.set_operating_mode(mode="day", position=2)
# Write multiple values
await client.write_values(
request={
HeatCircuit.DAY_TEMPERATURE: (20, None, 5), # Write heat circuit on position 1 and 3
HeatCircuit.NIGHT_TEMPERATURE: (16,), # Write night temperature on position 1
},
)
asyncio.run(main())
By default, the library creates a new connection to KEBA KeEnergy API
with each coroutine. If you are calling a large number of coroutines, an aiohttp ClientSession()
can be used for connection pooling:
import asyncio
from keba_keenergy_api import KebaKeEnergyAPI
from keba_keenergy_api.constants import HeatCircuitOperatingMode
from aiohttp import ClientSession
async def main() -> None:
async with ClientSession() as session:
client = KebaKeEnergyAPI(host="YOUR-IP-OR-HOSTNAME", session=session, ssl=True)
...
asyncio.run(main())
API endpoints
Endpoint | Response | Description |
---|---|---|
.get_outdoor_temperature() |
float |
Get outdoor temperature. |
.read_values(request, position, human_readable) |
Get multiple values with one http request. | |
.write_values(request) |
Write multiple values with one http request. |
Device
Endpoint | Response | Description |
---|---|---|
.get_device_info() |
str |
Get all device information. |
.get_name() |
str |
Get name. |
.get_serial_number() |
int |
Get serial number. |
.get_revision_number() |
int |
Get revision name. |
.get_variant_number() |
int |
Get variant name. |
Hot water tank
Endpoint | Request/Response | Description |
---|---|---|
.get_temperature(position) |
float |
Get temperature. |
.get_operating_mode(position, human_readable) |
int or str |
Get operating mode as integer (0 is OFF , 1 is AUTO , 2 is DAY and 3 is NIGHT . |
.set_operating_mode(0, position, human_readable) |
int or str |
Set operating mode. |
.get_min_temperature(position) |
float |
Get minimum temperature. |
.set_min_temperature(20, position) |
float |
Set minimum temperature. |
.get_max_temperature(position) |
float |
Get maximum temperature. |
.set_max_temperature(22, position) |
float |
Set maximum temperature. |
Heat pump
Endpoint | Response | Description |
---|---|---|
.get_name(position) |
str |
Get head pump model name. |
.get_status(position, human_readable) |
int or str |
Get operating mode as integer (0 is STANDBY , 1 is FLOW and 2 is AUTO . |
.get_circulation_pump(position) |
float |
Get circulation pump in percent. |
.get_inflow_temperature(position) |
float |
Get inflow temperature. |
.get_reflux_temperature(position) |
float |
Get reflux temperature. |
.get_source_input_temperature(position) |
float |
Get source input temperature. |
.get_source_output_temperature(position) |
float |
Get source output temperature. |
.get_compressor_input_temperature(position) |
float |
Get compressor input temperature. |
.get_compressor_output_temperature(position) |
float |
Get compressor output temperature. |
.get_compressor(position) |
float |
Get compressor in percent. |
.get_high_pressure(position) |
float |
Get high pressure. |
.get_low_pressure(position) |
float |
Get low pressure. |
Heat circuit
Endpoint | Request/Response | Description |
---|---|---|
.get_temperature(position) |
float |
Get temperature. |
.get_day_temperature(position) |
float |
Get day temperature. |
.set_day_temperature(20, position) |
float |
Set day temperature. |
.get_day_temperature_threshold(position) |
float |
Get day temperature threshold. |
.get_night_temperature(position) |
float |
Get night temperature. |
.set_night_temperature(16, position) |
float |
Set night temperature. |
.get_night_temperature_threshold(position) |
float |
Get night temperature threshold. |
.get_holiday_temperature(position) |
float |
Get holiday temperature. |
.get_offset_temperature(position) |
float |
Get offset temperature. |
.set_offset_temperature(2, position) |
float |
Set offset temperature. |
.get_operating_mode(position, human_readable) |
int or str |
Get operating mode (0 is OFF and 3 is HEAT_UP ). |
.set_operating_mode(3, position) |
int or str |
Set operating mode. |
Changelog
The changelog lives in the CHANGELOG.md document. The format is based on Keep a Changelog.
Contributing
We're happy about your contributions to the project!
You can get started by reading the CONTRIBUTING.md.
Donation
We put a lot of time into this project. If you like it, you can support us with a donation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file keba_keenergy_api-1.6.0.tar.gz
.
File metadata
- Download URL: keba_keenergy_api-1.6.0.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36389eb3f7b6afdc5d1951afe671996c49d75c64ac5fa4f8a74bd19fa5794cb3 |
|
MD5 | be0324beeffa8d78f5cfebfe2ea7de9d |
|
BLAKE2b-256 | c42bf47a5b35944ab3826ddd2747751f9fcfe73052ee590abeb5680a00f4e003 |
File details
Details for the file keba_keenergy_api-1.6.0-py3-none-any.whl
.
File metadata
- Download URL: keba_keenergy_api-1.6.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26ea14fb5d275987cd528990a6f0817cabb1591ea0ab9785c3fce2350b49b9e3 |
|
MD5 | 9eda212cfd34435f5d81a4f97edbe3eb |
|
BLAKE2b-256 | d5ae9e795755e2bf5119a61fcd824372dac04086eebf5e334ba463eca5666d8e |