Analyse de la donnée. Partie 2 : Tests basiques de l’API Jeedom
Cet article est le deuxième concernant l’analyse de donnée. Les précédents articles sont disponibles ici :
- Partie 1 : installation des outils
Même si vous y voyez peu de différence, l’article a entièrement été écrit dans un notebook jupyter. Il a été ensuite transféré vers ce blog sous WordPress. Les zones nommées In [ ] correspondent donc au code Python qui a été exécuté. La sortie de ce code apparaît juste en dessous.
C’est le moment de faire le lien avec la domotique : c’est cette dernière qui va nous ramener la matière de base, de la donnée à traiter. Cette donnée sera en l’occurence fournie pour un contrôleur domotique Jeedom.
Dans ce premier article nous allons donc tester également l’API de Jeedom qui permet de réaliser de multiples actions depuis un programme extérieur au système.
Les essais sont décomposés en deux étapes :
- Deux tests basiques et très rapides de Jupyter & Python
- Des tests basiques de l’API Jeedom
Tests basiques Jupyter & Python¶
Essai basique : récupérer les infos de python¶
Premier pas Jupyter+python : affichons la version de python que nous allons utiliser.
import sys
print("Python version")
print (sys.version)
print("Version info.")
print (sys.version_info)
Afficher un graphique¶
Affichage d’un graphique très simple avec des données time et position générées localement.
%matplotlib inline
import matplotlib.pyplot as plt
time = [0, 1, 2, 3]
position = [0, 50, 200, 300]
plt.plot(time, position)
plt.xlabel('Time (hr)')
plt.ylabel('Position (km)')
Tests basiques de l’API Jeedom¶
J’avais au préalable réalisé quelques tests d’appels à l’API Jeedom avec l’outil Postman. Il s’agit de transformer ces essais en petits programmes python pour tester l’extractions des données dont on aura besoin par la suite.
Paramètres Jeedom¶
Il s’agit des paramètres nécessaires pour accéder à l’API Jeedom : l’URL et la clé API. Cette dernière peut être récupérée dans l’interface de contrôle de Jeedom. Je vais me permettre pour cette partie de cacher mes données personnelles !
adresse_API = 'http://adresse.ip.jeedom/core/api/jeeApi.php'
Api_key = 'code API'
Récupérer la valeur courante d’un périphérique¶
Le plus simple : récupérer la valeur courante de quelques périphériques Jeedom.
import urllib.request
import json
def Jeedom_execCmd(id):
parameters = {
"jsonrpc" : "2.0",
"method" : "cmd::execCmd",
"params": {
"id" : id,
"apikey": Api_key
}
}
params = json.dumps(parameters).encode('utf8')
req = urllib.request.Request(adresse_API, data=params, headers={'Content-Type': 'application/json'})
response = urllib.request.urlopen(req)
print(response.read().decode('utf8'))
Jeedom_execCmd(214)
Jeedom_execCmd(1801)
Jeedom_execCmd(2626)
Récupérer la valeur à une certaine date¶
Un peu plus compliqué : récupérer la valeur d’un périphérique à une certaine date / heure.
import urllib.request
import json
def Jeedom_getoldvalue(id, start,stop):
parameters = {
"jsonrpc" : "2.0",
"method" : "cmd::getStatistique",
"params": {
"id" : id,
"apikey": Api_key,
"startTime": start,
"endTime": stop
}
}
params = json.dumps(parameters).encode('utf8')
req = urllib.request.Request(adresse_API, data=params, headers={'Content-Type': 'application/json'})
response = urllib.request.urlopen(req)
return response.read().decode('utf8')
oldvalue_phase=Jeedom_getoldvalue(2626,"2020-02-07 00:00:00","2020-02-08 00:00:00")
print(oldvalue_phase)
Récupérer la dernière valeur dans la réponse au format json¶
La réponse à nos requètes est au format json. Récupérons la valeur numérique qui nous intéresse dans cette réponse.
datas = json.loads(oldvalue_phase)
datas2 = datas['result']['last']
print(datas2)