Beispielscripte für RRD Datenbank

Servus

hab hier mal einige ganz rudimentäre Beispielscripte zur Benützung der RRD Datenbank zusammengestellt.
Ist zwar alles auch in WIIPS enthalten, manchmal möchte man aber doch eigenen Plots definieren.

Hier ein paar Codezeilen am Beispiel der FHT Daten wie man das denn so anstellen kann.

Ich hab alle Dateipfade mal nach C:\rrd\ gelegt.
Ist natürlich nicht schön, aber als Beispiel am einfachsten.

Erstmal muß die Datenbank angelegt werden, den folgenden Code also nur einmal ausführen.


$dir = 'C:/rrd/';

$DS1 = 'DS:TEMP:GAUGE:68400:U:U';
$DS2 = 'DS:SOLL:GAUGE:689400:U:U';
$DS3= 'DS:VENTIL:GAUGE:68400:U:U';
$RRA1= 'RRA:AVERAGE:0.5:1:2016';   #alle Werte für 1 Woche beahlten (5min Raster)
$RRA2= 'RRA:AVERAGE:0.5.20:13140';   #Stundenmittelwerte für 11/5 Jahre


$file= 'FHT_Wohnzimmer.rrd';
$para = "create $dir$file --step 300 $DS1 $DS2 $DS3 $RRA1 $RRA2";   # alle 5min 1 Wert
echo RRD_Execute($para);

Die Messwerte werden mit diesem Script in die Datenbank geschrieben.
Dieses also regelmäßig aufrufen. zb. alle 5min.
Die Variablen IDs sind natürlich mit den jeweils eigenen auszutauschen.


$dir = 'C:/rrd/';
$file= 'FHT_Wohnzimmer.rrd';
$temp = getvalue(17209 /*[Wohnzimmer\Raumtemperaturregler\Temperatur]*/);
$soll = getvalue(37918 /*[Wohnzimmer\Raumtemperaturregler\Target Temperature]*/);
$ventil = getvalue(54446 /*[Wohnzimmer\Raumtemperaturregler\Position]*/);
$para = "update $dir$file N:$temp:$soll:$ventil";
echo RRD_Execute($para);

Und nun den Plot erzeugen:
Dieses Script also bei Bedarf aufrufen.


$dir = 'c:/rrd/';
$file ='FHT_Wohnzimmer.rrd'; # Filename RRD datenbank
$DB = "c\:/rrd/$file";  # Pfad & Filename

$pngname = 'C:\/rrd\/wohnzimmer_temp.png'; # Name des zu erstellenden Plot

$VERT_LABEL = "--vertical-label=Wohnzimmer";  #Beschriftung
$TITEL =	"--title=Raumtemperatur";

$start = time() - 3600;  # Startzeit = jetzt - 1 Stunde
$end = time(); # Endzeit = jetzt

$style = "--heigh=150 --width=400";  # Größe des Plot
$plot_1 = "DEF:ist=$DB:TEMP:AVERAGE LINE2:ist#FF0000:Ist-Temperatur";   # 1. Line ist Ist-temperatur
$plot_2 = "DEF:soll=$DB:SOLL:AVERAGE AREA:soll#2A07E8DD:Soll-Temperatur"; # 2. Fläche mit Solltemperatur

$para= "graph $pngname --start=$start --end=$end $style $VERT_LABEL $TITEL $plot_1 $plot_2";  # Nun alles zusammenführen

echo rrd_execute($para);  # Plot erzeugen

Beim erzeugen der Plots kann man noch sehr sehr viele mehr Parameter angeben: Farben und Skalierungen definieren, legende hinzufügen, glätten, Minima und maxima ausgeben ect. ect.
Ich habe aber mich im Besipiel aber bewust nur das Minimum beschränkt.

Oder man kann man kann die einzelnene Datenbankwerte auch verrechnen:
Hier wird der Unterschied zwischen IST und Solltemperatur geplottet:


$dir = 'c:/rrd/';
$file ='FHT_Wohnzimmer.rrd'; # Filename RRD Datenbank
$DB = "c\:/rrd/$file";  # Pfad & Filename

$pngname = 'C:\/rrd\/regelabweichung.png'; # Name des zu erstellenden Plot

$VERT_LABEL = "--vertical-label=Wohnzimmer";  #Beschriftung
$TITEL =	"--title=FHT-Regelabweichung";

$start = time() - 3600;  # Startzeit = jetzt - 1 Stunde
$end = time(); # Endzeit = jetzt

$style = "--heigh=150 --width=400";  # Größe des Plot
$ist_temp = "DEF:ist=$DB:TEMP:AVERAGE";   #Datenquelle Istwert definieren
$soll_temp = "DEF:soll=$DB:SOLL:AVERAGE"; #Datenquelle Sollwert definieren
$CDEF_1 ="CDEF:differenz=ist,soll,-"; # Differenz berechnen

$LINE_1 ="LINE1:differenz#FF0000:Ist-Temperatur";   # Linie definieren

$para= "graph $pngname --start=$start --end=$end $style $VERT_LABEL $TITEL $ist_temp $soll_temp $CDEF_1 $LINE_1";  # Nun alles zusammenführen

echo rrd_execute($para);  # Plot erzeugen



Aussehen tuts dann wie im Anhang:

Weitere Parameter und Möglichkeiten sind hier RRDtool - About RRDtool nachzulesen.

viel Spass
bb

wohnzimmer_temp.png

regelabweichung.png

Mega Merci!

werde das Beispiel die Tage mal genau auseinander nehmen…

Viele Grüße
Sascha