Skip to main content

Python client for interfacing with the Trinnov Altitude processor.

Project description

Trinnov Altitude Python Library

CI PyPI Python Version

Async Trinnov Altitude client for long-running integrations (Home Assistant primary target).

Version 2.0

Version 2.x is a clean break from 1.x.

  • No compatibility shims
  • New lifecycle (start / wait_synced / stop)
  • New state model (client.state)
  • Optional command ACK handling

Read the migration guide: docs/MIGRATION_V2.md

Installation

pip install trinnov-altitude

Quick Start

import asyncio

from trinnov_altitude.client import TrinnovAltitudeClient


async def main() -> None:
    client = TrinnovAltitudeClient(host="192.168.1.90")

    try:
        await client.start()
        await client.wait_synced(timeout=10)

        await client.volume_set(-30.0)
        await client.mute_on()

        print(client.state.volume)
        print(client.state.source)
    finally:
        await client.stop()


asyncio.run(main())

Lifecycle

  • await client.start() connects, bootstraps, and starts the read loop.
  • await client.wait_synced() waits until welcome + catalogs + current indices are observed.
  • await client.stop() stops listener and disconnects cleanly.

Events

def on_event(event, message):
    if event == "connected":
        ...
    elif event == "disconnected":
        ...
    elif event == "received_message":
        ...

client.register_callback(on_event)

Callback exceptions are isolated and logged (they do not crash the listener).

Command ACKs

You can use fire-and-forget commands (default) or explicit ACK waiting:

await client.volume_set(-20.0)
await client.command("volume -20", wait_for_ack=True, ack_timeout=2.0)

Development

uv sync --group dev
uv run ruff check .
uv run ruff format --check .
uv run ty check trinnov_altitude
uv run pytest -v

Or use task wrappers:

task dev
task check

Pyx (optional)

Pyx is optional in this repo. You can keep publishing to PyPI/TestPyPI only.

  • Install via Pyx: authenticate uv with PYX_API_KEY and configure your Pyx index URL in uv (uv add --index ... / uv sync).
  • Publish to Pyx: run the Release workflow manually with target=pyx after setting repository secrets PYX_API_KEY and PYX_PUBLISH_URL.
  • No dual-publish requirement: use Pyx when you need private/internal package distribution or policy control.

Release

  1. Update version in trinnov_altitude/__init__.py.
  2. Update CHANGELOG.md.
  3. Merge to master (CI runs quality/tests/package checks).
  4. Create a prerelease tag like vX.Y.Zrc1 to publish to TestPyPI.
  5. Create a full release tag like vX.Y.Z to publish to PyPI.
  6. Ensure release tag matches __version__ (workflow enforces this).

Maintenance

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trinnov_altitude-2.0.0.tar.gz (221.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trinnov_altitude-2.0.0-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file trinnov_altitude-2.0.0.tar.gz.

File metadata

  • Download URL: trinnov_altitude-2.0.0.tar.gz
  • Upload date:
  • Size: 221.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for trinnov_altitude-2.0.0.tar.gz
Algorithm Hash digest
SHA256 6190629dd35cfe284fab1ad3fcd090c0a938a3d96d09e0923c4a9c90f17772e3
MD5 5254d2d7e97ccb2e48300f48b79ee794
BLAKE2b-256 bee7829d64f23e231577e4e9635faf01b73a21076f5796106231dda78ed7e3c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for trinnov_altitude-2.0.0.tar.gz:

Publisher: publish.yml on binarylogic/py-trinnov-altitude

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file trinnov_altitude-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for trinnov_altitude-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79e3f220a73f993702227ef96e20fea47b60384161261d1894bf3dffd4ea4d4e
MD5 7b56554c46a608dbeaefa24445b45e92
BLAKE2b-256 89d48c6046867ecfaefe952fe6e0d6e621c0eee8c12494ac68765be30628e693

See more details on using hashes here.

Provenance

The following attestation bundles were made for trinnov_altitude-2.0.0-py3-none-any.whl:

Publisher: publish.yml on binarylogic/py-trinnov-altitude

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page