L’API JSON de Domoticz démythifiée

Oui, oui on dit bien « démythifiée » et non pas « démystifiée » puisque il s’agit bien de « détruire » un mythe, celui de la complexité de l’API JSON de Domoticz.

Définissons tout ça et démythifions donc.

Une API qu’est ce ?

Ce sont des commandes que met à notre disposition un logiciel pour pouvoir le piloter.

Ces jeux d’instructions sont prévus par les développeurs du soft. Ils peuvent être soumis à des restrictions de droits, on peut avoir par exemple le droit d’interroger mais pas de commander le logiciel.

De nombreuses plateformes web permettent ainsi de les interroger pour obtenir quelque chose, citons météo france pour les prévisions de pluie, la SNCF pour les horaires de trains, Airparif pour la qualité de l’air et bien d’autres encore. De la même manière Domoticz peut être interrogé pour obtenir l’état d’un switch, la valeur d’un capteur et on peut également par son API, lui faire exécuter des actions comme changer l’état d’un switch, affecter une valeur à un widget.

Tout cela passe par des envois http/https vers Domoticz en interrogeant son API, qui nous répondra par un retour de texte au format JSON.

Cela signifie que les informations que nous devrons échanger entre nous et Domoticz devront respecter un formatage précis: celui de l’API.

Et JSON qu’est ce?

Wikipedia nous dit :

Un document JSON a pour fonction de représenter de l’information accompagnée d’étiquettes permettant d’en interpréter les divers éléments, sans aucune restriction sur le nombre de celles-ci.

il s’agit d’un format de présentation de texte à base d’étiquettes : un exemple fictif de formatage :

On  voit donc que j’ai  l’étiquette soleil puis des « sous-étiquettes » lever/coucher avec les valeurs correspondantes entourées de  {}.

C’est ainsi que Domoticz renverra des valeurs lorsque on l’interrogera.

Il nous faudra donc des outils pour découper ces blocs de résultats et en retirer facilement ce que l’on souhaite,  jq en shell, json.decode en lua, libraire json en python, ce ne sont pas les outils qui manquent.

Mise en œuvre

Voyons comment interroger Domoticz via les URL et l’API.

la page de référence esthttp://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s  dont une traduction française est en cours  nous indique que le format à respecter est celui-ci :

 

  • <username:password@> = le login et le mot de passe Domoticz (optionnels).
  • domoticz-ip = l’adresse  IP ou le nom de votre Domoticz .
  • <:port> = le numéro de port (8080 par défaut, optionnel).

la commande API peut être trouvée sur la page en anglais, on y apprend que pour obtenir l’état d’un matériel, je dois envoyer :

avec IDX qui correspond à l’IDX de ce matériel dans Domoticz.

Rappel : on le trouve dans « Réglages » et « Dispositifs »

idx_domoticz

 

me donnera les valeurs actuelles du dispositif 72 nommé ci-dessus « Temp interieur »

Ah, oui d’accord mais ou je tape le http://192……

Déjà,vérifiez que vous avez compris en le tapant DANS LA BARRE D’ADRESSE de votre navigateur web.

api_json

Ensuite des langages tels que shell (curl), python (requests), lua sont capables d’envoyer de telles chaines que vous aurez construites vous même correctement au préalable dans votre script.

On voit ici que le simple appel d’une URL renvoie un pavé de donnée en JSON, dont il faudra extraire la/les couples rubrique:valeur qui m’intéressent.

C’est le rôle d’outils comme ./jq , article ici https://easydomoticz.com/manipuler-les-donnees-json-de-domoticz-en-shell/ vers lequel je vous renvoie pour les bases de l’extraction.

N.B : Pour aider à la lecture de fichiers json il y a ici http://jsonviewer.stack.hu/un outil qui reformate de façon claire les données que vous lui donnerez par un copier/coller.

 

Voila, normalement vous devriez maintenant mieux voir le rôle de l’API JSON de Domoticz, et comprendre comment activer, obtenir des données.

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Domoticz et les url des caméras

Dans une discussion du forum, loops contributeur régulier,  donnait une astuce que je voudrais vous faire partager ici concernant les cameras IP et le fameux champ de Domoticz « URL de l’image » que l’on ne connait donc jamais !

Celui la ici en bas

camera

Il s’agit de l’adresse de la camera que doit appeler Domoticz pour afficher une image ou une vidéo.

La lecture de la page anglophone de Domoticz https://www.domoticz.com/wiki/Camera_Setup permet de nous renvoyer vers uen liste du matèriel ici https://www.domoticz.com/wiki/Hardware#IP-networkcameras ou ici http://www.ispyconnect.com/sources.aspx pour les camera ispy

Concernant les autres champs, il faudra bien entendu activer la camera, la nommer, donner son adresse IP, son port.

Notez que si la camera est branchée par exemple sur un Raspberry vous pouvez donner ici les liens vers celui ci.

Les login/password éventuels si votre caméra est protégée.

Et la fameuse URL de l’image.

Il existe donc un site  http://skjm.com/icam/mjpeg_test.php. qui permet d’introduire l’adresse IP et le port de ta caméra et qui teste pas mal d’URL « Connues ».

Avec un peu de chance, une image devrait apparaitre sur une des lignes testées et permet ainsi de connaitre la bonne URL à utiliser dans Domoticz dans le paramètre « URL de l’image ».

Rappel

Domoticz ne fait pas de détection de mouvement, il faut utiliser un logiciel comme motion https://easydomoticz.com/video-surveillance-a-base-de-raspberry-pi-et-motion/  ou certains paquets des Synology avec surveillance station.

Les alertes détectées par ses logiciels devront être remontées dans Domoticz par activation d’un switch virtuel via l’API JSON Domoticz.

N’oubliez pas d’utiliser les « custom pages » de Vil1driver https://easydomoticz.com/forum/viewtopic.php?f=17&t=331 pour afficher vos flux vidéo dans une belle interface WAF

 

Merci à loops pour l’info et à Vil1driver pour toutes ses contributions à Domoticz.

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Passage de easydomoticz.com en https

Toutes les pages du blog viennent d’être converties vers https.

Le petit cadenas Résultat de recherche d'images pour "icone https" vous assure une navigation sécure sur  https://easydomoticz.com et https://easydomoticz.com/forum.

Certains sujets du forum peuvent faire afficher non plus le cadenas vert mais un cadenas et un panneau jaune lorsque des images sont hébergées sur des sites d’hébergeurs d’images non https.

Normalement pas de perturbation attendues. Si vous constatez des soucis laissez un message dans le forum ou dans les commentaires de cet article.

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Debian, Jessie, Wheezy,Stretch, Sid : comment connaitre sa version de Debian

<mémo>

Comment connaitre sa version de Debian ?

Je le met ici car j’en ai marre de le chercher à chaque fois sur Internet.

renvoie

 

avec entre autre la version (VERSION) et le numéro de la version (VERSION_ID), et pis si ca peut servir…

</mémo>

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Arrêtez la framboise, mettez vous à l’orange.

Un nouveau remplaçant du Raspberry arrive.

Toujours moins cher et toujours plus performant

Wifi,usb 2.0, 13 pin IO, 1RJ45 poe.

Android,Ubuntu,Debian sont supportés.

Le détail ici chez l’informaticien.com

7  $ chez Allixpress
https://m.fr.aliexpress.com/item/32760774493.html?trace=storeDetail2msiteDetail&#autostay

 

et la version supérieure   Orange Pi PC plus à 18€
https://fr.aliexpress.com/store/product/Orange-Pi-PC-Plus-ubuntu-linux-and-android-mini-PC-Beyond-Raspberry-Pi-2/1553371_32668618847.html

Comprenant :
– Quad core 1.2GHz
– 1GB de RAM
– 8GB EMMC

– 3 Ports USB
– Ethernet
– Wifi
– GPIO compatible raspberry
– HDMI

PS: Attention il faut une alim 5V 3A (non vendue avec)

(merci à fratton du forum pour les précisions)

Sortez les carnets de chèques.

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/