aiocomexio
Asyncio-native Python client for the Comexio IO-Server, a local building-automation controller.
No dependency on Home Assistant or any other framework — usable as a standalone library. It will provide the communication layer of the homeassistant-comexio integration.
Status: pre-alpha. The code is being moved over from the integration step by step. So far: admin login, read access, value writes, the Web-IO lifecycle, marker / KNX object management and function plan editing — plans, elements, wires, run / stop (
ComexioClient), admin page scraping (aiocomexio.scrape), config parsing (aiocomexio.config), KNX DPT tables (aiocomexio.knx), Web-IO command builders (aiocomexio.webio) and function plan rendering and diffing (aiocomexio.function_plan). The API may still change.
Installation
pip install aiocomexio
Usage
The client works on an aiohttp.ClientSession you create and close yourself.
session_kwargs() gives it the settings Comexio needs (a cookie jar that keeps the admin
login for an IP-address host, a request timeout; progress_log_interval=10 adds a "still
waiting" log line for slow requests). Give every client its own session: login() clears the
session's cookie jar. Value writes (set_marker_value, set_io_value, set_knx_value) go
through Comexio's /api/ with a separate API user: pass api_username / api_password to the
client. Every call either returns data or raises a ComexioError subclass
(ComexioAuthenticationError, ComexioConnectionError, ComexioResponseError,
ComexioDataError, ComexioRequestRejectedError for a write the server refused,
ComexioCreatedWithoutIdError for a create the server confirmed but whose id could not be read
back — the object exists, do not create it again).
import asyncio
import aiohttp
from aiocomexio import ComexioClient, session_kwargs
from aiocomexio.config import parse_config
async def main() -> None:
host = "192.168.0.20"
async with aiohttp.ClientSession(**session_kwargs()) as session:
client = ComexioClient(host, "admin", "secret", session=session)
await client.login()
raw = await client.get_raw_config()
config = parse_config(raw.variables, io_types=raw.io_types, io_input_types=raw.io_input_types)
print(len(config["markers"]), "markers on Comexio", raw.comexio_version)
asyncio.run(main())
Development
pip install -e ".[dev]"
pre-commit install
ruff check . # lint
ruff format --check . # formatting check; drop --check to auto-format
mypy # strict type check (src/aiocomexio)
pytest # tests
License
Metadata
Release files for aiocomexio 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiocomexio-0.3.0.tar.gz | 137.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiocomexio-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 243.9 kB
Release files / aiocomexio-0.3.0.tar.gz
| Download URL | aiocomexio-0.3.0.tar.gz |
|---|---|
| Size | 137.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0a82dcc53c332a70d641947f2c601d2444b07bd8e899edcfd591dcc634ecbe66
|
|
BLAKE2b-256 checksum How to use checksums |
4f3fd6a3479b04c4778d068c5c6b4a4b1f30153c6a72054167b63a64da5c6c9c
|
| 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 30, 2026.
Transparency logRelease files / aiocomexio-0.3.0-py3-none-any.whl
| Download URL | aiocomexio-0.3.0-py3-none-any.whl |
|---|---|
| Size | 106.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b40821eed6dd8c084f8a431092bbabeeee6e2355f7b8df6fbd6478943b1a08a
|
|
BLAKE2b-256 checksum How to use checksums |
a2a0127e361fde41c47b555952cc4be3947693b4487175aa33e8a6d681033904
|
| 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 30, 2026.
Transparency log