Sous ce nom barbare ce cache un outil fort pratique dès lors que l’on a besoin de mettre à jour un équipement, une machine, un service avec lequel le dialogue se fait par envoi de commandes http.
L’idée est donc d’envoyer des mesures issues de Domoticz à un quelque chose via http.
Prenons le cas d’un IPX 800 https://easydomoticz.com/ipx800 par exemple ou l’on envoyer des http://192.168.1.74/api/xdevices.json?key=1234&SetC02=+1 pour incrémenter un compteur. Jusqu’à présent il fallait un script bash, python, lua pour mettre l’ipx 800 à jour.
Ou envoyer un sms sur un changement de valeur d’un capteur.
Grâce à httplink c’est Domoticz qui s’en charge tout seul.
A noter, 3 points importants :
- Httplink s’exécute à chaque changement de la valeur en question, attention donc au nombre de sms recus!!.
- Cet envoi n’est pas conditionnel , il s’exécute régulièrement
- On ne peut définir d’un seul destinataire http.
Le principal intérêt de ce httplink est de faire un lien plus simple avec des outils que j’avais décrit ici https://easydomoticz.com/iot-1/ que sont les time series databases. Mais nous verrons cela une autre fois dans un article à venir.
La référence anglophone est ici https://www.domoticz.com/wiki/HttpLink
Configuration
« Réglage/Plus d’options/Envoi de Données/Httplink »
Vous obtenez un écran en 2 parties :
A gauche nous choisirons les variables Domoticz à utiliser, la partie de droite permettra de décrire le format de la chaine http attendue par notre vis à vis.
Prenons ici l’exemple d’envoyer par sms la consommation électrique mesurée par Domoticz, ce n’est pas très malin étant donné que cela va envoyer un sms à chaque changement de valeur, mais cela permettra rapidement de tester.
Les valeurs
Dans la partie gauche il nous faut choisir quelle valeur Domoticz nous voulons envoyer à l’équipement en face.
Il y a un choix « variable globale » ou « périphérique virtuel » dont je n’ai pas compris l’utilité (n’hésitez pas si vous savez :))
J’ai donc pris « variable globale » puis sélectionné le bon capteur ainsi que la valeur à envoyer pour ce capteur. N’oubliez pas que pour un capteur on peut avoir plusieurs valeurs. Ex : un capteur de température peut envoyer aussi la mesure d’humidité.
- Variable cible un texte quelconque. j’ai mis v comme « valeur » mais cela n’a pas d’incidence.
- Inclure l’unité cochez ou pas suivant votre envie
- Cochez « Lien actif » si vous voulez que cela marche 🙂
- Cliquez sur « Ajouter »
- Refaites la manip pour ce même capteur ou un autre si vous voulez envoyer plusieurs messages consécutifs à votre équipement.
On peut donc avoir de nombreuses lignes ici qui enverront autant de commande http distinctes.
Le lien http
La partie de droite va nous permettre de décrire la syntaxe de notre lien http. Vous devez ici respecter le format qu’attend votre périphérique à l’autre bout. Utiliser la doc des API de votre matèriel.
Repronons l’exemple d’envoi de mail par Free https://easydomoticz.com/nouveau-service-sms-pour-les-utilisateurs-de-free-mobile/
On voit qu’il faut envoyer quelque chose comme :
https://smsapi.free-mobile.fr/sendmsg?user=mon_identifiant_sms_free&pass=le_mot_de_passe_free&msg=le message SMS a envoyerGarage Ouverte
Donc dans url je met l’url avec les identifiants et mot de passe puis tout au bout il y a %v %u
https://smsapi.free-mobile.fr/sendmsg?user=identi_free&pass=pass_free&msg=%v %u
Oui d’accord mais pourquoi %v %u ? .
Cela permet à Domoticz d’envoyer la valeur %v suivie de l’unité %u ainsi le sms recu sera 2457458 Watt
On peut envoyer d’autres choses dans les champs URL et DATA telles que :
- %v : Valeur
- %t0 : Timestamp (epoc time in seconds, local time)
- %t1 : Timestamp (epoc time in ms, local time)
- %t2 : Timestamp (epoc time in seconds, UTC)
- %t3 : Timestamp (epoc time in ms UTC)
- %t4 : Timestamp (RFC 3339 format, « YYYY-MM-DDThh:mm:ssZ »
- %D : L’idx du Capteurvice id
- %V : Target Variable
- %u : Unit
- %n : Nom du matériel
- %T0 : Type du capteur
- %T1 : Sous type du capteur
- %h : hostname
Dans le cas étudié ici seul %v et %u sont utilisables, le reste des % peut être utilisé en lien avec des base de données timeseries.
Au final on obtient quelque chose comme cela :
Activez le log pour voir les messages
2016-10-05 12:03:30.265 HttpLink: sending global variable v with value: 29334561.0 2016-10-05 12:03:30.486 HttpLink: response
Voila une première approche du httplink , nosu en verrons des déclinaisons liées aux time series databases dans un autre article.
Merci pour ce blog , très interessant, comme toujours!!
J’ai un petit souci: l’Url associée n’est pas mémorisée (partie droite) malgré une sauvegarde en quittant.
Pareil pour toi?
Sinon, t’aurais pas un petit exemple avec GET?
Hello,
Pour le soucis de l’URL ,non je n’ai pas eu de problèmes , la seule chose que j’ai remarquée concerne la partie gauche ; l’absence de « valeur cible » empêche la validation.
Je n’ai pas utilisé de GET , les outils que j’utilise nécessitent PUT
Et merci pour les compliments
Bonjour. Je comprends pas: chez moi, l’Url est perdue systématiquement …
Que ce soit sur mon Pi ou mon syno.
Je suis en Version: 3.4834. Et toi?
Je suis V3 5767
Bon, je suis passé en Beta Version: 3.5817
Et la, c’est l’inverse… Mon Url est bien sauvegardée, mais impossible maintenant de la modifier..
Pareil apres un reboot du PI.
Tu arrives a mettre des Urls differentes a chaque type de cible du tableau de gauche?
Bref, c’est boggué ou je sais pas m’en servir? Pour l’instant mystere…