Skip to content

benjycov/exo_pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exo Pool – Home Assistant Integration

A custom integration to connect your Zodiac iAqualink Exo pool system to Home Assistant, providing full control and monitoring of your pool’s features.

🆕 What’s New

  • 23 Sep 2025 - Added experimental climate entity for systems with the heat pump enabled, this is very much WIP, so please feedback!.
  • 15 Sep 2025 – Added option to adjust API refresh rate to avoid “Too Many Requests” errors.
  • 3 Sep 2025 – Added binary_sensors for each schedule plus actions to change schedules.

Installation (via HACS)

  1. In Home Assistant, go to HACS → Integrations.
  2. Search for Exo Pool and click Install.
  3. Restart Home Assistant.
  4. Go to Settings → Devices & Services → Add Integration, search for Exo Pool, and follow the prompts.

Features

  • Automatic Authentication – Secure login to the iAqualink API using your email and password.
  • System Selection – Pick your Exo system from multiple pools/devices (filtered to device_type: "exo").
  • Sensors – Temperature, pH, ORP, ORP Boost Time Remaining, Pump RPM, Error Code, Wi-Fi RSSI, Schedules.
  • Binary Sensors – Filter Pump running, Chlorinator running, Error State, Authentication Status, Connected, and one per schedule.
  • Switches – ORP Boost, Power State, Production, Aux 1, Aux 2, SWC Low.
  • Numbers – pH Set Point and ORP Set Point (when supported).
  • Services – Control and modify schedules (see below).
  • Diagnostics & Dynamic Device Info – View hardware configuration and live status; serial number and software version update periodically.
  • Configurable Refresh Rate – Default 30 s; increase if you see Too Many Requests errors (60 s recommended).

Schedule Services

Each Exo schedule is exposed as a binary sensor:

  • State: on when active.
  • Attributes: schedule, enabled, start_time, end_time, type (vsp | swc | aux | other), and rpm (VSP only).
  • Icons: VSP → pump/pump-off, SWC → water-plus/water-off, AUX → toggle, calendar fallback.

exo_pool.set_schedule

Create or update a schedule’s time range and optional VSP RPM.

service: exo_pool.set_schedule
target:
  entity_id: binary_sensor.schedule_filter_pump_2
data:
  start: "11:00"
  end: "23:00"
  rpm: 2000

You can also target the device and specify schedule: sch6 instead of the entity.

exo_pool.disable_schedule

Disable a schedule by setting start and end to 00:00.

service: exo_pool.disable_schedule
target:
  entity_id: binary_sensor.schedule_salt_water_chlorinator_2

Device Actions (Automations)

When creating an automation: Device → your Exo Pool device → Actions: Set schedule or Disable schedule. These map directly to the services above.


History

The core iAqualink integration never supported Exo devices (European Zodiac-branded chlorinators). See the long-running discussion: flz/iaqualink-py#16. After early Node-RED flows and REST template hacks, this dedicated integration was built to provide full native support.


Limitations

  • Restricted to Exo devices only; use the core iAqualink integration for other hardware.
  • Commands (set points, Aux switches, etc.) can be slightly laggy; switches are optimistic with ~10 s refresh.
  • Schedule keys, names and endpoints are determined by the device; disabling a schedule is modelled as 00:00–00:00.
  • RPM is only relevant to VSP schedules.

Compatibility

Confirmed working with:

  • Exo IQ LS (dual-link ORP & pH, Zodiac VSP pump).

Have success with other models? Please share!


Support