Alors, comme promis, un petit tutoriel :
je n’ai aucune compétence pour faire des requêtes GET, POST, donc pour me facilitée la chose, j’ai utilisé l’application POSTMAN, je vous la recommande, si comme moi vous n’avez pas les compétences.
L’api d’ICO est plus sécurisé que celle de FILPR.
Sous POSTMAN, il vous faudra crée 2 onglets
un onglet GET qui va nous servir à générer notre requête GET, il faudra le renseigner comme ceci :
Dans le champ a coté de GET, il faudra renseigner :
https://interop.ondilo.com/oauth2/authorize
Une fois tout les champs de l’onglet PARAM renseigné, POSTMAN va vous compléter la ligne a coté de GET, il n’y aura plus qu’ à la copier coller dans votre navigateur.
Vous devriez obtenir qq chose comme ca :
https://interop.ondilo.com/oauth2/authorize?client_id=customer_api&response_type=code&redirect_uri=https://VOTRE_URL%2Fauthorize&scope=api&state=c0d45ff768a0
Attention, il vous faut remplir le champ redirect_uri par une URL valide, pour ma par j’ai mis mon adresse IP mais sans le HTTP devant comme ca, il n’y accède pas. D’après ce que j’ai compris, cette adresse sert à renvoyer le code d’acces, mais n’ayant les compétences pour l’intercepter, j’ai procédé autrement.
pour ma part ca a donner ceci :
https://interop.ondilo.com/oauth2/authorize?client_id=customer_api&response_type=code&redirect_uri=mon_URL.freeboxos.fr/index.php?v=m%26p=home&scope=api&state=c0d45ff768a0
Ensuite, il faut crée un 2ème onglet, celui si avec une requête POST, ici il faudra renseigner les champ de l’onglet BODY, comme ci dessous :
Dans le champ a coter de POST, il faudra coller cette Url :
https://interop.ondilo.com/oauth2/token
Une fois Postman Configurer, retourner sous le 1er onglet GET, et copier L’url qu’il vous à généré et coller la dans votre navigateur.
Si tous se passe bien vous devriez avoir ceci :
il faudra ici renseigner votre identifiant ICO et mot de passe, mettre en français, puis valider.
vous devriez alors obtenir ceci :
normalement, si votre adresse était valide, il vous renverrait sur la page que vous aviez renseigné et impossible d’intercepter l’url qui nous intéresse… je sais c’est carrément moche, mais je n’ai aucune compétence pour faire ca proprement…
on sélectionne l’url de la page ainsi fraichement ouverte, vous devriez avoir une url du genre :
https://interop.ondilo.com/oauth2/mon_URL.freeboxos.fr/index.php?v=m&p=home&code=XXXXXXXXXX&state=c0d45ff768a0
la partie qui nous intéresse est le Code de sécurité XXXXXXXX
Attention se code est valable une 30ène de seconde, copier le.
il vous faudra ensuite retourner sous POSTMAN, et aller dans l’onglet POST puis dans le champs CODE, et coller le code copier précédemment.
Ensuite, cliquer sur SEND, vous devriez obtenir ceci :
Nous voila avec le précieux CESAM… le token qui lui est valable seulement une heure et surtout le refresh Token lui aussi valable une heure, mais qui nous permet d’avoir un nouveau token sans avoir à refaire toute cette procédure avec le code d’authentification, et donc d’automatiser tout ca avec le script issu de FLIRP.
Enregistrez bien le refresh TOKEN.
Nous allons maintenant interroger l’api d’ICO avec le token que nous venons de générer, j’ai bien dis le token, pas le refresh token, qui lui nous sert à obtenir un nouveau token.
Créé un nouvel onglet sous POSTAM avec une commande GET
dans le champs Authorization, sélectionner BEARER Token dans TYPE.
Renseigner cet URL dans le champ à droite de GET :
https://interop.ondilo.com/api/customer/v1/pools
Puis cliquer sur SEND, vous devriez obtenir ceci :
copier l’id de votre ICO, il sera à coller dans le script.
Alors voila le script :
#! /usr/bin/env python3
import requests, json, codecs
url_token = "https://interop.ondilo.com/oauth2/token"
url_ico = "https://interop.ondilo.com/api/customer/v1/pools/ID_VOTRE-ICO/lastmeasures"
payload_token = "refresh_token=VOTRE_REFRESH_TOKEN&grant_type=refresh_token&client_id=customer_api"
headers_token = {
'Content-Type': "application/x-www-form-urlencoded",
'Cache-Control': "no-cache",
}
response_token = requests.request("POST", url_token, data=payload_token, headers=headers_token)
jsonlist = json.loads(response_token.text)
jsonlist = jsonlist['access_token']
headers_ico = {
'Authorization': "Bearer " + str(jsonlist),
'Cache-Control': "no-cache",
}
response_ico = requests.request("GET", url_ico, headers=headers_ico)
payload = response_ico.text
f = codecs.open('/var/www/html/ico_data.txt', 'w', encoding='utf8')
f.write(payload)
et voila, le plus dur est fait.
Enregistrez votre fichier en .PY
il faut créer un nouveau script sous jeedom en y insérant le nouveau fichier que l’on vien de créer, et créer un fichier ico_data.txt à placer à la racine de jeedom, juste dans le répertoire HTML. je me suis servis de jeexplorer.
Ensuite il vous faudra créer les commande dans le plugin script de cette manière :
il faudra aussi mettre le CRON de votre script sur la valeur dont vous souhaitez, perso j’ai mis sur 15 minutes.
Et je rapatrie toutes mes valeurs via un virtuel sous jeedom.
Voila, j’ai essayé d’être le plus claire possible, alors oui, j’ai utiliser des moyens nous conventionnel et qui choquerai peu être certain pour toute la 1er partie réaliser en manuel, mais je n’ai pas les compétences de faire plus.
N’hésitez pas si vous avez des questions.