VOUS ÊTES ICI: Accueil » Blog » Domotique » Eedomus » La face cachée de vos périphérique eedomus ! #SQL #php #script
Eedomus

La face cachée de vos périphérique eedomus ! #SQL #php #script

Remarque initiale :  Ce tutorial vit la fois sur les forums : touteladomotique et eedomus. Vous aurez des retours terrains.

Ce tutorial va vous permettre de disposer dans l’eedomus de toutes les statistiques sur un produit / ainsi que votre localisation IOS sans utiliser d’application sur votre iphone / ipage (grâce à Icloud).

Pour cela il faut :
– un nas qui héberge serveur php, base de donnée SQL, serveur mail. Perso je suis sous synology.
[Remarque : PhphpMyadmin 4.1.14 MariDb Php Version 5.5.13] – un peu de patience 🙂

Pré-requis fonctionnel :
– Disposer de ses numéros de périphériques eedomus (disponible dans chaque périphérique / paramètre expert / code api)
– Disposer des codes d’accès api (que la plate-forme envoi par mail dans la console : configuration / mon compte / Identifiants pour Api)

A lire si ça bloque chez vous
Si cela ne fonctionne pas, j’ai développé un script pour m’aider (dans le pack), vous l’ouvrez, vous rentrer vos codes
$apiuser = ‘XXX’;
$apisecret = ‘XXX’;
$ipeedomus = ‘XXX’;
Vous trouvez votre code périphérique (pour rappel, paramètre expert)
Ensuite vous appeler la fonction comme cela, serveur/extractforanalyse.php?id=XXXX

URL du Pack :
http://dl.free.fr/hTT3nvEFD

Et ensuite, vous copiez le résultat pour investigation (souvent la nature des données, n’ayant pas la chance d’avoir tous les périphériques zwave chez moi :)).

Schéma Global :

Version 3.1 [Tout est dedans] http://dl.free.fr/ox3haUbP9

[wpdm_file id=48]
Voir en dessous

Explications :
.htaccess => correspond à une sécurisation de votre NAS, indiquer dedans les IP à qui vous faites confiance
bddconsultstat.php => permet de consulter les statistiques d’un produit classique on / off / x% (lampe)
bddconsultstattemp.php => permet de consulter les statistiques d’une sonde de température
bddcreationstatperiph.php => permet de créer les statistiques
bddinsertionperiph.php => ce script créer la table d’un produit et l’alimente via les serveurs eedomus
compteetconnexionVIERGE.php => vous enlevez le mot VIERGE et vous complétez avec vos informations, c’est le fichier de paramétrage

Pré-requis technique :
– un serveur web
– une base de donnée (phpmyadmin permet de regarder en live ce qu’il se passe dedans)

Tutorial V0 :
0) Il faut à minima avoir la base test dans sa base mysql (je parle bien de base, pas de table)
1) On complète son fichier de connexion avec ses infos personnelles

[code] <?
    //info base de données
    $base = ‘test’;
    $compte = ‘root’;
    $password = ‘XXXX’;
    $ipserveurbdd = ‘192.168.0.XX’;

    //info eedomus
    $apiuser = ‘XXXZ’;
    $apisecret = ‘XXX’;
    $ipeedomus = ‘XXX’;

        $annee = ‘2013’;
?>
[/code]

[Pour un produit type Lampe / Appareil Electrique…]

2) On récupère le nom du produit souhaité et de son numéro eedomus

Exemple : bddinsertionperiph.php?idperiph=35598&table=Lampecuisine

Ce script va automatiquement créer la table Lampecuisine et Lampecuisinestat, et inserer tout l’historique du produit. Le premier lancement peut prendre un peu de temps, ensuite c’est seulement les enregistrements non présent dans la table qui seront insérés.

4) Ensuite on va lancer la création des statistiques

Exemple : bddcreationstatperiph.php?table=Lampecuisine

La creation des statistiques, c’est d’abord le fait de compléter la table initiale Lampecuisine avec les durées de chaque utilisation puis ca complète une autre table Lampecuisinestat

5) Et on finit par la consultation

bddconsultstat.php?table=Lampecuisine

Variante possible ? L’association d’un produit on / off a son energie (exemple ici : la bouilloire)
bddcreertable.php?table=Bouilloire&energie=1
bddinsertionperiph.php?idperiph=35995&table=Bouilloire
bddinsertionperiph.php?idperiph=35996&table=Bouilloireenergie
bddcreationstatperiph.php?table=Bouilloire&energie=1
bddconsultstat.php?table=Bouilloire&energie=1

Une extraction nécessaire au format XML ?
bddconsultstat.php?table=Lampecuisine&xmldemande=oui

On va dans l’eedomus, on créer un nouveau capteur http :

On complète de cette manière la :

La commande étant
VOTRESERVEUR/bddconsultstat.php?table=Lampecuisine&xmldemande=oui

Et on obtient directement sous l’eedomus :

On a le choix entre :
//moismaxi
//moismaxivaleur
//totalannuel
//totalhier
//semainepassee
//moispasse

Pour vos sondes de température :

On saisie ses sondes avec leurs codes api respectif. Ce qui est pas mal désormais, c’est que si vous avez 2 sondes, ou 10 sondes… vous n’avez qu’a les écrire une fois, et le script de maj s’occupe de tout faire.

Ensuite, on va dans l’eedomus, on crée un actionneur http, dont on paramètre en paramètre expert une fréquence à 15 minutes, et qui va appeler le script eedomus_temp_maj.php. C’est ce script qui va se charger de copier toutes les données de vos sondes en base de données.

[alert title= »Info »] Ne vous inquiétez pas si l’eedomus renvoit un message d’erreur. Le script étant exécuté sur le serveur, même si le temps dépasse 10 secondes, l’insertion des données fonctionne totalement (vous pouvez vérifier directement dans phpmyadmin).[/alert]

Pour infos, la copie de 60000 enregistrements prend environ 2 minutes. Une fois le script effectué, les suivants seront quasi instantanés (normal, juste 15 minutes de delta à copier).

Ensuite on a plusieurs choix :

[1] Soit consulter les données en appelant l’adresse suivante :
VOTRESERVEUR/eedomus_temp_consult.php?table=XXX

[2] On crée un capteur http avec utilisation de xml

On a le choix pour sortir les valeurs suivantes :
/temp/anneemax
/temp/anneemaxvaleur
/temp/annemin
/temp/anneminvaleur
/temp/moismax
/temp/moismaxvaleur
/temp/moismin
/temp/moisminvaleur
/temp/jourmax
/temp/jourmaxvaleur
/temp/jourmin
/temp/jourminvaleur
/temp/delta

[3] Pour obtenir le delta avec une autre sonde (l’extérieur par exemple), il suffit d’indiquer quelle sonde est celle de dehors.

Et voilà le résultat :

J’ai quand même utilisé une règle qui provoque le déclenchement, je n’arrive pas pour l’instant à utiliser l’application de la fréquence.

Comment je m’assure que cela se lance régulièrement ?

En créant un actionneur ainsi qu’une règle comme ci-dessous. J’ai pris 2 minutes de rab pour éviter les mauvaises surprises.

Notes sur les performances

Pour des produits classiques (chauffage, lampe) les données sont très réduites en base de données, pour les températures, à raison d’un relevé toutes les 2 minutes, ça génère près de 22 320 enregistrements en base pour un mois à 31 jours. Il faut donc faire un multi appel à l’api, car l’extract est limité à 10000. J’ai pris le parti de splitter en 2 chaque mois pour les traitements.

Pour la première utilisation : Le script bddinsertionperiph.php quand il est appelé sur une sonde avec beaucoup d’historique sur 2013 peut donc ainsi mettre près de 3 minutes en moulinage. Regardez dans l’eedomus le nombre d’historique pour savoir si le délai est anormalement long, je n’ai jamais fait planter ce script pour info.

Ensuite c’est instantané, car ça copie uniquement le delta.

===
La fonction GPS

Il suffit de compléter le fichier conf avec des paramètres, nom du Idevice, user icloud, passeword Icloud ainsi que le peripherique GPS. Pour le nom la case est importante. N’hésitez pas à verifier sur Icloud / localiser puis liste de mes appareils pour éviter le non fonctionnnement.

Comme d’habitude le xml fonctionne, et grâce à un actionneur :

On obtient, sur les 20 dernières minutes :

A vous les règles, de type, je rentre à moins d’un kilomètre, j’allume la lumière !

Sans qui rien n’aurait été possible :
– Aurel de DomoBlog
– DjMomo alias le verificateur de code
– Julien alias Cmoi20 pour la partie GPS

Restez connecté aux nouveautés domotiques, inscrivez-vous à notre newsletter

A propos de cet auteur

Aurélien Brunet

Aurélien Brunet

Chef de projet informatique, anciennement informaticien spécialisé dans l'IT industrielle, le réseau et les bases de données, un peu geek à mes heures perdues, je me suis mis à la domotique en 2012 pour sécuriser mon domicile.
Depuis, je test, j’installe, je code, j’améliore mon installation et surtout, je partage avec vous mon expertise via ce blog pour améliorer votre quotidien dans la maison connectée !

5 Comments

Cliquez ici pour poster un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  • Bonjour,

    sujet très intéressant même si pas forcément simple pour un newbie. Par contre impossible de télécharger la pack, j’ai à chaque fois une erreur sur le service Free. Te serait-il possible de m’envoyer le pack par mail. Merci.

    • Bonjour Pierre,

      j’ai ajouté les fichiers script de Gus en téléchargement direct dans l’article pour ceux qui ont un message d’erreur chez free.

      cdt

  • Bonjour,

    Merci pour cette mise a jour pour nos connaissances Eedomus / PHP / MySQL et cette super synthèse.

    Sur la base de ces scripts j’ai perso ajouté les fonctions suivantes :

    – ajouter une table intermédiaire des périphériques (qui fait le lien entre N° API pas forcement constante dans le temps (changement piles ou reinstallation) et N° interne) permettant ainsi une pérénité des statistiques sur plusieurs mois.

    – optimisation du requetage API vers le site Internet secure.eedomus car j’ai plusieurs Eedomus et je ne peux uniquement me contenter d’une interrogation sur IP locale

    – Substitution de mon NAS (Raspberry) par un VPS (OVH) qui me permet une disponibilité optimale.

    – Coté Statistique et restitution : création de VUE MySQL qui permet un accès aisé aux données à des graphs D3js

    – Après quelques mois d’utilisation (juin à novembre)
    132436 lignes de statistiques pour 24 périphériques

  • Bonjour,
    Je trouve ce sujet très intéressant.
    Je vais également rédiger un tuto ce weekend (si j’ai le temps) pour un script du même type mais qui permet d’afficher la consommation et les températures sous forme de graphique via une page web. Il serait peut être intéressant d’y intégrer la notion de statistiques.

    Je reviendrais poster le liens du tuto quand je l’aurais rédigé.

    Bonne journée

    PS : Un petit teaser avec une image 🙂 => http://hpics.li/c02e6b9