Graphiques des températures avec RRDTool

Comment grapher les températures de Brest sans sonde?

En allant chercher les informations sur www.weather.com !

1. Installer RRDTool :


perceval:~# apt-get install rrdtool
perceval:~#

2. Créer le répertoire où sera placée la base de données Round Robin (ainsi que les graphiques) :


perceval:~# mkdir /home/temperatures
perceval:~# cd /home/temperatures

3. Créer la base de données :


perceval:~# /usr/bin/rrdtool create temperature.rrd --step 300 \
DS:temp:GAUGE:900:-50:100 \
RRA:LAST:0.5:1:288 \
RRA:AVERAGE:0.5:6:336 \
RRA:AVERAGE:0.5:12:8760 \
RRA:MAX:0.5:12:8760 \
RRA:MIN:0.5:12:8760

4. Ecrire le script /home/temperature/temperature.sh :


#!/bin/sh
logfile="/home/temperature/tempCourante";
rrdfile="/home/temperature/temperature.rrd";
htmldir="/home/temperature";
#
wget -nv -o /dev/null -O /dev/stdout http://fr.weather.com/weather/local/FRXX0019 | grep "ressentie" | cut -d"&" -f2 | sed 's/nbsp;//g' > $logfile
#
value=$(tail $logfile)
#
/usr/bin/rrdtool update $rrdfile N:$value
#
# Create 24hrs image
/usr/bin/rrdtool graph $htmldir/tempDaily.png --title="Variations sur 24hrs (moyenne sur 5 minutes)" \
        DEF:tempC=$rrdfile:temp:LAST -v"° Celsius" -aPNG -h250 -w700 \
        LINE2:tempC#DD0000:"Température" \
        CDEF:nodat=tempC,tempC,+,UN,INF,UNKN,IF \
	HRULE:0#0000DD \
        AREA:nodat#BBBBBB:"NoData"

# Create 7 days image
/usr/bin/rrdtool graph $htmldir/tempWeekly.png --title="Variations sur 7 jours (moyenne sur 1 hr)" \
	DEF:tempC=$rrdfile:temp:AVERAGE  -v"° Celsius" -aPNG -h150 -w700 -s-604800 \
        LINE2:tempC#DD0000:"Température" \
        CDEF:nodat=tempC,tempC,+,UN,INF,UNKN,IF \
	HRULE:0#0000DD \
        AREA:nodat#BBBBBB:"NoData"
#
# Create 28 days image
/usr/bin/rrdtool graph $htmldir/tempMonthly.png --title="Variations sur 28 jours" \
	-v"° Celsius" -aPNG -h150 -w700 -s-2419200 \
        DEF:tempC=$rrdfile:temp:AVERAGE \
        LINE2:tempC#DD0000:"Température" \
        CDEF:nodat=tempC,tempC,+,UN,INF,UNKN,IF \
	HRULE:0#0000DD \
        AREA:nodat#BBBBBB:"NoData"
#
# Create 60 days image
/usr/bin/rrdtool graph $htmldir/temp2Monthly.png --title="Variations sur 60 jours (-60j < 0)" \
        -v"° Celsius" -aPNG -h150 -w700 -l0 -u25 -s-5184000 \
        DEF:tempC=$rrdfile:temp:AVERAGE \
        LINE2:tempC#DD0000:"Température" \
        CDEF:nodatp=tempC,tempC,+,UN,INF,UNKN,IF \
        CDEF:nodatn=tempC,tempC,+,UN,NEGINF,UNKN,IF \
        HRULE:0#0000DD \
        AREA:nodatp#BBBBBB:"NoData" \
        AREA:nodatn#BBBBBB

# Create 2nd 60 days image
/usr/bin/rrdtool graph $htmldir/temp3Monthly.png --title="Variations sur 60 jours (-120j < -60j)" \
        -v"° Celsius" -aPNG -h150 -w700 -l0 -u25 -s-10368000 -e-5184000 \
        DEF:tempC=$rrdfile:temp:AVERAGE \
        LINE2:tempC#DD0000:"Température" \
        CDEF:nodatp=tempC,tempC,+,UN,INF,UNKN,IF \
        CDEF:nodatn=tempC,tempC,+,UN,NEGINF,UNKN,IF \
        HRULE:0#0000DD \
        AREA:nodatp#BBBBBB:"NoData" \
        AREA:nodatn#BBBBBB
#
#
# Create 3th 60 days image
/usr/bin/rrdtool graph $htmldir/temp4Monthly.png --title="Variations sur 60 jours (-180j < -120j)" \
        -v"° Celsius" -aPNG -h150 -w700 -l0 -u25 -s-15552000 -e-10368000 \
        DEF:tempC=$rrdfile:temp:AVERAGE \
        LINE2:tempC#DD0000:"Température" \
        CDEF:nodatp=tempC,tempC,+,UN,INF,UNKN,IF \
        CDEF:nodatn=tempC,tempC,+,UN,NEGINF,UNKN,IF \
        HRULE:0#0000DD \
        AREA:nodatp#BBBBBB:"NoData" \
        AREA:nodatn#BBBBBB
#
# Create 1 year image
/usr/bin/rrdtool graph $htmldir/tempYearly.png --title="Variations sur une année" \
        -v"° Celsius" -aPNG -h150 -w700 -s-31449600 \
        DEF:tempMin=$rrdfile:temp:MIN \
        DEF:tempMax=$rrdfile:temp:MAX \
        AREA:tempMax#EEDDAA:"Variations journalières" \
        AREA:tempMin#FFFFFF \
        LINE1:tempMax#DD0000:"Max" \
        LINE1:tempMin#0000DD:"Min" \
        CDEF:nodatp=tempMax,tempMin,+,UN,INF,UNKN,IF \
        CDEF:nodatn=tempMax,tempMin,+,UN,NEGINF,UNKN,IF \
        HRULE:0#0000DD \
        AREA:nodatp#BBBBBB:"NoData" \
        AREA:nodatn#BBBBBB

date > $htmldir/dateCourante.txt
echo Température: $value ° Celsius > $htmldir/tempCourante.txt

Ce script récupère la température (extérieure) instantamnée pour la ville de BREST (29) par un wget sur le site www.weather.com.

5. Ajouter dans le crontab :


# Lancement tous les 5 minutes
#
*/5 * * * * /home/temperature/temperature.sh > /dev/null 2>&1

6. Créer une page HTML pour l’affichage des graphiques (il y en a 7).
7. Modifier la configuration d’Apache pour pouvoir accéder au répertoire /home/temperature depuis le serveur Web.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *