Forum eedomus
https://forum.eedomus.com/

[Stat Periph / GPS IOS - Tuto complet 3.1 / New Température]
https://forum.eedomus.com/viewtopic.php?f=12&t=1340
Page 1 sur 13  Suivant »
Auteur:  gusdelamort [ 10 Nov 2013 17:44 ]
Sujet du message:  [Stat Periph / GPS IOS - Tuto complet 3.1 / New Température]

[Tutorial allégé]

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 :
Image

Fichiers :
Image

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

Image

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

Image

5) Et on finit par la consultation

bddconsultstat.php?table=Lampecuisine

Image

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 :
Image

On complète de cette manière la :
Image

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

Et on obtient directement sous l'eedomus :
Image

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.

Image

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).
Image

Image

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

Image

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

Image

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.

Image

Et voilà le résultat :

Image

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.

Image

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.

Image

Image

Image

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.

Image

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

On obtient, sur les 20 dernières minutes :
Image

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.
Auteur:  aurel [ 10 Nov 2013 18:20 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

cool, des nouvelles fonctionnalités en plus en vue !!
Auteur:  gusdelamort [ 10 Nov 2013 23:08 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

[cf 1er post]
Auteur:  bullby [ 11 Nov 2013 00:37 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Salut,

Ça m’intéresse grandement ton projet.
J'ai quelques idées :
- Calcul perte de poids sur une période définie
- Nombre d'heures d'utilisation de la TV sur une période définie
- ...

Peux tu détaillé plus précisément comme faire car j'ai un nas, j'ai activé mysql et installé phpmyadmin.
Faut il un script différent à chaque fois ou le script que tu as mis suffit ?
Quels sont les paramètres à modifier ?
Enfin un petit tuto serait trop coollllllllllllllllllll.

Merci pour ta contribution.
Auteur:  gusdelamort [ 11 Nov 2013 00:47 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Voila la suite...

Image

Bon bien sûr y a un piège... :)
Auteur:  gusdelamort [ 11 Nov 2013 00:53 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

[cf 1er post]
Auteur:  gusdelamort [ 11 Nov 2013 00:55 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

- Calcul perte de poids sur une période définie
==> une base avec le poids et la date associé et le tour est joué ! tu pourras même savoir quel jour en moyenne tu perds le plus de poids !

- Nombre d'heures d'utilisation de la TV sur une période définie
==> facile, la durée ou le fibaro consomme > 40 watts :)
Auteur:  gusdelamort [ 11 Nov 2013 01:25 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

La suite :)

Le mail fonctionne. Pour cela voilà le tutorial...

Sur le synology, panneau de configuration puis notification, puis on paramètre son smtp sortant

Image

Ensuite dans son code on intègre la fonction mail de cette manière :

Code : Tout sélectionner
// Le message est dans la variable $message
$message = $ligne1."\r\n".$ligne2."\r\n".$ligne3;
// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
$message = wordwrap($message, 70, "\r\n");
// Envoi du mail
mail('xxx@xxx.com', 'Ta bouilloire pense à toi', $message);


les lignes sont crées justeau dessus dans le code.

Et voilà le résultat (super moche encore).

Image

=> et vu que le script php, on peut l'appeler via l'eedomus, la boucle est bouclée... je peux avoir mon rapport sur la bouilloire soit on demande, soit toute les semaines...

l'exemple est simpliste, mais vous voyez les possibilités venir :)
Auteur:  Pat11 [ 13 Nov 2013 14:17 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Bonjour
tout d'abord merci pour le travail et le partage, j'ai installé le script sur mon nas, le lien sur API de eedomus m'affiche bien les données en Xml et quand je fais afficher sur ma page http en activant
$max = count($xml->body->history->value);
print $max;
j'ai 0
j'ai cherché un peut sur internet sur les site PHP et en plus je connais rien en PHP :oops:
un peut d'aide serais la bien venue
merci
Auteur:  aurel [ 13 Nov 2013 18:00 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Hello,
je réalise déjà ces opérations pour les mettre en forme dans un mail avec mes scripts.
Quand au mail, j'utilise une façon plus simple et qui ne dépend pas d'un syno donc qui peut être mise en place sur tout serveur web.

Pour le moment tout est sous un environnement de test sur mon PC ou sur mon AndroPhone webserver.
Mais je vais pouvoir prochainement vous présenter tout ça ;)

Mais c'est cool de voir une autre façon d'utiliser les datas de l'eedomus.
Auteur:  Rocketlud [ 13 Nov 2013 20:34 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Merci gusdelamort et Aurel pour le partage, je vais tester ça ;)

Penses tu qu'on pourrais avoir le nombre d'heure en plus du nombre de fois?

++
Auteur:  gusdelamort [ 13 Nov 2013 23:21 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Pour répondre à ta question du compteur, je ne sais pas si ta fonction peut marcher. De mon côté, je fais une requête SQL qui me fait la somme, mais ça va taper dans la base et non dans le fichier XML.

Au programme, je vais implémenter prochainement les compteurs suivants :

Chauffage :
- durée utilisation journalier / hebdo / mensuel avec tendance et historisation de la dernière période passée

Lumière :
- idem

Électricité :
- conso journalière / hebdo / mensuelle
- prévisionnel de factures en intégrant le coût de l'abonnement mensuel
rq : mon chauffage est au gaz, la conso d'elec est donc presque linéaire

Température :
- écart moyen intérieur / extérieure
- différentiel pièce à vivre / chambres (ce critères est important pour moi, afin d'affiner les chauffages des radiateurs)
Auteur:  aurel [ 14 Nov 2013 07:54 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Pour le compteur, c'est possible avec ma solution c'est ce que j'utilise pour mon chauffage. Cela peut bien sur fonctionner avec n'importe quel autre peripherique.

J'ai terminer les scripts pour l'electricité et la temperature hier soir. Ca prend forme.

Je crérai un topic dedié ce soir ou demain pour ne pas polluer celui de gusdelamort .
Auteur:  Madoma73 [ 14 Nov 2013 21:29 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

J'ai hâte de voir ça !

Pierre
Auteur:  gusdelamort [ 15 Nov 2013 01:03 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

[cf 1er post]
Auteur:  Nico33 [ 15 Nov 2013 08:20 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Et bien ! Voilà qui semble bien avancer.
Il est clair qu'on a hâte de jouer avec tout ça !
Continue ainsi.
Auteur:  Madoma73 [ 15 Nov 2013 13:59 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Les sources... Les sources :-)

Pierre
Auteur:  bullby [ 15 Nov 2013 23:18 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Salut,

J'ai suivant ton tuto pour essayer cette fonctionnalité mais ça ne fonctionne pas.
Mon problème viens du fait que lorsque j’exécute mon script php hébergé sur mon nas depuis une page web, la bdd ne se remplit pas.
Je n'ai aucun message d'erreur sur ma page web lorsque je lance mon script php.
J'ai bien le XML avec les bonnes données et j'ai bien crée une bdd avec les même champs que toi.

D’où peut venir mon problème ?
Auteur:  gusdelamort [ 15 Nov 2013 23:29 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

Je vais refaire un tutoriel complet depuis le début.

J'ai tout réécrit mon code.
Auteur:  bullby [ 15 Nov 2013 23:34 ]
Sujet du message:  Re: [Connexion Eedomus - SQL / Xml - Oui c'est possible]

En fait je suis pas sur de ma connexion a la bdd.
Lorsque je met MONIP, MONLOGIN, MONMDP j'ai une erreur et lorsque je remplace MONIP par LOCALHOST, j'ai une page blanche.

Sais tu comment je peux vérifier ?
Page 1 sur 13 Le fuseau horaire est UTC+1 heure