Python library for the iZone air conditioning system.
Used by the Home Assistant iZone integration.
pip install python-izoneThe main entry points are Controller and Zone for device control, and
DiscoveryService for UDP discovery on the local network.
Synchronous property reads return cached device data and do not raise
ConnectionError. Async command and refresh methods perform HTTP I/O and
raise ConnectionError when the device cannot be reached. They raise
ControllerCommandError when the device responds but rejects the request
({ERROR} body or HTTP 4xx).
Requires aiohttp>=3.14.1. Home Assistant pins aiohttp==3.14.1; that version
includes the HTTP POST coalescing fix (aiohttp#10991)
needed for iZone controllers that read the request in a single operation.
The iZone Ethernet interface is documented in AC-DOC-1401-11_iZoneEthernetInterface.pdf.
If Home Assistant can load the iZone integration, prefer Download diagnostics from the integration page.
When that is not possible (or you need a live HTTP/UDP survey of the bridge), run the stdlib probe from a machine on the same LAN:
curl -fsSL -o izone_v1_probe.py \
https://raw.githubusercontent.com/Swamp-Ig/pizone/main/scripts/izone_v1_probe.py
python3 izone_v1_probe.py <bridge-ip> --with-content-type > izone-v1-probe.logAttach izone-v1-probe.log to the GitHub issue. The CLI host (IP or hostname)
and IPv4/IPv6 literals in the log are redacted to **REDACTED** by default
(including UDP IP_… payloads); use --show-ips only for local debugging.
Stop Home Assistant (or other listeners on UDP 7005) first if the UDP listen
step fails to bind.
- Install uv.
uv sync --all-extras --group dev./scripts/check— lint, type-check, test, and build (same as CI)./scripts/coverage— test coverage report (advisory; not part of the CI gate)
Individual commands:
uv run pytest tests/uv run ruff check pizone testsuv run ruff format pizone testsuv run mypy pizoneuv build
To run integration tests against a controller on your network:
uv run pytest tests/test_fullstack.py -m hardware -o addopts=