HomePress : WXYZ WordPress eXtends Your Zibase6 minute(s) de lecture

L’article d’hier avait pour but de présenter le concept HomePress: l’utilisation de la plateforme WordPress pour créer une interface domotique. Dans l’article d’aujourd’hui je vous propose de découvrir une manière de brancher un système domotique à base de Zibase dans HomePress.  Par jeu je l’ai baptisé WXYZ pour WordPress eXtends Your Zibase.

Présentation

WXYZ est l’intégration d’un développement tiers pour commander la Zibase en PHP dans l’environnement HomePress donc dans WordPress.

Cela permet entre autres :

  • Envoi d’une commande RF (ex: H2 ON sur X10, Chacon, etc…)
  • Lancement d’un scenario
  • Lecture d’une variable
  • Mise à jour d’une variable
  • Lecture d’un calendrier dynamique
  • Mise à jour d’un calendrier dynamique
  • Lecture de l’état d’un actionneur
  • Lecture des valeurs des sondes (ex: oregon, OWL,…)
  • Exécution de scripts (pour l’instant limité au lancement de scenarii)
  • Envoi de valeurs de sondes virtuelles à la zibase
  • Ajout des ordres X2D chauffage

La Zibase a derrière elle une communauté de personnes qui mettent gracieusement à disposition leurs développements autour de ce serveur. Des SDK ont été créés pour pouvoir faire discuter d’autres systèmes avec elle. Celui qui nous intéressera particulièrement aujourd’hui est le SDK en PHP car la plateforme WordPress est également en PHP.  Cela nous permet d’utiliser quasiment tel quel ce SDK dans HomePress comme nous le verrons par la suite..

Maleureusement pour nous mais heureusement pour la sécurité, WordPress ne permet pas de prendre en charge du code supplémentaire à l’intérieur des pages ou des billets sans toucher à l’architecture de la plateforme : cela serait une faille de sécurité… Sauf si l’intégration de code supplémentaire est maitrisée!

Pour exécuter du code PHP sur votre HomePress sans avoir à aller dans les entrailles de la plateforme WordPress vous pouvez ajouter à votre site des extensions (ou “plug-in” dans le langage WordPress) permettant de le faire.  Il en existe plusieurs mais seule l’une d’entre elle a retenu mon attention.

Mise en oeuvre

L’extension que j’ai retenu est Shortcode Exec PHP.  Cette extension vous permet d’utiliser du code PHP dans les pages, les billets, les commentaires, les widgets et les flux RSS.  Tous ces endroits peuvent exécuter du code PHP mais cela n’est pas obligatoire car c’est vous qui décidez si par exemple vous autorisez le fait que les commentaires peuvent exécuter du code PHP.

L’avantage de cette extension est que l’on ne met aucun code PHP côté site web public mais tout se fait dans le module d’administration de WordPress de votre site une seule fois et qu’il est réutilisable autant de fois que nécessaire.  Il suffit pour cela d’utiliser des “shortcodes” ou mots réservés écrits entre [ ] que vous devrez créer pour l’occasion. Seuls les utilisateurs que vous aurez autorisés (les administrateurs) pourront créer du code et les référencer dans le contenu par des “shortcodes”.

Dans l’exemple à mettre en place on se contentera de récupérer et d’afficher la température d’une sonde du balcon pour la température extérieure.

Pour cela il faut:

  • récupérer le code PHP du SDK en PHP sur le site de son créateur
  • se connecter sur la console d’administration de WordPress de votre site HomePress et installez l’extension Shortcode Exec PHP.
  • aller dans les réglages de l’extension Shortcode Exec PHP pour modifier le paramétrage en fonction des zones dans lesquelles vous souhaitez que du code puisse être exécuté

  • créer 2 codes réutilisables référencés par le shortcode “LibPHPZibase” et “Temp”

  • créer le Shortcode “LibPHPZibase” en copiant collant le code mis à disposition par le SDK en PHP (fichier ZiBase.php) en prenant soin de supprimer le “<?php” du début de fichier et le “?>” en fin de fichier.  Ces caractères sont la pour dire que le fichier contient du code PHP, ce qui n’est pas nécessaire dans ici car tout HomePress est en PHP.  Le sauvegarder en le rendant actif (enabled=coché) et sans affichage (output echoed = non coché)

  • créer le Shortcode “Temp” avec le code suivant en le rendant actif (enabled=coché) et avec affichage (output echoed = coché) :

$SondeCode = “OS439194343”;    // a remplacer par le code de la sonde

# Adresse IP de la zibase est nécessaire pour utiliser cette classe

$zibase = new ZiBase(“192.168.0.1”);   //a remplacer par l’adresse IP de votre Zibase

# Lit les valeurs d’une sonde

$info = $zibase->getSensorInfo($SondeCode);

echo $info[0]->format(“d/m/Y H:i:s”) . “<br/>”;

echo “Température : “. $info[1]/10 . “°C<br/>”;

echo “Humidité : “. $info[2] . “%<br/>”;

  • Sur la page “Balcon” du site HomePress, utiliser les shortcodes créés à l’endroit où vous voulez voir afficher la température.

Voici le résultat à l’affichage lorsque l’on consulte la page “Balcon”

Une des forces de cette extension est la réutilisation du code.  Si vous avez plusieurs sondes de températures par exemple vous n’êtes pas obligé de créer un shortcode par sonde.  Il vous suffit de modifier le shortcode “Temp” et de modifier le code de la manière suivante par exemple:

extract(shortcode_atts(array(‘sonde’ => ”), $atts));

$SondeCode = “”;

if ($sonde==”Séjour”)

{

$SondeCode = “OS439190012”;

} elseif ($sonde==”Chambre1″)

{

$SondeCode = “OS439200013”;

} elseif ($sonde==”Balcon”)

{

$SondeCode = “OS439180014”;

}

if ($SondeCode !=””)

{

# Adresse IP de la zibase est nécessaire pour utiliser cette classe

$zibase = new ZiBase(“192.168.0.10”);

# Lit les valeurs d’une sonde

$info = $zibase->getSensorInfo($SondeCode);

echo $info[0]->format(“d/m/Y H:i:s”) . “<br/>”;

echo “Température : “. $info[1]/10 . “°C<br/>”;

echo “Humidité : “. $info[2] . “%<br/>”;

}

Cela permet de passer en paramètre dans la page Balcon le fait que l’on souhaite afficher la température de la sonde correspondante.  Cela se fait de la manière suivante:

Conclusion

L’utilisation de cette extension permet de gérer la communication avec la Zibase via le SDK PHP mis à disposition.  J’ai trouvé cette manière de faire assez élégante car on peut facilement réutiliser du code pour peu que celui-ci a été créé pour cela.  Aux endroits de votre site HomePress ou vous avez besoin de l’affichage des valeurs récupérées par une sonde vous n’avez plus à vous soucier de PHP mais de simples shortcodes.

L’aspect sécurité important dans la démarche d’ajout de code PHP me parrait bien géré par rapport à d’autres extensions existantes avec WordPress.

L’avantage de HomePress est que vous pouvez très bien obtenir un affichage identique avec d’autres extensions.  Libre à vous d’en sélectionner une autre.  Faites votre choix!

4 Comments

  1. Applidom said:

    Article intéressant mais.. Avant tout.. J espère que Zibase n est pas juste un produit pour Geek !
    Zibase se doit d être un produit grand public, rendant des services bien établis dans la vie de tous les jours.
    Heureusement, d autres produits similaires, avec connexion Gsm et batteries de secours arrivent à la rentrée pour ceux qui ne désirent que facilter la vie quotidienne et s affranchir des tâches routinières
    A bientôt
    Applidom.com

    4 août 2011
    Reply
    • abavala said:

      Bonjour,
      Je ne pense pas que la zibase soit une produit pour geeks. Par contre je pense que plusieurs geeks y trouveront leur compte avec son Api lui permettant d’être ouverte à d’autres systèmes.
      Concernant des boitier similaires et avec puce GSM+batterie de secours cela existe déjà avec la solution MyXyTy. La solution Myfox semble aussi valoir le détour. Je n’ai pas pu encore les tester mais elles semblent très très intéressantes.

      4 août 2011
      Reply
  2. folkers said:

    bonsoir je galere a afficher la valeur de mes sondes je touche pourtant au but j ai bien indiquer mon ip de la zibase local mais sa prend pas

    sa fonctionnais au debut(1ans peut etre j ai tout ecraser et remis a zero ) aidez moi

    6 décembre 2012
    Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain: * Time limit is exhausted. Please reload CAPTCHA.