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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Viand0x
Messages : 19
Inscription : 07 nov. 2016, 01:27

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

Message 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...
Dernière modification par Viand0x le 15 déc. 2016, 14:42, modifié 1 fois.
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

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

Message 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 .
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Viand0x
Messages : 19
Inscription : 07 nov. 2016, 01:27

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

Message 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.
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

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

Message par rapinou »

Bonsoir,
Pourquoi ne pas vouloir passer par un script ?
Sur quoi est installé ton Domoticz ?
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
Viand0x
Messages : 19
Inscription : 07 nov. 2016, 01:27

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

Message 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.
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

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

Message 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/
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

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

Message par patrice »

et je dirai même plus, un exmple en images ici

https://easydomoticz.com/#textsensor
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Viand0x
Messages : 19
Inscription : 07 nov. 2016, 01:27

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

Message 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...
Viand0x
Messages : 19
Inscription : 07 nov. 2016, 01:27

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

Message 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?
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

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

Message 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.
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
Répondre