Home AMX User Forum NetLinx Modules & Duet Modules
Options

iAquaLink Module

We are programming a house with an iAqualink Pool Controller. We are having problems using the AMX Module provided on the website. It is a pretty recent module (2017) so we never worried about it not working. Apparently it can’t start the session.

Here is a telnet session on the NX Master:

(0000078402) Loading 1 Duet Modules.
(0000078649) Memory Available = 446906368 <45056>
(0000080937) Device Access: DA.processNewDevice: {Device-Revision=1.0.0, Device-Category=ip, Device-Make=Zodiac, Physical-Device=0:4:0, objectClass=[Ljava.lang.String;@1d7a0b4, Device-SDKClass=com.amx.duet.devicesdk.PoolSpa, Bundle-Version=1.0.5, Device-Model=iAquaLin
(0000080938) , Duet-Device=41001:1:0, service.id=25, Duet-Module=Zodiac_iAquaLink_Comm_dr1_0_0}
(0000080940) Device Access: loadDrivers: searching for 1 drivers
(0000081506) /opt/amx//bundle/Zodiac_iAquaLink_Comm_dr1_0_0: bundle matches flash file manifest
(0000081650) Memory Available = 446263296 <643072>
(0000081989) [DA_DeviceAccess] INFO org.ops4j.pax.web.service.internal.HttpServiceFactoryImpl - Binding bundle: [BundleImpl[id=32]] to http service
(0000082585) Device Access: DA.processNewDevice: {Device-Make=Zodiac, Duet-Device=41001:1:0, Duet-Revision=1.0.0, Device-Revision=1.0.0, Device-SDKClass=com.amx.duet.devicesdk.PoolSpa, Physical-Device=0:4:0, IGNORE-UNKNOWN-NETLINX-COMMAND=true, Device-Channels=255, Po
(0000082586) l_Time=10000, Device-Levels=42, objectClass=[Ljava.lang.String;@9eb7ff, service.id=28, Duet-Make=Zodiac, Device-Service=com.amx.duet.routers.snapi.ISNAPIRouter, IP_Address=10.0.0.2, Bundle-Version=1.0.5, Has-Notes=false, Timeout_Count=3, Device-Model=iAqu
(0000082586) Link, Duet-Model=iAquaLink, Device-Category=ip}
(0000082588) DriverLocatorSnapiImpl.findDrivers: Device-Service = com.amx.duet.routers.snapi.ISNAPIRouter
(0000082588) DriverLocatorSnapiImpl.findDrivers: defaulting to /javalib/jars/duet/snapirouter
(0000082589) Device Access: loadDrivers: searching for 1 drivers
(0000082589) Device Access: DeviceAccess.loadDrivers: driver already active
(0000082650) Memory Available = 445763584 <499712>
(0000082805) SNAPIRouter: PoolSpaComponent loaded
(0000082823) SNAPIRouter: ModuleComponent loaded
(0000082868) CIpEvent::OnLine 41001:1:1
(0000084649) Memory Available = 445644800 <118784>
(0000086649) Memory Available = 445517824 <126976>
(0000101773) Memory Available = 445505536 <12288>
(0000101783) Memory Available = 445489152 <16384>
(0000101866) Memory Available = 445472768 <16384>
(0000106649) Memory Available = 445386752 <86016>
(0000111649) Memory Available = 445259776 <126976>
(0000114398) Memory Available = 444989440 <270336>
(0000115649) Memory Available = 444588032 <401408>
(0000116291) HttpPost - Response code: 403
(0000116648) Memory Available = 444346368 <241664>
(0000116824) HttpPost - Response code: 403
(0000117134) HttpPost - Response code: 403
(0000121572) Free disk space is at 66 percent
(0000141649) Memory Available = 444235776 <110592>
(0000147657) HttpPost - Response code: 403
(0000148203) HttpPost - Response code: 403
(0000148482) HttpPost - Response code: 403
(0000155484) Memory Available = 444219392 <16384>
(0000155577) Memory Available = 444203008 <16384>
(0000155659) Memory Available = 444186624 <16384>
(0000155674) Memory Available = 444153856 <32768>
(0000161649) Memory Available = 444108800 <45056>
(0000177650) Memory Available = 444084224 <24576>
(0000179006) HttpPost - Response code: 403
(0000191649) Memory Available = 443990016 <94208>
(0000209399) Memory Available = 443219968 <770048>
(0000209586) HttpPost - Response code: 403
(0000210087) HttpPost - Response code: 403
(0000210337) HttpPost - Response code: 403
(0000210649) Memory Available = 443092992 <126976>
(0000211649) Memory Available = 442966016 <126976>
(0000240581) HttpPost - Response code: 403
(0000240837) HttpPost - Response code: 403
(0000240842) HTTP ERROR 401 HAS OCCURRED TOO MANY TIMES.  PLEASE CONFIRM THE USER NAME AND PASSWORD.  MODULE WILL NOT ATTEMPT AGAIN WITHOUT INTERVENTION

Comments

  • Options
    nicolaunicolau Posts: 41
    edited November 2021

    Here below another part of the telnet session turning on debug and sending again the e-mail address and password for the account: (I have removed the e-mail and password)

    (0002658521) PoolSpaComponent:OnHandleDataEvent(41001:1:1,PROPERTY-Email_Address, XXXXXXXXXXXXXXX)
    (0002658522) Zodiac_iAquaLinkPoolSpa: getPoolSpaComponentCount() called
    (0002658522) Zodiac_iAquaLinkPoolSpa: getPoolSpaComponent(1) called
    (0002658524) ModuleComponent:OnHandleDataEvent(41001:1:1,PROPERTY-Email_Address, XXXXXXXXXXXXXXX)
    (0002658524) called setProperty
    (0002658525) Zodiac_iAquaLinkPoolSpa: setProperty(Email_Address,XXXXXXXXXXXXXXX) called
    (0002676234) PoolSpaComponent:OnHandleDataEvent(41001:1:1,PROPERTY-Password, XXXXXXXXXXXXXXX)
    (0002676235) Zodiac_iAquaLinkPoolSpa: getPoolSpaComponentCount() called
    (0002676236) Zodiac_iAquaLinkPoolSpa: getPoolSpaComponent(1) called
    (0002676236) ModuleComponent:OnHandleDataEvent(41001:1:1,PROPERTY-Password, XXXXXXXXXXXXXXX)
    (0002676237) called setProperty
    (0002676237) Zodiac_iAquaLinkPoolSpa: setProperty(Password, XXXXXXXXXXXXXXX) called
    (0002690801) PoolSpaComponent:OnHandleDataEvent(41001:1:1,REINIT)
    (0002690802) Zodiac_iAquaLinkPoolSpa: getPoolSpaComponentCount() called
    (0002690803) Zodiac_iAquaLinkPoolSpa: getPoolSpaComponent(1) called
    (0002690803) ModuleComponent:OnHandleDataEvent(41001:1:1,REINIT)
    (0002690804) called reinitialize
    (0002690804) Zodiac_iAquaLinkPoolSpa: reinitialize in super
    (0002690805) Zodiac_iAquaLinkPoolSpa: setSessionId :
    (0002690806) Zodiac_iAquaLinkPoolSpa: setSerialNumber :
    (0002690806) Zodiac_iAquaLinkPoolSpa: CommManager.reinitialize() called
    (0002690807) Zodiac_iAquaLinkPoolSpa: Polling timeline stopped...
    (0002690807) Zodiac_iAquaLinkPoolSpa: getProperty(Timeout_Count) called
    (0002690808) Zodiac_iAquaLinkPoolSpa: getProperty(Timeout_Count) = 3
    (0002690808) Zodiac_iAquaLinkPoolSpa: lockQueue(false)
    (0002690809) Zodiac_iAquaLinkPoolSpa: resetData() called
    (0002690810) Zodiac_iAquaLinkPoolSpa: reinitialize()
    (0002690810) Zodiac_iAquaLinkPoolSpa: reinitialize() called
    (0002690811) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(1, false)
    (0002690812) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(2, false)
    (0002690812) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(3, false)
    (0002690813) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(4, false)
    (0002690814) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(5, false)
    (0002690814) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(6, false)
    (0002690815) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(7, false)
    (0002690815) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(8, false)
    (0002690816) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(9, false)
    (0002690816) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(10, false)
    (0002690817) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(11, false)
    (0002690817) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(12, false)
    (0002690818) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(13, false)
    (0002690818) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(14, false)
    (0002690819) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(15, false)
    (0002690819) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(16, false)
    (0002690820) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(17, false)
    (0002690820) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(18, false)
    (0002690821) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(19, false)
    (0002690821) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(20, false)
    (0002690822) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(21, false)
    (0002690822) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(22, false)
    (0002690823) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(23, false)
    (0002690823) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(24, false)
    (0002690824) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(25, false)
    (0002690825) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(26, false)
    (0002691158) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(27, false)
    (0002691159) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(28, false)
    (0002691159) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(29, false)
    (0002691160) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(30, false)
    (0002691160) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(31, false)
    (0002691161) Zodiac_iAquaLinkPoolSpa: addPoolSpaAux(32, false)
    (0002691161) Zodiac_iAquaLinkPoolSpa: reinitialize()
    (0002691162) Zodiac_iAquaLinkPoolSpa: handleOnlineEvent()
    (0002691162) Zodiac_iAquaLinkPoolSpa: CommManager.handleOnlineEvent() called
    (0002691163) Zodiac_iAquaLinkPoolSpa: Queue timeline started...
    (0002691163) Zodiac_iAquaLinkPoolSpa: Heartbeat timeline started...
    (0002721163) Zodiac_iAquaLinkPoolSpa: heartbeatEvent() called
    (0002721164) Zodiac_iAquaLinkPoolSpa: GET_SESSION_INFO() called
    (0002721165) Zodiac_iAquaLinkPoolSpa: getProperty(Email_Address) called
    (0002721166) Zodiac_iAquaLinkPoolSpa: getProperty(Password) called
    (0002721166) Zodiac_iAquaLinkPoolSpa: lockQueue(true)
    (0002721168) Zodiac_iAquaLinkPoolSpa: setActiveConnection(true) called.
    (0002721169) Zodiac_iAquaLinkPoolSpa: Requesting address: https://zodiac-api.realtime.io/v1/mobile/session.json
    (0002721170) Zodiac_iAquaLinkPoolSpa: startTimer(tResponseTimer, 10000)
    (0002721437) HttpPost - Response code: 403
    (0002721442) Zodiac_iAquaLinkPoolSpa: Http Error connection input stream failed.
    (0002721443) HTTP ERROR 401 HAS OCCURRED TOO MANY TIMES.  PLEASE CONFIRM THE USER NAME AND PASSWORD.  MODULE WILL NOT ATTEMPT AGAIN WITHOUT INTERVENTION
    (0002731171) Zodiac_iAquaLinkPoolSpa: Response timer timed out.
    (0002731172) Zodiac_iAquaLinkPoolSpa: lockQueue(false)
    (0002731173) Zodiac_iAquaLinkPoolSpa: Response timer timed out 3 consecutive times. Reinitializing module...
    
    ping www.google.com
    PING www.google.com (142.250.78.196): 56 data bytes
                                                       (0002759403) Memory Available = 441982976 <221184>
    64 bytes from 142.250.78.196: seq=0 ttl=115 time=8.287 ms
    64 bytes from 142.250.78.196: seq=1 ttl=115 time=9.893 ms
    
    --- www.google.com ping statistics ---
    2 packets transmitted, 2 packets received, 0% packet loss
    round-trip min/avg/max = 8.287/9.090/9.893 ms
    
  • Options

    As you can see by the session above, the master can access the internet (it is pinging google).
    With the credential I have, we can log on iAqualink website, access the control on the website and on the app.

    Looking on debug messages on telnet session, it seems the module tries to access the following API: https://zodiac-api.realtime.io/v1/mobile/session.json. Searching on the internet, it seems that there’s another way to access that API: https://iaqualink-api.realtime.io/v1/mobile/session.json. But both seem to be working as if you place it on a browser, both reply: {"message":"Forbidden"}.

    It looks like there's Aqualink 1.0, 2.0 and 3.0 but it seems to me that all of them should work for a system. From their website:

    What is iAquaLink? How is iAquaLink 3.0 different from the iAqualink 2.0 or original version?

    iAquaLink is a system that includes a device, a web service, and a set of mobile and web apps to allow pool owners and pool professionals easy, convenient control of the pool or pool/spa system, from web-connected devices. iAquaLink 3.0, iAqualink 2.0 and the first generation iAquaLink provide the same end-user experience. People already using iAquaLink or iAqualink 2.0 will enjoy all the same benefits that iAquaLink 3.0 users will enjoy.

    iAquaLink 3.0 contains Wi-Fi communication enhancements making it easier to connect iAquaLink 2.0 to home Wi-Fi networks. Some of the features include: support for 802.11n, 802.11b & 802.11g and compatibility with popular Mesh routers.

    Does any anyone have experience with this and can help?
    Any missing information that could help I can provide on another message.

    Thanks in advance.

  • Options

    Nicolau, we have heard back from the manufacturer who indicated they have made API changes. They are sending AMX ITG updated documentation and a revision is needed. Once an update is available, it will route through tech support to update your ticket and get you a link.

  • Options

    Thanks Chris.

Sign In or Register to comment.