"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. Initially built for the [Trinnov Altitude Home Assistant integration] (https://github.com/binarylogic/trinnov-altitude-homeassistant)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file trinnov_altitude-1.2.4.tar.gz
.
File metadata
- Download URL: trinnov_altitude-1.2.4.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2453da54b95ecc2ecf630e724de971c06a3ef84e8c9a74e3776a405e971daa70 |
|
MD5 | af127d8c0e633c809161787f5632ec10 |
|
BLAKE2b-256 | feed569c46eafa32001881f0265f6ed2bec7baef7ed99b3db104bc37a02ed682 |
File details
Details for the file trinnov_altitude-1.2.4-py3-none-any.whl
.
File metadata
- Download URL: trinnov_altitude-1.2.4-py3-none-any.whl
- Upload date:
- Size: 19.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a1637b7ad9339179c359b832ce940750fc257aab2879f6e590de59306d129b2 |
|
MD5 | feb510ec7ade99cdfbeea6aab2edf24d |
|
BLAKE2b-256 | 7b9205d751e00423ebdb0845f140fbe7bf22c2098168a096ab227586657ea3ed |