Wie man die Temperatur mit einem Sensor Dallas DS18B20 messen kann, hatte ich im Artikel „Temperaturanzeige in der Webcam des RasPi“ kurz erklärt. Um diese Temperatur in einem Diagramm darzustellen, habe ich mich ein weiteres Mal dem Round-Robin-Database-Tool bedient. Die ersten Versuche hatte ich mit dem TEMPer1 unternommen. Leider lieferte der TEMPer nicht bei jeder Messung einen Wert, wie im Artikel „Temperaturmessung mit dem Raspberry Pi“ zu sehen ist.
Nun wollte ich das Ganze mit dem DS18B20 nachbauen. Dazu muss man auf dem Pi das RRD-Tool installieren.
1 |
sudo apt-get install rrdtool |
Dann erstellt man eine entsprechende RRD-Datenbank.
1 |
rrdtool create /home/pi/.temp/temp.rrd --step 60 DS:tempsensor1:GAUGE:120:-20:50 RRA:AVERAGE:0.5:1:10080 |
Im folgenden Beispiel wird nun eine Messreihe sieben Tage lang in einer Schleife aufgezeichnet und abgebildet. Die genauen Zusammenhänge hierzu werden in den zuvor erwähnten Artikeln erklärt.
Zwei Scripte werden nun benötigt. In das Script diagramm3.sh, welches in /home/pi gespeichert wird, trägt man folgenden Inhalt ein. Hier wird die Temperatur am Sensor gemessen und an die RRD-Datenbank übergeben.
1 2 3 4 5 6 7 |
#!/bin/sh # Auslesen der Temperatur temperatur=`cat /sys/bus/w1/devices/28-0000067c28ce/w1_slave | sed -n "s/.*t=\(.*\)/\1/p"` # Ausgabe mit zwei Stellen nach dem Komma temperatur2=`echo "scale=2; $temperatur / 1000" | bc` # Übergabe an das Round-Robin-Tool rrdtool update /home/pi/.temp/temp.rrd N:$temperatur2 |
In das Script diagramm4.sh, welches ebenfalls in /home/pi abgespeichert wird, kopiert man den nachfolgenden Inhalt. Dieser erstellt dann ein Diagramm als PNG (temp.png) im von mir zuvor angelegten Verzeichnis /var/www/sensor_ext. Der Speicherort kann natürlich auch woanders liegen wie z.B. im Home-Verzeichnis. Das muss dann natürlich im Script entsprechend berücksichtigt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/sh # Darstellung im Diagramm rrdtool graph /var/www/sensor_ext/temp.png -a PNG \ --title="Temperatur Balkon-Cam" \ --start -604800 \ --vertical-label "Grad Celsius" \ --watermark "`date`" \ 'DEF:probe1=/home/pi/.temp/temp.rrd:tempsensor1:AVERAGE' \ 'LINE:probe1#009bc2:Temperaturverlauf' \ 'GPRINT:probe1:LAST:Letzte Messung\: %2.1lf'" °C" \ COMMENT:"\l" \ 'GPRINT:probe1:MIN:Min\: %2.1lf'"°C\n" \ 'GPRINT:probe1:MAX:Max\: %2.1lf'"°C\n" |
Beide Diagramme sind dann
1 2 |
sudo chmod +x /home/pi/diagramm3.sh sudo chmod +x /home/pi/diagramm4.sh |
ausführbar zu machen.
Nun wird die ganze Sache noch mit einem Cron-Job automatisiert. Dazu öffnet man
1 |
sudo nano /etc/crontab |
und trägt Folgendes ein.
1 2 |
* * * * * pi /home/pi/diagramm3.sh */5 * * * * pi /home/pi/diagramm4.sh |
Hierbei wird jede Minute die Temperatur gemessen und alle fünf Minuten ein Diagramm hierzu gezeichnet. Nun wird der Cron neu gestartet.
1 |
sudo /etc/init.d/cron restart |
Das Script diagramm4.sh arbeitet hier jeweils mit den Durchschnittswerten (AVERAGE), wobei man hier auch Minimal- und Maximalwerte ausgeben kann. Dazu sollte man sich aber mit dem RRD-Tool näher auseinander setzen.
Der Kampf geht weiter!
hallo intux,
habe alles Schritt für Schritt gemacht- leider erstellt er mir kein PNG-Bild in das sensor_ext Verzeichnis.
habe mit „sudo nano /home/pi/Temperatur/temp.rrd“ die temp.rrd aufgemacht – dort sind aber nur $-Zeichen und diverse ander Zeichen vorhanden- anstatt DS:temperatursensor1 ….
bitte um Hilfe
Lg Mike
Hallo Michael! Eine RRD kann man nicht so einfach mit einem Editor wie Nano öffnen und bearbeiten. Schau hier: http://oss.oetiker.ch/rrdtool/
Aus der Ferne hier etwas zu machen ist schwierig. Du musst die entsprechenden Verzeichnisse mit den nötigen Rechten erstellen. Des Weiteren musst Du den Pfad deines Sensors anpassen. Jeder Sensor speichert in einem anderen Verzeichnis, soviel ich weiß. Arbeite alle meine Artikel hierzu durch. Das sollte dann auch zum Erfolg führen.
hallo intux,
habe nun alles durchgearbeitet- es funktioniert fast alles einwandfrei
das Diagrammbild „temp.png“ erstellt er jetzt auch- nur werden in diesem Diagramm keine Messwerte angegeben- also bei Letzte Messung 0.0°C und bei der y-Ache sprich Grad Celsius nur von 0.0 – 1.0 angezeigt.
Habe in der diagramm3.sh den DS18B20 Sensor unter:
temperatur=`cat /sys/bus/w1/devices/28-0000067c28ce/w1_slave
die richtige Seriennummer eingetragen – also: 28-021501c02dff
wie auch den Pfad richtig verwendet.
muss der DS18B20 auf einen gewissen GPIO-Pin sein, da ich im standardmäßig immer auf 4 lasse?
lg Mike
hallo Intux,
es wird im Diagramm was angezeigt 🙂
wie kann ich nun in der X-Achse statt Tage -im Stunden Takt es anzeigen bzw. in halben Stunden Takt ?
lg Mike
Hallo Michael! Schau mal hier:
https://www.intux.de/2013/12/temperaturmessung-mit-dem-raspberry-pi/
Das wird Dir helfen. 😉
hallo intux-
habe mich mit deinem Link: http://oss.oetiker.ch/rrdtool/ und
deinem Projekt vom 12/2013 auseinandergesetzt.
Verstehe jetzt großteils die RRDTOOL Software! –
Jetzt klappt alles !
Danke für die Hilfe! 🙂
lg Mike
Na super!