Pour télécharger le fichier initial cliquez ici ->meteo.pl
#! /usr/bin/perl

#makes things work when run without install
# use lib qw( ../perl-shared/blib/lib ../perl-shared/blib/arch );
# this is for after install
# use lib qw( /usr/lib/perl ../lib/perl );
#use lib qw( /usr/local/test/rrd-tool/lib/perl ../lib/perl );

use RRDs;
my $start=time;
my $htmlpath = "/home/michoux/public_html/meteo/";
#my $rrd = "meteo.rrd";
my $rrdpath = "/home/michoux/rrdtool/";
my $name = "$0";
my $tmpparis;
my $tmptls;
my $temps=600;
#my $temps2=1200;
my $temps2=$temps*2;
$name =~ s/\.pl.*//g;
print $temps2;

print "\n--------------->Temps : ".localtime($start)."<-----------------\n";

print "Interval de temps : ".$temps."\n";

sub Create($)
{

    print "~~~~~~~~".$rrdpath.$src.".rrd~~~~~~~~".$start."~~~~".$temps2."~~~~~~~~~~~~~~~~~~~~~~~~\n";

    print "Creation de l'archive de $src....";
    my ($src)=@nospam;

    RRDs::create ("$rrdpath$src.rrd", "--start",$start-1, "--step",$temps,
            "DS:temp_paris:GAUGE:".$temps2.":U:U",
            "DS:vent_paris:GAUGE:".$temps2.":U:U",
            "DS:humid_paris:GAUGE:".$temps2.":U:U",
            "DS:pres_paris:GAUGE:".$temps2.":U:U",
            "DS:temp_tls:GAUGE:".$temps2.":U:U",
            "DS:vent_tls:GAUGE:".$temps2.":U:U",
            "DS:humid_tls:GAUGE:".$temps2.":U:U",
            "DS:pres_tls:GAUGE:".$temps2.":U:U",
            "RRA:AVERAGE:0.2:1:".$temps2,
            "RRA:AVERAGE:0.2:6:168", # moy sur une heure pour tout une semaine => 6data * 10min = 1h : 24h * 7j = 168
            "RRA:AVERAGE:0.5:12:372", # moy sur 2heures pour tout un mois => 12data * 10min = 2h : 372 = 12 * 31 valeur = 12 valeurs par jour
            "RRA:AVERAGE:0.8:144:365" # moy sur un jour pour un ans => 24h * 6data =144data pour une journee : 365jours (valeurs) par ans.
#         "RRA:AVERAGE:0.2:1:".$temps2,
#         "RRA:AVERAGE:0.2:6:168", # moy sur une heure pour tout une semaine
#         "RRA:AVERAGE:0.5:72:62", # moy sur 1/2 jour pour un mois
#         "RRA:AVERAGE:0.8:1008:52" # moy sur une semaine pour un ans
            );
    my $ERROR = RRDs::error;
    die "$0: unable to create `$rrdpath$src.rdd': $ERROR\n" if $ERROR;
    print "Done !\n";
}

sub Update($)
{

    my ($src)=@nospam;

#   /usr/bin/w3m -dump http://fr.weather.yahoo.com/479/index_f.html > /tmp/paris_new.txt
    print "Update de $src...";

    if ($src eq "fr.weather.yahoo.com")
    {
#   print "yahoo\n";
        $tmpparis="/tmp/yahoo_paris.txt";
        $tmptls="/tmp/yahoo_toulouse.txt";
        if ( !system ("/usr/bin/w3m -dump http://fr.weather.yahoo.com/FRXX/FRXX0076/index_c.html > $tmpparis")&&
                !system ("/usr/bin/w3m -dump http://fr.weather.yahoo.com/FRXX/FRXX0099/index_c.html > $tmptls"))
        {
            print "\nReception des datas en cours....\n";
# dropt some data into the rrd
            print "Paris:\n";
            my $temp_paris =substr(`cat $tmpparis | tr -d ' ' | grep "°" | head -n 2 | tail -n 1 |sed -e "s/[a-zA-Z.]*\\([0-9\\.\\-]*\\)°.*/\\1/"`, 0, -1);
            print "  Temperature:".$temp_paris."\n";
            my $vent_paris =substr(`cat $tmpparis | grep Vent | cut -f2 -d/ | cut -d " " -f1`, 0, -1);
            print "  Vent:".$vent_paris."\n";
            my $humid_paris=substr(`cat $tmpparis | tr -d ' ' | grep Humidité | cut -d "%" -f1 | cut -d ":" -f2`, 0, -1);
            print "  Humidité:".$humid_paris."\n";
            my $pres_paris =substr(`cat $tmpparis | tr -d ' ' | grep Pression |sed -e"s/.*:\\([0-9]*\\)/\\1/"`, 0, -1);
            if ( !($pres_paris =~ m/^\d+$/) ){
                $pres_paris=1000;
            }
            print "  Pression:".$pres_paris."\n";
            print "Toulouse:\n";
            my $temp_tls =substr(`cat $tmptls | tr -d ' ' | grep "°" | head -n 2 | tail -n 1 |sed -e "s/[a-zA-Z.]*\\([0-9\\.\\-]*\\)°.*/\\1/"`, 0, -1);
            print "  Temperature:".$temp_tls."\n";
            my $vent_tls =substr(`cat $tmptls | grep Vent | cut -f2 -d/ | cut -d " " -f1`, 0, -1);
            print "  Vent:".$vent_tls."\n";
            my $humid_tls=substr(`cat $tmptls | tr -d ' ' | grep Humidité | cut -d "%" -f1 | cut -d ":" -f2`, 0, -1);
            print "  Humidité:".$humid_tls."\n";
            my $pres_tls =substr(`cat $tmptls | tr -d ' ' | grep Pression |sed -e"s/.*:\\([0-9]*\\)/\\1/"`, 0, -1);
            if ( !($pres_tls =~ m/^\d+$/) ){
                $pres_tls=1000;
            }
            print "  Pression:".$pres_tls."\n";
            print "Reception des datas fini !\n\n";

            print $start.":".$temp_paris.":".$vent_paris.":".$humid_paris.":".$pres_paris.":".$temp_tls.":".$vent_tls.":".$humid_tls.":".$pres_tls."\n";
            RRDs::update "$rrdpath"."$src".".rrd", "$start:".$temp_paris.":".$vent_paris.":".$humid_paris.":".$pres_paris.":".$temp_tls.":".$vent_tls.":".$humid_tls.":".$pres_tls || die "$0: unable to update `$rrdpath$src.rdd': $ERROR\n";
            if ($ERROR = RRDs::error)
            {
                die "$0: unable to update `$rrdpath$src.rdd': $ERROR\n";
            }
        }
    }

    if ($src eq "www.wunderground.com")
    {
#   print "wunderground\n";
        $tmpparis="/tmp/wunderground_paris.txt";
        $tmptls="/tmp/wunderground_toulouse.txt";
        if ( !system ("/usr/bin/wget -q -O $tmpparis http://www.wunderground.com/global/stations/07150.html") &&
                !system ("/usr/bin/wget -q -O $tmptls http://www.wunderground.com/global/stations/07630.html"))
        {
            print "\nReception des datas en cours....\n";
# dropt some data into the rrd
            print "Paris:\n";
            my $temp_paris =substr(`grep  "<font size=+2 face=arial>" -A 5 $tmpparis |grep "<nobr>.*#176;C"|sed "s/.*<b>\\([[:digit:]]\\+\\)<\\/b>.*/\\1/"`, 0, -1);
            print "  Temperature:".$temp_paris."\n";
            my $vent_paris =substr(`grep  "<tr bgcolor=#FFFFFF><td valign=top>" -A 10 $tmpparis |grep "Wind:" -A 5|grep "<nobr>.*km\\/h"|sed "s/.*<b>\\([[:digit:]]\\+\\)<\\/b>.*/\\1/"`, 0, -1);
            print "  Vent:".$vent_paris."\n";
            my $humid_paris=substr(`grep "Humidity.*%" $tmpparis |sed -e"s/.*<b>\\([[:digit:]]\\+\\)%<\\/b>.*/\\1/"`, 0, -1);
            print "  Humidité:".$humid_paris."\n";
            my $pres_paris =substr(`grep  "<tr bgcolor=#ddeeff><td valign=top>" -A 10 $tmpparis |grep "Pressure:" -A 5|grep "hPa"|sed "s/.*<b>\\([[:digit:]]\\+\\)<\\/b>.*/\\1/"`, 0, -1);
            print "  Pression:".$pres_paris."\n";
            print "Toulouse:\n";
            my $temp_tls =substr(`grep  "<font size=+2 face=arial>" -A 5 $tmptls |grep "<nobr>.*#176;C"|sed "s/.*<b>\\([[:digit:]]\\+\\)<\\/b>.*/\\1/"`, 0, -1);
            print "  Temperature:".$temp_tls."\n";
            my $vent_tls =substr(`grep  "<tr bgcolor=#FFFFFF><td valign=top>" -A 10 $tmptls |grep "Wind:" -A 5|grep "<nobr>.*km\\/h"|sed "s/.*<b>\\([[:digit:]]\\+\\)<\\/b>.*/\\1/"`, 0, -1);
            print "  Vent:".$vent_tls."\n";
            my $humid_tls=substr(`grep "Humidity.*%" $tmptls |sed -e"s/.*<b>\\([[:digit:]]\\+\\)%<\\/b>.*/\\1/"`, 0, -1);
            print "  Humidité:".$humid_tls."\n";
            my $pres_tls =substr(`grep  "<tr bgcolor=#ddeeff><td valign=top>" -A 10 $tmptls |grep "Pressure:" -A 5|grep "hPa"|sed "s/.*<b>\\([[:digit:]]\\+\\)<\\/b>.*/\\1/"`, 0, -1);
            print "  Pression:".$pres_tls."\n";
            print "Reception des datas fini !\n\n";

            print $start.":".$temp_paris.":".$vent_paris.":".$humid_paris.":".$pres_paris.":".$temp_tls.":".$vent_tls.":".$humid_tls.":".$pres_tls."\n";
            RRDs::update "$rrdpath"."$src".".rrd", "$start:".$temp_paris.":".$vent_paris.":".$humid_paris.":".$pres_paris.":".$temp_tls.":".$vent_tls.":".$humid_tls.":".$pres_tls;
            if ($ERROR = RRDs::error)
            {
                die "$0: unable to update `$rrdpath$src.rdd': $ERROR\n";
            }
            open (INFO,">/tmp/meteo");
            print INFO $temp_paris."\n";
            print INFO $vent_paris."\n";
            print INFO $humid_paris."\n";
            print INFO $pres_paris."\n";
            print INFO $temp_tls."\n";
            print INFO $vent_tls."\n";
            print INFO $humid_tls."\n";
            print INFO $pres_tls."\n";
        }
    }
    print "Done !\n";
}



sub Graphes($)
{
    my ($src)=@nospam;
    print "Generation des graphes de ".$src." dans $htmlpath ... ";

# temperature:

    RRDs::graph "$htmlpath"."$src"."/temperatures-jour.png",
    "--title", "Temperatures des dernieres 24 heures",
    "--start", "$start - 24 h",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--vertical-label","°C",
    "--imgformat","PNG",
    "--width=450",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:temp_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:temp_tls:AVERAGE",
#     "LINE2:paris#001599:Paris",
    "LINE2:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %1.2lf\\c",
    "LINE2:tls#008800:Toulouse",
#  "COMMENT:\nParis actuellement",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %1.2lf\\c",
    "HRULE:0#880000:";

    if ($ERROR = RRDs::error) {
        print "ERROR: $ERROR\n";
    };

    RRDs::graph "$htmlpath"."$src"."/temperatures-semaine.png",
    "--title", "Temperatures des derniers 7 jours",
    "--start", "$start - 1 w",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--vertical-label","°C",
    "--imgformat","PNG",
    "--width=450",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:temp_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:temp_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %1.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %1.2lf\\c",
    "HRULE:0#880000:";

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/temperatures-mois.png",
    "--title", "Temperatures des dernieres 4 semaines",
    "--start", "$start - 1 m",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--vertical-label","°C",
    "--imgformat","PNG",
    "--width=450",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:temp_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:temp_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %1.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %1.2lf\\c",
    "HRULE:0#880000:";
    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }


    RRDs::graph "$htmlpath"."$src"."/temperatures-annee.png",
    "--title", "Temperatures de la derniere année",
    "--start", "$start - 1 y",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--vertical-label","°C",
    "--imgformat","PNG",
    "--width=450",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:temp_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:temp_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %1.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %1.2lf\\c",
    "HRULE:0#880000:";

    if ($ERROR = RRDs::error) {
        print "ERROR: $ERROR\n";
    };

# vent:

    RRDs::graph "$htmlpath"."$src"."/vent-jour.png",
    "--title", "Vitesse du vent des dernieres 24 heures",
    "--start", "$start - 24 h",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","Km/h",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:vent_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:vent_tls:AVERAGE",
    "CDEF:cparis=paris,0,200,LIMIT",
    "CDEF:ctls=tls,0,200,LIMIT",
    "LINE2:cparis#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE2:ctls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;
    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }


    RRDs::graph "$htmlpath"."$src"."/vent-semaine.png",
    "--title", "Vitesse du vent des derniers 7 jours",
    "--start", "$start - 1 w",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","Km/h",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:vent_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:vent_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;
    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }


    RRDs::graph "$htmlpath"."$src"."/vent-mois.png",
    "--title", "Vitesse du vent des dernieres 4 semaines",
    "--start", "$start - 1 m",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","Km/h",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:vent_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:vent_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;
    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }


    RRDs::graph "$htmlpath"."$src"."/vent-annee.png",
    "--title", "Vitesse du vent de la derniere année",
    "--start", "$start - 1 y",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","Km/h",
    "--lower-limit","0",
    "DEF:paris=$rrdpath$src.rrd:vent_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:vent_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;
    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }


#humidité

    RRDs::graph "$htmlpath"."$src"."/humidite-jour.png",
    "--title", "Humidité des dernieres 24 heures",
    "--start", "$start - 24 h",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","%",
    "DEF:paris=$rrdpath$src.rrd:humid_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:humid_tls:AVERAGE",
    "CDEF:cparis=paris,2,100,LIMIT",
    "CDEF:ctls=tls,2,100,LIMIT",
    "LINE2:cparis#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE2:ctls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/humidite-semaine.png",
    "--title", "Humidité des derniers 7 jours",
    "--start", "$start - 1 w",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","%",
    "DEF:paris=$rrdpath$src.rrd:humid_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:humid_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/humidite-mois.png",
    "--title", "Humidité des dernieres 4 semaines",
    "--start", "$start - 1 m",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","%",
    "DEF:paris=$rrdpath$src.rrd:humid_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:humid_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/humidite-annee.png",
    "--title", "Humidité de la derniere année",
    "--start", "$start - 1 y",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","%",
    "DEF:paris=$rrdpath$src.rrd:humid_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:humid_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

# Pression

    RRDs::graph "$htmlpath"."$src"."/pression-jour.png",
    "--title", "Pression des dernieres 24 heures",
    "--start", "$start - 24 h",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","hPa",
    "DEF:paris=$rrdpath$src.rrd:pres_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:pres_tls:AVERAGE",
    "CDEF:cparis=paris,800,1200,LIMIT",
    "CDEF:ctls=tls,800,1200,LIMIT",
    "LINE2:cparis#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE2:ctls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/pression-semaine.png",
    "--title", "Pression des derniers 7 jours",
    "--start", "$start - 1 w",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","hPa",
    "DEF:paris=$rrdpath$src.rrd:pres_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:pres_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/pression-mois.png",
    "--title", "Pression des dernieres 4 semaines",
    "--start", "$start - 1 m",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","hPa",
    "DEF:paris=$rrdpath$src.rrd:pres_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:pres_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse",
    "GPRINT:tls:AVERAGE:Moyenne Toulouse %2.2lf\\c"
        ;

    if ($ERROR = RRDs::error) {
        print "ERROR Graph: $ERROR\n";
    }

    RRDs::graph "$htmlpath"."$src"."/pression-annee.png",
    "--title", "Pression de la derniere année",
    "--start", "$start - 1 y",
    "--end", "$start",
    "--color", "GRID#999999",
    "--color", "BACK#BBBBBB",
    "--color", "FONT#000000",
    "--color", "SHADEB#000000",
    "--color", "CANVAS#BBBBBB",
    "--interlace",
    "--imgformat","PNG",
    "--width=450",
    "--vertical-label","hPa",
    "DEF:paris=$rrdpath$src.rrd:pres_paris:AVERAGE",
    "DEF:tls=$rrdpath$src.rrd:pres_tls:AVERAGE",
    "LINE1:paris#001599:Paris",
    "GPRINT:paris:AVERAGE:Moyenne Paris %2.2lf\\c",
    "LINE1:tls#008800:Toulouse