iAqualink connection issue

I am having trouble connecting to the iAqualink pool controller after upgrading to OpenHAB 3.3. The status of my iaqualink controller thing is perpetually “initializing” on the Things configuration page. I have manually configured the iaqualing controller thing as shown below. Attempting to add a new iaqualink controller thing from the administration page gives the same problem.

From my things file:

Thing iaqualink:controller:pool [ userName="XXXX@XXXX.net", password=“XXXXXXX”]

There is only one entry in the log pertaining to iaqualink, and that is:

2022-07-15 21:59:59.120 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAY at path $.serialized_map.
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:963) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:1034) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:1006) ~[?:?]
        at org.openhab.binding.iaqualink.internal.api.IAqualinkClient$HomeDeserializer.deserialize(IAqualinkClient.java:402) ~[?:?]
        at org.openhab.binding.iaqualink.internal.api.IAqualinkClient$HomeDeserializer.deserialize(IAqualinkClient.java:1) ~[?:?]
        at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:963) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:928) ~[?:?]
        at com.google.gson.Gson.fromJson(Gson.java:877) ~[?:?]
        at org.openhab.binding.iaqualink.internal.api.IAqualinkClient.getAqualinkObject(IAqualinkClient.java:352) ~[?:?]
        at org.openhab.binding.iaqualink.internal.api.IAqualinkClient.homeScreenCommand(IAqualinkClient.java:318) ~[?:?]
        at org.openhab.binding.iaqualink.internal.api.IAqualinkClient.getHome(IAqualinkClient.java:160) ~[?:?]
        at org.openhab.binding.iaqualink.internal.handler.IAqualinkHandler.pollController(IAqualinkHandler.java:352) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAY at path $.serialized_map.
        at com.google.gson.internal.bind.JsonTreeReader.nextString(JsonTreeReader.java:181) ~[?:?]
        at com.google.gson.internal.bind.TypeAdapters$15.read(TypeAdapters.java:380) ~[?:?]
        at com.google.gson.internal.bind.TypeAdapters$15.read(TypeAdapters.java:368) ~[?:?]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41) ~[?:?]
        at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:187) ~[?:?]
        at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145) ~[?:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) ~[?:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) ~[?:?]
        ... 19 more

Please could you let me know if you have any ideas?

-Mark

PS - platform is Raspberry Pi 4 - I have manually configured it and am not using Openhabian.

-Mark

A TRACE log of the binding may help in identifying where this problem occurs.

All-

My TRACE log is attached - with serial number and user information listed as XXXXXX or YYYYYY. Everything looks OK to me… Still perpetually in “initializing”. Any help would be much appreciated!

2022-07-16 09:03:50.781 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : BundleComponentActivator : ComponentHolder created.
2022-07-16 09:03:50.866 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Dependency Manager created $000interface=org.openhab.core.io.net.http.HttpClientFactory, filter=null, policy=static, cardinality=1..1, bind=null, unbind=null, updated=null, field=null, field-option=null, collection-type=null, parameter=0
2022-07-16 09:03:50.870 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Component created: DS=DS14, implementation=org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory, immediate=false, default-enabled=true, factory=null, configuration-policy=optional, activate=activate, deactivate=deactivate, modified=null configuration-pid=[binding.iaqualink]
2022-07-16 09:03:50.888 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Component Services: scope=singleton, services=[org.openhab.core.thing.binding.ThingHandlerFactory]
2022-07-16 09:03:50.890 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Component Properties: {}
2022-07-16 09:03:50.892 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Querying state disabled
2022-07-16 09:03:50.899 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Querying state disabled
2022-07-16 09:03:50.901 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Component can not be activated since it is in state disabled
2022-07-16 09:03:50.905 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory] : Querying state disabled
2022-07-16 09:03:50.907 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Updating target filters
2022-07-16 09:03:50.924 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : No change in target property for dependency $000: currently registered: false
2022-07-16 09:03:50.925 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] :  No existing service listener to unregister for dependency $000
2022-07-16 09:03:50.928 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Setting target property for dependency $000 to null
2022-07-16 09:03:50.931 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : New service tracker for $000, initial active: false, previous references: {}, classFilter: (objectClass=org.openhab.core.io.net.http.HttpClientFactory), initialReferenceFilter (objectClass=org.openhab.core.io.net.http.HttpClientFactory)
2022-07-16 09:03:50.936 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : dm $000 tracker reset (closed)
2022-07-16 09:03:50.946 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : dm $000 tracking 1 SingleStatic added {org.openhab.core.io.net.http.HttpClientFactory, org.openhab.core.io.net.http.WebSocketFactory}={service.id=281, service.bundleid=173, service.scope=bundle, component.name=org.openhab.core.io.net.http.internal.WebClientFactoryImpl, component.id=155} (enter)
2022-07-16 09:03:50.949 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : dm $000 tracking 1 SingleStatic active: false trackerOpened: false optional: false
2022-07-16 09:03:50.952 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : dm $000 tracking 1 SingleStatic added {org.openhab.core.io.net.http.HttpClientFactory, org.openhab.core.io.net.http.WebSocketFactory}={service.id=281, service.bundleid=173, service.scope=bundle, component.name=org.openhab.core.io.net.http.internal.WebClientFactoryImpl, component.id=155} (exit)
2022-07-16 09:03:50.954 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : dm $000 tracker opened
2022-07-16 09:03:50.956 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : registering service listener for dependency $000
2022-07-16 09:03:50.959 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Changed state from disabled to unsatisfiedReference
2022-07-16 09:03:50.961 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Component enabled
2022-07-16 09:03:50.962 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : ActivateInternal
2022-07-16 09:03:50.965 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Querying state unsatisfiedReference
2022-07-16 09:03:50.967 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Querying state unsatisfiedReference
2022-07-16 09:03:50.969 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Activating component from state unsatisfiedReference
2022-07-16 09:03:50.971 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Querying state unsatisfiedReference
2022-07-16 09:03:50.972 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Querying state unsatisfiedReference
2022-07-16 09:03:50.974 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Changed state from unsatisfiedReference to satisfied
2022-07-16 09:03:50.980 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : registration change queue [registered]
2022-07-16 09:03:50.986 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Checking constructor public org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(org.openhab.core.io.net.http.HttpClientFactory)
2022-07-16 09:03:50.988 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : getReferenceClass: Looking for interface class org.openhab.core.io.net.http.HttpClientFactory through loader of org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory
2022-07-16 09:03:50.990 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : getParameterClass: Found class org.openhab.core.io.net.http.HttpClientFactory
2022-07-16 09:03:50.992 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Found constructor with 1 arguments : public org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(org.openhab.core.io.net.http.HttpClientFactory)
2022-07-16 09:03:50.994 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : This thread collected dependencies
2022-07-16 09:03:50.996 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : getService (single component manager) dependencies collected.
2022-07-16 09:03:50.998 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Querying state satisfied
2022-07-16 09:03:51.001 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Querying state satisfied
2022-07-16 09:03:51.004 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : For dependency $000, optional: false; to bind: [[RefPair: ref: [{org.openhab.core.io.net.http.HttpClientFactory, org.openhab.core.io.net.http.WebSocketFactory}={service.id=281, service.bundleid=173, service.scope=bundle, component.name=org.openhab.core.io.net.http.internal.WebClientFactoryImpl, component.id=155}] service: [null]]]
2022-07-16 09:03:51.007 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : getting activate: activate
2022-07-16 09:03:51.009 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Locating method activate in class org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory
2022-07-16 09:03:51.012 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Declared Method org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory.activate([interface org.osgi.service.component.ComponentContext]) not found
2022-07-16 09:03:51.014 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Locating method activate in class org.openhab.core.thing.binding.BaseThingHandlerFactory
2022-07-16 09:03:51.016 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Found activate method: protected void org.openhab.core.thing.binding.BaseThingHandlerFactory.activate(org.osgi.service.component.ComponentContext)
2022-07-16 09:03:51.018 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : invoking activate: activate: parameters [org.apache.felix.scr.impl.manager.ComponentContextImpl]
2022-07-16 09:03:51.021 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : invoked activate: activate
2022-07-16 09:03:51.023 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Set implementation object for component
2022-07-16 09:03:51.025 [DEBUG] [ink.internal.IAqualinkHandlerFactory] - bundle org.openhab.binding.iaqualink:3.3.0 (260)[org.openhab.binding.iaqualink.internal.IAqualinkHandlerFactory(304)] : Changed state from satisfied to active
2022-07-16 09:03:55.522 [DEBUG] [nk.internal.handler.IAqualinkHandler] - SessionID QCAHKZUWBS0NO8EOU6NQQY3MDX9EGX2S
2022-07-16 09:03:55.631 [TRACE] [qualink.internal.api.IAqualinkClient] - Trying https://r-api.iaqualink.net/devices.json?api_key=EOOEMOW4YR6QNB07&authentication_token=XXXXXXXXXXnE3NWtT3qy&user_id=YYYYYY
2022-07-16 09:03:56.548 [TRACE] [qualink.internal.api.IAqualinkClient] - Response HttpContentResponse[HTTP/1.1 200 OK - 308 bytes]
2022-07-16 09:03:56.552 [DEBUG] [nk.internal.handler.IAqualinkHandler] - Using serial number VALIDSERIALNUMBER
2022-07-16 09:04:01.557 [TRACE] [qualink.internal.api.IAqualinkClient] - Trying https://p-api.iaqualink.net/v1/mobile/session.json?actionID=command&command=get_home&serial=ABCDEFG&sessionID=QCAHKZUWBS0NO8EOU6NQQY3MDX9EGX2S
2022-07-16 09:04:02.116 [TRACE] [qualink.internal.api.IAqualinkClient] - Response HttpContentResponse[HTTP/1.1 200 OK - 602 bytes]`Preformatted text`

Many thanks,

-Mark

PS - also changed my serial number in the log to VALIDSERIALNUMBER. I did check my iaqualink account to verify that the binding pulled the correct serial number, so it appears to be making a connection to the iaqualink server, as I did not enter the serial number in the Thing configuration.

There was a change in the iAquaLink api and a fix was merged in about 2 weeks ago, see [iaqualink] Fix to work with recent API changes to the iAqualink cloud service by digitaldan · Pull Request #13073 · openhab/openhab-addons · GitHub

You can Download the nightly build of the binding and install it manually to get it working again.

Dan-

Thank you. I downloaded the file to my /usr/share/openhab/addons folder. How do I install it? It does not appear on the configuration page in the UI. The documentation suggests that putting the .jar file in this directory should be sufficient.

Many thanks,

-Mark

All-

I figured it out. I needed to add the binding manually to the addons.cfg file. All is working now. Thank you for your help.

-Mark

Hi,
I got the same issue and only installed openhab for the first time today. The reason is to test this plugin. I can’t figure out what to put in the addons.cfg file though. Can you share your config?
-Magnus

Hi Magnus and welcome. Installing nightly builds of addons is usually a more advanced topic that most users don’t have to deal with, so apologies for this being your first experience.

My recommendation would be to uninstall the binding (through the webUI), then on your openHAB machine there should be a folder called “addons” where you can place the jar from the download link above. openHAB will automatically pick this up and install it after a second or 2 . See Installation of Add-ons | openHAB for more info. On linux (including rasp pi) this is located at /usr/share/openhab/addons or in the root of the openHAB folder on windows/mac.

Magnus-

If you want to do it as I did, you need to modify the addons.cfg file in /etc/openhab/services (for apt-based installations). There is a line that starts with #binding =
Remove the # to uncomment the line, and then list all of your bindings with comma delimiters. For the new binding placed in the /usr/share/openhab/addons folder, you need to list the part of the binding that comes after org.openhab.binding. and before .jar

In my case, that is:

binding = iaqualink-3.4.0-SNAPSHOT, ecobee, exec, harmonyhub, hpprinter, icloud-3.4.0-SNAPSHOT, mail, mqtt, network, ntp, opensprinkler, openweathermap

Note that you will need to list on this line ALL of your bindings that you want installed - not just the new one. Also, you will not be able to install new bindings in the web interface. I may just follow Dan’s suggestion and comment out this line in my addons.cfg file. The reason mine did not pick up the new binding is because I did not uninstall the old one on the web UI first (silly error on my part).

Many thanks,

-Mark

I installed the latest version of the iAqualink binding jar file, and now on the binding page I’m getting the following error:

Status:

OFFLINE

COMMUNICATION_ERROR

java.util.concurrent.ExecutionException: org.eclipse.jetty.client.HttpResponseException: HTTP protocol violation: Authentication challenge without WWW-Authenticate header

Any ideas what’s causing this or how to fix it?

Hi Collin, can you let me know what version of openHAB you are running? Also can you verify that your username and password work on the iAqualink website? Even if your mobile app is working, i would try logging in anyways on the web to verify they are not asking you to accept some terms or something (i seem to remember that happening once)

I was also having the trouble mentioned in this post. After upgrading to latest I’m now seeing the error “HANDLER_MISSING_ERROR”.

Nevermind all I needed was a reboot.

I had a similar connection issue, and can report that upgrading to OH 3.4 fixed it for me. Thanks for getting the update into the release stream!
It may be related, but none of the aux channels are showing up. I have lights on two of the Aux relays, and I can control them with the iAqualink interface, but they do not appear to be discovered by the binding. Any thoughts?

Hi, I’ve just today installed this binding to control our Zodiac heat pump. Configuration of the respective thing should be pretty straight, right?

Thing iaqualink:controller:pool_heatpump [ userName="xxxxx", password="xxxxx" ]

However, the connections always stays in offline mode. I know that the backend of Zodiac seems to be very unreliable, sometimes the App does not get a refreshment for hours. This morning however all is working good in the app, but not with the binding.

Running OH 3.4 on a Raspberry with the binding installed via OH. I’ve set the logging of the binding to trace, following output.

023-04-17 13:05:14.316 [TRACE] [qualink.internal.api.IAqualinkClient] - Trying https://p-api.iaqualink.net/v1/mobile/session.json?actionID=command&command=get_home&serial=JX21160121&sessionID=800T4FMK7IOI2UJ8VH0EZ7D6P276PR9C
2023-04-17 13:05:14.664 [TRACE] [qualink.internal.api.IAqualinkClient] - Response HttpContentResponse[HTTP/1.1 200 OK - 579 bytes]

So the 30 second poll rate seems to get honored as I see the above every 30 seconds, but the binding is right now “OFFLINE” while it’s online with the app.

Thanks,
Soeren

And just tried something more: I put the URL from the log file into my browser and got back the following JSON, so I assume the credentials are working. Serial is however not the serial of the pump and all other fields are empty, so I don’t know what’s happening here, thanks for any help.

{"message":"","serial":"JX21160121","home_screen":[{"status":"Offline"},{"response":"Error"},{"system_type":""},{"temp_scale":""},{"spa_temp":""},{"pool_temp":""},{"air_temp":""},{"spa_set_point":""},{"pool_set_point":""},{"cover_pool":""},{"freeze_protection":""},{"spa_pump":""},{"pool_pump":""},{"spa_heater":""},{"pool_heater":""},{"solar_heater":""},{"spa_salinity":""},{"pool_salinity":""},{"orp":""},{"ph":""},{"is_icl_present":"absent"},{"icl_custom_color_info":[]},{"heatpump_info":{}},{"pool_chill_set_point":""},{"swc_info":{"isswcPresent":false}},{"relay_count":""}]}

That was very helpful, looking at the response you can see the following in the JSON

"status": "Offline"

The binding by default uses the first controller under the account, in this case its serial JX21160121 , do you have more then one controller thats under that user name and password? There is an optional parameter serialId you can add to the thing config to specify the specific device to use if there are multiple. I never tested this (and i wrote this quite a long time ago), but put that in there just in case this came up. If you do have multiple, and the first one is not operational, deleting it from iaqualink (if you can) would also probably fix this.

Hi Dan, thanks for looking into this! It confirms my first thoughts, the “status” value was quite obvious ,-) Actually I have two other devices (pool control and a robot), both however are not aqualink cappable, so I absolutely have no clue what is returned here. Maybe the serial is just different internally as what is printed on the sticker outside of the heater. I’ll try fiddle around with it, maybe I find something.
On the long term I want to control anyhow everything with Modbus and also the heater with a shelly device, so the cloud would not be required any more :laughing: