Jandy iAqualink Pool Integration

When I try to edit the scripts.yaml it’s empty, there’s nothing in it. Is there a way to select what lights I want when I turn the pool lights on? Thanks

Are you implying migrating to a docker instance will fix color light issues?

How did you go with the Zodiac EXO stuff @hybrix? Just digging into it now for myself with an EXO chlorinator and Zodiac Z400 iQ heat pump. Would love to get it going but wanted to check where you got to before I recreate the wheel. Happy to chat via DM.

@walshy002000, I’ve spent some time understanding the AWS IoT framework they’re using and have a path forward. I’ve started work locally on extending the iaqualink-py package to support the eXO. After that, I’ll take a look at contributing on the HASS integration.

2 Likes

Ciao! I got it working as expected :slight_smile: But not with the jandy iaqualink component.
I read ph, temperature, status of production, connectivity and I’m able to turn it on and off! I make everything with HTTPS invocations but it works hehe

I believe it’s quite similar. Actually the login is common for zodiac Exo and for aqualink even there’re different URIs. If you want I can share the HTTPS I use for exo chlorinator.

This is my script for getting ph, temp and status of exo chlorinator:
Authentication_token=$(cat /config/conf/aqualink_login.json | jq -r .authentication_token)
Authorization=$(cat /config/conf/aqualink_login.json | jq -r .userPoolOAuth.IdToken)

curl -X GET -H “Host:prod.zodiac-io.com” -H “accept:application/json” -H “authorization:”$Authorization"" -H “accept-encoding:gzip” -H “user-agent:okhttp/3.12.0” “https://prod.zodiac-io.com/devices/v1/JT19005866/shadow” | jq -r ‘.’ > /config/conf/aqualink.json

AqualinkAuthorizationError=$(cat /config/conf/aqualink.json | jq -r .message)

if [ “$AqualinkAuthorizationError” != “null” ]; then
curl -X POST -H “Host:prod.zodiac-io.com” -H “accept:application/json” -H “content-type:application/json” -H “accept-encoding:gzip” -H “user-agent:okhttp/3.12.0” -d ‘{“api_key”:“XXXXXXXXXXXXXX”, “email”:“XXXXXXXXXX”, “password”:“XXXXXXXXXXXX”}’ “https://prod.zodiac-io.com/users/v1/login” | jq -r ‘.’ > /config/conf/aqualink_login.json
Authentication_token=$(cat /config/conf/aqualink_login.json | jq -r .authentication_token)
Authorization=$(cat /config/conf/aqualink_login.json | jq -r .userPoolOAuth.IdToken)
curl -X GET -H “Host:prod.zodiac-io.com” -H “accept:application/json” -H “authorization:”$Authorization"" -H “accept-encoding:gzip” -H “user-agent:okhttp/3.12.0” “https://prod.zodiac-io.com/devices/v1/XXXXXXXXXXXXXXX/shadow” | jq -r ‘.’ > /config/conf/aqualink.json
AqualinkAuthorizationError=""
echo “Token renovado”

fi

This is my script to turn off/on the chrlorinator (just change swc_0 to swc_1 to turn on):
curl -X POST -H “Host:prod.zodiac-io.com” -H “accept:application/json” -H “authorization:”$Authorization"" -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/xxxxxxxxxxx/shadow

@hybrix, I’ve been using the AWS IoT Python Library and subscribing to the shadow for updates etc. I’m starting to think this is overkill and a simple poll would be better…

Do you mean “swc_0”:{“production”:0/1}?

Right, sorry. Production from 0 to 1

For some reason I can’t load the integration anymore. I started fresh and when I try to login it fails with this error in the logs.

Logger: iaqualink
Source: /usr/local/lib/python3.8/site-packages/iaqualink/client.py:85
First occurred: 10:23:17 AM (5 occurrences)
Last logged: 11:00:24 AM

← 403 Forbidden - https://support.iaqualink.com/users/sign_in.json

I can login just fine through a web browser and the app works too

1 Like

I am having exact same issue today. I can login on web and app, but HA integration is broken.

Same here, thought it was just me. Perhaps something has changed on their end. When I go their website, I get a modal pop-up that says I have to log in again. But, once I log in, everything is fine. Don’t recall ever seeing that before. It has always retained my credentials.

Same here. Unable to successfully access via HA

Same…

Logger: iaqualink
Source: /usr/local/lib/python3.8/site-packages/iaqualink/client.py:85
First occurred: 1:45:23 PM (1 occurrences)
Last logged: 1:45:23 PM

<- 403 Forbidden - https://support.iaqualink.com/users/sign_in.json

Same here, everything works but HA. Tried going here https://support.iaqualink.com but just get a spinning arrow circle - maybe it’s just down?

It doesn’t look like all sessions were invalidated. I’m still logged-in and can control my iAqualink via Home Assistant right now.
Of course that doesn’t solve the problem, so I’ll try to take a look at what the latest iOS app is doing for sign_in using Charles Proxy later.

Same here.

I started getting 403 error early this morning (around 2am Eastern) and all sensors are unavailable.

Log entry:
Logger: homeassistant.components.iaqualink
Source: components/iaqualink/init.py:103
Integration: Jandy iAqualink (documentation, issues)
First occurred: 2:17:10 AM (1 occurrences)
Last logged: 2:17:10 AM

Failed to login: Login failed: 403 Forbidden

Well I can’t get in through their Android app now either…

I am still able to get to it via iOS app and the web UI, but not either of two HA instances. Wonder if they broke it on purpose?

Log out on the app and log back in, see if you can still get in. My web interface is fine but when I login by their app I get “there was a problem establishing a connection. Please refresh and retry.”