Skip to main content

Python HDMI Matrix control library for AVGear and possibly other HDMI matrix controllers

Project description

AVGear HDMI Matrix Python Library

Python library to control AVGear HDMI Matrix switches (tested with TMX44PRO AVK, may work with others). Both synchronous and asynchronous APIs are provided. Contributions for other models are welcome!

This is used for the AVGear Matrix integration for homeassistant.

Inspired by pyblackbird.

Features

  • TCP/IP control: Communicate with the matrix over the network
  • Sync & Async APIs: Use either blocking or asyncio-based methods
  • Device info: Query device name, type, version, and status
  • Routing control: Route HDMI inputs to outputs programmatically
  • Video status parsing: Parse and display current input/output routing
  • Context manager support: Use with with or async with for auto-connect/disconnect
  • Logging: Built-in debug/info/error logging

Installation

Clone the repo and install dependencies (if any):

git clone https://github.com/marklynch/hdmimatrix.git
cd hdmimatrix
# Optionally: pip install .

Usage

Synchronous Example

from hdmimatrix import HDMIMatrix

matrix = HDMIMatrix("192.168.0.178", 4001)
with matrix:
    print(matrix.get_device_name())
    print(matrix.get_device_status())
    matrix.route_input_to_output(1, 1)

Asynchronous Example

import asyncio
from hdmimatrix import AsyncHDMIMatrix

async def main():
    matrix = AsyncHDMIMatrix("192.168.0.178", 4001)
    async with matrix:
        print(await matrix.get_device_name())
        print(await matrix.get_device_status())
        await matrix.route_input_to_output(1, 1)

asyncio.run(main())

Video Status Parsing

with matrix:
    routing = matrix.get_video_status_parsed()
    print(routing)  # {1: 1, 2: 3, 3: 2, 4: 4}

    # Show which input is connected to each output
    for output, input_num in sorted(routing.items()):
        print(f"  Output {output} <- Input {input_num}")

Power and Output Control

with matrix:
    matrix.power_on()
    matrix.power_off()

    # Enable/disable individual outputs
    matrix.output_on(2)
    matrix.output_off(2)

API Overview

  • HDMIMatrix (sync) and AsyncHDMIMatrix (async) classes
  • Connection:
    • connect()
    • disconnect()
    • Context manager support (with / async with)
  • Info:
    • get_device_name()
    • get_device_status()
    • get_device_type()
    • get_device_version()
    • get_video_status()
    • get_video_status_parsed()
    • get_hdbt_power_status()
    • get_input_status()
    • get_output_status()
    • get_hdcp_status()
    • get_downscaling_status()
  • Control:
    • power_on()
    • power_off()
    • route_input_to_output(input, output)
    • output_on(output)
    • output_off(output)

Development

Install with dev dependencies:

pip install -e ".[dev]"

Running Tests

# Run all tests

python3 -m pytest tests/

# Run with coverage report
python3 -m pytest tests/ --cov=hdmimatrix --cov-report=term-missing

# Generate HTML coverage report
python3 -m pytest tests/ --cov=hdmimatrix --cov-report=html
# Then open htmlcov/index.html in your browser

Contributing

Pull requests for new features, bug fixes, and support for other AVGear models are welcome!

License

MIT

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

hdmimatrix-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

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

hdmimatrix-0.1.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file hdmimatrix-0.1.0.tar.gz.

File metadata

  • Download URL: hdmimatrix-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for hdmimatrix-0.1.0.tar.gz
Algorithm Hash digest
SHA256 119b13cb119b1a9ff0e6004b9de11a3d63c07c78075dc19d0cdcd80f2f105c39
MD5 e10c471fc471f878de5b277df7f9f12f
BLAKE2b-256 f9f40c32cfe37238af9c62a1f1205e67db3721fbb7f2e5da567c7b92d7ed82fa

See more details on using hashes here.

File details

Details for the file hdmimatrix-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: hdmimatrix-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for hdmimatrix-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ed64b92419d558bb42f81d65929d9cc2e90a7ca0ae69c4b0f4f7b5f88c16b91
MD5 b56da04d8df9ad71e5b71771ba2046f5
BLAKE2b-256 41f389cf1911911e403028c72170b956ec779989e27ba8593d57321e8164c916

See more details on using hashes here.

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