Skip to main content

Asynchronous Python client for HDFury devices

Project description

HDFury API Client

An asynchronous Python client for communicating with HDFury devices via their HTTP API. This lightweight library provides methods for fetching device information, configuration, and issuing control commands such as reboot, hotplug, and mode changes.

Features

  • Asynchronous communication using aiohttp
  • Fetch device information and configuration
  • Issue control commands (reboot, hotplug, relay, mute, etc.)
  • Built-in error handling for connection and parsing failures
  • Designed for easy integration into automation tools or async workflows

Requirements

  • Python 3.11+
  • aiohttp library

Usage Example

import asyncio
from hdfury import HDFuryAPI, HDFuryError

async def main():
    client = HDFuryAPI("192.168.1.100")  # Replace with your device IP

    try:
        info = await client.get_info()
        print("Device Info:", info)

        board = await client.get_board()
        print("Board Info:", board)

        config = await client.get_config()
        print("Configuration:", config)

        # Example command: reboot the device
        await client.issue_reboot()
        print("Reboot command sent!")

    except HDFuryError as err:
        print(f"Error communicating with HDFury device: {err}")

    finally:
        await client.close()

asyncio.run(main())

API Reference

Class: HDFuryAPI

Initialization

HDFuryAPI(host: str, session: aiohttp.ClientSession | None = None)
  • host – IP address or hostname of the HDFury device.
  • session (optional) – existing aiohttp.ClientSession to reuse.

Fetch Methods

Method Description
get_board() Get board information (/ssi/brdinfo.ssi)
get_info() Get general device info (/ssi/infopage.ssi)
get_config() Get configuration data (/ssi/confpage.ssi) and CEC data (if provided) (/ssi/cecpage.ssi)

Command Methods

Method Description
issue_reboot() Reboot the device
issue_hotplug() Trigger HDMI hotplug
set_operation_mode(mode) Set device operation mode
set_port_selection(tx0, tx1) Set HDMI input routing for TX0/TX1
set_auto_switch_inputs(state) Toggle auto input switching
set_htpc_mode_rx0(state)set_htpc_mode_rx3(state) Enable/disable HTPC mode per input
set_mute_tx0_audio(state)set_mute_tx1_audio(state) Mute/unmute TX audio
set_tx0_force_5v(state)set_tx1_force_5v(state) Force +5V output on TX ports
set_oled(state) Enable/disable OLED display
set_oled_fade(value) Set OLED fade timeout (seconds)
set_ir_active(state) Enable/disable IR receiver
set_relay(state) Enable/disable relay state
set_cec(state) Enable/disable global CEC
set_cec_rx0(state)set_cec_rx3(state) Enable/disable CEC per input
set_reboot_timer(value) Set reboot timer (hours)

Cleanup

await client.close()

Closes any open HTTP sessions.

Exception Handling

All exceptions inherit from HDFuryError.

Exception Description
HDFuryError Base exception for the HDFury client
HDFuryConnectionError Connection-related errors (timeouts, bad responses, etc.)
HDFuryParseError Raised when JSON decoding fails

Constants

OPERATION_MODES

Defined in const.py, this dictionary maps known operation mode identifiers to their human-readable descriptions.

from hdfury import OPERATION_MODES

for mode, description in OPERATION_MODES.items():
    print(f"{mode}: {description}")
Key Description
"0" Mode 0 - Splitter TX0/TX1 FRL5 VRR
"1" Mode 1 - Splitter TX0/TX1 UPSCALE FRL5
"2" Mode 2 - Matrix TMDS
"3" Mode 3 - Matrix FRL→TMDS
"4" Mode 4 - Matrix DOWNSCALE
"5" Mode 5 - Matrix RX0:FRL5 + RX1-3:TMDS

These can be used to display or interpret the current operating mode returned by the device.

TX0_INPUT_PORTS

Maps available TX0 input port IDs to human-readable labels.

from hdfury import TX0_INPUT_PORTS

print(TX0_INPUT_PORTS["1"])  # Output: Input 1
Key Description
"0" Input 0
"1" Input 1
"2" Input 2
"3" Input 3
"4" Copy TX1

TX1_INPUT_PORTS

Maps available TX1 input port IDs to human-readable labels.

from hdfury import TX1_INPUT_PORTS

print(TX1_INPUT_PORTS["3"])  # Output: Input 3
Key Description
"0" Input 0
"1" Input 1
"2" Input 2
"3" Input 3
"4" Copy TX0

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

hdfury-1.5.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

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

hdfury-1.5.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file hdfury-1.5.0.tar.gz.

File metadata

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

File hashes

Hashes for hdfury-1.5.0.tar.gz
Algorithm Hash digest
SHA256 d8a3b4e5b8f035a6f0f41515bd84385e0025aa6f08ff7df4a489726ca92d553e
MD5 009ab2080a2a8dcfd6662ac441b1e08a
BLAKE2b-256 0a7fc0f67e2c8a40b726ab6d6f62cfdd547454afa7800bfd5dc4a60904658f16

See more details on using hashes here.

Provenance

The following attestation bundles were made for hdfury-1.5.0.tar.gz:

Publisher: publish.yml on glenndehaan/python-hdfury

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

File details

Details for the file hdfury-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: hdfury-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hdfury-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a1ee0928f57ea0ad5009526a5f43c48cb13c96cafd6783ab565d89a1439ca65
MD5 e1345556d16b8d8e5031c4b04c5998dd
BLAKE2b-256 c3c78f1487cf1023edd19fc2ce74b48088c2db6905a2594cdf58b2179a032ef0

See more details on using hashes here.

Provenance

The following attestation bundles were made for hdfury-1.5.0-py3-none-any.whl:

Publisher: publish.yml on glenndehaan/python-hdfury

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