Jandy iAqualink Pool Integration

That got it! Thanks so much.

1 Like

Ciao,
I installed the component and updated configuration.yaml, but I’m receiving below error, can someone help? Thanks

Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/core.py", line 1150, in _safe_execute
    await self._execute_service(handler, service_call)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/core.py", line 1163, in _execute_service
    await handler.func(service_call)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/homeassistant/__init__.py", line 90, in async_handle_core_service
    errors = await conf_util.async_check_ha_config_file(hass)
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/config.py", line 841, in async_check_ha_config_file
    res = await check_ha_config_file(hass)  # type: ignore
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/scripts/check_config.py", line 342, in check_ha_config_file
    component = integration.get_component()
  File "/srv/homeassistant/lib/python3.5/site-packages/homeassistant/loader.py", line 130, in get_component
    cache[self.domain] = importlib.import_module(self.pkg_path)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 669, in exec_module
  File "<frozen importlib._bootstrap_external>", line 775, in get_code
  File "<frozen importlib._bootstrap_external>", line 735, in source_to_code
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/homeassistant/.homeassistant/custom_components/aqualink/__init__.py", line 78
    _LOGGER.error(f'Exception raised while attempting to login: {e}')
                                                                   ^
SyntaxError: invalid syntax

Not sure why you’re getting a SyntaxError exception but it looks like the actual issue is that your username/password credentials are incorrect.

Apologies for the delay, I’m pretty busy at the moment. I will update my dev environment to 0.95 and see what’s causing the issue.

I’m pretty sure the username and password are OK. I triple checked it and I tried to hadcorde it as well in init.py. Is there any way I can debug this to get more detail on the error? Thanks

I confirm the component is broken in 95.4 as well. Is it possible to add this to the HACS store?

Also an integration with custom updater would be nice.

Looking like .96 update was not nice to this component unfortunately.

Invalid config

The following components and platforms could not be set up:

  • aqualink.climate

Please check your config.

Unable to prepare setup for platform aqualink.climate: Platform not found (cannot import name ‘STATE_HEAT’ from ‘homeassistant.components.climate.const’ (/usr/src/homeassistant/homeassistant/components/climate/const.py)).

Hey, I’ve just updated the code to work with 0.96. Update the code with git pull.

1 Like

Just noticing that the error mentions python3.5. I’m using python3.7 (which is what comes with hass.io) so that might be the reason.

Back in business. Thanks! I’m seeing this in the log though. Anything to worry about?

i2d_robot is not a supported system type.
10:08 AM custom_components/aqualink/init.py (WARNING)

Nothing to worry about. This is my library’s way of telling you it found a system linked to your iaqualink that it doesn’t know how to handle.

Working perfectly for since you pushed the update, thank you flauran very much. Note that I was still running 0.95 when I first pulled and even after a restart continued to get the same errors but after updating to 0.96 everything picked back up, no additional steps required.

1 Like

Ciao, i’m back again trying to make this work. I believe that there must be something else, for sure the user and password are correct, I have many custom components working with homeassistant, so I’m not new on this :slight_smile:
Can you help providing any further instruction or test I could try?
Thanks in advance

Ciao, after updating Python to 3.7.3, component doesn’t return error, so it seems to be an uncompatibility with Python 3.5.
Now the problem is that it doesnt support any device. I’ve got robot zodiac iq and saline clorator zodiac exo iq. Both are working in the mobile app, can anybody help?
i2d_robot is not a supported system type.
exo is not a supported system type.

Thanks in advance.

1 Like

Thanks for making this library. This is my first time using Home Assistant, and my main, (really only), goal for this project is to be able to use Google Home to control pool functions so I don’t have to get out of the pool, dry off my hands, and control iAqualink through my phone. So far, I have the pool functions showing in the Google Home app, and I can voice control water features and the lights, but I really want to control the light color. I assume this involves an edit of configuration.yaml somehow to assign each light effect to certain names. I have no idea how to do this, any help?

edit: I got this working with a script like this. I’m too big a noob to figure out how to pass in a variable for color, so I just made a different script for each color. Works with Google Home by saying “activate the blue light,” and you set up a routine in the GH app you can just say “turn on the blue pool light.” Now if we can get the VSP functionality added we’ll be in business…

blue_light:
  alias: Blue Light
  sequence:
    service: light.turn_on
    entity_id: light.pool_light
    data:
      effect: 'CARIBBEAN_BLUE'
2 Likes

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.