Skip to main content

Asyncio package to communicate with a Philips Hue Play HDMI Sync Box.

Project description

AIOHUESYNCBOX

Asyncio package to communicate with Philips Hue Play HDMI Sync Box. This package is aimed at basic control of the box. Initial setup and configuration is assumed to done with the official Hue Sync app.

Installation

python3 -m pip install aiohuesyncbox

Usage

Instantiate the HueSyncBox class and access the API.

For more details on the API see the official API documentation on https://developers.meethue.com

Note on changing bridge

Changing a bridge is a bit more involved than other calls. After calling box.hue.set_bridge() the syncbox will start switching which takes a while (seems to take about 15 seconds). You will have to wait until the attributes match the expected endstate, but the status displayed on the API can be a bit confusing during the process.

These are the status changes I see when switching from bridge A to bridge B.

  • ID: Bridge A, IP: Bridge A, Status: connected

  • Call box.hue.set_bridge() with info for bridge B

  • ID: Bridge B, IP: Bridge A, Status: connecting

  • ID: Bridge B, IP: Bridge B, Status: disconnected

  • ID: Bridge B, IP: Bridge B, Status: connected or ID: Bridge B, IP: Bridge B, Status: invalidgroup

Examples

The examples below are available as a runnable script in the repository. There is also an example on using zeroconf for device discovery.

Registration

from aiohuesyncbox import HueSyncBox, InvalidState

# host and id can be obtained through mDNS/zeroconf discovery
# (or for testing look them up in the official Hue Sync app)
# The ID is the number that looks like C43212345678
box = HueSyncBox(host, id)

print("Press the button on the box for a few seconds until the light blinks green.")

registration_info = None
while not registration_info:
    try:
        registration_info = await box.register("Your application", "Your device")
    except InvalidState:
        # Indicates the button was not pressed
        pass
    await asyncio.sleep(1)

# Save registration_info somewhere and use the 'access_token' when instantiating HueSyncBox next time
print(registration_info)

# Unregister by registration ID.
# HueSyncBox needs to use the associated `access_token` to execute this request.
await box.unregister(registration_info['registration_id'])

Basic usage

from aiohuesyncbox import HueSyncBox

# host and id can be obtained through mDNS/zeroconf discovery
# (or for testing look them up in the official Hue app)
box = HueSyncBox(host, id, access_token_from_registration_info)

# Call initialize before interacting with the box
await box.initialize()
print(box.device.name)
print(box.execution.sync_active)
print(box.execution.mode)

# Turn the box on, start syncing with video mode on input 4
await box.execution.set_state(sync_active=True, mode="video", hdmi_source="input4")

# Call update() to update with latest status from the box
await box.execution.update()
print(box.execution.sync_active)
print(box.execution.mode)

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

aiohuesyncbox-0.0.23.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

aiohuesyncbox-0.0.23-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file aiohuesyncbox-0.0.23.tar.gz.

File metadata

  • Download URL: aiohuesyncbox-0.0.23.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for aiohuesyncbox-0.0.23.tar.gz
Algorithm Hash digest
SHA256 a3e86a786356692644b6a86de1b7249d3c22418f129996199b9aa0a05d80a653
MD5 138422e36a7ae6c90b565373f8f0bf6a
BLAKE2b-256 b6db79759e55b5a47add4a85ea963602849358127ec02a66e7c33a03d2ecad6d

See more details on using hashes here.

File details

Details for the file aiohuesyncbox-0.0.23-py3-none-any.whl.

File metadata

File hashes

Hashes for aiohuesyncbox-0.0.23-py3-none-any.whl
Algorithm Hash digest
SHA256 1915faba5c87bc9aa1fdf4c09b612423049997e5ac25999bf1849abd9d4d80cd
MD5 c074cfa7a8692531b5776acd1334ddb6
BLAKE2b-256 7c2106b702e2c05a619fe9a394a17231f5d7e0f1f3c865067fe26f5a3260e929

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