Diagramme mittels rrdtool

Statistiken mit RRDTool

Temperaturdiagramm rrdtool

Nachdem die Temperatur ausgelesen werden kann, will ich diese Grafisch darstellen. Natürlich lassen sich beliebig ausgelesene Werte mit rrdtool grafisch darstellen. Die Installation läuft mit dem Installierten Ubuntu unkomplitziert:

sudo apt-get install rrdtool
# RRD Datenbank erstellen
mkdir /home/ubuntu/.temperature
rrdtool create /home/ubuntu/.temperature/temp.rrd --step 60 DS:tempsensor1:GAUGE:60:-30:60 RRA:AVERAGE:0.5:1:2160

# 12,3 Grad eintragen in round robin tabelle ablegen (mehrmals, zwei minuten lang aufrufen, damit im Diagramm was erscheint)
rrdtool update /home/ubuntu/.temperature/temp.rrd N:12.3

# Diagramm erstellen
rrdtool graph /home/ubuntu/temp.png -a PNG --title="Temperatur" --start -129600 --vertical-label "Grad Celsius" 'DEF:probe1=/home/ubuntu/.temperature/temp.rrd:tempsensor1:AVERAGE' 'LINE1:probe1#ff0000:Sensor 1' 'GPRINT:probe1:LAST:Tempsensor Last Temp\: %2.1lf'

Das Diagramm zeigt nun eure ersten Werte an. Nun ist es soweit im Minutenintervall die gemessene Temperatur einzutragen. Dazu wird ein Skript erstellt, was den aktuellen Wert in die RRD Datenbank schreibt. Hierzu wird die Datei "/home/ubuntu/insert_new_temp.sh" angelegt, und ausführbar via chmod +x ./insert_new_temp.sh gemacht.

#/bin/sh

# temp hat danach werte wie 23.123412
temp="`digitemp_DS9097 -o "%C" -t0 -q`"

# Gemessene Temperatur in RRDTool eintragen
rrdtool update /home/ubuntu/.temperature/temp.rrd N:$temp

Das Diagramm soll nun auch über ein Skript erstellt werden. Hierzu wird die Datei "/home/ubuntu/create_graph.sh" angelegt, und ausführbar via chmod +x ./create_graph.sh gemacht. Dieses Erstellt den Graph der letzten 36 Stunden (129600Sekunden=60*60*26).

#/bin/sh

rrdtool graph /home/ubuntu/temp.png -a PNG --title="Temperatur" --start -129600 --vertical-label "Grad Celsius" 'DEF:probe1=/home/ubuntu/.temperature/temp.rrd:tempsensor1:AVERAGE' 'LINE1:probe1#ff0000:Sensor 1' 'GPRINT:probe1:LAST:Tempsensor Last Temp\: %2.1lf'

Die beiden Skripte sollen nun einmal im Intervall "jede minute" und "alle 5 minuten" aufgerufen werden, dazu werden diese in die /etc/crontab eingetragen.

  • sudo mcedit /etc/crontab
  • * * * * * ubuntu /home/ubuntu/insert_new_temp.sh
  • */5 * * * * ubuntu /home/ubuntu/create_graph.sh
Oder als Einzeiler:

sudo sh -c 'echo "* * * * * ubuntu /home/ubuntu/insert_new_temp.sh
*/5 * * * * ubuntu /home/ubuntu/create_graph.sh" > /etc/cron.d/temperatur'

Anschliessend cron neu starten mittels sudo /etc/init.d/cron restart

Last Change: 01-Sep-2017 03:26

Kontakt und Infos zur Person: Thomas Eimers