A comprehensive Home Assistant integration for iAqualink robotic pool cleaners, providing full control, real-time monitoring, and multi-language support.
- Full Robot Control: Start, stop, return to base, remote directional movement
- Real-time Monitoring: Battery, cleaning status, error states, temperature
- Fan Speed Control: Multiple cleaning modes (Floor only, Walls only, etc.)
- Comprehensive Sensors: 20+ sensor types for detailed device info
- ๐บ๐ธ English (Default)
- ๐ซ๐ท Franรงais
- ๐ช๐ธ Espaรฑol
- ๐ฉ๐ช Deutsch
- ๐ณ๐ฑ Nederlands
- ๐ต๐น Portuguรชs
- ๐จ๐ฟ ฤeลกtina
- ๐ฎ๐น Italiano
- ๐ธ๐ฐ Slovenฤina
- Open HACS in Home Assistant
- Search for "iAqualink Robots"
- Click Install and restart Home Assistant
If not found in search: Add custom repository
galletn/iaqualinkas type Integration.
- Copy
custom_components/iaqualink_robots/into your Home Assistantconfig/custom_components/directory. - Restart Home Assistant.
- Settings โ Devices & Services โ Add Integration
- Search for "iAqualink Robots"
- Enter your iAqualink credentials
- Select your robot from the detected devices
Adding a second robot on the same account is the same flow โ sign in again and pick the other robot; robots you already added are filtered out of the list.
Reachable via Settings โ Devices & Services โ iAqualink Robots โ Configure.
- Include seconds in time-remaining display โ when on, the
Time Remainingsensor updates every poll (a few seconds) and shows seconds. Turn it off to update only when the minute changes, which substantially reduces activity-log entries during a long cleaning cycle without slowing down the remote-control buttons. Changing it reloads the integration.
If you change the password on your iAqualink account, Home Assistant will show a Reconfigure / repair prompt for the integration. Enter the new password and it resumes โ entity IDs, history and automations are all kept. The prompt also appears automatically if Home Assistant was restarted while the old password was still stored.
Reachable via Settings โ Devices & Services โ iAqualink Robots โ โฎ โ Reconfigure. Enter the new account's username and password. The robot must still be listed on that account โ if it isn't, the integration says so and leaves the entry untouched rather than accepting credentials that could never work. Because the entry keeps its serial number, nothing else changes: same entities, same history, same automations.
Use Settings โ Devices & Services โ iAqualink Robots โ โฎ โ Delete. This removes the config entry and all of its entities. Nothing is left behind on the robot or in your iAqualink account.
- Controls: Start/Stop, Return to base, Fan speed selection
- Status: Cleaning mode, Activity, Battery level
- Features: Remote directional control (Forward, Backward, Rotate)
- Serial Number, Device Type, Model
- Battery Level, Total Hours, Temperature
- Cleaning cycle info (Start time, Duration, Type)
- Canister Level, Error State
- Time Remaining, Estimated End Time
- Fan Speed, Activity, Status
- Time adjustments (Time Adjustments, Adjustment Increment, Original / Total Duration, Time Added/Removed)
Grouped under Diagnostic on the device page:
- Firmware Version, Error Code, Diagnostic Code, Last Cloud Contact
Not every sensor appears on every robot. The integration only creates sensors your model can actually populate โ for example CycloNext robots report no water temperature, so no Temperature sensor is created, and Battery Level exists only on battery-powered (CycloBat) models. A sensor reading
Unknownon your model is worth reporting.
- Cleaning pattern per cycle (Floor, Floor & Wall, SMART) โ
StandardorS-Pattern, matching the toggle in the iAquaLink app.
Only created for robots whose firmware advertises pattern support, and only for the cycles that actually have a pattern. If your robot doesn't show these, it doesn't support the feature.
Remote control and time adjustment are only available on VR and VortraX robots โ the cloud exposes no equivalent commands for the other families, so these buttons are not created for them.
- Remote Forward / Backward
- Remote Rotate Left / Right
- Remote Stop
- Add 15 Minutes / Reduce 15 Minutes
- EX 4000 iQ / EX 5000 iQ / EX 6000 iQ
- RA 6500 iQ / RA 6570 iQ / RA 6900 iQ
- Polaris VRX iQ+
- CNX 30 iQ / CNX 40 iQ / CNX 50 iQ / CNX 4090 iQ
- OV 5490 iQ / RF 5600 iQ
- OA 6400 iQ
- P965 iQ / 9650 iQ
- VortraX TRX 8500 iQ
- Polaris Freedom Cordless
- Aqua Products EVO 614iQ / Polaris Epic 8642iQ / Scout 42iQ
- Zodiac XA 5095 iQ
- Zodiac RE 4400 iQ / RE 4600 iQ
- Zodiac GV 5480 iQ
- Cyclobot & CycloNext models
- Vortrax models
- CNX 868 iQ (CycloNext) can show
Idlewhile physically cleaning (#100). Not yet explained: the two CycloNext robots available for testing report the relevant cloud field normally, so the obvious cause has been ruled out. If you can reproduce it, please attach Download diagnostics taken while the robot is running โ that captures the raw cloud values and would very likely settle it. Modelcan readUnknown (WR0xxxxx)on some robots. The cloud derives the model name from a part number stored against your device; when that field is blank in their records, no model can be resolved by anyone โ including the iAquaLink app. Report theWR0โฆstring and the model can at least be mapped locally (#88).
346115301-75806d16-6350-4a8d-84d0-7ce2996ae8f6.mp4
- Go to System โ General โ Language
- Select your preferred language
- Restart Home Assistant and reload the integration
Two transports, both to the iAqualink cloud (there is no local API):
- Polling every few seconds. The interval adapts to what the robot is doing โ roughly 1.5s while it's active, 10s while idle, 3s otherwise. It is deliberately fast so the vacuum entity reflects a remote-control button press within a couple of seconds rather than up to a minute later.
- A websocket listener that receives state changes pushed by the cloud and applies them immediately, without waiting for the next poll.
If the cloud becomes unreachable, entities keep their last known values and
gain a restored: true attribute rather than going unavailable straight
away. Only after roughly 30 minutes of continuous failure do they flip to
unavailable โ so a brief ISP or cloud blip won't break automations that
depend on the robot's state.
- Robot shows unavailable โ first check the robot is reachable in the
iAqualink mobile app. The integration keeps entities available through
short cloud outages (serving the last known values, with a
restoredattribute set totrue) and only marks them unavailable once an outage passes 30 minutes. - Home Assistant asks you to re-enter your password โ your iAqualink credentials were rejected by the cloud. See Changing your iAqualink password.
- "This robot is not listed on that iAquaLink account" โ you signed in with a different account than the one the robot is registered to. Nothing was changed; retry with the correct account.
- A button press shows an error โ since 3.0.0-rc.4, a command that fails to reach the robot surfaces as an error in the UI instead of silently doing nothing. The message includes the underlying cause.
Attach a diagnostics download: Settings โ Devices & Services โ iAqualink Robots โ โฎ โ Download diagnostics. It contains the raw cloud values the integration is working from, with credentials, tokens and personal details redacted, and usually removes the need for any follow-up questions.
Add to configuration.yaml and restart:
logger:
logs:
custom_components.iaqualink_robots: debugRoutine operation logs nothing above debug; anything at warning or
error in your log is worth reporting.
We welcome:
- Language translations
- Testing on different robot models
- Bug reports & feature requests
Maintained by @galletn, built on a reverse-engineered iAqualink API โ and on a lot of community work.
Translations
- ๐จ๐ฟ ฤeลกtina + ๐ธ๐ฐ Slovenฤina โ @FejbyK
- ๐ฎ๐น Italiano โ @ppastur
- Other locales started as English fallbacks; native-speaker PRs are always welcome.
Code contributions
- @flimzy โ diagnosed and fixed the auto-restart-after-cycle bug (#89 / #94)
- @CLARENNE-Q โ i2d estimated-end-time fix and compatible-device filtering (#48 / #49)
- @FejbyK โ README and CI improvements
Hardware access and verification
Several features exist only because owners let their robot be poked at. Notably Brian, whose CycloBat made it possible to verify the cleaning-pattern (Standard / S-Pattern) support against real hardware in both directions โ reading and writing โ rather than inferring it. A control that silently does nothing is the failure mode behind issue #76; that is what hands-on verification prevents.
Reports, testing and model confirmations
@AlexeiakaTechnik, @beit-no1, @chansearrington, @ConRodLou, @craigcurtin-dev, @danielegger1, @DeltaFox0018, @fdarden, @filmackay, @Gamester17, @GizmoGoody, @jiggahertz86, @johntdyer, @nylesmail, @Osconse, @OtisPresley, @piejanssens, @quartit, @smuliv, @socalsharky, @sv-kov, @virtualbitzz.
Every supported model on the list above got there because someone reported theirs, ran a pre-release, and said whether it worked. If you did that and aren't listed, please open an issue โ it's an oversight, not a judgement.
Released under the MIT License โ ยฉ 2023-2026 Nicolas Gallet (@galletn) and contributors.
The iAqualink cloud protocol this integration speaks is not publicly documented; the implementation is the result of reverse-engineering by the maintainer and contributors. If you build on that work, an acknowledgement is appreciated.