Comment faire une requete HTTP en GET avec header , sur une V5?

Salut @tout le monde,

C’est vrai que je suis habituellement peu actif sur le forum, mais je suis client GCE depuis la V3, beta testeur avec actuellement 4 V4 chez moi, et plus je suis passé à la V5 pendant les préventes.

Je viens vers la communauté GCE today, car j’essaie de faire des requetes HTTP en GET (avec header), sur un serveur distant.

Ce serveur distant est le serveur de la société IO Pool, qui contient via API ouvert, toutes les données que ma sonde flottante de piscine IO_Pool Eco product lui envoie toutes les 5 min.

Donc la sonde dans piscine communique en bluetooth avec un relais (passerelle bluetooth / ethernet TCP/IP). Et donc ce relais remonte les infos vers le serveur distant.

J’arrive via le logiciel « insomnia » à faire et envoyer la requete :

HTTP GET sur l’url :
https://api.iopool.com/v1/pool/<mon_ID>

avec comme header :
titre du header : « x-api-key » … et la valeur : <mon_APIKEY>

Actuellement, sur la V5, il n’est pas possbile de mettre des entetes dans les PUSH GET.
J’ai la confirmation de IO_Pool que ce n’est pas possible de concatener (avec une orthographe specifique) l’ID et l’APIKEY, dans l’URL.

Est ce qu’il y aurait une ame charitable qui saurait comment développer la requete javascript dans un widget HTML, pour faire ce PUSH … si toutefois c’est faisable ?

La réponse du serveur est une réponse standard JSON, qui avec une tuile parser sur la V5 pourrait ensuite me permettre d’avoir les 3 valeur suivante de la piscine :

  • temperature de l’eau
  • PH de l’eau
  • ORP de l’eau

Ensuite, pour l’affichage dans le bon liveview, et l’utilisation des valeurs pour piloter mon temps de fonctionnement de la pompe (par rapport à la température de l’eau), ca j’en fait mon affaire.

Je pourrais partager eventuellement ce que j’ai mis en place pour les potentiels intéressés, mais l’urgence du moment, c’est d’arriver à acquérir dans la V5 ces 3 valeurs ANA.

Merci mille foi par avance pour votre aide pour ceux qui sauraient faire et qui voudraient bien m’aider,
:slightly_smiling_face:

Bon W-E @toutes et @tous,
Christophe

Bonjour,
l’API de IOPOOL est simpliste, malheureusement, et ne permet pas la récupération unitaire des valeurs.

le JSON retourné par leur API est imbriqué (j’ai tracé la hiérarchie en rouge)
image

Le Parser de la V5 ne sait pas traiter ce type de fichier.
bonne journée

Salut fgtoul,

Merci beaucoup pour ce prompt retour ; et qui plus est très clair !
:slight_smile:
C’est cool !

Reste plus qu’à notre « marque de coeur à 3 lettres » ;-), à updater les PUSH et PARSER …
LOL
Je dis ca à la volée, mais est ce que s’il est envisagé un jour d’updater les PUSH et les PARSER, pour pouvoir effectuer ces taches de requetes et lecture des info dans la reponse JSON, la V5 serait capable de le faire ?
… ou bien est ce que c’est cause perdue d’avance ?
@Pluch
Chri

rien n’est bloqué :slight_smile:
En attendant, un script externe peut faire le taff.

Pour info,

Suite des évènements :slight_smile: 1ere étape :

Code PHP à mettre sur un serveur à part …
(Un grand merci à Marc Guyard de chez IO_Pool qui a développé cette requete PHP)

<?php // Request iopool API $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.iopool.com/v1/pool/', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'x-api-key: ' ), )); $response = curl_exec($curl); curl_close($curl); // Parse JSON $jsonDecoded = json_decode($response, true); // Flatten JSON $flatten = new RecursiveIteratorIterator(new RecursiveArrayIterator($jsonDecoded)); $flattenOutput = array(); foreach($flatten as $key => $value) { $flattenOutput[$key] = $value; } // Return a flatten JSON echo json_encode($flattenOutput, JSON_PRETTY_PRINT); -------------------------- Ca retourne ceci : { "id": "", "title": "Cléa", "temperature": 21.568278169673192, "ph": 8.379251700680273, "orp": 290, "mode": "STANDARD", "isValid": true, "ecoId": "BO4DPlOF", "measuredAt": "2022-03-28T12:18:00.000Z", "hasAnActionRequired": true, "filtrationDuration": 7 } La sonde est pour les essaies, dans un verre d'eau du robinet ... => Maintenant, reste à savoir comment on fait pour récupérer cette valeur sur une V5 ? (actuellement sur le server PHP indépendant qui fait la requete HTTP au server IO_Pool)