[2/5] CREER SON SITE DOMOTIQUE AVEC ZIBASE, NAS SYNOLOGY, MYSQL ET WORDPRESS

SCRIPT "INTELLIGENT" DE RÉCUPÉRATION DES DONNÉES SONDES EN PUSH ET PRÉSENTATION DES RELEVÉS DES SONDES



Comme promis, après le premier article sur la refonte complète de l'enregistrement des données en pull des sondes ZIBASE, voici la suite qui concerne l'enregistrement des données en push d'actionneurs.

En effet, le script PHP (enrprocess.php dans le répertoire push) proposé dans le ZIP en fin d'article permet d'enregistrer les données relatives au chauffage (ON/OFF), à la VMC (Vitesse 1/2) et à l'alarme (ON/OFF).

L'appel se fait très simplement de la ZIBASE dans vos scénarios en prenant 2 paramètres en méthode get :
  • type : qui peut prendre comme valeur : VMC, CHAUFFAGE et ALARME
  • etat : qui peut prendre comme valeur : 0 pour OFF (correspondant à chauffage éteint, alarme désactivé ou VMC vitesse 1) , 1 pour ON (correspondant à chauffage allumé, alarme activé ou VMC vitesse 2)
Les données s'enregistrent automatiquement dans les tables CHAUFFAGE_ETAT, VMC_ETAT ou ALARME_ETAT dont le script SQL de création de tables était présent dans le  premier article.

Le temps en position ON est automatiquement calculé dans la colonne tempson lors du passage à l'état OFF. A noter que lors d'un changement de jour, si le dernier état est 1, un pseudo etat OFF est enregistré à 23:59:59 et un pseudo état ON est enregistré le lendemain à 00:00:01. Cela permet que le tempson calculé sur la journée soit correct.


Comme à l'habitude, j'ai essayé de commenter au maximum le code de la page afin que vous puissiez éventuellement y apporter votre touche ou quelques optimisations.

L'appel HTTP à mettre dans vos scénarios ZIBASE doit ressembler à ceci :


Ceci fait donc appel à la page sur laquelle est hébergée la page enrprocess.php. Dans mon cas, il s'agit d'une adresse réseau local puisqu'il s'agit de mon NAS SYNOLOGY 213+.

En suivant cet article, vous disposez d'une base de données enregistrant l'ensemble des données de votre installation ZIBASE. Par contre, il reste à exploiter l'ensemble de ces données et à leur donner du sens. Je vous propose dans ce même article un petit script PHP (sondes_direct.php dans le répertoire sondes_live) qui permet :
  • d'interroger les sondes en live,
  • d'interroger la base de données pour la partie actionneur,
  • de présenter le tout à l'écran.
Ce petit script s'appuie sur les données en base et notamment des éléments déclarés dans la table PERIPHERIQUES que j'ai fait un peu évolué en déclarant également les actionneurs. La présence de ces actionneurs dans la table permet uniquement de pouvoir agir sur l'ordre d'affichage dans la page sondes_direct.php alors que, pour rappel, celle des sondes permet de garantir la continuité de l'enregistrement en cas de changement de piles de la sonde. Ma table PERIPHERIQUES se présente sous la forme suivante :


Une fois cette table ainsi complétée le script sondes_direct.php devrait présenter le résultat suivant :


Le résultat ci-dessus est lié à une intégration de la page PHP dans un blog WORDPRESS. Ceci fera l'objet du prochain article devant paraître le 23 au soir ou le 24/06/2013.

Je vous remets à disposition ci-dessous un ZIP contenant l'intégralité des pages du premier et du second article pour avoir une solution complète. A noter la présence d'un répertoire images dans lequel j'ai repris les logos de ZODIANET

Télécharger le ZIP
 
 

 

15 commentaires:

  1. Ce commentaire a été supprimé par son auteur.

    RépondreSupprimer
  2. Ma pomme, je vois que tu suis chacun des articles....merci a toi et fais tourner :-D

    RépondreSupprimer
  3. Je suis les articles intéressants et les tiens le sont..... (d'habitude je signe pikat mais là ça me met Ma pomme pas grave....)
    Merci à toi et j'attends avec impatience la suite..... bonne continuation
    Pikat.

    RépondreSupprimer
  4. C'est du beau boulot. ça parait si simple :p

    RépondreSupprimer
  5. encore merci pour cette super serie
    le resultat est sympa :-)

    Phil

    RépondreSupprimer
  6. Merci Phil....tu post sur tous les articles...il te manque plus que le 3/5 4/5 et 5/5. MERci encore, cela fait plaisir de voir que le partage a du sens et sert à d'autres...

    RépondreSupprimer
  7. Bonjour Miss & Mister

    cela marche nickel et le résultat est vraiment plus que sympatique et surtout utile.
    je me suis attaqué à la derniere phase avec la visu des evennements. alarme fonctionne mais je bute sur "chauffage". et je ne trouve pas :-(
    je mets en base des flots d evenements datant de 1970 avec des valeurs 86398 secondes ?? à chaque execution du thermostat (180s).
    tu parles de la variable V3 (dans mon scenario c est la V13 qui est utilisée en variable de sortie. mais meme en changeant cette variable et en mettant la V3, cela fait exactement pareil.
    je lance un appel à l aide :-)
    où alors ce n est pas après l action "activer le peripherique (relais chaudiere)" que je dois mettre ma commande push

    un petit coup de main? :-)

    Phil

    RépondreSupprimer
  8. petit supplement
    dans le fil de l eau de la zibase
    la commande http n envoie jamais la valeur de la variable V3 ou V13

    Phil

    RépondreSupprimer
  9. A priori, il n'a aucune raison. Dans mon scénario Thermostat, j'utilise la vriable V3 en sortie pour gérer le ON/OFF.

    La commande push est bien à mettre après l'action "activer le périphérique". Si le ON/OFF de ton chauffage marche cela signifie bien que la vriable V3 contient la bonne information. d'ailleurs cela enregistre bien l'info donc le push est bon.

    pour info je fais ça de mon côté :
    AFFECTER UNE CHAINE DE CARACTERES A UNE VARIABLE AVEC : V5=http://IP_LOCAL_NAS/zibase/push/enrprocess.php?type=CHAUFFAGE&etat=V3
    puis
    COMMANDER PAR HTTP
    Url contenu dans la variable globale V5.

    Ensuite dans le script enrprocess.php fait afficher la valeur de $_GET['etat'] au bonne endroit pour vérifier qu'il vaut bien 1 ou 0 (je ne vois pas pourquoi cela serait pas le cas). Vérifie ensuite en débugant dans le script et en affichant au fil de l'eau les variable qui t'intéresse...cela peut être un problème sur les dates...

    Tu peux aussi dans le navigateur manuellement entrer l'appel http://IP_LOCAL_NAS/zibase/push/enrprocess.php?type=CHAUFFAGE&etat=1 (ou 0)et voir si dans ce cas le script fonctionne. S'il ne fonctionne pas c'est un problème dans le script par rapport à des dates je pense...mais là il faut que tu debug :-D

    Bon courage Phil même si je ne suis pas sur une fois de plus de t'avoir aidé.

    @+

    RépondreSupprimer
  10. Merci de ta reponse, en fait j ai detourné le pb en creant après "activer le peripherique" une action "lancer un scenario suivant une condition calculée"
    suivant le resultat de la variable je lance la commande avec etat=0 ou etat=1

    mais je vais essayer ton systeme, cela me semble plus "elegant" :-) moins de bout de scenario partout

    Merci
    Phil

    et vivement ton prochain scenario XD

    RépondreSupprimer
  11. Bonsoir,
    Lorsque je lance la commande dans un navigateur :
    http://monsite.fr/zibase/enrprocess.php?type=VMC&etat=0
    J'obtiens :
    Fatal error: Call to undefined function: date_create() in /mnt/105/sdb/e/d/monsite.fr/zibase/enrprocess.php on line 92
    C'est pourtant la page enrprocess telle que trouvée dans l'archive.
    J'héberge ça sur un site free ...

    Cela vous a déjà été remonté ou j'ai fait un truc qui ne va pas ?

    Le code en question :
    //retourne la derniere date en base
    $datetime1 = date_create(date('Y-m-d',strtotime(mysql_result($res_query,0,"date"))));
    //retourne la date du jour au format AAAA-MM-JJ
    $datetime2 = date_create(date('Y-m-d'));
    //Calcul de la diff?rence entre deux dates
    $interval = date_diff($datetime1, $datetime2);


    Merci.

    RépondreSupprimer
  12. Cela ne peut pas être dû à la version de PHP de free ?
    En plaçant une page phpinfo, je vois que je suis sur PHP Version 5.1.3RC4-dev.
    J'ai l'impression que certaines des fonctions appelées sont trop récentes par rapport à la version de php de free ...
    Il faudrait trouver une alternative à cette fonction ...

    RépondreSupprimer
  13. Salut,

    Merci pour le up de ce message que j'avais raté

    Pas impossible que cela vienne de la version PHP. Vous pouvez tester un site que j'avais créé debut 2012 sur un espace free et qui fonctionnait très bien. Dispo ici : http://domotiquezibase.free.fr .

    Le principe est le meme qu'ici sauf que le code est moins propre. Il y a un zip avec tout le source en pied de la page d'accueil et des explications. Et évidemment ça marche chez Free :)

    Espérant avoir aidé !

    RépondreSupprimer
  14. Pas de souci, merci ;-)
    En fait mon code au début était basé sur ce site après j'ai découvert ce blog ...
    Pour ce qui est des sondes de température, tout fonctionne correctement, même avec les graphs highcharts.
    C'est dès que j'essaie pour la vmc, ça foire à cause de cette fonction.

    RépondreSupprimer