Importer les caractéristiques de vos modules domotiques depuis Domoticz et les mettre en forme via un fichier PHP.

J’ai déjà fait pas mal de compliments sur Domoticz, une solution libre de gestion domotique tournant sous linux. C’est très bien pensé, mais l’interface n’est pas assez simple pour une utilisation familiale à mon avis. Je me suis donc mis en tête de voir si il n’était pas possible de créer une interface plus simple et collant mieux à ce que je souhaite faire de mon installation. Le premier obstacle que j’ai rencontré a été de récupérer les informations des différents éléments domotiques, puis de les rendre exploitables en les mettant en forme dans un fichier PHP. Je regroupe donc ici les éléments pour le faire en me basant sur la grande aide que les copains m’ont apportée.

Première chose, pour exploiter un fichier PHP devant discuter avec du JSON, il faut un serveur web capable de le faire. J’ai donc décidé de mettre ce fameux fichier PHP sur un serveur LAMP que j’ai à ma disposition. Il m’a suffit d’installer le paquet php5-json en plus.

Ensuite, il faut comprendre comment l’API de Domoticz fonctionne. Il faut dire qu’elle est très mal documentée. Pour interroger l’API, il faut se servir d’une url de type:

http://utilisateur:motdepass@adresseipdedomoticz:portdecoute/json.htm?commande
 

Dans cette url on retrouve le nom de l’utilisateur domoticz et son mot de passe, l’adresse IP de la machine hébergeant domoticz et le port d’écoute de l’appli ainsi qu’une commande JSON.

Dans notre cas la commande pour importer les caractéristiques d’un capteur ou d’un switch est « type=devices&rid=X » où X correspond à l’idx dans l’interface de domoticz, rubrique « Configuration » > « Périphériques » :

Emplacement idx

Vient ensuite l’utilisation de cette url dans le fichier php. On se servira de file_get_contents pour importer les données dans une variable :

     $variable1 = file_get_contents(http://utilisateur:motdepass@adresseipdedomoticz:portdecoute/json.htm?type=devices&rid=X)
 

Puis on décode le json obtenu dans une nouvelle variable :

     $variable2 = json_decode($variable1, true)
 

Reste à mettre en forme le contenu de la variable2 par un peu de code PHP :

 

     echo « <pre> »;

     print_r($variable2);

     echo « </pre><br><br> »;

En mettant tout ça bout à bout, on obtient un fichier PHP qui affichera une page contenant toutes les infos  sur le périphérique que vous désirez :

     <?php
 
     $variable1 = file_get_contents(http://utilisateur:motdepass@adresseipdedomoticz:portdecoute/json.htm?type=devices&rid=X)
 
     $variable2 = json_decode($variable2, true)
 
     echo « <pre> »;     print_r($variable2);     echo « </pre><br><br> »;
    
     ?>
 

Ce qui donnera une page ressemblant à celle-ci :

Infos domoticz dans PHP
 

Il suffira ensuite d’extraire les valeurs pour en faire ce que vous souhaitez en PHP.

(6129)

Leave a Reply

© 2019 Tom23's blog. All Rights Reserved.
WordPress theme by Blogging Tips