Skip to main content

zencontrol-python

This is an implementation of the Zencontrol TPI Advanced protocol, written in Python. This library has been written with three levels of abstraction:

  • zencontrol.io: Implementation of the raw TPI Advanced UDP packet specification;
  • zencontrol.api: Implementation of most TPI Advanced API commands and events;
  • zencontrol.interface: An opinionated abstraction layer suitable for integration into smart building control software. It provides methods, objects, and callbacks for managing lights, groups, profiles, buttons, motion sensors, and system variables.

This library has now undergone validation in multiple environments. There is an extensive test suite, some of which uses zencontrol-simulator, a nearly feature-complete simulator of zencontrol hardware. A practical demonstration is zencontrol-homeassistant, a comprehensive Home Assistant integration.

Requirements

  • Python 3.14 (or later)
  • Controller firmware 2.2.130 or later is strongly recommended (minimum 2.2.11 required)

Install

This library is available on PyPI.

Testing

Integration tests start zencontrol-simulator on an ephemeral local port and exercise a real UDP TPI protocol path. Either install the simulator, or check it out as a sibling directory (../zencontrol-simulator); tests will pick it up automatically. Note that PyYAML is a simulator dependency.

pip install -e ".[dev]"
pip install PyYAML
# optional if not using a sibling checkout:
# pip install -e ../zencontrol-simulator
pytest -m simulator
pytest -m "not simulator"
# or run everything:
pytest

Limitations

  • RGB+ and XY colour commands are not tested (I don't have any compatible lights)
  • Numerical (absolute) instances are not tested (I don't have any such ECDs)

Out of scope

  • Any commands involving DMX, Control4, or virtual instances (I don't have licenses for any of these so I couldn't test them even if I wanted to, but the scaffolding is there if anyone wishes to add support)
  • Any commands described in the documentation as "legacy" (they aren't useful)

TPI Advanced wishlist

  • Command to return a controller's MAC address used for multicast packets (There are other ways to get or infer the MAC access, but they're unreliable.)
  • Command to list active system variables (As a workaround, you can query every number for its label. This assumes no system variables of interest are unlabelled.)
  • Command to read an ambient light sensor's lux value. (As a workaround, you can target a light sensor to a system variable. Not elegant but it works.)
  • Event notification for ambient light sensor lux values. (Same workaround as above.)

License

MIT

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zencontrol_python-0.1.3.tar.gz (88.5 kB view details)

Uploaded Source

Built Distribution

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

zencontrol_python-0.1.3-py3-none-any.whl (85.2 kB view details)

Uploaded Python 3

File details

Details for the file zencontrol_python-0.1.3.tar.gz.

File metadata

  • Download URL: zencontrol_python-0.1.3.tar.gz
  • Upload date:
  • Size: 88.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for zencontrol_python-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0e201c029becc8ac23b0566319fa7aa6ec315494265f2e7bac8de1ecbd860167
MD5 229b19a8ceb0fb2163883557e4b01677
BLAKE2b-256 0cf8e716264ff1c52a90f0f62e39698845f71e357d2ecfe5c72b6f769aa1221b

See more details on using hashes here.

File details

Details for the file zencontrol_python-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for zencontrol_python-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7ba7b52750cde6ad2ec501cf7f0d84cf0206a3999b7279a8b1b818a0e41bbdec
MD5 e7c47d2b9f7337d9a86916f7542ba9cf
BLAKE2b-256 7364a6d2069887672df9e2de59cb70ea509edb2b08bf2c9f31bebc2c647637aa

See more details on using hashes here.

Release history Release notifications | RSS feed

3.0.0

2 files

2.5.0

2 files

2.0.0

2 files

1.0.0

2 files

0.1.7

2 files

0.1.6

2 files

0.1.4

2 files

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page