Digitemp und rrdtool

Status
Für weitere Antworten geschlossen.

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
Hi zusammen,

ich möchte auf meiner RS eine Temperatur Erfassung mit digitemp und rrdtool realisieren.
Beides ist installiert und funktioniert:

digitemp_DS9097 -c /etc/digitemp.conf -q -a
2013.10.02 16:42:52 4: Sensor 0: 10E88B9002080010 C: 25.0000
2013.10.02 16:42:53 4: Sensor 1: 10188190020800DF C: 58.8125
2013.10.02 16:42:54 4: Sensor 2: 10D13B9002080024 C: 23.5000
2013.10.02 16:42:55 4: Sensor 3: 107D79900208006F C: 58.9375
2013.10.02 16:42:57 4: Sensor 4: 103F5290020800FC C: 16.0000

Sensor 0 ist Wohnzimmer
Sensor 1 ist Speicher unten (Von Holzheizung 500l Vorratsspeicher)
Sensor 2 ist Serverraum
Sensor 3 ist Speicher oben
Sensor 4 ist Aussentemperatur

Die Grafiken sollen nach dem erstellen nach /volume1/web/digitemp kopiert werden.
Hat so etwas schon mal irgend jemand gemacht? Oder könnte mir jemand bei der Scripterstellung helfen?

Trotz Tante Google bekomm ich es einfach nicht hin, dass rrdtool mir Grafiken erstellt.

Gruss lopo
 

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
Hab nun doch was hinbekommen, die Logik ist etwas schwer zu verstehen.
Aber Schritt für Schritt und nicht alles auf einmal, dann klappt es und man versteht es auch.
speicher.png

Jetzt muss ich nur noch schauen, wie ich die Wochen-, Monats- und Jahresstatistik hinbekomme.

Die Lücken sind noch von den ersten Versuchen, als auch crontab noch nicht geklappt hat.
 

Holgi1

Benutzer
Mitglied seit
16. Dez 2008
Beiträge
45
Punkte für Reaktionen
0
Punkte
6
Hallo,
würdest du dein Wissen mit uns teilen ?
Ich habe bei mir auf der 114 openHAB (Hausautomation) laufen, dieses erzeugt auch rrd Files die normalerweise auch mit openHAB angezeigt werden.

Aus irgendeinem Grund wird das Bild zwar erzweugt, x/y Achsen sind im richtigen Maßstab, aber der Inhalt ist leer (keine Graphen).
Vor dem Umstieg auf die 114 lief es auf einer 111 problemlos.
Ich würde jetzt gern mit rrdtool versuchen die Graphen extern zu erzeugen, scheitere aber schon an den Grundlagen dazu.

Holger

PS: ich sehe gerade es sind rrd4j Dateien, mit denen kann rrdtools vermutlich nicht umgehen, er sagt beim dump das es keine rrd Dateien sind :-(
 
Zuletzt bearbeitet:

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
Hi Holgi,

ich schreib Dir mal meine Konfiguration, musst mal guggen, ob Du etwas davon gebrauchen kannst.
Wenn das Dump die rrd-files nicht erkennt, würde ich erst einmal neue Datenbanken erstellen: (das alles in /volume1/temperatur )

init_rrdtool_db.sh:

#/bin/bash

# rrdtool Datenbank für Statistiken als Grafik anlegen

rrdtool create digitemp.rrd --step=5s \ #die Anzahl der Sensoren müsstest Du bei DS:t0 - DS:t4 anpassen
DS:t0:GAUGE:600:-45:90 \
DS:t1:GAUGE:600:-45:90 \
DS:t2:GAUGE:600:-45:90 \
DS:t3:GAUGE:600:-45:90 \
DS:t4:GAUGE:600:-45:90 \
RRA:AVERAGE:0.5:1:576 \
RRA:AVERAGE:0.5:6:480 \
RRA:AVERAGE:0.5:24:504 \
RRA:AVERAGE:0.5:24:5760 \
RRA:MAX:0.5:1:576 \
RRA:MAX:0.5:6:480 \
RRA:MAX:0.5:24:504 \
RRA:MAX:0.5:24:5760 \
RRA:MIN:0.5:1:576 \
RRA:MIN:0.5:6:480 \
RRA:MIN:0.5:24:504 \
RRA:MIN:0.5:24:5760

Wie gesagt, der Syntax ist mit auch noch etwas rätselhaft, zu mal man kaum deutsche Anleitungen findet.
Damit funktioniert es aber.

als nächstes habe ich mir eine process.sh erstellt:

#!/bin/sh

# zum Schluß kommen die Daten in die Datenbank
# N steht für das aktuelle Datum und Uhrzeit

t0=`/opt/bin/digitemp -c /etc/digitemp.conf -q -t0 | grep Sensor | awk '{print $8}'`
t1=`/opt/bin/digitemp -c /etc/digitemp.conf -q -t1 | grep Sensor | awk '{print $8}'`
t2=`/opt/bin/digitemp -c /etc/digitemp.conf -q -t2 | grep Sensor | awk '{print $8}'`
t3=`/opt/bin/digitemp -c /etc/digitemp.conf -q -t3 | grep Sensor | awk '{print $8}'`
t4=`/opt/bin/digitemp -c /etc/digitemp.conf -q -t4 | grep Sensor | awk '{print $8}'`

/opt/bin/rrdtool update /volume1/temperatur/digitemp.rrd N:$t0:$t1:$t2:$t3:$t4

echo Serverraum = Sensor 0: $t0 °C
echo Speicher unten = Sensor 1: $t1 °C
echo WZ = Sensor 2: $t2 °C
echo Speicher oben = Sensor 3: $t3 °C
echo Aussen = Sensor 4: $t4 °C


erzeugepng.sh

#!/bin/bash
#
## change directory to the rrdtool script dir
DIR=/volume2/temperatur
cd $DIR

## Graph for last 24 hours
/opt/bin/rrdtool graph /volume1/web/temperatur/temperaturen_24std.png \
-w 740 -h 280 -a PNG \
-l -25 -u 100 \
--slope-mode \
--start -86400 --end now \
--font DEFAULT:9: \
--title "Temperaturen 24 Stunden" \
--vertical-label "Grad Celsius" \
--x-grid MINUTE:10:HOUR:1:MINUTE:120:0:%R \
DEF:Serverraum=/volume1/temperatur/digitemp.rrd:t0:MAX \
DEF:Speicher_unten=/volume1/temperatur/digitemp.rrd:t1:MAX \
DEF:Wohnzimmer=/volume1/temperatur/digitemp.rrd:t2:MAX \
DEF:Speicher_oben=/volume1/temperatur/digitemp.rrd:t3:MAX \
DEF:Aussentemperatur=/volume1/temperatur/digitemp.rrd:t4:MAX \
LINE1:Wohnzimmer#ff0000:"Wohnzimmer " \
GPRINT:Wohnzimmer:LAST:"Aktuell\: %5.2lf" \
GPRINT:Wohnzimmer:MAX:"Max\: %5.2lf" \
GPRINT:Wohnzimmer:MIN:"Min\: %5.2lf\l" \
LINE1:Speicher_oben#0000FF:"Speicher oben " \
GPRINT:Speicher_oben:LAST:"Aktuell\: %5.2lf" \
GPRINT:Speicher_oben:MAX:"Max\: %5.2lf" \
GPRINT:Speicher_oben:MIN:"Min\: %5.2lf\l" \
LINE1:Speicher_unten#000017:"Speicher unten " \
GPRINT:Speicher_unten:LAST:"Aktuell\: %5.2lf" \
GPRINT:Speicher_unten:MAX:"Max\: %5.2lf" \
GPRINT:Speicher_unten:MIN:"Min\: %5.2lf\l" \
LINE1:Serverraum#7D1B7E:"Serverraum " \
GPRINT:Serverraum:LAST:"Aktuell\: %5.2lf" \
GPRINT:Serverraum:MAX:"Max\: %5.2lf" \
GPRINT:Serverraum:MIN:"Min\: %5.2lf\l" \
LINE1:Aussentemperatur#66FF0D:"Aussentemperatur" \
GPRINT:Aussentemperatur:LAST:"Aktuell\: %5.2lf" \
GPRINT:Aussentemperatur:MAX:"Max\: %5.2lf" \
GPRINT:Aussentemperatur:MIN:"Min\: %5.2lf\l" \
"COMMENT: Date\: $(date "+%T %F" | sed 's/:/\\:/g')\r"

#Woche
/opt/bin/rrdtool graph /volume1/web/temperatur/woche.png --start -1w \
--title "Woche" \
--width=740 --height=280 \
-l -25 -u 100 \
--vertical-label "Grad Celsius" \
--font DEFAULT:9: \
--alt-autoscale-max \
DEF:Serverraum=/volume1/temperatur/digitemp.rrd:t0:AVERAGE \
DEF:Speicher_unten=/volume1/temperatur/digitemp.rrd:t1:AVERAGE \
DEF:Wohnzimmer=/volume1/temperatur/digitemp.rrd:t2:AVERAGE \
DEF:Speicher_oben=/volume1/temperatur/digitemp.rrd:t3:AVERAGE \
DEF:Aussentemperatur=/volume1/temperatur/digitemp.rrd:t4:AVERAGE \
LINE1:Wohnzimmer#ff0000:"Wohnzimmer " \
GPRINT:Wohnzimmer:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Speicher_oben#0000FF:"Speicher oben " \
GPRINT:Speicher_oben:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Speicher_unten#000017:"Speicher unten " \
GPRINT:Speicher_unten:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Serverraum#7D1B7E:"Serverraum " \
GPRINT:Serverraum:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Aussentemperatur#66FF0D:"Aussentemperatur" \
GPRINT:Aussentemperatur:AVERAGE:"Durchschnitt\: %5.2lf\\n" \

#Monat
/opt/bin/rrdtool graph /volume1/web/temperatur/monat.png --start -1m \
--title "Monat" \
--width=740 --height=280 \
-l -25 -u 100 \
--vertical-label "Grad Celsius" \
--font DEFAULT:9: \
--alt-autoscale-max \
DEF:Serverraum=/volume1/temperatur/digitemp.rrd:t0:AVERAGE \
DEF:Speicher_unten=/volume1/temperatur/digitemp.rrd:t1:AVERAGE \
DEF:Wohnzimmer=/volume1/temperatur/digitemp.rrd:t2:AVERAGE \
DEF:Speicher_oben=/volume1/temperatur/digitemp.rrd:t3:AVERAGE \
DEF:Aussentemperatur=/volume1/temperatur/digitemp.rrd:t4:AVERAGE \
LINE1:Wohnzimmer#ff0000:"Wohnzimmer " \
GPRINT:Wohnzimmer:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Speicher_oben#0000FF:"Speicher oben " \
GPRINT:Speicher_oben:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Speicher_unten#000017:"Speicher unten " \
GPRINT:Speicher_unten:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Serverraum#7D1B7E:"Serverraum " \
GPRINT:Serverraum:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Aussentemperatur#66FF0D:"Aussentemperatur" \
GPRINT:Aussentemperatur:AVERAGE:"Durchschnitt\: %5.2lf\\n" \

#Jahr
/opt/bin/rrdtool graph /volume1/web/temperatur/jahr.png --start -1y \
--title "Jahr" \
--width=740 --height=280 \
-l -25 -u 100 \
--vertical-label "Grad Celsius" \
--font DEFAULT:9: \
--alt-autoscale-max \
DEF:Serverraum=/volume1/temperatur/digitemp.rrd:t0:AVERAGE \
DEF:Speicher_unten=/volume1/temperatur/digitemp.rrd:t1:AVERAGE \
DEF:Wohnzimmer=/volume1/temperatur/digitemp.rrd:t2:AVERAGE \
DEF:Speicher_oben=/volume1/temperatur/digitemp.rrd:t3:AVERAGE \
DEF:Aussentemperatur=/volume1/temperatur/digitemp.rrd:t4:AVERAGE \
LINE1:Wohnzimmer#ff0000:"Wohnzimmer " \
GPRINT:Wohnzimmer:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Speicher_oben#0000FF:"Speicher oben " \
GPRINT:Speicher_oben:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Speicher_unten#000017:"Speicher unten " \
GPRINT:Speicher_unten:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Serverraum#7D1B7E:"Serverraum " \
GPRINT:Serverraum:AVERAGE:"Durchschnitt\: %5.2lf\\n" \
LINE1:Aussentemperatur#66FF0D:"Aussentemperatur" \
GPRINT:Aussentemperatur:AVERAGE:"Durchschnitt\: %5.2lf\\n"


rrdtool graph erstellt die png gleich in dem Verzeichnis /volume1/web/temperatur

Dort ist im Moment mal eine index.html:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


</head>
<body>
<ol>
<p class="title">Temperatur Erfassung</p>
<p><img src="temperaturen_24std.png" alt=""></p>
<p><img src="woche.png " alt=""></p>
<p><img src="monat.png " alt=""></p>
<p><img src="jahr.png" alt=""></p>

</body>

Die Scripte (.sh) musst Du natürlich ausführbar machen.

In der Datei /etc/crontab müssen noch die Einträge eingefügt werden:
*/1 * * * * root /volume2/temperatur/process.sh
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root /volume2/temperatur/erzeugepng.sh

Versuch aber erst einmal, ob die drei Scripte per terminal/ssh ohne Fehler laufen.
process.sh sollte Dir an Ende die Werte der einzelnen Sensoren zeigen.
 

Holgi1

Benutzer
Mitglied seit
16. Dez 2008
Beiträge
45
Punkte für Reaktionen
0
Punkte
6
Hallo lopo,
vielen Dank. Das ist jetzt nicht mit meinen Dateien kompatibel aber ich möchte es trotzdem einsetzen.
Ich hab das für einen Sensor mal grob zusammengeschrieben, aber er erzeugt mir, bei fehlerfreiem Durchlauf, kein PNG (erwartet in /volume1/public/temperaturen_24std.png )
Hast du ausser rrdtool noch etwas anderes installiert ? Irgendeine Idee ?

Hier mein Versuch. Umbrüche hier nur wg. Lesbarkeit eingefügt

Holger

Rich (BBCode):
#!/bin/sh

# das hier nur beim ersten mal freigegeben
#/opt/bin/rrdtool create /volume1/public/test.rrd 
--step=5s  
DS:t0:GAUGE:600:-45:90 
RRA:AVERAGE:0.5:1:576 
RRA:MAX:0.5:1:576 
RRA:MIN:0.5:1:576 

# Werte schreiben
/opt/bin/rrdtool update /volume1/public/test.rrd N:21
/opt/bin/rrdtool update /volume1/public/test.rrd N:21
/opt/bin/rrdtool update /volume1/public/test.rrd N:21

## Graph erzeugen
## Graph for last 24 hours
/opt/bin/rrdtool graph /volume1/public/temperaturen_24std.png 
-w 740 -h 280 -a PNG -l -25 -u 100 
--slope-mode --start -86400 --end now --font DEFAULT:9: 
--title "Temperaturen 4 Stunden" 
--vertical-label "Grad Celsius" 
--x-grid MINUTE:10:HOUR:1:MINUTE:120:0:%R 
DEF:Serverraum=/volume1/public/test.rrd:t0:MAX 
LINE1:Serverraum#7D1B7E:"Serverraum " 
GPRINT:Serverraum:LAST:"Aktuell\: %5.2lf" 
GPRINT:Serverraum:MAX:"Max\: %5.2lf" 
GPRINT:Serverraum:MIN:"Min\: %5.2lf\l" 
"COMMENT: Date\: $(date "+%T %F" | sed 's/:/\\:/g')\r"
 

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
Den Teil für das erzeugen der Datenbank brauchst Du nur ein einziges mal.

#!/bin/sh

# das hier nur beim ersten mal freigegeben
#/opt/bin/rrdtool create /volume1/public/test.rrd
--step=5s
DS:t0:GAUGE:600:-45:90
RRA:AVERAGE:0.5:1:576
RRA:MAX:0.5:1:576
RRA:MIN:0.5:1:576

Sonst würdest Du die test.rrd immer wieder leeren.
Das updaten der Daten könntest Du mit dem erzeugen der png in ein Script schreiben. Das wäre kein Problem.
Hier stimmt was nicht:

-w 740 -h 280 -a PNG -l -25 -u 100
--slope-mode --start -86400 --end now --font DEFAULT:9:
--title "Temperaturen 4 Stunden"
--vertical-label "Grad Celsius"

Versuch mal so:
-w 740 -h 280 -a PNG \
-l -25 -u 100 \
--slope-mode \
--start -86400 --end now \
--font DEFAULT:9: \
--title "Temperaturen 24 Stunden" \
--vertical-label "Grad Celsius" \
--x-grid MINUTE:10:HOUR:1:MINUTE:120:0:%R \


Zwar sieht die Definition ähnlich aus, ich bin mir aber selbst nicht sicher, an welcher Stelle das \ kommen muss.
Das ist ja eigentlich der Steuerbefehl für Return (Schreibmaschine) entspricht neue Zeile.

Bei mir kommt nach der Ausführung von
./erzeugepng.sh
851x446
851x430
851x430
851x430

noch die vier Zeilen für das erstellen der png
 
Zuletzt bearbeitet:

Holgi1

Benutzer
Mitglied seit
16. Dez 2008
Beiträge
45
Punkte für Reaktionen
0
Punkte
6
Ok,
ich hab jetzt auf der DS111 rrdtool und mein script von oben installiert .... und läuft auf Anhieb, die Grafik wird erzeugt.
An der Datenbank kann es nicht liegen, diese hab ich vs. getauscht und auf der 111 wird das png angezeigt.

Dann scheint da irgendwas inkompatibel zu sein mit der DS114 ... schade.

Holger
 
Zuletzt bearbeitet:

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
In dem Fall ist das natürlich recht merkwürdig.
Schade, dass ich keine 114 habe, sonst könnte ich das eventuell mal nach vollziehen.
Aber vielleicht kann noch jemand anders helfen.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!