Skip to main content

Onyx Client

Buy Me A Coffee

This repository contains a Python HTTP client for Hella' s ONYX.CENTER API.


API Versions

It is encouraged to always update Hella devices to the latest software. This will, mostly, also enforce using the newest API. In below table you can find an indication of what Hella API version is supported.

Hella API Version Client Version
v3 >= 3.1.0
v2 >= 2.5.0 < 3.0.0

Installation

The package is published in PyPi and can be installed via:

pip install onyx-client

Configuration

The configuration defines connection properties as a dict for the application running.

Attention: make sure to read the Onyx API Access Control description to retrieve the fingerprint and access token!

Option Description
fingerprint The fingerprint of the ONYX.CENTER.
access_token The permanent access token.
local_address The local address to use (default: None).
client_session The initialized aiohttp.ClientSession. (Default: None, create new session.)

Local Access

The local address can be used to access the ONYX.CENTER API from within the local network. If set, the client will use this address for all API requests.

Access Control Helper

The method onyx_client.authorizer.exchange_code takes the API code and an optional local API address, and performs the exchange to a fingerprint and access token. Please follow the aforementioned documentation to retrieve the code.

Usage

Initalization

You can instantiate the client using the onyx_client.client.create method like:

import aiohttp
from onyx_client.client import create
from onyx_client.authorizer import exchange_code

# by providing the fingerprint and access token only
client = create(fingerprint="fingerprint", access_token="access_token")

# by providing the fingerprint, access token and aiohttp client session
client = create(
    fingerprint="fingerprint",
    access_token="access_token",
    client_session=aiohttp.ClientSession(),
)

# by providing the fingerprint, access token and local API address
client = create(
    fingerprint="fingerprint", access_token="access_token", local_address="localhost"
)

# by providing the configuration object
client_session = aiohttp.ClientSession()
# e.g. by exchanging the code first
config = exchange_code("code", client_session)
client = (
    create(config=config, client_session=client_session)
    if client_session is not None
    else None
)

Events

You can register a event callback which will be triggered if the client receives a device update:

# all imports and a client exists...


def received_update(device):
    print(device)


client.set_event_callback(received_update)
client.start()

# you can stop the client listening for updates using:
client.stop()

Each device update will be pushed to your callback and will create an event loop in the background.

Streaming

You can stream device updates directly and process them through, e.g., an async for loop:

# all imports and a client exists...

async for device in client.events():
    print(device)

Examples

The following examples are available in the examples directory:

  • events: uses the callback mechanism (start(), stop())
  • streaming: uses the streaming mechanism (events())

Development

The project uses poetry and to install all dependencies and the build environment, run:

pip install poetry
poetry install

Testing

  1. Install all dependencies as shown above.
  2. Run pytest by:
poetry run pytest
# or
pytest

Run mutation testing with mutmut by:

poetry run mutmut run
# check results
poetry run mutmut results

Linting and Code Style

The project uses ruff for automated code linting and fixing, also using pre-commit.

  1. Install all dependencies as shown above.
  2. (Optional) Install pre-commit hooks:
poetry run pre-commit install
  1. Run ruff:
poetry run ruff check .
# poetry run ruff format .

Building

This package uses poetry-dynamic-versioning which infers the version number based on the Git tags. Hence, to have a proper versioning for the distribution, use Python's build system like:

pip install build
python -m build

Your distribution will be in the dist directory.

Commit Message

This project follows Conventional Commits, and your commit message must also adhere to the additional rules outlined in .conform.yaml.


Contributors

Thanks goes to these wonderful people (emoji key):

Daniel Mühlbachler-Pietrzykowski
Daniel Mühlbachler-Pietrzykowski

🚧 💻 📖
Mathias Mitterdorfer
Mathias Mitterdorfer

💻
Robert Weitlaner
Robert Weitlaner

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Supporting

If you enjoy the application and want to support my efforts, please feel free to buy me a coffe. :)

Buy Me A Coffee

Metadata

Release files for onyx-client 11.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for onyx-client 11.2.0
File Size Uploaded
onyx_client-11.2.0.tar.gz 19.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for onyx-client 11.2.0
File Interpreter ABI Platform
onyx_client-11.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 49.7 kB

Release files / onyx_client-11.2.0.tar.gz

Download URL onyx_client-11.2.0.tar.gz
Size 19.6 kB
Tags Source
SHA-256 checksum
How to use checksums
52884e80bee6387e68e30b8d4bea96789f1adcbfa15577ff53ce3c38d025860e
BLAKE2b-256 checksum
How to use checksums
935c3950b87dd17b6d84de64db604a696f8d9ed3e7a0ed0ceeac8b7598685235
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 Oct 1, 2026.

Transparency log

Release files / onyx_client-11.2.0-py3-none-any.whl

Download URL onyx_client-11.2.0-py3-none-any.whl
Size 30.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2c665596989c1a9a2a33ff473d39d2383178b3d290cff30af76fa2432333ea4
BLAKE2b-256 checksum
How to use checksums
abac6d5a6baa841299bf70f79b1db5b0a3406b270f445df7f4f78f7e7a779455
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 Oct 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

11.2.0 This release

2 release files

11.1.0

2 release files

11.0.1

2 release files

11.0.0

2 release files

10.1.3

2 release files

10.1.2

2 release files

10.1.1

2 release files

10.1.0

2 release files

10.0.0

2 release files

9.3.0

2 release files

9.2.1

2 release files

9.2.0

2 release files

9.1.1

2 release files

9.1.0

2 release files

9.0.0

2 release files

8.3.4

2 release files

8.3.3

2 release files

8.3.2

2 release files

8.3.1

2 release files

8.3.0

2 release files

8.2.0

2 release files

8.1.3

2 release files

8.1.2

2 release files

8.1.1

2 release files

8.1.0

2 release files

8.0.2

2 release files

8.0.1

2 release files

8.0.0

2 release files

7.2.1

2 release files

7.2.0

2 release files

7.1.1

2 release files

7.1.0

2 release files

7.0.0

2 release files

6.1.0

2 release files

6.0.0

2 release files

5.0.1

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

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