Problématique : La Zibase permet de visualiser les données des différentes sondes depuis son l’application Web ou iPhone. L’historique sauvegardé à ce jour n’est pas très profonds : 1 mois maximum à ce jour. Peut-on sauvegarder ses données sur le NAS?
Solution : C’est possible en utilisant le SDK PHP sur un serveur web hébergé sur le NAS et en allant chercher la donnée sur la Zibase.
Descriptif de la solution
Dans mon article précédent, je présentais une solution en mode “push” de la Zibase vers la base MySql du NAS. Il est possible de faire le même traitement en mode “pull”: le NAS est alors à l’origine de la demande de données.
Sur le forum de touteladomotique.com bgarel présente son SDK PHP qui permet de se connecter à la Zibase pour effectuer les tâches suivantes :
- Envoi de commande RF
- Démarrage de scenario
- Démarrage de plusieurs scénarii de façon séquentielle
- Lecture des sondes
- Lecture/écriture de variable
- Lecture/écriture de calendrier dynamique
- Lecture de l’état d’un actionneur
Pour de sauvegarde de données vers une base MySQL, il “suffit” d’utiliser le SDK pour construire un traitement effectuant l’insertion en base. Il est égalementpossible de rediriger les valeurs lues vers les scripts PHP présentées sur l’article cité précédemment.
L’utilisation du couple PHP + MySql la rend compatible avec un hébergement qui possède un séquenceur de tâches (ex: cron) ce qui n’est pas le cas des hébergements gratuits du style FREE. C’est souvent le cas sur un NAS (de maque Synology en ce qui me concerne) mais pas de manière standard.
Mise en oeuvre
La technique est la suivante:
Sur le net:
- Lire le post du forum pour avoir un descriptif du service: SDK PHP pour la Zibase
- télécharger le fichier source sur le site de bgarel http://bgarel.free.fr/Zibase/
Sur le NAS:
- créer un site web (ou en utiliser un existant) et y placer le contenu du ZIP téléchargé
- activer MySql sur le NAS si ce n’est pas déjà fait
- se connecter à la base MySql du NAS (via PHPMyAdmin par exemple)
- créer votre base de données pour sauvegarder les relevés reçus de la Zibase
- Sur le NAS, créer le script PHP pour se connecter à la Zibase et recupérer les données des sondes que l’on souhaite suivre:
<?php
require_once(“ZiBase.php”);
# Adresse IP de la zibase est nécessaire pour utiliser cette classe
$zibase = new ZiBase(“192.168.0.20“);# Lire les valeurs d’une sonde
$info = $zibase->getSensorInfo(“OS439191042“);
# dans cet exemple les données sont récupérées puis affichées à l’écran
# c’est à cet endroit ci que vous pourriez vous connecter à votre base de données
# pour les stocker par exemple.print “Heure du relevé : “. $info[0]->format(“d/m/Y H:i:s”) ;
print “Température : “. $info[1]/10 ;
print “Humidité : “. $info[2] ;
?>
- utiliser le séquenceur de tâches (ex: cron) de votre hebergement ou du NAS pour lancer le traitement PHP à la fréquence souhaitée.
Sur la Zibase :
- Rien à faire!
Conclusion
Le SDK PHP fonctionne si votre Zibase a une adresse IP fixe. C’est n’est vraiement pas une contrainte forte!
Pour avoir l’identifiant de la sonde il suffit de se connecter au configurateur et la séléctionner parmis tous les composants que vous avez mis en place :
Cette solution déporte tout le traitement de récupération des données de la Zibase vers le NAS. C’est une question de choix et de préférences.
Un avantage de cette solution est de ne pas avoir à surcharger la memoire de la Zibase avec des requêtes HTTP. Un gros inconvénient est que cela marche bien pour des récupérations de données à fréquences préféfinies et n’est pas adapté à des récupérations liées à un évènement par exemple.
Le séquencement de traitements sur un NAS n’est souvent pas mis en avant des constructeurs de NAS. Il faudra souvent effectuer certaines manupulations que ne sont pas à la portée d’un public non averti.
Le SDK PHP semble plus adapté à un usage de discution NAS=>Zibase que l’inverse mais c’est possible.