Amelioration de mes Graphes [résolu]

Ce forum est dédié aux discussions qui concernent les graphiques réalisés avec la librairie Highcharts, Une question, un bug ?

Modérateurs : jturlier, Météo Villarzel

b.gwen
Messages : 25
Enregistré le : 04 avr. 2015, 18:12

Re: Amelioration de mes Graphes

Message par b.gwen » 12 avr. 2015, 09:22

Bonjour et merci Météo Villarzel pour ton aide , mais ce n'est pas tout a fait comme cela chez chez moi c'est pour cela que je galere . C'est bien dans plotOptions: series ?

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 
<meta name="viewport" content="width=1280, user-scalable=yes" > 
<meta name="format-detection" content="telephone=no" >
<meta http-equiv="imagetoolbar" content="no">
<!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<title>DHT22 Temperature Ext&#233;rieure</title>

    <!-- Le styles -->
    <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet">
    <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet">
    <style type="text/css">
      body {
        padding-top: 150px;
        padding-bottom: 40px;
        background-color:#4B4BFF;
      }
    h3{font-familly: verdana;
    color: red}
    </style>
     
  </head>

  <body>

    <script type="text/javascript">
    
         
       // return everything after the question mark
       function GetUrlParameter() {
         idx = window.location.href.indexOf("?");
         if( idx < 0 ) return "";
        return window.location.href.substring(idx+1);
        }
          urlParameter = GetUrlParameter();
     </script>

    <div class="navbar navbar-inverse navbar-fixed-top">
         <div class="navbar-inner">
           <div class="container-fluid">

             <h3>Temperature Exterieure</h3>
             <div class="nav-collapse collapse">
               <ul class="nav">
                 
               </ul>
             </div><!--/.nav-collapse -->
           </div>
         </div>
       </div>

       <div class="container-fluid">
         <div class="row-fluid">
           <div class="span2">
             <div class="well sidebar-nav">
               <ul class="nav nav-list">
                 <li class="nav-header">Temperature Exterieure</li>
                  <script tyep="text/javascript">
                   var qparser = document.createElement('a');
                   qparser.href = window.location.href;
                   var frame1url = qparser.protocol + "//" + qparser.host + qparser.pathname;

                  document.write('<li><a href="' + frame1url + '?3h">Dernières 3h</a></li>');
                  document.write('<li><a href="' + frame1url + '?24h">Dernières 24h</a></li>');
                  document.write('<li><a href="' + frame1url + '?48h">Dernières 48h</a></li>');
                  document.write('<li><a href="' + frame1url + '?1w">Semaine</a></li>');
                  document.write('<li><a href="' + frame1url + '?1m">Mois</a></li>');
                  document.write('<li><a href="' + frame1url + '?3m">3 derniers mois</a></li>');
                  document.write('<li><a href="' + frame1url + '?1y">Année dernière</a></li>');
                 </script>
               </ul>
             </div><!--/.well -->
           </div><!--/span-->
           <div class="span10">
             <div id="content">

               </div>
           </div><!--/span-->
         </div><!--/row-->

         

       </div><!--/.fluid-container-->
    <!-- Le javascript
    ================================================== -->

    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.min.js" charset="UTF-8"></script>
<!--
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highcharts/2.3.1/highcharts.js" charset="UTF-8"></script>
-->
    <script type="text/javascript" src="/charts/js/highcharts.js" charset="UTF-8"></script>
    <script type="text/javascript" src="/charts/js/themes/gray.js"></script>
    <script type="text/javascript">
        
      var all;
function computeSunrise(e, t) {
	var n = 13.408056;
	var r = 52.518611;
	var i = 90.83333333333333;
	var s = Math.PI / 180;
	var o = 180 / Math.PI;
	var u = n / 15;
	var a;
	if (t) {
		a = e + (6 - u) / 24
	} else {
		a = e + (18 - u) / 24
	}
	M = .9856 * a - 3.289;
	L = M + 1.916 * Math.sin(M * s) + .02 * Math.sin(2 * M * s) + 282.634;
	if (L > 360) {
		L = L - 360
	} else if (L < 0) {
		L = L + 360
	}
	RA = o * Math.atan(.91764 * Math.tan(L * s));
	if (RA > 360) {
		RA = RA - 360
	} else if (RA < 0) {
		RA = RA + 360
	}
	Lquadrant = Math.floor(L / 90) * 90;
	RAquadrant = Math.floor(RA / 90) * 90;
	RA = RA + (Lquadrant - RAquadrant);
	RA = RA / 15;
	sinDec = .39782 * Math.sin(L * s);
	cosDec = Math.cos(Math.asin(sinDec));
	cosH = (Math.cos(i * s) - sinDec * Math.sin(r * s)) / (cosDec * Math.cos(r * s));
	var f;
	if (t) {
		f = 360 - o * Math.acos(cosH)
	} else {
		f = o * Math.acos(cosH)
	}
	f = f / 15;
	T = f + RA - .06571 * a - 6.622;
	UT = T - u;
	if (UT > 24) {
		UT = UT - 24
	} else if (UT < 0) {
		UT = UT + 24
	}
	localT = UT + 1;
	return localT * 3600 * 1e3
}
function dayOfYear() {
	var e = Math.floor((new Date).setFullYear((new Date).getFullYear(), 0, 1) / 864e5);
	var t = Math.ceil((new Date).getTime() / 864e5);
	var n = t - e;
	return n
}
Highcharts.setOptions({
    global: {
		useUTC: false
	},

	lang: {
		months: [" Janvier "," Février "," Mars "," Avril "," Mai "," Juin "," Juillet "," Août "," Septembre "," Octobre "," Novembre "," Décembre"],
        weekdays: [" Dim "," Lun "," Mar "," Mer "," Jeu "," Ven "," Sam"],
        shortMonths: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil','Août', 'Sept', 'Oct', 'Nov', 'Déc'],
	}
});

options = {
	chart: {
		renderTo: "content",
		type: "spline",
        backgroundColor: '#191919',
        plotBorderColor: '#808080',
        plotBorderWidth: 5,
        plotBackgroundColor: '#000000',
	},
	
	title: {
		text: "Temperatures Exterieur"
	},
	
		
	xAxis: {
		type: "datetime",
		dateTimeLabelFormats: {
			hour: "%H. %M"
		}
	},
	
	yAxis: [{
		title: {
			text: "T ( °C )"
		}
	},
	{
		title: {
			text: "Humidité ( % )"
		},
             opposite: true
	}],
      tooltip: {
                borderColor: '#808080',
                shared: false,
                backgroundColor: '#4B4BFF',
                formatter: function() {
                        if(this.series.name == 'Humidity')
                         {
                          return "<b>" + this.series.name + "</b><br/>" + Highcharts.dateFormat("%H:%M", this.x) + " : " + this.y.toFixed(1) + "%"
		         }
                        else
                         {                        
                          return "<b>" + this.series.name + "</b><br/>" + Highcharts.dateFormat("%H:%M", this.x) + " : " + this.y.toFixed(1) + "°C"
                         }
                }
        },	
	plotOptions: {
		series: {
			lineWidth: 2,
            marker: {
				radius: 2
			},
		    color: '#FF0000'
        }
	},
	
	lineWidth: 3,
	color: '#ff0000',
    series: []
}

      
       //   multiple parameters  decoder
      function gup( name ){
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
	var regexS = "[\\?&]"+name+"=([^&#]*)";  
	var regex = new RegExp( regexS );  
	var results = regex.exec( window.location.href ); 
 	if( results == null )    return "";  
	else    return results[1];}
       

        // return everything after the question mark
       function GetUrlParameters() {
         idx = window.location.href.indexOf("?");
         if( idx < 0 ) return "";
        return window.location.href.substring(idx+1);
        }
           

      
      function GetChartXml() {
        switch(urlParameter)
        {
          case "3h":
          case "48h":
          case "1w":
          case "1m":
          case "3m":
          case "1y":
                     return "webdata/DHT22_" + urlParameter + ".xml";
         }
         return "webdata/DHT22_24h.xml";
      }
      
      
      function GetSerieYAxis(sName)
      {
        
        switch(sName)
        {
          case "hm_dht22": return 1;
        }
        
        return 0;
        
      }





   

      function GetSerieName(sName)
      {
        
        switch(sName)
        {
          
          case "th_cpu": return "CPU";
          case "th_dht22": return "Temperature";
          case "hm_dht22":   return "Humidité";
        }
        
        
        return sName;
        
      }
      
      function GetChartTitle()
      {
       
        switch(urlParameter)
        {
          case "3h":
                return "Température des 3 dernières heures";
          case "48h":
                return "Température des dernières 48 heures";
          case "1w":
                return "Température de la semaine";
          case "1m":
                return "Température du mois";
          case "3m":
                return "Température des 3 derniers mois";
          case "1y":
                return "Température de l'année dernière";
          }
                return "Température des dernières 24 heures";
      }

     function GetNumberOfDays()
     {
        switch(urlParameter)
        {
          case "3h":
                return 1;
          case "48h":
                return 2;
          case "1w":
                return 7;
          case "1m":
                return 31;
          case "3m":
                return 0;
          case "1y":
                return 0;
          }
                return 1;

     }      
      
      
      
      
      $(document).ready(function() {

        $.ajax({
          type: "GET",
          url: GetChartXml(),
          dataType: "xml",
          success: function(xml) {
            var series = []

            //define series
            $(xml).find("entry").each(function() {
               var seriesOptions;

             
              seriesOptions = {
                name: GetSerieName($(this).text()),
                yAxis: GetSerieYAxis($(this).text()),
		data: []

               }
              options.series.push(seriesOptions);

            });

            //populate with data
            $(xml).find("row").each(function() {
              var t = parseInt($(this).find("t").text()) * 1000

              $(this).find("v").each(function(index) {
                var v = parseFloat($(this).text())
                v = v || null
                if (v != null) {
                  options.series[index].data.push([t, v])
                };
              });
            });

            options.title.text = GetChartTitle();
            $.each(series, function(index) {
              options.series.push(series[index]);
            });

            //add sunrise and sunset
            options.xAxis.plotBands = []

            var nday= GetNumberOfDays();



            if(nday>0)
            for (var i = nday; i >= 0; i--) {
              var d = new Date();
              d.setHours(0,0,0,0);
              d.setDate(d.getDate()-i);
              var sunrise = d.getTime()+computeSunrise(dayOfYear(), true);
              var sunset = d.getTime()+computeSunrise(dayOfYear(), false);
              options.xAxis.plotBands.push({
                from: sunrise,
                to: sunset,
                color: '#000000'  
              });  
            };

            chart = new Highcharts.Chart(options);
          }
        });
      });


    </script>

 
</body>
</html>

Modifié en dernier par b.gwen le 13 avr. 2015, 07:17, modifié 1 fois.

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Amelioration de mes Graphes

Message par Météo Villarzel » 12 avr. 2015, 23:55

normalement c'est dans series: []
mais comme chez toi il n'y a rien, je suppose qu'il trace tous ce qu'il trouve, il faut supprimer la série humidité dans la partie PHP qui appelle les valeurs.

A+
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

b.gwen
Messages : 25
Enregistré le : 04 avr. 2015, 18:12

Re: Amelioration de mes Graphes

Message par b.gwen » 13 avr. 2015, 19:41

Bonsoir , Météo Villarzel et merci pour ta réponse .

Exact il n'y a rien, il trace tous ce qu'il trouve. Ou sont caché les valeurs de la série humidité et temperature dans le code Html ? J'ai posté le code en entier ,si une personne pouvais m'aider , car j'ai essayé pas mal de chose et ca me plante le graph , la page html interroge une BD qui as les 2 valeurs .
Merci d'avance ,

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Amelioration de mes Graphes

Message par Météo Villarzel » 13 avr. 2015, 20:11

oui mais on ne connaît pas le code qui appel la BDD et te crées apparemment un fichier xml ??

Code : Tout sélectionner

$(document).ready(function() {

        $.ajax({
          type: "GET",
          url: GetChartXml(),
          dataType: "xml",
          success: function(xml) {
            var series = []
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

alain
Messages : 101
Enregistré le : 21 nov. 2014, 20:23

Re: Amelioration de mes Graphes

Message par alain » 13 avr. 2015, 23:38

bonsoir
pour avoir fait des graphs de cette manière,
ou je n'ai pas compris le post,
ou bien je persiste:
les données se trouvent dans la base RDD et comme nous dans une base MSQL;
il faut bien a un moment les extraire.
Je viens d'essayer cette commande sur une base RDD, qui ne comporte qu'une seule DS, mais on peut extraire la DS que l'on veut,voir seulement une portion de DS
DS = (DATA SOURCE)

la commande ( pour l'exemple en batch)

Code : Tout sélectionner

rrdtool dump EDF.rrd toto.xml
pause
ce qui donne, pour une portion de temps et sur le DS consommation pac

Code : Tout sélectionner

!-- Round Robin Database Dump --><rrd>	<version> 0003 </version>
	<step> 60 </step> <!-- Seconds -->
	<lastupdate> 1428101237 </lastupdate> <!-- 2015-04-04 00:47:17 Paris, Madrid (heure d’été) -->

	<ds>
		<name> CONSOMMATION_PAC </name>
		<type> GAUGE </type>
		<minimal_heartbeat> 600 </minimal_heartbeat>
		<min> -0.0000000000e+000 </min>
		<max> 4.0000000000e+003 </max>

		<!-- PDP Status -->
		<last_ds> 0 </last_ds>
		<value> 0.0000000000e+000 </value>
		<unknown_sec> 0 </unknown_sec>
	</ds>

<!-- Round Robin Archives -->	<rra>
		<cf> AVERAGE </cf>
		<pdp_per_row> 1 </pdp_per_row> <!-- 60 seconds -->

		<params>
		<xff> 5.0000000000e-001 </xff>
		</params>
		<cdp_prep>
			<ds>
			<primary_value> 0.0000000000e+000 </primary_value>
			<secondary_value> 0.0000000000e+000 </secondary_value>
			<value> NaN </value>
			<unknown_datapoints> 0 </unknown_datapoints>
			</ds>
		</cdp_prep>
		<database>
<!-- 2015-01-31 18:04:00 Paris, Madrid / 1422723840 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:05:00 Paris, Madrid / 1422723900 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:06:00 Paris, Madrid / 1422723960 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:07:00 Paris, Madrid / 1422724020 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:08:00 Paris, Madrid / 1422724080 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:09:00 Paris, Madrid / 1422724140 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:10:00 Paris, Madrid / 1422724200 --> <row><v> 6.2000000000e+002 </v></row>
			<!-- 2015-01-31 18:11:00 Paris, Madrid / 1422724260 --> <row><v> 2.7915425600e+002 </v></row>
			<!-- 2015-01-31 18:12:00 Paris, Madrid / 1422724320 --> <row><v> 0.0000000000e+000 </v></row>
			<!-- 2015-01-31 18:13:00 Paris, Madrid / 1422724380 --> <row><v> 0.0000000000e+000 </v></row>
			<!-- 2015-01-31 18:14:00 Paris, Madrid / 1422724440 --> <row><v> 3.3099750900e+002 </v></row>
			<!-- 2015-01-31 18:15:00 Paris, Madrid / 1422724500 --> <row><v> 6.0943635333e+002 </v></row>
			<!-- 2015-01-31 18:16:00 Paris, Madrid / 1422724560 --> <row><v> 5.9475664333e+002 </v></row>
			<!-- 2015-01-31 18:17:00 Paris, Madrid / 1422724620 --> <row><v> 6.1598267750e+002 </v></row>
			


	</database>
	</rra>
</rrd>

Modifié en dernier par alain le 14 avr. 2015, 00:14, modifié 1 fois.
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
windows XP SP3 sur vieux portable destiné a la météo
Windows7 sur mon portable, permet de tester les applications qui ne veulent plus de XP
http://mapetitemeteo.esy.es/

alain
Messages : 101
Enregistré le : 21 nov. 2014, 20:23

Re: Amelioration de mes Graphes

Message par alain » 14 avr. 2015, 00:04

re
donc chaque valeur correspond a cette ligne:

Code : Tout sélectionner

<!-- 2013-04-04 00:48:00 Paris, Madrid (heure d’été) / 1365029280 --> <row><v> NaN </v></row
>
dans cet exemple:

2013-04-04 00:48:00 année ,mois,jour, minutes,secondes
Paris, Madrid (heure d’été) / fuseau horaire
1365029280 timestamp
http://www.timestamp.fr/?
puis la valeur : sur cette ligne NaN non encore attribué, car ma base a une durée de vie de Un an;

on voit bien que cela correspond a la demande lors de la création de la base ( un peu ce que l'on fait avec Phpadmin)

Code : Tout sélectionner

RRDTOOL create EDF.rrd -s 60 DS:CONSOMMATION_PAC:GAUGE:600:-0:4000 RRA:AVERAGE:0.5:1:1051200 
pause
dans ton cas tu pourrais avoir si je garde mes données de temps, mais que je remplace par température et humidité

RRDTOOL create EDF.rrd -s 60 DS:TEMPERATURE:GAUGE:600:-0:4000 RRA:AVERAGE:0.5:1:1051200
RRDTOOL create EDF.rrd -s 60 DS:HUMIDITE:GAUGE:600:-0:4000 RRA:AVERAGE:0.5:1:1051200

il te suffit de trouver la ligne qui extrait les données que tu ne veut pas (dans ton code PHP je pense) et de mettre un REM devant, maintenant ce n'est peut être pas dans le fichier PHP, dans ce cas tu ouvre tout tes fichiers dans notepad++ et tu fait rechercher HUMIDITÉ dans tous les fichiers, et tu va bien voir qui appelle l’extraction de la base RRDTOOL
Bon courage,
Mais n’oublie pas le soucie avec RRDTOOL c’est sa fonction d’agrégation, donc soit vigilant -s 60 ne doit contenir qu'une seule donnée, sauf si tu veut lisser
;)
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
windows XP SP3 sur vieux portable destiné a la météo
Windows7 sur mon portable, permet de tester les applications qui ne veulent plus de XP
http://mapetitemeteo.esy.es/

alain
Messages : 101
Enregistré le : 21 nov. 2014, 20:23

Re: Amelioration de mes Graphes

Message par alain » 14 avr. 2015, 00:23

re
ps
note bien que ton code me semble très élaboré notamment la fonction nuit/jour
Bon courage dans tes recherches
;)
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
windows XP SP3 sur vieux portable destiné a la météo
Windows7 sur mon portable, permet de tester les applications qui ne veulent plus de XP
http://mapetitemeteo.esy.es/

b.gwen
Messages : 25
Enregistré le : 04 avr. 2015, 18:12

Re: Amelioration de mes Graphes

Message par b.gwen » 14 avr. 2015, 07:23

Bonjour et merci Alain , dans mon cas je pense que le mieux est de créer 2 BD dans mon script , voila le code qui interroge ma sonde . Qu'en pense tu ?

Code : Tout sélectionner

#!/usr/bin/env python

import subprocess
import os
import sys
import shlex
from re import search


pin = "27"

#Fonction pour lecture DHT22
def get_outputs(typ,pin):
    i=0
    Hmax=100
    for test_output in range(5):
        i=i+1
        outputs_raw = subprocess.check_output(["/root/Adafruit_DHT", typ, pin])
        if len(outputs_raw)==44:
            return None,None
        OK = search("Temp", outputs_raw) and search("Hum", outputs_raw)
        if (OK):
            result_humid = search("Hum =\s+([0-9.]+)", outputs_raw)
            humidity = result_humid.group(1)
            if float(humidity)<=Hmax:
                result_temp = search("Temp =\s+([0-9.]+|-[0-9]+)", outputs_raw)
                temperature = result_temp.group(1)
                if float(temperature)!=-3276:
                    return humidity,temperature
    return None,None


humidity,temperature = get_outputs("22",pin)

#print("H:{} t:{}".format(humidity,temperature))

#if the value is None  just put ---
def validatePrint(value):
  if value == None:
     return "---"
  else:
     return "{:.1f}".format(float(value))

#if the value is None tell rrdtool that the value is unknown
def validateRRD(value):
  if value == None:
     return ":U"
  else:
     return ":{}".format(value)


webdata = "/home/www/Graph/webdata/"
currentStatus = webdata + "DHT22Status.txt"

try:

  sfile = open(currentStatus,'w')
  sfile.write(validatePrint(humidity) + "," + validatePrint(temperature) + "\n")
  sfile.close()
except:
  print("unable to create '/home/www/Graph/webdata/DHT22Status.txt'")


#now let's insert the result into rrdtool database

fileRrdTool = "/home/www/Graph/data_DHT22.rrd"

#let's fill the command line with the

#Current time (Right now), temperature and humidity
rdata = "N" + validateRRD(temperature) + validateRRD(humidity)


subprocess.Popen(["/usr/bin/rrdtool","update",fileRrdTool,rdata])


#data Extraction to create data point for the charts.

#create a function with start and step parameters
#this way we could create chart with different timing



def rrdExport(start, step, XMLfile):
  texte = "rrdtool xport -s {0} -e now --step {1} ".format(start, step)
  #let's populate for temperature, humidity
  texte += "DEF:{}={}:{}:AVERAGE ".format('a',fileRrdTool,'th_dht22')
  texte += "XPORT:{}:""{}"" ".format('a','th_dht22')
  texte += "DEF:{}={}:{}:AVERAGE ".format('b',fileRrdTool,'hm_dht22')
  texte += "XPORT:{}:""{}"" ".format('b','hm_dht22')

  fileout = open(webdata+XMLfile,"w")
  args = shlex.split(texte)
  subprocess.Popen(args,stdout=fileout)
  fileout.close()


# ok extact 3 hours data
rrdExport("now-3h",300, "DHT22_3h.xml")

#ok 24 hours
rrdExport("now-24h",900, "DHT22_24h.xml")

#ok 48 hours
rrdExport("now-48h",1800, "DHT22_48h.xml")

#ok 1 week
rrdExport("now-8d",3600, "DHT22_1w.xml")

#ok 1 month
rrdExport("now-1month",14400, "DHT22_1m.xml")

#ok 3 month
rrdExport("now-3month",28800, "DHT22_3m.xml")

#ok 1 year
rrdExport("now-1y",43200, "DHT22_1y.xml")

#ok just print on the screen what we have

print("DHT22:{}Celsius, {}%".format(validatePrint(temperature),validatePrint(humidity)))

#done

alain
Messages : 101
Enregistré le : 21 nov. 2014, 20:23

Re: Amelioration de mes Graphes

Message par alain » 14 avr. 2015, 16:07

bonjour a tous
effectivement ton code est évolué, pour moi bien au dessus de mes compétence, mais:


l'export XML pour Higharts c'est ici:

Code : Tout sélectionner

def rrdExport(start, step, XMLfile):
  texte = "rrdtool xport -s {0} -e now --step {1} ".format(start, step)
  #let's populate for temperature, humidity
  texte += "DEF:{}={}:{}:AVERAGE ".format('a',fileRrdTool,'th_dht22')
  texte += "XPORT:{}:""{}"" ".format('a','th_dht22')
  texte += "DEF:{}={}:{}:AVERAGE ".format('b',fileRrdTool,'hm_dht22')
  texte += "XPORT:{}:""{}"" ".format('b','hm_dht22')
au culot j'essaierais d'enlever un DS soit:
def rrdExport(start, step, XMLfile):
texte = "rrdtool xport -s {0} -e now --step {1} ".format(start, step)
#let's populate for temperature, humidity
texte += "DEF:{}={}:{}:AVERAGE ".format('b',fileRrdTool,'hm_dht22')
texte += "XPORT:{}:""{}"" ".format('b','hm_dht22')

def rrdExport(start, step, XMLfile):
texte = "rrdtool xport -s {0} -e now --step {1} ".format(start, step)
#let's populate for temperature, humidity
texte += "DEF:{}={}:{}:AVERAGE ".format('a',fileRrdTool,'th_dht22')
texte += "XPORT:{}:""{}"" ".format('a','th_dht22')

ma préférence pifometrique allant vers le premier a cause de:

def rrdExport(start, step, XMLfile):
texte = "rrdtool xport -s {0} -e now --step {1} ".format(start, step)
#let's populate for temperature, humidity
texte += "DEF:{}={}:{}:AVERAGE ".format('a',fileRrdTool,'th_dht22')
texte += "XPORT:{}:""{}"" ".format('a','th_dht22')
texte += "DEF:{}={}:{}:AVERAGE ".format('b',fileRrdTool,'hm_dht22')
texte += "XPORT:{}:""{}"" ".format('b','hm_dht22')



sinon pour test au remplissage de la base tu peut essayer, mais c'est au pif


il me semble que ta base RDD contient bien Deux DS
un humidity
et un temperature.
donc il me semble comprendre que tu remplit cette base a l'aide d'un script Pyton.
si tu pouvait joindre ta base RDD ( c'est tout petit), ou je te donne un lien vers un explorateur de base RDD ainsi tu connaitra déjà la structure de ta base DHT22.rrd.
avec des grosses galoches ça donne quoi si tu remplace:

Code : Tout sélectionner

 OK = search("Temp", outputs_raw) and search("Hum", outputs_raw)
par

Code : Tout sélectionner

OK = search("Temp", outputs_raw) 
ton fichier se trouve par ici?
fileRrdTool = "/home/www/Graph/data_DHT22.rrd"

ici tu rempli ta base avec les deux DS, que pense tu de mettre la valeur humiditée a zéro pour tester.
Je ne connais pas Python mais je tenterais de remplacer:

Code : Tout sélectionner

rdata = "N" + validateRRD(temperature) + validateRRD(humidity)
par

Code : Tout sélectionner

humidity=0
rdata = "N" + validateRRD(temperature) + validateRRD(humidity)

ou bien j'initialiserais une variable a ZERO (contante) toto = 0
et j’essaierais:

Code : Tout sélectionner

rdata = "N" + validateRRD(temperature) +toto
juste pour voir si on est sur la bonne voie, tu aurais toujours deux lignes mais l'humidité toujours a Zéro

car tu es obligé d'avoir au moins 0 ou NULL dans humidity sinon le graph plantera!
la ligne

Code : Tout sélectionner

 Rdata "N" + validateRRD(temperature)
c'est le remplissage de ta base
N c'est l'heure et validateRRD(temperature) c'est les données wire

a moins qu'ici Pyton dise quelque chose a quelqu'un qui puisse t'aider
station Orégon WMR 200
logiciel Xnet version 2012-03-17a et Graphweather V 3.0.15
windows XP SP3 sur vieux portable destiné a la météo
Windows7 sur mon portable, permet de tester les applications qui ne veulent plus de XP
http://mapetitemeteo.esy.es/

b.gwen
Messages : 25
Enregistré le : 04 avr. 2015, 18:12

Re: Amelioration de mes Graphes

Message par b.gwen » 15 avr. 2015, 19:48

Bonjour et merci Alain de t’être pencher sur mon probleme , j'ai essayé ce que tu m'a dit malheureusement ça ne fonctionne pas , je ne comprend pas ce qu'il se passe je récupère toujours les 2 valeurs dans ma BD . Je ne peux même pas poster une copie du fichier data_DHT22.rrd , car voila ce qu'il y a dedans .

B@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇB@r•Þ™9@Ë^ôЇ

Répondre