Skip to main content

"Python client for interfacing with the Trinnov Altitude processor."

Project description

Trinnov Altitude Python Library

A Python library for interacting with the Trinnov Altitude processor via the TCP/IP automation protocol provided by the Trinnov Altitude.

Overview

The Trinnov Altitude processor is an audio/video processor that exposes an automation protocol over TCP/IP for remote control.

The interface is a two-way communication protocol. At any time the processor can broadcast messages to all connected clients reflecting the current processor state. For example, the user could turn the volume knob on the processor itself, which would broadcase volume change messages to all connected clients.

Therefore, it's important to architect usage of this library to handle state changes asynchronously. You should not be polling the processor for state changes. Instead, you should register a callback that fires when changes are received.

Installation

pip install trinnov-altitude

Setup

Power on

Powers the processor on via Wake on Lan. The process must be powered on before you can connect.

from trinnov_altitude.trinnov_altitude import TrinnovAltitude

altitude = TrinnovAltitude(host = "192.168.1.90", mac = "c8:7f:54:2d:ce:f2")
await altitude.power_on()

Connect

Connect to the processor via TCP/IP. Note that you must power on the device before connecting. The Trinnov Altitude does not have a standby mode that will accept connections.

from trinnov_altitude.trinnov_altitude import TrinnovAltitude

altitude = TrinnovAltitude(host = "192.168.1.90")

try:
    await altitude.connect()
finally:
    # Always disconnect and cleanup
    await altitude.disconnect()

Listen for updates

The processor will broadcast state changes to all connected clients. You must explicitly start listening to receive the messages and sync the internal state of your object.

from trinnov_altitude.trinnov_altitude import TrinnovAltitude

altitude = TrinnovAltitude(host = "192.168.1.90")

# Optionally define a callback to be fired on each individual update
def callback(message):
    # react to the change here
    pass

# Start listening for updates in an async.io Task
asyncio.create_task(altitude.start_listening(callback: callback))

State

State will be available shortly after connecting. When a client connects to the processor, it will send a list of messages reflecting the current state. The start_listening method will receive these updates in the background and sync your object with the processor's state.

altitude.audiosync: bool | None # Current state of audiosync
altitude.bypass: bool | None = None # Current state of bypass
altitude.decoder: bool | None = None # Current decoder being used
altitude.dim: bool | None = None # Current state of dim
altitude.id: str | None = None # Unique ID of the processor
altitude.mute: bool | None = None # Current state of mute
altitude.presets: dict = {} # Dictionary of all presets and their names
altitude.source: str | None = None # Current source
altitude.sources: dict = {} # Dictionary of all sources and their names
altitude.upmixer: str | None = None # Current upmixer being used
altitude.version: str | None = None # Software version of the processor
altitude.volume: float | None = None # Current volume level in dB

Commands

All commands assume you have setup your Trinnov Altitude client.

For a full list of commands, see the TrinnovAltitude class,

Acoustic Correction

await altitude.acoustic_correction_off()
await altitude.acoustic_correction_on()
await altitude.acoustic_correction_set(state: bool)
await altitude.acoustic_correction_toggle()

Bypass

await altitude.bypass_off()
await altitude.bypass_on()
await altitude.bypass_set(state: bool)
await altitude.bypass_toggle()

Dim

await altitude.dim_off()
await altitude.dim_on()
await altitude.dim_set(state: bool)
await altitude.dim_toggle()

Front display

await altitude.dim_off()
await altitude.dim_on()
await altitude.dim_set(state: bool)
await altitude.dim_toggle()

Level alignment

await altitude.level_alignment_off()
await altitude.level_alignment_on()
await altitude.level_alignment_set(state: bool)
await altitude.level_alignment_toggle()

Mute

await altitude.mute_off()
await altitude.mute_on()
await altitude.mute_set(state: bool)
await altitude.mute_toggle()

Page adjust

await altitude.page_adjust(delta: int)
await altitude.page_down()
await altitude.page_up()

Power

altitude.power_on()
await altitude.power_off()

Presets

await altitude.preset_get()
await altitude.preset_set(id: int)

Quick optimized

await altitude.quick_optimized_off()
await altitude.quick_optimized_on()
await altitude.quick_optimized_set(state: bool)
await altitude.quick_optimized_toggle()

Remapping mode

await altitude.remapping_mode_set(mode: const.RemappingMode)

Sources

await altitude.source_set(id: int)

Time alignment

await altitude.time_alignment_off()
await altitude.time_alignment_on()
await altitude.time_alignment_set(state: bool)
await altitude.time_alignment_toggle()

Upmixer

await altitude.source_set(mode: const.UpmixerMode)

Volume

await altitude.volume_adjust(delta: int | float)
await altitude.volume_down()
await altitude.volume_set(db: int | float)
await altitude.volume_ramp(db: int | float, duration: int)
await altitude.volume_up()

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-1.1.0.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

trinnov_altitude-1.1.0-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: trinnov_altitude-1.1.0.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for trinnov_altitude-1.1.0.tar.gz
Algorithm Hash digest
SHA256 2aff40c27e206f2ffeeb25e77954485caf6ba9be0c1b2c68ff24617f42fabeb5
MD5 27e3792b3a44e0aa8b5943a6f3c3c7f2
BLAKE2b-256 ccd9ee9d1cbf7055943e47c36d78020bec592f896bdaa19bf1ffe01c164387c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for trinnov_altitude-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d559842f67afdc786961d6078cf3bce29fa7889cf884945e71cbab87b14fd27
MD5 1662b010f0d176e5d5568126a5147b95
BLAKE2b-256 e251e31cb9012f79cda0a9ee70dec86e36605e01c861cd24c7e57e614c40b40a

See more details on using hashes here.

Supported by

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