[***] Zibase relevé des sondes (nouvelle version inside )

Comment interfacer la Zibase avec Homeseer ? Comment programmer votre Zibase avec un script ? Comment capturer les informations de la Zibase ...

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede xiboard » 28 Mar 2013, 13:16

Bah oui, heureusement que la moyenne de la journée n'est pas la moyenne du min/max...

Le plus propre serais de créer une nouvelle table ça éviterai les embrouilles...
Table : DegresJours
Avec : date et DJ comme paramètres

Alors il fraudais un truc dans le genre Ă  rajouter entre '}' et '?>' Ă  la fin de temperatureStatsProcess.php
Code: Tout sélectionner
   $dateDernierEnregistrement = '2013-03-15';
   $query = "select date from DegesJours order by date DESC limit 0,1";
   $res_query = exec_query($query);
   if(mysql_numrows($res_query) > 0){   
      $dateDernierEnregistrement = mysql_result($res_query,0,"date");      
   }      
   $nbJours = date_diff2($dateDernierEnregistrement,date('Y-m-d'), 60*60*24 );
   echo "<br> nbJours = ".$nbJours;
   for($i=1;$i<$nbJours;$i++){
      $dateCalcul = date('Y-m-d', mktime(0, 0, 0, date("m")  , date("d") - $i, date("Y")));
      $query = "select date from DegresJours where date = '".$dateCalcul."'";
      $res_query = exec_query($query);
      if(mysql_numrows($res_query) > 0){   
         // le calcul a dĂ©jĂ  Ă©tĂ© fait      
      }else{
         echo "<hr> Pour la date ".$dateCalcul;
            $query = "select temp_min, temp_max from temperature_stats where DATE_FORMAT(date,'%Y-%m-%d') = '".$dateCalcul."'";
         $res_query = exec_query($query);
         if(mysql_numrows($res_query) > 0){   
            $temp_max = mysql_result($res_query,0,"temp_max");
            $temp_min = mysql_result($res_query,0,"temp_min");
            $DJ = ($temp_max+$temp_min)/2-6;
         }else{
            $DJ = null;
         }
         
         if(!is_null($DJ)){
            $query = "insert into DegresJours (date, DJ) VALUES ('".$dateCalcul."', '".$DJ."')";
               exec_query($query);
         }
      }                          
   }


Je garantis pas que ça marche, il faudrait surement débugé ça un peu...
Dsl, j'ai pas trop le temps de tester ça sur ma base.
Moi là je vois que mes framboisiers font des feuilles ça me suffit :mrgreen: :mrgreen:
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede Andre33 » 28 Mar 2013, 14:26

Merci !

Pour la table ce serait ça ?


Code: Tout sélectionner
CREATE TABLE IF NOT EXISTS `DegresJours` (
  `date` date NOT NULL,
  `DJ` tinyint(2) NOT NULL,
  KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
André
Zibase 2S + FOSCAM FI8905W + Sondes Oregon Température + Pluvio + Hygro + Piscine + Chacon + OWL - Connexion Satellite Sat2Way (pour cause d'isolation totale au fond des bois ;-) + Routeur TP-Link Wifi N 3G/3.75G TL-MR3420
Andre33
P'tit Guru de domotique
 
Messages: 53
Inscription: 28 Nov 2012, 15:04

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede xiboard » 28 Mar 2013, 14:37

Euh ouai mais t'es pas obliger de passer par un script, c'est assez facile Ă  faire direct.

par contre DJ va pas ĂŞtre un entier, si ? sinon : `DJ` decimal(3,1) NOT NULL,
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede Andre33 » 28 Mar 2013, 15:43

OK j'ai mis Ă  jour ma table.

Dans la mesure ou je peux avoir une température moyenne de 12,25 °C (par exemple), est-ce que je ne dois pas plutôt indiquer `DJ` decimal(2,2) NOT NULL, ?

Sinon j'ai modifié la page temperatureStatsProcess.php avec ton code (attention il y a une erreur à la 2e ligne avec Degesjours au lieu de DegresJours)
et lorsque je charge ma nouvelle page j'obtiens ceci :
array(2) { [0]=> string(13) "hygro_thgn801" [1]=> string(20) "temp_piscine-thwr800" }
nbJours = 1
nbJours = 1

Mais rien ne s'ajoute ds ma table DegresJours.

Est-ce qu'il faut attendre minuit ?
André
Zibase 2S + FOSCAM FI8905W + Sondes Oregon Température + Pluvio + Hygro + Piscine + Chacon + OWL - Connexion Satellite Sat2Way (pour cause d'isolation totale au fond des bois ;-) + Routeur TP-Link Wifi N 3G/3.75G TL-MR3420
Andre33
P'tit Guru de domotique
 
Messages: 53
Inscription: 28 Nov 2012, 15:04

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede xiboard » 28 Mar 2013, 16:08

pour décimal(2,2) je ne sais pas, essaie !

t'as mis quoi comme $dateDernierEnregistrement = '2013-03-15'; ?
Met la première date que tu as dans ton temperature_stats

Je pense que normalement, ça devrai te remplir tout les jours entre ta première date d'enregistrement et la date d'hier.
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede Andre33 » 28 Mar 2013, 16:32

J'ai remis décimal(3,1)
J'ai mis $dateDernierEnregistrement = '2013-03-16'; (première date dans temperature_stats)

mais ça ne remplit pas la table... :|
André
Zibase 2S + FOSCAM FI8905W + Sondes Oregon Température + Pluvio + Hygro + Piscine + Chacon + OWL - Connexion Satellite Sat2Way (pour cause d'isolation totale au fond des bois ;-) + Routeur TP-Link Wifi N 3G/3.75G TL-MR3420
Andre33
P'tit Guru de domotique
 
Messages: 53
Inscription: 28 Nov 2012, 15:04

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede xiboard » 10 Avr 2013, 12:45

Bonjour,

(Andrée j'avais pas vu de notification de ta réponse, j'avais pas vu. T'a réussi finalement ?)

Sinon j'ai retoucher Ă  2 fichier : energieProcess.php et temperatureProcess.php.
Je les ai modifiés pour plus avoir le problème si le script n'est pas lancé toutes les 30min (perte connection internet) comme il faut (décalage de la date...).
Actuellement le script prenait la dernière date et rajouter 30min. Il n'était pas non plus possible de changer la période (=30min)
J'ai modifié maintenant le script enregistre avec la date en mettant les secondes à 0 et en arrondisant inférieur de la période.
(exemple période de 10min : si 21:32:25 > 21:32:00 si 15:38:49 > 15:30:00)
maintenant vous pouvez aussi changer la période entre 1 et 59 min. Si on veux mettre des heures il faudrait revoir le script mais c'est fessable facilement.
Plus de risques de décallage, c'est toujours le bon horaire arrondi à la période.

Voici les script :
temperatureProcess.php :
Code: Tout sélectionner
<?php
include_once('./include/include.php');
include('./include/connect_db.php');

$periode = 30;
$hydro = 0;
if(isset($_GET['hydro']) && !empty($_GET['hydro'])){
   $hydro = $_GET['hydro'];   
}
if(isset($_GET['temp']) && !is_null($_GET['temp']) && isset($_GET['zone']) && !empty($_GET['zone']) ){
   $temp = $_GET['temp'];
   $zone = $_GET['zone'];
}else{
   $query = "INSERT INTO temperature (date, zone, temp) VALUES ('".date('Y-m-d H:i')."','Erreur','-1')";
   exec_query($query);
   die('KO');     
}


$query = "select date from temperature where zone = '".$zone."'order by date DESC limit 0,1";
$res_query = exec_query($query);

$nbMinutes = $periode;

$P2 = explode(" ",date("d m Y H i s"));
$new_minute = intval(($P2[4]/$periode))*$periode;
$newDate = date('Y-m-d H:i:s', mktime($P2[3],$new_minute,0,$P2[1],$P2[0],$P2[2])); //donne la date actuelle arondi inférieur à la période

if(mysql_numrows($res_query) > 0){      
   $nbMinutes = date_diff2(mysql_result($res_query,0,"date"),$newDate, 60);
   }

if($nbMinutes >= $periode){
   
   $query = "INSERT INTO temperature (date, zone, temp, hydro) VALUES ('".$newDate."','".$zone."','".($temp/10)."','".$hydro."')";
   exec_query($query);
}
?>


energieProcess.php :
Code: Tout sélectionner
<?php
include_once('./include/include.php');
include('./include/connect_db.php');

$periode = 10; //en min entier compris entre 1 et 59

if(isset($_GET['energie']) && !is_null($_GET['energie']) && isset($_GET['cumul']) && !is_null($_GET['cumul']) && isset($_GET['instant']) && !is_null($_GET['instant']) ){
   $instant = $_GET['instant'];
   $cumul = $_GET['cumul'];
   $energie = $_GET['energie'];
}else{
   $query = "INSERT INTO energie (date, energie, cumul) VALUES ('".date('Y-m-d H:i')."','Erreur','-1')";
   exec_query($query);
   die('KO');     
}

$query = "select date from energie where energie = '".$energie."'order by date DESC limit 0,1";
$res_query = exec_query($query);

$nbMinutes = $periode;

$P2 = explode(" ",date("d m Y H i s"));
$new_minute = intval(($P2[4]/$periode))*$periode;
$newDate = date('Y-m-d H:i:s', mktime($P2[3],$new_minute,0,$P2[1],$P2[0],$P2[2])); //donne la date actuelle arondi inférieur à la période

if(mysql_numrows($res_query) > 0){      
   $nbMinutes = date_diff2(mysql_result($res_query,0,"date"),$newDate, 60);
   }
   
if($nbMinutes >= $periode){
   
   $query = "INSERT INTO energie (date, energie, cumul, instant) VALUES ('".$newDate."','".$energie."','".abs($cumul/10)."','".abs($instant/10)."')";
   exec_query($query);
}
?>


J'ai passé la période de mon relevé d'énergie à 10min car je trouvais que pour le relevé c'était pas assez précis 30min.

Pour ceux qui n'ont pas vu j'ai soumis un petit sript aussi pour surveiller si la connection zibase - sondes et toujours ok.
> http://www.touteladomotique.com/forum/viewtopic.php?f=49&t=10628

Sinon onk1 ne donne plus de nouvelles ?
Je me demandais si il Ă©tait possible de modifier la partie oĂą il se connecte aux serveurs zibase pour remplacer login/mdp par id/token ?

A bientĂ´t :D
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede Andre33 » 10 Avr 2013, 12:49

xiboard a écrit:André j'avais pas vu de notification de ta réponse, j'avais pas vu. T'a réussi finalement ?

Tout marche sauf la partie "Degrés jours" qui refuse d'inscrire quoi que ce soit dans la base...
André
Zibase 2S + FOSCAM FI8905W + Sondes Oregon Température + Pluvio + Hygro + Piscine + Chacon + OWL - Connexion Satellite Sat2Way (pour cause d'isolation totale au fond des bois ;-) + Routeur TP-Link Wifi N 3G/3.75G TL-MR3420
Andre33
P'tit Guru de domotique
 
Messages: 53
Inscription: 28 Nov 2012, 15:04

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede patmtp35 » 10 Avr 2013, 14:42

une petite question , je viens de m’apercevoir d'un truc bizarre qd je lance savesondescalues.php j'obtien:

Name = Energy_Inst -> instant = 0.4 -> cumul = 178.8
http://192.168.x.x/zibase/temperaturePr ... &hydro=0.4
URL rec Power : OK
data =
Name = TempHygroR1 -> temp = 20.7 -> hydro = 44
http://192.168.x.x/zibase/temperaturePr ... 7&hydro=44
URL rec temp : OK
data =
Name = Exterieur_AR -> temp = 18.3 -> hydro = 0
http://192.168.x.x/zibase/temperaturePr ... 83&hydro=0
URL rec temp : OK
data =

tout est donc ok mais pour l'energie il ne lance pas eneregieprocess.php mais temperatureprocess.php une idee ?
Zibase Pro + Chacon + XDD + Oregon + CM119 +Z-Wave
Imperihome => asus ME103K + Cdisplay YAste
4 Foscam => Videostation
RPI => Teleinfo
RPI => RASPBMC
RPI => OPENELEC
RPI => SQUEEZEPLAYER
Proliant N54l => Esxi 5.5 + Xpenology DSM4.3 => (WEB + PHPMYADMIN + Videostation) + 2008R2 => (Supervision => WSUS) + Xpenology DSM5.0 (Multimedia) + JEEDOM VM
NAS Thecus N0503 => Sauvegarde
patmtp35
Dieu de domotique
 
Messages: 465
Inscription: 19 Mar 2012, 21:43

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede xiboard » 10 Avr 2013, 14:49

Moi ça m'affiche pas ça mais ça plutôt :

Code: Tout sélectionner
Name = EnergieElectrique -> instant = 0.2 -> cumul = 61.4
URL rec Power : OK
Name = Veranda -> temp = 23.3 -> hydro = 50
URL rec temp : OK
Name = MultiSensor_Lumino -> luminosite = 471
URL rec temp : OK
Name = MultiSensorSalon -> temp = 16.5 -> hydro = 61
URL rec temp : OK
Name = SondeExterieure -> temp = 16.7 -> hydro = 62
URL rec temp : OK
Name = SondeSalledeBain -> temp = 17.7 -> hydro = 55
URL rec temp : OK
Name = SondeChambrePaul -> temp = 15.8 -> hydro = 0
URL rec temp : OK


J'ai pas les url afichées.
Sinon cette partie ce trouve dans include/libs/NK1_ZibaseSonde.class.php Ă  function recValues().
Il n'y a pas de raison que 'power' n'appel pas energieProcess.php
ça remplie pas ta BDD ?
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede xiboard » 10 Avr 2013, 15:08

J'ai régler le soucis d'andré donc si il y en a qu'ils veulent aussi faire une table degrésjours (sait-on jamais :shock: :shock: :lol: )

Voici le code de DJStatsProcess.php :
Code: Tout sélectionner
<?php
include_once('./include/include.php');
include('./include/connect_db.php');

$dateDernierEnregistrement = '2013-03-15';
$query = "select date from DegresJours order by date DESC limit 0,1";
$res_query = exec_query($query);

if(mysql_numrows($res_query) > 0){   
  $dateDernierEnregistrement = mysql_result($res_query,0,"date");     
}     
$nbJours = date_diff2($dateDernierEnregistrement,date('Y-m-d'), 60*60*24 );
echo "<br> nbJours = ".$nbJours;
for($i=1;$i<$nbJours;$i++){
  $dateCalcul = date('Y-m-d', mktime(0, 0, 0, date("m")  , date("d") - $i, date("Y")));
  $query = "select date from DegresJours where date = '".$dateCalcul."'";
  $res_query = exec_query($query);
  if(mysql_numrows($res_query) > 0){   
   // le calcul a dĂ©jĂ  Ă©tĂ© fait     
  }else{
      echo "<hr> Pour la date ".$dateCalcul;
      $query = "select temp_min, temp_max from temperature_stats where DATE_FORMAT(date,'%Y-%m-%d') = '".$dateCalcul."'";
      $res_query = exec_query($query);
      if(mysql_numrows($res_query) > 0){   
         $temp_max = mysql_result($res_query,0,"temp_max");
         $temp_min = mysql_result($res_query,0,"temp_min");
         $DJ = ($temp_max+$temp_min)/2-6;
      }else{
         $DJ = null;
      }
    if(!is_null($DJ)){
      $query = "insert into DegresJours (date, DJ) VALUES ('".$dateCalcul."', '".$DJ."')";
         exec_query($query);
    }
  }                         
}

?>


A appeler après minuit tt les jours.
Créer une table DegresJours avec 2 colonnes :
date -> type : date
DJ -> type : decimal(4,2)

VoilĂ .
xiboard
P'tit Guru de domotique
 
Messages: 78
Inscription: 27 Nov 2012, 00:36

Re: Zibase relevé des sondes (nouvelle version inside )

Messagede patmtp35 » 10 Avr 2013, 15:09

oui effectivement cela s'enregistre bien, mais je suis surpris..... et le fichier que tu cite est ok.

votre savesondesvalues.php vous le lancer tout les combien ?
Zibase Pro + Chacon + XDD + Oregon + CM119 +Z-Wave
Imperihome => asus ME103K + Cdisplay YAste
4 Foscam => Videostation
RPI => Teleinfo
RPI => RASPBMC
RPI => OPENELEC
RPI => SQUEEZEPLAYER
Proliant N54l => Esxi 5.5 + Xpenology DSM4.3 => (WEB + PHPMYADMIN + Videostation) + 2008R2 => (Supervision => WSUS) + Xpenology DSM5.0 (Multimedia) + JEEDOM VM
NAS Thecus N0503 => Sauvegarde
patmtp35
Dieu de domotique
 
Messages: 465
Inscription: 19 Mar 2012, 21:43

PrécédenteSuivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique