iaqualink
Asynchronous library for Jandy iAqualink
What it is and what it does
iaqualink-py is an async Python client for Jandy iAqualink pool control systems, providing a Pythonic interface to authenticate with iAqualink.net and Zodiac-io.com APIs, discover connected pool systems, and monitor or control attached devices. It wraps HTTP communication using httpx with built-in retry handling for rate limits and auth token refresh, and includes a CLI tool for command-line discovery and device control.
The library is designed for applications that need to integrate pool equipment monitoring into Python automation, dashboards, or home-automation platforms. It handles multiple systems per account, supports device types including temperature sensors, thermostats, pumps, heaters, lights, and water chemistry sensors, and automatically rate-limits API calls to 5-second intervals per system. All I/O is async-first, making it suitable for concurrent monitoring of multiple systems or integration into event-driven frameworks.
Use it for:
- Home automation integration: monitor pool temperature and control pumps/heaters from a smart home platform.
- Dashboard or monitoring app: display real-time pool status (temperature, device state, chemistry) in a web or mobile UI.
- Scheduled maintenance: automate pool equipment startup/shutdown or temperature adjustments on a daily or seasonal schedule.
- Alert system: trigger notifications when pool temperature drops below a threshold or equipment goes offline.
- CLI administration: discover systems and manually control devices from the command line with session persistence.
- Multi-system management: monitor and control multiple pool systems from a single Python application.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Asynchronous Python library for monitoring and controlling Jandy iAqualink pool and spa systems via their cloud APIs, with support for temperature sensors, pumps, heaters, lights, and chemistry monitoring.
Yes, with conditions. The library is actively maintained, has no known vulnerabilities, and offers a clean async interface for a niche but real use case (Jandy iAqualink integration). The low install friction and permissive license are advantages. However, the Python 3.14 requirement is a significant constraint—verify that your environment supports it. Pre-alpha status (Development Status :: 2) suggests the API may still change; review the repository for stability expectations before relying on it in production.
Install
iaqualink on PyPI
pip
pip install iaqualinkuv
uv add iaqualinkpoetry
poetry add iaqualinkInstalling iaqualink
Before you install
Low friction: pure Python wheel with only two runtime dependencies (httpx and httpx-retries). Actively maintained with recent commits and no known vulnerabilities. Requires Python 3.14 or higher, which is a significant version constraint.
License in practice
BSD-3-Clause is permissive and imposes minimal restrictions on use or redistribution, making it suitable for both commercial and private projects without licensing concerns.
Quickstart
pip install iaqualink
from iaqualink import AqualinkClient
async with AqualinkClient('user@example.com', 'password') as client:
systems = await client.get_systems()
system = list(systems.values())[0]
devices = await system.get_devices()
pool_temp = devices.get('pool_temp')
if pool_temp:
print(f"Pool temperature: {pool_temp.state}°F")
Requires Python 3.14 or higher; asyncio event loop context required to run async code.
Verify before relying
- Whether Python 3.14 requirement reflects actual API usage or is overly strict for the underlying httpx/httpx-retries dependencies.
- Scope and completeness of device type support beyond the documented examples (temperature, pumps, heaters, lights, chemistry).
- Rate-limiting behavior and whether the documented 5-second cache window is enforced or advisory.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | capped below the current Python release (>=3.14) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — httpx-retries, httpx |
| Maintenance | actively maintained — 109 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 91,704/month — #13,507 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: iaqualink-0.7.0-py3-none-any.whl
Keywords: iaqualink
Tags
More Monitoring packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
opentelemetry-semantic-conventionsProvides generated Python code for…
permissive · top 100 on PyPI
opentelemetry-sdkProvides the reference implementation of the…
permissive · top 100 on PyPI
opentelemetry-apiProvides the abstract API and interfaces for…
permissive · top 100 on PyPI
opentelemetry-exporter-otlp-proto-httpExports OpenTelemetry observability data to an…
permissive · top 1,000 on PyPI
opentelemetry-instrumentationProvides automatic instrumentation commands and…
permissive · top 1,000 on PyPI
pyhiveapiA Python library for controlling Hive smart…
permissive · top 15,000 on PyPI
python-smarttubProvides an async API and CLI to query and…
permissive · top 15,000 on PyPI
nexiaAsync Python library for controlling Nexia…
permissive · top 15,000 on PyPI
pyeconetProvides an async Python interface to the…
permissive · top 15,000 on PyPI
aioguardianAn asyncio-focused Python library for…
permissive · top 15,000 on PyPI
aiohueAsynchronous Python library for controlling…
permissive · top 15,000 on PyPI
aioairqAsynchronous Python library for retrieving…
permissive · top 15,000 on PyPI
AIOSomecomfortAsyncIO client for querying and controlling…
permissive · top 15,000 on PyPI
millheaterPython library to control Mill heater devices…
permissive · top 15,000 on PyPI
pynautobotpynautobot is a Python API client library for…
permissive · top 15,000 on PyPI