[Stat Periph / GPS IOS - Tuto complet 3.1 / New Température]

Partagez ici vos astuces et idées d'utilisation d'eedomus

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar gusdelamort » 23 Avr 2014 21:46

je confirme ça fonctionne

au besoin, une alternative ici :
extractforanalyse.php - 551 B
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar Aurel64 » 24 Avr 2014 10:26

Bonjour,

J'ai réussi à utiliser tes scripts pour faire le calcul de la conso d'eau et le calcul d'utilisation de la TV.
Les scripts d'import et de création de stat fonctionne correctement si je les lance depuis un navigateur (entre 3 et 5 min pour le calcul de stat).
Par contre je n'arrive pas à le faire lancer par la box eedomus. Cela fonctionne pour la partie elec mais pas pour les autres.
Est-ce que tu as une idée/solution ? Je pense que ca vient de la durée d'execution.
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar DjMomo » 24 Avr 2014 12:53

Aurel64 a écrit:entre 3 et 5 min pour le calcul de stat[...]Je pense que ca vient de la durée d'execution.


Effectivement, de tête, si pas de réponse au bout de 10 secondes, la box affiche un message d'erreur.
Moi ? C'est Fabien
--------------------------------------------
Mon Github : http://www.github.com/DjMomo/
DjMomo
 
Messages : 1121
Inscription : 26 Sep 2012

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar Nico33 » 24 Avr 2014 13:57

Il me semble que c'est 30 secondes ... Mais pas sûr.
Peut-être qu'en cochant ignorer les erreurs dans le profil expert de l'actionneur http concerné, ça le ferait ?
Nico33
 
Messages : 1013
Inscription : 14 Juin 2013

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar Aurel64 » 24 Avr 2014 21:51

En fait ça ne me génère pas d'erreur. Et j'ai l'actionner qui passe bien de en cours à terminé
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar gusdelamort » 24 Avr 2014 22:54

Il faut voir le type de données gèrées.

Tu peux me faire un extract des données qui ne passent pas en mode stat ?
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar Aurel64 » 25 Avr 2014 08:47

Ci-joint le fichier que j'ai modifié pour avoir le calcul de l'eau avec mon compteur d'eau a impulsion.

Ton script modifié pour faire le calcul de la conso d'eau :

<?php
include 'compteetconnexion.php';

// Developpeur : gusdelamort pour forum.eedomus.com
// Version : 2.0
// Objectif : Sortir des statistiques d'utilisation
// variable d'entrée : le nom du produit
// option : &energie = 1 permet de founir les statistiques energetiques (si elle existe)
// Bug Connu : RAS

// on se connecte à MySQL
$db = mysql_connect($ipserveurbdd,$compte,$password);

// on sélectionne la base
mysql_select_db($base,$db);

$table = $_GET["table"];
$energie = $_GET["energie"];
$tableenergie = $table.'energie';
$tablestat = $table.'stat';

//les stats sont refait à chaque fois
//on vide donc la table d'historique du peripherique et de ses stats
//$vider = "TRUNCATE TABLE $tableenergie";
//mysql_query ($vider);
//$vider = "TRUNCATE TABLE $tablestat";
//mysql_query ($vider);

// on vide uniquement l'année, les statistiques des années passées sont gardées
$vider = "DELETE FROM $tableenergie WHERE annee = '$annee'";
mysql_query ($vider);

$vider = "DELETE FROM $tablestat WHERE annee = '$annee'";
mysql_query ($vider);

$nombre = "SELECT * FROM $table";
$result = mysql_query($nombre);
$nombre = mysql_num_rows($result);

//on va créer les stats globales
$mois = 1;
while($mois <= 12)
{
$moisteste = 'm'.$mois;
$ajout = "INSERT INTO $tablestat VALUES ('','$annee','$moisteste',0)";
mysql_query ($ajout);
$mois = $mois + 1;
}

$numsemaine = 1;
while($numsemaine <= 52)
{
$semaineteste = 's'.$numsemaine;
$ajout = "INSERT INTO $tablestat VALUES ('','$annee','$semaineteste',0)";
mysql_query ($ajout);
$numsemaine = $numsemaine + 1;
}

$numjour = 1;
while($numjour <= 365)
{
$jourteste = 'j'.$numjour;
$ajout = "INSERT INTO $tablestat VALUES ('','$annee','$jourteste',0)";
mysql_query ($ajout);
$numjour = $numjour + 1;
}

//pour avoir les stats de la semaine
$mois = 1;
$numsemaine = '01';
$consoweek = 0;
$consomois = 0;
$jourcpt = 1;

while($mois <= 12)
{
if ($mois < 10)
{
$moist = '0'.$mois;
}
else
{
$moist = $mois;
}
$statutonmensuel= "SELECT COUNT(*)/4 AS conso_litre FROM $table WHERE date LIKE '$annee-$moist%' AND etat = 'Ouve'";
$statutonmensuel = mysql_query($statutonmensuel);
while($resultat = mysql_fetch_row($statutonmensuel))
{
$utilisationmois = $resultat[0];
}
if ($utilisationmois != NULL)
{
$moisteste = 'm'.$mois;
$udpatedureemois = "UPDATE $tablestat SET `valeur` = $utilisationmois WHERE `type` LIKE '$moisteste' AND annee = '$annee'";
$resultupdatemois= mysql_query($udpatedureemois);
}

$nbrjourdumois = cal_days_in_month(CAL_GREGORIAN, $mois, $annee);
$jourtraite = 1;

while($jourtraite <= $nbrjourdumois)
{
$timestamp = mktime(0, 0, 0, $mois, $jourtraite, $annee);
$jour = date('w', $timestamp);

// permet de savoir quel jour on est, le dimanche est un 0 la semaine se finit donc
if ($mois < 10)
{
$moist = '0'.$mois;
}
else
{
$moist = $mois;
}
if ($jourtraite < 10)
{
$jourtraitet = '0'.$jourtraite;
}
else
{
$jourtraitet = $jourtraite;
}

$statutonjournalier = "SELECT COUNT(*)/4 AS conso_litre FROM $table WHERE date LIKE '$annee-$moist-$jourtraitet%' AND etat = 'Ouve'";

$resultjournalier = mysql_query($statutonjournalier);

while($resultat = mysql_fetch_row($resultjournalier))
{
$utilisationjournaliere = $resultat[0];
$jourteste = 'j'.$jourcpt;

if ($utilisationjournaliere != NULL)
{
//si la somme journaliere est supérieure a 0 on modifie la table
$udpatedureejour = "UPDATE $tablestat SET `valeur` = $utilisationjournaliere WHERE `type` LIKE '$jourteste' AND annee = '$annee'";
$resultupdatejour = mysql_query($udpatedureejour);
}
else
{
$utilisationjournaliere = 0;
}

if ($jour == 0)
{
// c'est un dimanche
$consoweek = $consoweek + $utilisationjournaliere;
$semaineteste = 's'.$numsemaine;

if ($consoweek != 0)
{
$udpatedureesem = "UPDATE $tablestat SET `valeur` = $consoweek WHERE `type` LIKE '$semaineteste' AND annee = '$annee'";
mysql_query($udpatedureesem);
}

//et on repart pour la prochaine semaine
$consoweek = 0;
$numsemaine = $numsemaine + 1;

if ($numsemaine <10)
{
$numsemaine = '0'.$numsemaine;
}
}
else
{
$consoweek = $consoweek + $utilisationjournaliere;
}
}
$consomois = $consomois + $utilisationjournaliere;
$jourtraite = $jourtraite + 1;

$jourcpt = $jourcpt + 1;
}

$moisteste = 'm'.$mois;
$mois = $mois + 1;
$consomois = 0;
}

// on ferme la connexion à mysql
mysql_close();
?>
Pièces jointes
table eau stat.JPG
Table stat eau
table eau stat.JPG (71.37 Kio) Consulté 33140 fois
table eau.JPG
Table import eau
table eau.JPG (77.64 Kio) Consulté 33140 fois
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar gusdelamort » 27 Avr 2014 09:35

Remarque :
sur dl.free.fr si tu utilises adblock... impossible de l'utiliser, il faut se taper la petite pub :)

qu'est ce qui ne fonctionne pas alors pour toi Aurel64 ?
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar Aurel64 » 28 Avr 2014 20:38

Bon du coup j'ai contourné le problème en lancant le calcul des stats depuis le synology directement.
Maintenant ca marche correctement car la charge est déporté sur le synology peut importe le temps d'execution.
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar Aurel64 » 28 Avr 2014 21:24

Question : Est-ce que quelqu'un à réussi à corriger le problème :
Warning: mysql_fetch_row() expects parameter 1
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar gusdelamort » 28 Avr 2014 21:28

[Update en version 3.0]
La partie température a été réécrite, c'est pas plus joli, mais c'est plus simple !

@Aurel64 -> sur quelle fichier ça bugue ?
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar Aurel64 » 28 Avr 2014 21:52

C'est le fichier bddconsultstat.php
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar Aurel64 » 28 Avr 2014 21:55

pour être plus precis ce bug est sur la partie qui génère le mois et semaine maxi mini.
Avec le reste du code c'est bon.
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar gusdelamort » 28 Avr 2014 22:00

Tu peux me préciser ta version de php ? Ca doit certainement une version plus récente que la mienne (indiqué en première page).

Je viens d'essayer sur un périphérique de A à Z, pas de bug.

Edit : j'ai en tête pourquoi j'ai fait cette partie, mais faut que je vois si je ne peux pas l'optimiser et corriger au besoin) :)

[J'ai corrigé le script, une version améliorée de requête, avec une version allégé, est-ce que cela fonctionnez chez toi ?]
Il sera mis dans la prochaine version 3.0 de la totale.
http://dl.free.fr/hrTsI1KBX
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar DjMomo » 29 Avr 2014 09:38

@gusdelamort, pour éviter des warnings sur tes mysql_fetch_row, il te faut faire un if avant ton while, ce qui donnerait :

Code : Tout sélectionner
if ($resultmax !== false)
     while($resultat = mysql_fetch_row($resultmax))
Moi ? C'est Fabien
--------------------------------------------
Mon Github : http://www.github.com/DjMomo/
DjMomo
 
Messages : 1121
Inscription : 26 Sep 2012

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar gusdelamort » 29 Avr 2014 10:03

Merci DjMomo, en effet j'ai tendance à coder en mode autoroute :)
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar Aurel64 » 29 Avr 2014 22:12

J'ai la Version : 4.1.11
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar Aurel64 » 29 Avr 2014 22:19

POur info, j'ai essayé de mettre if ($resultmax !== false) {
mais j'ai toujours la meme erreur.
Aurel64
 
Messages : 77
Inscription : 07 Mars 2013
Localisation : FRANCE - Pau

Re: [Stat Periph / GPS IOS - Tuto complet 3.0 / New Températ

Messagepar gusdelamort » 30 Avr 2014 19:58

@aurel, t'as essayé avec mon fichier modifié réuploadé juste au dessus ?
gusdelamort
 
Messages : 259
Inscription : 16 Mai 2013

Re: [Statistiques Periph et GPS pour Iphone - Tuto complet 2

Messagepar pascool » 02 Mai 2014 16:09

gusdelamort a écrit:
Cas d'utilisation chez moi :
- J'ai une variable présence lié au ping iphone
- Cette variable teste chaque matin à 3 reprises ma présence, si KO elle conclue que je suis bien absent de chez moi
- Si je suis à une certaine distance de ma maison, la localisation se fait toutes les 10 minutes
- Dès que je passe en dessous d'un certain kilomètrage, la localisation s'active toutes les minutes
- En dessous de 1000 mètres, si je suis détecté comme 'absent' et si il fait nuit j'allume la lumière extérieur.


Bonjour gusdelamort !

As-tu un exemple des règles utilisées pour faire varier la fréquence de localisation et déclencher une action en fonction de la distance ?
Pour comparer la distance dans ces règles, il faut bien configurer le capteur HTTP de iphone.php?xmldemande=oui avec Type de données = Nombre décimal ?

Image

Image

J'ai voulu tester le fonctionnement en créant une règle de notification toutes les minutes lorsque la position dépasse les 1000m. de la maison :

Image

Je m'attendais à recevoir une notif toutes les minutes, mais rien ne se passe. La règle ne se déclenche pas. :cry:

Qu'est-ce que j'ai raté dans la configuration ?
pascool
 
Messages : 28
Inscription : 13 Oct 2013

PrécédentSuivant

Retour vers Mes usages

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)