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

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.5
File Size Uploaded
kerbl_iot-0.1.5.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kerbl-iot 0.1.5
File Interpreter ABI Platform
kerbl_iot-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 34.4 kB

Release files / kerbl_iot-0.1.5.tar.gz

Download URL kerbl_iot-0.1.5.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9dbe35b2ee33802f315bc7b40cf3ee47fd9738010cc6e7a6b8d898d115339dda
BLAKE2b-256 checksum
How to use checksums
c3e5a66ea9bcd8be1449d629c09e4ca4e0dbfb9d845054adbbc33eb9c34074f7
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 11, 2026.

Transparency log

Release files / kerbl_iot-0.1.5-py3-none-any.whl

Download URL kerbl_iot-0.1.5-py3-none-any.whl
Size 21.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aac681d2b0513c58689606b0fefdec12b649ab6fe1a381bc53ba0096a15f91d0
BLAKE2b-256 checksum
How to use checksums
e6598c740557fae5d4ee95e2d4d6a54fbbca34dccd0f2ddf1a958757ef5042e1
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 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

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