Kerbl IoT
Async Python client for Kerbl IoT devices.
KerblIOTApi owns authentication, HTTP, token refresh, and Socket.IO transport.
KerblIOT loads devices and dispatches their live updates. Device actions belong to
their respective model classes.
import asyncio
import os
from kerbl_iot import KerblIOT, KerblIOTApi
async def main() -> None:
async with KerblIOT(
KerblIOTApi(
email=os.environ["KERBL_EMAIL"],
password=os.environ["KERBL_PASSWORD"],
)
) as kerbl:
await kerbl.connect_websocket()
coop = kerbl.smart_coops[0]
print(coop.name, coop.air_temperature, coop.door.state)
await coop.light.turn_on()
await coop.door.close()
asyncio.run(main())
Releasing to PyPI
When a version change is pushed to main, GitHub Actions first runs the complete
ci.yml workflow. Only after CI succeeds does release.yml create a matching tag,
GitHub Release, and publish the package to PyPI. Configure PyPI Trusted Publishing
for the derjoerg/kerbl-iot repository and the .github/workflows/release.yml
workflow, using the pypi environment.
publish.yml remains available for manually publishing an existing tag from the
GitHub Actions UI, for example when recovering a failed upload. Supply the tag as
the workflow_dispatch input.
To release a new version, update the version in pyproject.toml and merge that
change into main. The version must not already exist on PyPI, and the matching
vX.Y.Z tag must not already exist in GitHub.
Error reason reference
SmartCoopLog exposes the API's raw error_key and error_code. Applications
should translate the key in their own presentation layer. The following table
preserves the German translations previously included in this library for
reference:
| API error key | Former German translation |
|---|---|
errorReason.doorLocked |
Klappe verriegelt |
errorReason.doorClosingSoon |
Klappe schliesst bald |
errorReason.feederLocked |
Futterautomat gesperrt |
errorReason.batteryLow |
Akku schwach |
errorReason.waterHeaterActive |
Wasserheizung aktiv |
errorReason.waterEmpty |
Wasser leer |
errorReason.feederError |
Futterautomatenstoerung |
errorReason.feedEmpty |
Futter leer |
errorReason.batteryEmpty |
Akku leer |
errorReason.doorError |
Klappenstoerung |
errorReason.waterTemperatureLow |
Wassertemperatur zu niedrig |
errorReason.externalLightError |
Fremdlichtstoerung |
errorReason.timeError |
Uhrzeit muss eingestellt werden |
errorReason.flashError |
Flash-Fehler |
Release files for kerbl-iot 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kerbl_iot-0.1.6.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kerbl_iot-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.0 kB
Release files / kerbl_iot-0.1.6.tar.gz
| Download URL | kerbl_iot-0.1.6.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e82ed08e84b0e0f708a8bb14da02ac0a92ada9319fa57ead214a5f6b5e394de2
|
|
BLAKE2b-256 checksum How to use checksums |
a14e750f63aa1f651fce7ceb28fd1e00b08705651dbf7bcaba4b7b5a13ea83ab
|
| 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 Sep 12, 2026.
Transparency logRelease files / kerbl_iot-0.1.6-py3-none-any.whl
| Download URL | kerbl_iot-0.1.6-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
386a347bb8db270bb958a1fd657e355a973b385a95774a0b40dec99f63794675
|
|
BLAKE2b-256 checksum How to use checksums |
e5a43344565894bb5093794ae9aa00fb47f54ec65a5aee1d2034b00cb7582261
|
| 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 Sep 12, 2026.
Transparency log