Page 1 sur 2

[API] Récupération de données via API externe

Publié : 05 déc. 2016, 21:43
par Viand0x
Bonjour,

Je suis tout nouveau dans le domaine de Domoticz et j'ai plein de questions qui m’interrogent :D

Je possède un poêle Palazzetti branché à une connexion box (c'est le nom du boitier fourni par le fabricant pour communiquer avec le poêle via son application). Cette box est également pilotable via une API comme expliqué ici : http://palazzetti.lola.free.fr/forum/vi ... ?f=9&t=581
On voit d'ailleurs sur cette page la façon de récupérer des valeurs avec Jeedom.

Ma question est simple : est-il possible de récupérer les données de l'api via l'interface web ou est-on obligé de passer par un script?

J'ai créé un périphérique vituel, modifié le lien dans "envoi de données" méthode GET. Naïvement je pensais pouvoir récupérer de cette façon la valeur dans mon périphérique virtuel mais apparemment c'est pas possible, ou alors ma syntaxe n'est pas la bonne...

Re: [API] Récupération de données via API externe

Publié : 05 déc. 2016, 23:02
par patrice
Bonsoir
Via la méthode que tu cites , celle du http tu peux envoyer des commandes , la methode de lecture te renvoie des valeurs qu'il faudra traiter dans un script quelconque.

Deja sans parler de script , familiarise toit avec les commandes a passer et balance ça dans la barre d'adresse d'un navigateur , ti verras bien le retour que te fais la machine de l'autre coté
tien nous au courant des avancées .

Re: [API] Récupération de données via API externe

Publié : 06 déc. 2016, 00:57
par Viand0x
Bonsoir,
En fait les commandes à passer sont bien documentées, je sais quelles variables récupérer, mais je ne sais pas comment le faire simplement, sans passer par un script.
la commande est de type : sendmsg.php?cmd=
ma commande : GET ALLS
Le résultat de tout ça donne :

Code : Tout sélectionner

{
	"Info": {
		"RSP": "OK",
		"TS": "2016-12-03 03:27:35"
	},
	"All Data": {
		"MBTYPE":	 0,
		"MAC":	 "78:25:44:7F:7B:55",
		"MOD":	 306,
		"VER":	 35,
		"FWDATE":	 "2014-04-17",
		"STOVE_DATETIME":	 "2016-12-06 00:51:30",
		"STOVE_WDAY":	 2,
		"STATUS":	 1,
		"SETP":	 22.0,
		"PUMP_RATE":	 0,
		"PELLET_QTUSED":	 1469,
		"FAN_FAN1V":	 0,
		"FAN_FAN1RPM":	 0,
		"FAN_FAN2LEVEL":	 0,
		"FAN_FAN2V":	 0,
		"POWER":	 2,
		"FEEDER":	 0.0,
		"DP_TARGET":	 0,
		"DP_PRESS":	 125,
		"IN_I01":	 1,
		"IN_I02":	 0,
		"IN_I03":	 1,
		"IN_I04":	 1,
		"OUT_O01":	 0,
		"OUT_O02":	 0,
		"OUT_O03":	 0,
		"OUT_O04":	 0,
		"OUT_O05":	 0,
		"OUT_O06":	 0,
		"OUT_O07":	 0,
		"TMP_ROOM_WATER":	 20.1,
		"TMP_PELLET_BACKW":	 24.7,
		"TMP_EXHAUST":	 32.0,
		"TMP_CC":	 0.0,
		"TMP_ROOM_IDRO":	 0.0
	}
}
Et la variable qui m'intéresse est : "PELLET_QTUSED": 1469,
Mon but est de l'intégrer dans un compteur.

Re: [API] Récupération de données via API externe

Publié : 06 déc. 2016, 01:14
par rapinou
Bonsoir,
Pourquoi ne pas vouloir passer par un script ?
Sur quoi est installé ton Domoticz ?

Re: [API] Récupération de données via API externe

Publié : 06 déc. 2016, 15:53
par Viand0x
C'est juste que je ne suis pas très calé en script, donc je cherche des solutions à ma portée. (Quoique je devrai faire un bon développeur, il parait qu'un bon développeur est fainéant :P ). Mon domoticz est installé sur un PI3.

Re: [API] Récupération de données via API externe

Publié : 06 déc. 2016, 16:28
par rapinou
S'il s'agit seulement de récupérer des données, c'est assez simple même en script. Le plus compliqué pour moi quand je m'y suis mis, c'était de bien comprendre la syntaxe des différentes commandes.

Installe tout d'abord "jq" sur ton Pi pour parser les données.

Un exemple pour débuter ton script :

Code : Tout sélectionner

#!/bin/bash
# On récupère la variable :
var_pellet=$(curl -s "ta_commande_http" | jq -r '.All%20Data[].PELLET_QTUSED')
Pour passer ensuite ta variable dans un compteur simple, il faut récupérer la valeur initiale du compteur, y ajouter la valeur de ta variable, et réinjecter le total dans le compteur.

Tu peux regarder ici pour t'aider :
- API Domoticz : https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's
- jq : https://stedolan.github.io/jq/manual/

Re: [API] Récupération de données via API externe

Publié : 06 déc. 2016, 20:34
par patrice
et je dirai même plus, un exmple en images ici

https://easydomoticz.com/#textsensor

Re: [API] Récupération de données via API externe

Publié : 07 déc. 2016, 21:13
par Viand0x
Merci à vous 2, j'y vois un peu plus clair, je vais pouvoir avancer! Je vous tiendrai informés de mes avancées en script...

Re: [API] Récupération de données via API externe

Publié : 14 déc. 2016, 23:57
par Viand0x
J'avance, j'avance... j'ai étudié un peu jq et j'ai réussi à isoler la valeur qui m'intéresse. voilà le script que j'ai adapté

Code : Tout sélectionner

#!/bin/bash
# On récupère la variable :
var_pellet=$(curl -s "http://192.168.1.XXX/sendmsg.php?cmd=GET%20ALLS" | jq '. | ."All Data".PELLET_QTUSED')

# On envoie la variable vers le compteur domoticz :
curl -s "http://192.168.1.YYY:8080/json.htm?type=command&param=udevice&idx=43&svalue=$var_pellet"

Où XXX est l'ip du poêle et YYY l'ip de domoticz.

Sauf que ça ne m'indique que la quantité totale consommée, je préfèrerais avoir la consommation journalière ou heure par heure. Je ne vois pas comment faire ça? Par un script bash ça me parait compliqué, peut être en passant par une variable intermédiaire dans domoticz?

Re: [API] Récupération de données via API externe

Publié : 15 déc. 2016, 13:51
par rapinou
Vu que ta requête ne renvoie que le total des pellets, pourquoi pas un script lancé chaque heure pour calculer le delta ?

Exemple :

- Valeur total pellets à H : 1124 (tu l'enregistres dans une variable domoticz pour la récupérer l'heure suivante).
- Valeur total pellets à H+1 : 1185

Tu calcules la différence dans ton script : 1185 - 1124 = 61
Et tu renvoies le delta dans ton compteur.

Pour lancer ton script toutes les heures ou tous les jours, tu peux utiliser crontab.