Jandy iAqualink Pool Integration

Apologies for not responding earlier. These systems are not supported by the iaqualink python module because I have access to neither and I don’t have the time to work on it at this time anyway.

If you can intercept the requests sent by the mobile app and can write python code, feel free to send patches!

Just to give an update and to answer the question about HACS / custom updater, I’ve finally cleaned up the code and submitted a pull request to integrate the component into Home Assistant. I expect there will be some back and forth but I hope to have the code ship soon enough.

Pull Request: https://github.com/home-assistant/home-assistant/pull/26034

2 Likes

Ciao, I haven been able to capture request to active/deactivate the saline chlorinator and I can use CURL in linux succesfully. Unfortunatelly I’m fully noob on python and in your code, I’m able to understand java, but I’m unable to find where do you have the list of compatible devices to start with something.

Below you can find a sample of how to activate the chlorinator (authorization token removed for security reasons :slight_smile:):

curl -X POST -H "Host:prod.zodiac-io.com" -H "accept:application/json" -H "authorization:xxxxxx" -H "content-type:application/json; charset=UTF-8" -H "content-length:62" -H "accept-encoding:gzip" -H "user-agent:okhttp/3.12.0" -d '{"state":{"desired":{"equipment":{"swc_0":{"production":1}}}}}' "https://prod.zodiac-io.com/devices/v1/mydevicecodexxxxx/shadow"

Below you can find a sample of query for chlorinator status, temp, PH and ORP:

`curl -X GET -H "Host:[prod.zodiac-io.com](http://prod.zodiac-io.com/)" -H "accept:application/json" -H "authorization:XXX -H "accept-encoding:gzip" -H "user-agent:okhttp/3.12.0" "https://prod.zodiac-io.com/devices/v1/mydevicecodexxxxx/shadow"`

If you could give some guidance… thanks

1 Like

The current code somewhat assumes that all systems use a similar API. The examples you’re giving me here would seem to indicate that the API is actually fairly different.

In any case, you’d want to look at modifying system.py to add a new class for the chlorinator. Figuring out the API can be done using something like CharlesProxy (to do man-in-the-middle on the SSL connections) on a computer and setting your mobile phone to use that computer as a proxy. It isn’t crazy complicated but requires some fiddling.

Can you tell me where can I find systems.py? I’m unable to find it in the path.
The CURL invocations in previous message where obtained with an http proxy, I can get also the full detail of request of the response.
Thanks

It is part of the iaqualink python module.

Here’s the code on GitHub: https://github.com/flz/iaqualink-py/blob/846a0e6fcd8ae9d23264ffbcd8e1c57aaadf8d67/src/iaqualink/system.py

I mean in the homeassistant module, which is the one that I’m using :slight_smile:
Thanks

The homeassistant module (https://github.com/flz/hass-aqualink) only contains logic that creates and manages the homeassistant entities. All the device interaction code lives in the iaqualink-py repo. You’ll need to update that API to support the new systems before you’re able to do anything on the homeassistant side.

HEADS UP!

After some back and forth, the iaqualink integration has been merged in the home-assistant github repository, just in time for 0.99 beta! One of the great things about having the integration as part of the HA distribution is that there shouldn’t be any more API breakages like we’ve seen in the past.

A few things to note, if/when you upgrade to 0.99+:

  • You should delete the component from your custom_component directory.
  • The integration has been renamed from “aqualink” to “iaqualink” to better reflect the fact that it leverages the cloud API. What this means is that you will need to update your configuration.yaml file to reflect that name change.
  • If you’re not a fan of text configuration, you should be able to remove the entry from configuration.yaml and configure the integration via the UI. This isn’t mandatory as the integration supports both text-based and UI configuration.
  • Feel free to keep using this thread for discussion but issues should probably be raised on GitHub. I will keep supporting the integration for the foreseeable future.

Once 0.99.0 is released (hopefully 9/18), I will be archiving the hass-aqualink github repository since no changes will happen there anymore.

3 Likes

Great work!

1 Like

Good one @flauran!

1 Like

Brilliant. Congrats and thanks for all of your hard work. Love this integration!

“Hey Google, Turn on the Pool Lights!”

1 Like

Here is the pull request! Hopefully it’ll be fixed before 0.99.0, otherwise it’ll be released shortly after.

Home Assistant 0.99 was released a few days ago!

As mentioned previously, I’ve deprecated the custom component, please upgrade your installation of Home Assistant to ensure you get the latest and greatest code for the integration (a bunch of fixes have gone in already that weren’t in my git repository).

flauran, thanks so much for this great work.

I have HA running on RPI with the iAqualink integration working. I have a question about pool lights. I have color changeable LED lights. They are NOT Jandy brand but use the same Jandy control sequences to set color.

Aqualink does not show them as color changing lights. There is just an “on/off” option. Any tips on getting the color settings to show up?

Thanks again.

Ciao, is there an option to get integrated the zodiac devices in the new ijandyaqualink hass component?
I hav chlorinator + robot? Snif
i2d_robot is not a supported system type.
exo is not a supported system type.
Thanks

Is there a way to change the way light colors are selected? I am trying to figure out how to change the color of the lights in home kit.

Hey,

Can you enable iaqualink debugging in configuration.yaml as shown in the integration documentation and put the results here (specifically when the integration is first setup). I suspect it’s a light type that isn’t recognized yet.

Thanks

The iaqualink library doesn’t support them at this point given that I don’t have access to those devices.

I think somebody asked about this before. The way to do this is by creating a scene in HA.