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

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.7
File Size Uploaded
kerbl_iot-0.1.7.tar.gz 14.0 kB Details

Built distribution (wheel)

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

Total release size: 35.6 kB

Release files / kerbl_iot-0.1.7.tar.gz

Download URL kerbl_iot-0.1.7.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c0dbaa2ad95a4214d54194df2cf191e370e698f97acb38cc6f34123027b79bdb
BLAKE2b-256 checksum
How to use checksums
04651c1ea20299ebdd2be92782aea0d59d79960c9ab6513332172b30b41a5fe9
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.7-py3-none-any.whl

Download URL kerbl_iot-0.1.7-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb0270580e9855de406565d67943867a085f5304e5351fed70896fcac993fd51
BLAKE2b-256 checksum
How to use checksums
4f8c761899154f700fbdb0df3a991fff0576a1304ea1887cf0768843371e62ef
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

This release

0.1.7 This release

2 release files

0.1.6

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