J’ai 5 scripts python qui sont appelés (pour certains) par ces scénarios :
#!/usr/bin/python
import logging
import requests
import time
import os
import json
URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›
clim1_authenticationId = 1947 #ID de la commande dans le virtuel
method = « POST »
url = « https://user-field-eu.aylanetworks.com/users/sign_in.json »
data = ‹ {« user »:{« email »:« [votre addresse email] »,« password »:« [votre mot de passe] »,« application »:{« app_id »:« FGLair-eu-id »,« app_secret »:« FGLair-eu-gpFbVBRoiJ8E3QWJ-QRULLL3j3U »}}} ›
headers = {
« Content-Type »: « application/json »
}
response = requests.request(method, url, data=data,headers=headers)
response.raise_for_status()
access_token = response.json()[‹ access_token ›]
requestParams = {‹ plugin ›: ‹ virtual ›, ‹ apikey › : API_KEY , ‹ type › : ‹ virtual › , ‹ id › : clim1_authenticationId, ‹ value ›: access_token}
r = requests.post(URL, params=requestParams)
print access_token
#!/usr/bin/python
import sys
import logging
import requests
import time
import os
import json
token = sys.argv[1]
URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›
method = « GET »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/devices.json ›
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}
response = requests.request(method, url, headers=headers)
response.raise_for_status()
result = response.json()
print result
- refreshDeviceProperties.py :
#!/usr/bin/python
import sys
import logging
import requests
import time
import os
import json
token = sys.argv[1]
deviceId = sys.argv[2]
URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›
method = « GET »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/dsns/%s/properties.json › % deviceId
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}
response = requests.request(method, url, headers=headers)
response.raise_for_status()
result = response.json()
for value in result:
if value[‹ property ›][‹ name ›] == ‹ operation_mode ›:
requestParams = {‹ plugin ›: ‹ virtual ›, ‹ apikey › : API_KEY , ‹ type › : ‹ virtual › , ‹ id › : « 1935 », ‹ value ›: value[‹ property ›][‹ value ›]}
r = requests.post(URL, params=requestParams)
print « end »
#!/usr/bin/python
import sys
import logging
import requests
import time
import os
import json
token = sys.argv[1]
propertyKey = sys.argv[2]
propertyValue = sys.argv[3]
method = « POST »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/properties/%s/datapoints.json › % propertyKey
data = ‹ {« datapoint »: {« value »: %s}} › % propertyValue
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}
response = requests.request(method, url, data=data,headers=headers)
response.raise_for_status()
print ‹ token=%s key=%s value=%s › % (token, propertyKey, propertyValue)
#!/usr/bin/python
import sys
import logging
import requests
import time
import os
import json
token = sys.argv[1]
deviceId = sys.argv[2]
URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›
method = « GET »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/dsns/%s/properties.json › % deviceId
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}
response = requests.request(method, url, headers=headers)
response.raise_for_status()
result = response.json()
print result
En gros, la première chose à faire est de récupérer le token avec le script authentication.py (en modifiant le script et en mettant mail et mot de passe).
Ce script nous permet de récupérer le token.
Ensuite, on peut récupérer la liste des appareils disponibles sur ce compte en lançant le script getDevices.py (en passant en paramètre le token).
Ce script nous permet de récupérer le deviceId.
Ensuite, on peut récupérer la listes des propriétés de l’appareil précédemment reconnu en lançant le script getDeviceProperties.py (en passant en paramètre le token et deviceId).
Ce script nous permet de récupérer tous les ids des propriétés disponible en réglage dans la climatisation. Actuellement, j’ai uniquement fait le démarrage et l’extinction en agissant sur la propriété nommé « operation_mode »
Les deux scripts getDevices.py et getDeviceProperties.py sont lancés à la main car une fois les ids récupérés, ils n’ont plus aucun intérêt.
Le fonctionnement reste encore à finaliser mais le principe est la.
J’aurai préféré un plugin pour faire tous ça, mais j’ai comme l’impression que c’est un peu compliqué.