Alle Daten….aber bitte bunt

In diesem Teil geht da darum, die im vorherigen Teil ermittelten Temperaturen grafisch darzustellen. Hierzu bedienen wir uns den Paketen von rrdtool.

RRDTOOL klingt spannend aber was ist das für ein Humbug? Ganz einfach, es ist eine einfach Art und Weise zeitbezogene Daten zu speichern. Zeitbezogen bedeutet das ein Wert immer gemeinsam mit einem Zeit/Datumsttempel abgelegt wird (Datenpunkt). RRD steht für „Round-Robin-Database“ was nichts anderes heisst als das im Gegensatz zu einer SQL-Datenbank die Datei einer RRD-Datenbank nicht größer wird als diese direkt nach deren Erstellung ist. Ist die Dateigröße erschöpft werden die ältesten Werte einfach überschrieben. Wer mehr darüber wissen möchte wird hier gut bedient -> Link


Das Ziel soll es sein, eine Anzeige der Temperaturen zu erstellen wie ich sie im Datengarten verwende. Los gehts…

Als erstes sorgen wir dafür das unsere Paketlisten auf dem aktuellen Stand sind mit:

sudo apt-get update

Dann sorgen wir dafür das alle installierten Pakete auf die aktuellste Version gebracht werden. Und zwar mit:

sudo apt-get upgrade

Wenn das erledigt ist machen wir uns daran die Pakete für das rrdtool zu installieren. Dies geschieht mit:

sudo apt-get install rrdtool

Nachdem das nun erledigt ist können wir die erste RRD-Datenbank erstellen. ich habe dazu wieder ein kleines Script bemüht da ich mehrere Datenbanken benötige und für mich alles etwas nachvollziehbar gestalten wollte, ich bin ja nicht mehr der Jüngste.

#!/bin/bash
WDIR=/home/pi/tomatenpi
ETCDIR=$WDIR/etc
OUTDIR=$WDIR/output
RRDDIR=$WDIR/rrd

rrdtool create $RRDDIR/btemp_left.rrd --step 60 \
  DS:data1:GAUGE:120:-20:100 \
  RRA:AVERAGE:0.5:1:2160 \
  RRA:AVERAGE:0.5:5:2016 \
  RRA:AVERAGE:0.5:15:2880 \
  RRA:AVERAGE:0.5:60:8760 \
  RRA:MAX:0.5:1:2160 \
  RRA:MAX:0.5:5:2016 \
  RRA:MAX:0.5:15:2880 \
  RRA:MAX:0.5:60:8760 \

Schauen wir uns das mal genauer an. Oben findet man wieder den Teil mit meinen Umgebungsvariablen. Nicht alle sind hier nötig aber ich kopiere die immer komplett, aus Angewohnheit. Schritt für Schritt:

rrdtool create $RRDDIR/btemp_left.rrd --step 60 \

Eine Datenbank mit dem Namen btemp_left.rrd wird erstellt. $RRDDIR ist meine Variable für das Ausgabeverzeichnis. Step 60 bedeutet das alle 60 Sekunden ein Wert in die Datenbank geschrieben werden soll.

DS:data1:GAUGE:120:-20:100 \

DS = Data Source, die Datenquelle, data1 ist lediglich ein name dafür und kann selbst gewählt werden. Gauge ist der Typ der Datenquelle und bedeutet das der übergebene Zahlenwert (positiv wie auch negativ) unverändert abgespeichert wird. Mit 120 haben wir hier den Heartbeat angegeben, da es mal vorkommen kann das ein Wert ausbleibt weil z.B. ein Sensor fehlerhaft, mit dem Heartbeat akzeptiert RRDtool auch einen später kommenden Wert (in diesem Falle bis zu maximal 120 Sekunden) bevor ein Zeitstempel als „undefiniert“ in die Datenbank eingetragen wird. Die Werte -20:100 geben den minimalen und den Maximalen Wert an den RRDTool akzeptiert, Werte außerhalb dieses Bereiches werden verworfen und als „undefined“ eingetragen.

Nun noch etwas technischer, es geht um die Archivierung:

  • RRA: Gibt an das es um ein Round-Robin-Archive geht
  • Average: Gibt an das mehrere Datenpunkte zusammengefasst und deren Mittelwert gebildet wird. Dieser Mittelwert wird archiviert. Erlaubt wären hier außerdem MAX / MIN und LAST. Indem Falle würde der höchste, der niedrigste oder aber der Letzte Wert genommen werden.
  • 0.5:1:2160: Da muss ich etwas weiter ausholen. Die Datenpunkte werden in RRD auch Primary Data Points (PDP) genannt. Zusammengefasste (konsolidierte) Datenpunkte werden als Consolidated Data Points (CDP) bezeichnet. Ein weiter Begriff ist der X-Files-Factor, dazu kommen wir aber noch. Nun zur Erklärung des Teils 0.5:1:2160. Die 0.5 bestimmt den X-Files-Factor, das bedeutet das min 50% der PDPs die zusammengefasst werden sollen einen gültigen Wert enthalten müssen und nicht „undefined“ sein dürfen. Die 1 gibt an das nur ein PDP archiviert werden soll (in späteren Zeilen erhöht sich das dann ja) und die 2160 gibt an, das in dem Archiv 2160 CDPs Platz finden.

Rufen wir dieses Script nun einmalig auf, wird eine entsprechende RRD-Datenbank erstellt.


Was fehlt nun noch?

  1. Unsere Messwerte müssen in die Datenbank gelangen
  2. Wir möchten bunte Bilder (Verlaufsgrafiken) erstellen

Das erledigen wir im nächsten Teil dieser Reihe…..

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert