Jandy iAqualink Pool Integration

Thanks. I am having another issue. In my setup I can use the solar heater as an extra auxiliary to control something else. What’s happening is home assistant is pulling in the device but when I try to turn it on in home assistant, the following is shown: Failed to call service switch/turn_on. ‘devices_screen’ I then figured out that the solar heater that is pulled into home assistant even though i do not have one in my jandy system is what turns that extra auxiliary on. Issue is it is not linked to the status of the device in the aqualink app meaning if it is turned on in aqualink, it is still shown as off in HA. Is there a way to eliminate the solar heater to the setup and have my device connect to HA properly?

1 Like

What happens when you turn on extra aux through HA?

Pool closed at the moment but whatever you program it to if I remember correctly. I programmed diff speeds for the pump

Hello @hybrix. I wish to try the curl commands you documented here. I have a Zodiac eXO-Pro iQ chlorinator and a Zodiac Z400 iQ heat pump.

I’m unsure where to get the authorization token -

authorization:xxxxxx

and

mydevicecodexxxxx

Any guidance would be very appreciated.

Any luck with get it to read the salinity or pump speed?

Hi, I have an Aqualink Tri and a PH Link Dual link but am not getting values for Salinity and PH see the attached copy. It also shows the ACL value as 1 degree and the Swc Low as 0 degrees while the cover is closed and the indicator on the Dual Link shows low. Almost everything is shown as degrees celsius as opposed to other values

Any reason why this happens?

I don’t have values for SWC/ORP/ACL on my system which is why it’s not handled properly. Default seems to be that those are temperature sensors while SWC/ACL should be on/off and ORP should be a different unit altogether?

Hi, thanks for looking into this.

The cover value should be either “open” or “closed” depending on the state
If the cover is closed the :Swc Low: sensor should read: 10%
If the ScW boost is on it should read “On” otherwise “Off”
The ACL value should give a result between something like 500 (without percentage) (which is now showing under ORP
The Ph sensor should give a value between say 6.0 and 9.0, but normally in the 7.2 and 7.8 range
I don’t know what the ORP value means/should be

here you go:

Logger: homeassistant.core
Source: custom_components/aqualink/sensor.py:54
First occurred: 11:35:05 AM (4 occurrences)
Last logged: 11:36:38 AM

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 434, in _async_add_entity
await entity.async_update_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 284, in async_update_ha_state
self._async_write_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 320, in _async_write_ha_state
state = self.state
File “/config/custom_components/aqualink/sensor.py”, line 54, in state
return int(self.dev.state) if self.dev.state else None
ValueError: invalid literal for int() with base 10: ‘7.3’

Thanks for the extra info. It looks like you’re running an old git checkout of the component. The integration was heavily cleaned up and subsequently merged into HomeAssistant a while back. I don’t think this will solve most (or any) of your issues but can you update to the latest version and report back with logging on (see iaqualink integration for details).

Note: The integration was renamed from aqualink to iaqualink.

Hi, I deleted everything restarted HA, then used integrations to add iaqualink and restarted HA again.

This are the logger details;

Logger: homeassistant.util.logging
Source: util/logging.py:176
First occurred: 4:58:55 PM (22 occurrences)
Last logged: 5:06:39 PM

  • Exception in _update_callback when dispatching ‘iaqualink’: () Traceback (most recent call last): File “/usr/src/homeassistant/homeassistant/components/iaqualink/init.py”, line 213, in _update_callback self.async_schedule_update_ha_state() File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 447, in async_schedule_update_ha_state self.async_write_ha_state() File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 297, in async_write_ha_state self._async_write_ha_state() # type: ignore File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 320, in _async_write_ha_state state = self.state File “/usr/src/homeassistant/homeassistant/components/climate/init.py”, line 165, in state return self.hvac_mode File “/usr/src/homeassistant/homeassistant/components/iaqualink/climate.py”, line 69, in hvac_mode state = AqualinkState(self.heater.state) File “/usr/src/homeassistant/homeassistant/components/iaqualink/climate.py”, line 132, in heater return self.dev.system.devices[heater] KeyError: ‘swc_heater’
  • Exception in _update_callback when dispatching ‘iaqualink’: () Traceback (most recent call last): File “/usr/src/homeassistant/homeassistant/components/iaqualink/init.py”, line 213, in _update_callback self.async_schedule_update_ha_state() File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 447, in async_schedule_update_ha_state self.async_write_ha_state() File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 297, in async_write_ha_state self._async_write_ha_state() # type: ignore File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 320, in _async_write_ha_state state = self.state File “/usr/src/homeassistant/homeassistant/components/iaqualink/sensor.py”, line 46, in state return int(self.dev.state) if self.dev.state != “” else None ValueError: invalid literal for int() with base 10: ‘7.3’

Log Details (ERROR)

Logger: homeassistant.core
Source: components/iaqualink/climate.py:132
First occurred: 4:58:24 PM (1 occurrences)
Last logged: 4:58:24 PM

Error doing job: Task exception was never retrieved

Traceback (most recent call last):

File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 434, in _async_add_entity

await entity.async_update_ha_state()

File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 284, in async_update_ha_state

self._async_write_ha_state()

File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 320, in _async_write_ha_state

state = self.state

File “/usr/src/homeassistant/homeassistant/components/climate/init.py”, line 165, in state

return self.hvac_mode

File “/usr/src/homeassistant/homeassistant/components/iaqualink/climate.py”, line 69, in hvac_mode

state = AqualinkState(self.heater.state)

File “/usr/src/homeassistant/homeassistant/components/iaqualink/climate.py”, line 132, in heater

return self.dev.system.devices[heater]

KeyError: ‘swc_heater’

And the lovelace iaqualink box looks like this. I only show the sensors of the pool as I don’t have a Spa and the cleaner is linked to aux 1, aux 2 and 3 are not in use.

Thanks again for looking into this.

Hi I deleted the integration and re-installed it using HACS. there is one error remaining:
2020-04-04 17:27:47 ERROR (MainThread) [homeassistant.util.logging] Exception in _update_callback when dispatching ‘iaqualink’: ()
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/iaqualink/init.py”, line 213, in _update_callback
self.async_schedule_update_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 447, in async_schedule_update_ha_state
self.async_write_ha_state()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 297, in async_write_ha_state
self._async_write_ha_state() # type: ignore
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 320, in _async_write_ha_state
state = self.state
File “/usr/src/homeassistant/homeassistant/components/climate/init.py”, line 165, in state
return self.hvac_mode
File “/usr/src/homeassistant/homeassistant/components/iaqualink/climate.py”, line 69, in hvac_mode
state = AqualinkState(self.heater.state)
File “/usr/src/homeassistant/homeassistant/components/iaqualink/climate.py”, line 132, in heater
return self.dev.system.devices[heater]
KeyError: ‘swc_heater’

The problems with everything showing upas degrees etc remains:

Let’s move the discussion to the GitHub issue you’ve opened a while back: https://github.com/home-assistant/core/issues/30078

PS: I’m not sure why HACS is involved, the integration is part of Home Assistant Core (that’s the new name), you don’t need to do anything except adding it in Configuration -> Integrations (or via configuration.yaml).

Sorry, I meant integrations not HACS

Does anyone else experience HA crashing (hanging up) when running this integration… happened to me a lot last year and just started happening again now that I reenabled the integration.

Works fine for me

Hello - Firstly, my BIG thanks to all of you for collaborating on this great integration, a special thanks to @flauran for his amazing work. I am new to HA and am also a new pool owner. I’m learning alot, but I have one question that I’m hoping is an easy one. I am able to control my pool light, and once the light is on select the color from te drop down list. How do I set it up to pick a different default color at activation? Whenever the light activates it always selects “ALPINE_WHITE” by default. I can manually change this in the card with a drop down, but how do I set this up to default to a different color such as “SKY_BLUE”. Again apologies for what is possibly quite an elementary thing for those skilled in HA programming.

2 Likes

OK- I figured out that if I call it as a service with the effect parameter I can get it to set the color. Sorry for the interruption everyone. Please disregard. Keep up the excellent work!

Ciao, you can login with this:

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":"EOOEMOW4YR6QNB11", "email":"xxxxxxxx", "password":xxxxxxxxxx"}' "https://prod.zodiac-io.com/users/v1/login"

Server will return the token.

Thankyou! Will give it a go.

I’m using Postman to send the curl request. The response is “Rate exceeded”. I’m not that familiar with sending curl commands either. It’s likely a problem with my implementation.

I do find it unusual that the API key is published for public use. Normally a key would be unique for each individual? That could explain the “Rate exceeded” message.