Iaqualink - problème de connexion

Bonjour,
J’ai des modules iaqualink auxquels j’accède sans problème via l’app dédiée. J’ai voulu les intégrer dans home assistant via l’intégration Jandy iaqualink. Lors de l’intégration, après introduction du compte et du mot de passe, le message « configuration créée avec succès » s’affiche, mais l’intégration affiche une erreur et le fichier journal indique:

No systems detected or supported

17:18:06 – (ERREUR) Jandy iAqualink - message survenu pour la première fois à 16:24:30.

vr is not a supported system type.

17:18:06 – (AVERTISSEMENT) components/iaqualink/init.py - message survenu pour la première fois à 16:24:30.

J’ai recommencé sans succès.

Je tourne sur un raspeberry pi4.

Home Assistant 2023.2.1
Supervisor 2023.01.1
Operating System 9.5
Interface utilisateur : 20230202.0 - latest

Salut,

Il y a eu un sujet similaire il y a quelques jours.
TLDR: l’intégration ne marche pas avec tous les systèmes.

Salut PWO108 tu as quoi comme module iqualink?

J’ai les même erreur que toi moi j’utilise un exo iq 18.

Il faut passer par postman pour récupérer les valeur et les intégrer en MQTT dans HA mais je n’ai pas assez de compétence pour récupérer les variables

le lien
https://prod.zodiac-io.com/users/v1/login

Api Key est toujours la même tu dois mettre ton email et mot de passe de ton application iaqulink
6bfc71c2e39afa4d20ce3bbe25fad8c4fc7de8e4

Ensuite tu récupere ton Token et user id

et après je bloque pour récupérer le reste

Salut,

si c’est ça, c’est plus côté REST que MQTT qu’il faut regarder dans HA.
En gros c’est refaire ce que fait l’intégration mais par toi même.
Un bon petit projet en perspective :slight_smile:

J’ai un hydroxinator iQ, installé en septembre dernier.
Quand je suis ton lien, j’arrive sur « {« message »:« Missing Authentication Token »} »
Par contre, je suis encore loin du niveau de compétence requis pour écrire une intégration !
Est-ce que l’auteur de l’intégration existante ne voudrait pas la mettre à jour ?
Pour info, l’app iAqualink de Zodiac récupère parfaitement les données de mon iQ.

Oui c’est normal que tu as ce message il faut que tu installe postmann sur ton pc
https://www.postman.com/downloads/

Ensuite rentrer les info de mon précédent post

J’ai écris un message a l’auteur mais a ce jour toujours pas eu de réponse.
Oui chez moi l’app zodiac fonctionne parfaitement mais j’aimerais l’intégrer les valeurs dans HA

Salut AlexHass

Je suis entrain d’essayer de comprendre RESTful mais je ne comprends pas quoi intégrer dans le fichier yaml?
Je dois mettre ceci? en rajoutant mon ID et MDP?
`

# Example configuration.yaml entry
rest:
  - authentication: basic
    username: "admin"
    password: "password"
    scan_interval: 60
    resource: https://prod.zodiac-io.com/users/v1/login 
    sensor:
      - name: "Adult Pool Data System"
        json_attributes_path: "$.response.system"
        value_template: "OK"
        json_attributes:
          - "runstate"
          - "model"
          - "opmode"
          - "freeze"
          - "time"
          - "sensor1"
          - "sensor2"
          - "sensor3"
          - "sensor4"
          - "sensor5"
          - "version"
      - name: "Adult Pool Data Equipment"
        json_attributes_path: "$.response.equipment"
        value_template: "OK"
        json_attributes:
          - "circuit1"
          - "circuit2"
          - "circuit3"
          - "circuit4"
          - "circuit5"
          - "circuit6"
          - "circuit7"
          - "circuit8"
      - name: "Adult Pool Data Temp"
        json_attributes_path: "$.response.temp"
        value_template: "OK"
        json_attributes:
          - "htstatus"
          - "poolsp"
          - "spasp"
          - "pooltemp"
          - "spatemp"
          - "airtemp"
  - authentication: basic
    username: "admin"
    password: "password"
    scan_interval: 60
    resource: "http://192.168.1.13/status.xml"
    sensor:
      - name: "Kiddie Pool Data System"
        json_attributes_path: "$.response.system"
        value_template: "OK"
        json_attributes:
          - "runstate"
          - "model"
          - "opmode"
          - "freeze"
          - "time"
          - "sensor1"
          - "sensor2"
          - "sensor3"
          - "sensor4"
          - "version"
      - name: "Kiddie Pool Data Equipment"
        json_attributes_path: "$.response.equipment"
        value_template: "OK"
        json_attributes:
          - "circuit1"
          - "circuit2"
          - "circuit3"
          - "circuit4"
          - "circuit5"
          - "circuit6"
          - "circuit7"
          - "circuit8"
      - name: "Kiddie Pool Data Temp"
        json_attributes_path: "$.response.temp"
        value_template: "OK"
        json_attributes:
          - "htstatus"
          - "poolsp"
          - "spasp"
          - "pooltemp"
          - "spatemp"
          - "airtemp"

`

Désolé je n’ai jamais eu à utiliser une intégration de ce type là avec HA.
Mais ça semble pas trop mal, les histoires d’authentification dépendent de l’appareil… il faudra voir les logs pour avec des exemples de réponses.

Sinon avec une appli sur PC comme Postman ou l’extension de navigateur RESTer y’a moyen de tester ce qui va ou pas et comment les pwd sont passés

Pour l’instant je suis sur Postmann mais je n’arrive pas a récupérer les infos de mon exo température par exemple

je suis bloqué a cette étape j’ai récupérer les info de mon exo

Lorsque je fais l’appel API via postman pour obtenir le token, je reçois en retour

"message": "Missing Authentication Token".

Idée ?

tu as bien mis post dans l’url
Sortie JSON

et bien ceci dans le body

je viens d’essayer ca fonctionne chez moi

Merci, j’avais get au lieu de post (première fois que j’essayais postman) !
Voici le résultat:
[

    "id": XXXXX,
    "serial_number": "XXXXXX",
    "created_at": "2023-02-03T12:26:56.000Z",
    "updated_at": "2023-02-03T12:26:56.000Z",
    "name": "Zodiac hydroxynateur",
    "device_type": "exo",
    "owner_id": XXXX,
    "updating": false,
    "firmware_version": null,
    "target_firmware_version": null,
    "update_firmware_start_at": null,
    "last_activity_at": null
}

]

J’imagine que l’exo aurait du envoyer son état logiciel ainsi que ses données. A ce stade, je suis bloqué comme steevy.

Oui tu as le même résultats que moi.
Apres je sais pas si il faut faire une autre requetes pour avoir plus d’infos qui nous intéressent…
Le serial number correspond a celui de l’application iaqualink?

Je viens de trouver un lien sur le forum HA anglais j’essayerais demain
https://community.home-assistant.io/t/jandy-iaqualink-pool-integration/105633/363
https://github.com/flz/iaqualink-py/discussions/16#discussioncomment-3269108

As-tu essayé ? résultat ?
Merci

non je ne trouve pas mon dossier iaqualink sur HA

je viens d’essayer mais je n’arrive pas a installer

j’ai cette erreur

Hello, je suis devant la même problématique que vous avec mon Exo IQ qui n’est pas « un système supporté ». Pas encore trouvé pour Home assistant, mais y’a pas mal d’infos sur un forum jeedom pour comment récupérer les infos si ca peut aider :

Bonjour, sur le forum international, j’ai fini par trouver la solution avec NodeRED pour connecter home assistant à mon chlorinator Zodiac eXO et ma pompe à chaleur Z400 iQ : Jandy iAqualink Pool Integration - #378 by Tico - Custom Integrations - Home Assistant Community

image

Ah cool
Je viens de suivre ton liens mais je n’arrive pas

c’est bien ce node que tu as pris?
j’ai modifier mail et MDP et mon api key

[{"id":"1e47a52e3f1755e1","type":"inject","z":"0ae35cdfe7f81cdd","name":"Every hour","repeat":"3540","crontab":"","once":true,"onceDelay":"60","topic":"","payload":"","payloadType":"date","x":110,"y":80,"wires":[["6808aab954fc8b01"]]},{"id":"7849f0c750568181","type":"http request","z":"0ae35cdfe7f81cdd","name":"","method":"use","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":590,"y":80,"wires":[["18bf3f43ad2e6aa4"]]},{"id":"18bf3f43ad2e6aa4","type":"change","z":"0ae35cdfe7f81cdd","name":"IDToken","rules":[{"t":"move","p":"payload.userPoolOAuth.IdToken","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":80,"wires":[["ea244732498b9412"]]},{"id":"6808aab954fc8b01","type":"function","z":"0ae35cdfe7f81cdd","name":"Format Post Request","func":"msg.method = 'POST';\nmsg.headers = {};\nmsg.headers['Host'] = 'prod.zodiac-io.com';\nmsg.headers['accept'] = 'application/json';\nmsg.headers['content-type'] = 'application/json';\nmsg.headers['accept-encoding'] = 'gzip';\nmsg.headers['user-agent'] = 'okhttp/3.12.0';\nmsg.url = 'https://prod.zodiac-io.com/users/v1/login';\nmsg.payload = '{\"api_key\":\"yourapikeyhere\", \"email\":\"youremail@address.com\", \"password\":\"youriAqualinkpassword\"}';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":80,"wires":[["7849f0c750568181"]]},{"id":"ea244732498b9412","type":"function","z":"0ae35cdfe7f81cdd","name":"Set variable IDToken","func":"global.set(\"IDToken\",msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1060,"y":80,"wires":[[]]},{"id":"dcd9bc84914a71f6","type":"http request","z":"0ae35cdfe7f81cdd","name":"Chlorinator","method":"use","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":590,"y":400,"wires":[["02b59259a14e8461","b8075e9783a1eb4f","f0bb9145a81ce74a","eba07f6046f035d6","4ac01fee0ba334b1","018a8ddf5da0b1f2","9c4298d655076b55"]]},{"id":"9df6c312e595c863","type":"function","z":"0ae35cdfe7f81cdd","name":"Format Get Request","func":"let bearer = global.get(\"IDToken\");\nmsg.method = 'GET';\nmsg.headers = {};\nmsg.headers['Host'] = 'prod.zodiac-io.com';\nmsg.headers['accept'] = 'application/json';\nmsg.headers['authorization'] = bearer;\nmsg.headers['accept-encoding'] = 'gzip';\nmsg.headers['user-agent'] = 'okhttp/3.12.0';\nmsg.url = 'https://prod.zodiac-io.com/devices/v1/yourDeviceIDhere/shadow';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":400,"wires":[["dcd9bc84914a71f6"]]},{"id":"a56824124abf6deb","type":"inject","z":"0ae35cdfe7f81cdd","name":"Every 10 mins","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"600","crontab":"","once":true,"onceDelay":"300","topic":"","payloadType":"date","x":120,"y":400,"wires":[["9df6c312e595c863","295782e3c29ee112"]]},{"id":"02b59259a14e8461","type":"change","z":"0ae35cdfe7f81cdd","name":"ORP","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.sns_2.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":320,"wires":[[]]},{"id":"b8075e9783a1eb4f","type":"change","z":"0ae35cdfe7f81cdd","name":"pH","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.sns_1.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":160,"wires":[["0e3f2e3e62511c3a"]]},{"id":"f0bb9145a81ce74a","type":"change","z":"0ae35cdfe7f81cdd","name":"Filter Temp","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.sns_3.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":480,"wires":[[]]},{"id":"0e3f2e3e62511c3a","type":"range","z":"0ae35cdfe7f81cdd","minin":"0","maxin":"10","minout":"0","maxout":"1","action":"scale","round":false,"property":"payload","name":"Divide by 10","x":1030,"y":160,"wires":[[]]},{"id":"eba07f6046f035d6","type":"change","z":"0ae35cdfe7f81cdd","name":"ORP Setpoint","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.orp_sp","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":400,"wires":[[]]},{"id":"4ac01fee0ba334b1","type":"change","z":"0ae35cdfe7f81cdd","name":"pH Setpoint","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.ph_sp","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":240,"wires":[["874e523fa6c7da37"]]},{"id":"874e523fa6c7da37","type":"range","z":"0ae35cdfe7f81cdd","minin":"0","maxin":"10","minout":"0","maxout":"1","action":"scale","round":false,"property":"payload","name":"Divide by 10","x":1030,"y":240,"wires":[[]]},{"id":"018a8ddf5da0b1f2","type":"change","z":"0ae35cdfe7f81cdd","name":"Zodiac Error Code","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.error_code","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":560,"wires":[[]]},{"id":"e64f08a15e168247","type":"function","z":"0ae35cdfe7f81cdd","name":"Format Get Request","func":"let bearer = global.get(\"IDToken\");\nmsg.method = 'GET';\nmsg.headers = {};\nmsg.headers['Host'] = 'prod.zodiac-io.com';\nmsg.headers['accept'] = 'application/json';\nmsg.headers['authorization'] = bearer;\nmsg.headers['accept-encoding'] = 'gzip';\nmsg.headers['user-agent'] = 'okhttp/3.12.0';\nmsg.url = 'https://prod.zodiac-io.com/devices/v1/yourDeviceIDhere/shadow';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":720,"wires":[["c6ca1d3e24bfb92e"]]},{"id":"c6ca1d3e24bfb92e","type":"http request","z":"0ae35cdfe7f81cdd","name":"Heat Pump","method":"use","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":590,"y":720,"wires":[["8b1cfc1cd0be14da","3c3f9237065a8ad6","5c21887674341499","98851fd84020e5da","5df5ed4f4d40d4ef"]]},{"id":"295782e3c29ee112","type":"delay","z":"0ae35cdfe7f81cdd","name":"5 mins","pauseType":"delay","timeout":"5","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":230,"y":560,"wires":[["e64f08a15e168247"]]},{"id":"8b1cfc1cd0be14da","type":"change","z":"0ae35cdfe7f81cdd","name":"Heat Pump Setpoint","rules":[{"t":"move","p":"payload.state.reported.equipment.hp_0.tsp","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":720,"wires":[[]]},{"id":"5c21887674341499","type":"change","z":"0ae35cdfe7f81cdd","name":"Heap Pump Air Temp","rules":[{"t":"move","p":"payload.state.reported.equipment.hp_0.sns_2.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":880,"wires":[[]]},{"id":"3c3f9237065a8ad6","type":"change","z":"0ae35cdfe7f81cdd","name":"Heap Pump Water Temp","rules":[{"t":"move","p":"payload.state.reported.equipment.hp_0.sns_1.value","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":800,"wires":[[]]},{"id":"17a5e515d5f4c27f","type":"inject","z":"0ae35cdfe7f81cdd","name":"Test only","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":100,"y":720,"wires":[["e64f08a15e168247"]]},{"id":"98851fd84020e5da","type":"change","z":"0ae35cdfe7f81cdd","name":"Heat Pump Status","rules":[{"t":"move","p":"payload.state.reported.equipment.hp_0.status","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":960,"wires":[[]]},{"id":"5df5ed4f4d40d4ef","type":"change","z":"0ae35cdfe7f81cdd","name":"Heat Pump Reason","rules":[{"t":"move","p":"payload.state.reported.equipment.hp_0.reason","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":1040,"wires":[[]]},{"id":"9c4298d655076b55","type":"change","z":"0ae35cdfe7f81cdd","name":"Low Setting","rules":[{"t":"move","p":"payload.state.reported.equipment.swc_0.low","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":640,"wires":[[]]}]

ici je rajoute mon id appareil JT2… c’est ca?

(https://prod.zodiac-io.com/devices/v1/JT2......./shadow)

comment as tu fais pour avoir se rendu?

Moi je n’ai pas de pompe a chaleur zodiac c’est juste pour récuperer les valeur Ph, temperature et ORP

merci pour ton aide

salut @steevy , il faut que tu changes aussi les lignes suivantes dans les post et get request
msg.headers['accept-encoding'] = 'gzip';
à changer en
msg.headers['accept-encoding'] = '*';


devient

si tu n’as pas de pompe a chaleur zodiac, tu peux enlever la ligne du bas dans nodered