Skip to main content

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)

Source distribution for kerbl-iot 0.1.6
File Size Uploaded
kerbl_iot-0.1.6.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kerbl-iot 0.1.6
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.1.7

2 release files

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page