Mon projet (sans qu'il le sache encore), m'associer (me tirer la bourre) à Aurel pour établir un rapport de mail automatisé et permettre de balancer l'intégralité des données dans une base SQL pour en faire ce qu'on en veut.
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 :
Fichiers :
Version 3.1 [Tout est dedans]
http://dl.free.fr/ox3haUbP9
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 : Tout sélectionner
<?
//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';
?>
[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. 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).
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
[Dev en cours]
-) Mail envoyé avec une synthèse
=> N'hésitez pas à donner vos idées.