iaqualink
Asynchronous library for Jandy iAqualink
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.14 or higher; asyncio event loop context required to run async code.
- Low friction: pure Python wheel with only two runtime dependencies (httpx and httpx-retries).
- Actively maintained with recent commits and no known vulnerabilities.
License · maintenance · safety
BSD-3-Clause (permissive) — 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.
last release 2026-04-27 (109 days) · last repo commit 2026-08-08 · 43 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 91,704 downloads/mo, #13,507 on PyPI
Alternatives
Verify before relying
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")- 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.
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 on it.
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
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.
Requires Python 3.14 or higher; asyncio event loop context required to run async code.
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")
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 packageshttpx-retrieshttpx |
| 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 |
| Classifiers | Development Status :: 2 - Pre-AlphaIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseNatural Language :: EnglishProgramming Language :: Python :: 3.14 |
Evidence: iaqualink-0.7.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “pool control api python”
- iaqualinkAsynchronous Python library for monitoring and controlling Jandy…
- asyncio-poolManages a pool of concurrent asyncio coroutines, enforcing a fixed…
- opensandboxOpenSandbox SDK provides low-level Python bindings to create, manage,…
Give your agent the search over MCP, or paste the wish link into any chat.
More Monitoring packages
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
Provides generated Python code for OpenTelemetry semantic conventions, enabling standardized attribute naming and constant definitions for instrumentation and telemetry collection.
Install it if you are using OpenTelemetry and want to follow semantic conventions correctly.
Provides the reference implementation of the OpenTelemetry API for collecting and exporting traces, metrics, and logs from Python applications.
Provides the abstract API and interfaces for OpenTelemetry instrumentation in Python, defining how to emit traces, metrics, and logs without tying code to a specific SDK implementation.
Exports OpenTelemetry observability data to an OpenTelemetry Collector using Protobuf-encoded messages over HTTP.
Install it if you are using OpenTelemetry in Python and need to send data to a Collector over HTTP.
Provides automatic instrumentation commands and programmatic APIs to inject distributed tracing into Python applications without code changes, detecting and instrumenting packages used by your program.
Install it if you need distributed tracing without code changes and have compatible instrumented packages in your environment.
See also pyhiveapi · python-smarttub · nexia · pyeconet · aioguardian · aiohue · aioairq · AIOSomecomfort · millheater · pynautobot