Iaqualink API

bonjour,
je fais ce sujet à défaut d’en avoir trouvé un, j’imagine que le matériel n’est pas très répandu au moins pour les possesseurs de Jeedom.
je cherche à récupérer les information d’une électrolyseur Zodiac de la famille EXO.IQ, ces infos sont disponible par une app android : iaqualink.
il existe une api iaqualink un peu nébuleuse car sans documentations, mais déjà bien défloré par d’autres en python. J’arrive donc a récupérer un token avec mon compte IAqua, a récupérer l’identité de mon device, et a le requêter pour obtenir des infos… à le requêter juste…parceque si le retour est propre , il répond offline…ce qui n’est pas le cas dans l’ appli droid ou j’ai bien la température le PH et la salinité (orp plus exactement)
J’ai l’impression que mon enregistrement de matériel chez Zodiac est foireux ( je le vois dans l’accès web de zodiac, là aussi mon device est offine…?) mais le support France ne répond pas sur une Api qui « n’existe pas »…les bougres de sots. je les soupçonne même de vraiment pas savoir quelle existait avant de leur en avoir parlé.
Avant donc d’entrer dans le sujet direct d’intégration dans jeedom, je cherche quelqu’un qui aurait le même genre de matos pour comparer son retour avec le mien, ou si l’un d’entre vous à un e bonne idée dans le genre.
Merci

bonjour,
bon j’ai fini par trouver…mon ignorance…(et puis le message offline au lieu de no authent n’aide pas bcp)
donc pour récupérer l’état du device, il faut obtenir un id token…et le sn du device…qui n’est pas celui marqué dessus …
et passer le idtoken en tant que bearer token. (dans postman par exemple)en curl ça donne:
curl -X GET -H « Host:prod.zodiac-io.com » -H « accept:application/json » -H « authorization:IDTOKEN » -H « accept-encoding:gzip » -H « user-agent:okhttp/3.12.0 » « https://prod.zodiac-io.com/devices/v1/SNDEVICE/shadow »
Ce qui, OH joie, donne :
{

"state": {
    "reported": {
        "vr": "V85W4",
        "aws": {
            "status": "connected",
            "timestamp": 1653805307746,
            "session_id": "ce77d3f8-dcdf-4745-96bd-429f088528c2"
        },
        "hmi": {
            "ff": {
                "fn": "/fluidra-ota-prod/exo/V85W4_OTA.bin",
                "vr": "V85W4",
                "ts": 1652196525,
                "pg": {
                    "fs": 507300,
                    "bd": 507300,
                    "ts": 1652196168815,
                    "te": 1652196524715
                }
            },
            "fw": {
                "fn": "/fluidra-ota-prod/exo/V85W4_OTA.bin",
                "vr": "V85W4"
            }
        },
        "main": {
            "ff": {
                "fn": "/fluidra-ota-prod/exo/V85R70_OTA.bin",
                "vr": "V85R70",
                "ts": 1652196830,
                "pg": {
                    "fs": 402464,
                    "bd": 402464,
                    "ts": 1652196562879,
                    "te": 1652196830738
                }
            }
        },
        "debug": {
            "RSSI": -74,
            "OTA fail": 0,
            "OTA State": 0,
            "Last error": 65278,
            "OTA success": 4,
            "Still alive": 2,
            "OTA fail global": 0,
            "MQTT connection": 2,
            "Version Firmware": "V85W4B0",
            "Nb_Success_Pub_MSG": 74,
            "Nb_Fail_Publish_MSG": 0,
            "Nb_Success_Sub_Receive": 0,
            "MQTT disconnection total": 1,
            "OTA fail by disconnection": 0,
            "Nb reboot du to MQTT issue": 94
        },
        "state": {
            "reported": {
                "debug_main": {
                    "tr": 100
                }
            }
        },
        "equipment": {
            "swc_0": {
                "vr": "V85R70",
                "sn": "ALWA0101132xxxxxxxxx",
                "low": 0,
                "vsp": 1,
                "amp": 1,
                "swc": 50,
                "temp": 1,
                "lang": 1,
                "aux_1": {
                    "mode": 0,
                    "type": "none",
                    "color": 0,
                    "state": 0
                },
                "aux_2": {
                    "mode": 0,
                    "type": "none",
                    "state": 0,
                    "color": 0
                },
                "sns_3": {
                    "state": 1,
                    "value": 21,
                    "sensor_type": "Water temp"
                },
                "boost": 0,
                "ph_sp": 74,
                "sns_1": {
                    "state": 1,
                    "value": 71,
                    "sensor_type": "Ph"
                },
                "sns_2": {
                    "state": 1,
                    "value": 720,
                    "sensor_type": "Orp"
                },
                "aux230": 1,
                "orp_sp": 730,
                "ph_only": 1,
                "version": "V1",
                "swc_low": 10,
                "dual_link": 1,
                "exo_state": 1,
                "boost_time": "24:00",
                "production": 2,
                "error_code": 1,
                "filter_pump": {
                    "type": 0,
                    "state": 0
                },
                "error_state": 1
            }
        },
        "schedules": {
            "sch1": {
                "id": "sch_1",
                "name": "Salt Water Chlorinator 1",
                "timer": {
                    "end": "00:00",
                    "start": "00:00"
                },
                "active": 0,
                "enabled": 0,
                "endpoint": "swc_1"
            },
            "sch2": {
                "id": "sch_2",
                "name": "Salt Water Chlorinator 2",
                "timer": {
                    "end": "00:00",
                    "start": "00:00"
                },
                "active": 0,
                "enabled": 0,
                "endpoint": "swc_2"
            },
            "sch9": {
                "id": "sch_9",
                "name": "Aux 1",
                "timer": {
                    "end": "00:00",
                    "start": "00:00"
                },
                "active": 0,
                "enabled": 0,
                "endpoint": "aux1"
            },
            "sch10": {
                "id": "sch_10",
                "name": "Aux 2",
                "timer": {
                    "end": "00:00",
                    "start": "00:00"
                },
                "active": 0,
                "enabled": 0,
                "endpoint": "aux2"
            },
            "supported": 4,
            "programmed": 0
        },
        "debug_main": {
            "tr": 100
        }
    }

},
« deviceId »: « XXXXXXXXXXXXXXXXX »,
« ts »: 1653817424
}

et maintenant, si quelqu’un a une procédure ou un petit tuto pour depuis jeedom récupérer ça, le mettre en forme et l’afficher ca m’aiderait bien, je n’ai aucune idée de comment faire un plugin.
(avant que je me lance dans node-red parceque « MQTT connection » me parle un peu)

hello,
bon ben j’ai trouvé…enfin dans les grandes lignes, (je ne vous raconte pas ma vie un c’est au cas ou il y aurait un autre gars avec un exo-IQ, qui se demanderais quelle box domotique utiliser avec: Jeedom)

donc j’ai lu MQTT dans le json là et me suis souvenu que j’avais node-red pour récupérer les infos du linky… et du coup:


ça marche…bon il faut que je cherche comment récupérer le token bearer régulièrement pour requêter avec la bonne authent toutes les 3600 s…tout seul dans node-red.
et là encore une fois, si quelqu’un lis ce post (?) comment faites vous ça? si vous le faites par ailleurs?

hello,
j’ai finalement trouvé mon bonheur sur le forum node-red, ou le sympathique Tico avait fait le même chemin, pour le même produit, thks a lot to him:
image
le Zodiac EXO-IQ (comme toute la famille Zodiac Iaqualink) est compatible Jeedom.

Génial. Est ce qu’il y a un plugin ? J’ai un robot connecte sur cette appli que j’aimerai bien piloter via jeedom

Par avance merci

Ehhh…non… :unamused:,C’est trop lourd pour moi et peut être pas assez répandu pour qu’un expérimenté s’y intéresse, c’est pourquoi je suis passé par MQTT…
mais si tu accèdes à
https://prod.zodiac-io.com/users/v1/login
tu pourras récupérer les infos de ton robot…voir lui pousser des ordres avec cette url.
https://prod.zodiac-io.com/devices/v1/« SN_de_ton_robot »/shadow
il y a quelques forums américain qui en parle.

Et tant que j’y suis j’imagine que tous ceux que cela intéresse connaissent mais pour les autres, un site pour décrypter le token que vous aurez récupéré:

Salut,

Je suis encore plus débutant que toi dans tout ces calls API.
Comment trouves tu le token et le SN ?
Et comment l’utiliser avec Postman ?
Sais tu me donner quelques informations qui vont m’aider a démarrer ?

Hello ,
pour le token tu as besoin d’une requête
image
avec ton compte et mot de passe de l’appli mobile iaqualink, l’api_key est tjrs la même.
tu récupères entre autre, alors ton
« ID »
« authentication_token »
la dernière ligne du Json en retour te donne ton token.
pour obtenir ton SN il faut faire une autre requête, (ou l’obtenir dans l’appli web de iaqualink mais c’est plus simple avec postman)


tu créés les Keys dans paramètre et tu leur donne la « value » nécessaire,(n’oublie pas des les cocher) que postman rajoutera derrière l’url (que j’ai noirci vu que c’est mes ident.)
et tu obtiens en autre info « serial_number » (qui naturellement ?! n’est pas celle imprimé sur l’appareil…(ça semble être celle de la carte wifi en fait)

Hello,
Je découvre le sujet, j’ai un Exo IQ LS (version basse salinité), j’avais regardé il y a bien longtemps si je pouvais voir mon électrolyseur sur Jeedom, n’ayant pas trouvé d’API j’avais abandonné.
Merci Vortex tu viens de me redonner espoir, je vais lire à tête reposée comment tu as procédé, mais c’est vraiment super si l’on peut remonter les infos dans Jeedom !

Hello,
je n’y connais pas grand chose en json et postman. Mes les screenshots semblent très clair. J’ai essayé de récupérer mon token et user-id mais sur le premiere requete, je reçois invariablement un message « Missing Authentication token ».

j’ai vérifié 3 fois mon login et mot de passe.

est-ce qu’il y a une astuce que j’ai loupé?

merci d’avance

je t’avoue avoir tâtonner un moment avant d’avoir un résultat, cela supporte mal l’à peu près…
si tu as bien :
POST
dans le body (en laissant les double-cotes):
{
« apiKey » : « EOOEMOW4YR6QNB07 »,
« email »: « LeMaildeIaqualink »,
« password »: « LemotdepassedeIaqualink »
}
et une sortie en JSON.
aucune raison que cela ne marche pas (je viens de faire l’essai cela marche aussi avec EOOEMOW4YR6QNB11)

Ah bonne nouvelle, j’avais peur d’être seul…cela fonctionne très bien dans Jeedom et MQTT tant que tu ne souhaites pas démarrer IQ seul…(je laisse lQ esclave du flux: et c’est la pompe que je démarre) sinon la canicule …ça va.


et au sujet du LowSalt. ils n’ont jamais réussi a m’en trouver un , mais étrangement il y a un menu caché qui permet de baisser la tolérance de la sonde…Et de passer en LS un IQ qui ne l’est pas? je n’ai pas essayé finalement, bien que j’ai trouvé le menu, parce que je pense que cela force l’électrode a plus de jus et diminue sa longévité.)

Hello,

C’est bon je suis parvenu à récupérer les infos du device , Oh Joie ! :slight_smile:
Maintenant il me faut intégrer cela aussi dans jeedom, je sèche un peu tu es passé par quel plugin ?
Merci merci !!!

Bon ben honte sur moi, RTFM.
j’ai mis GET et pas POST, j’ai mélangé les deux images avec les instructions.

donc ca marche, je passe à l’étape suivante.
(pour ma part, le but est d’avoir les infos de la pompe à chaleur)

merci

hello, j’utilise MQTT pour récupérer les infos et les proposer dans Jeedom,
image

Ciao, the API is not working anymore to send commands to the EXO IQ. It seems something has changed but I’m unable to run a sniffer on Aqualink anymore. Can someone help on this? Until last week I was able to switch on/off the chlorinator with this:

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/xxxxxxxx/shadow"

Thanks

Bonjour je dispose d’un exo iq 18 je voulais savoir si il était possible de récupérer les résultats?
J’ai essayer de me connecter au site https://prod.zodiac-io.com/users/v1/login
J ne sais pas comment faire pour rentrer mon Id et mot de passe …

Merci pour votre aide

Salut, il te faut discuter avec l’api, et Postman par exemple, peut servir de traducteur…commence par charger Postman et reprend la discussion au 1er juin, cela devrait le faire (ceux sont des copie écran de Postman.)

Salut Vortex merci pour ton aide

Je viens d’essayer et me dit erreur « message »: « Missing Authentication Token »"

ci joint la capture