Temperaturaufzeichnung des DS18B20-Sensors

7
3430
PublicDomainPictures / Pixabay

news-574

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.

news-565

sudo apt-get install rrdtool

Dann erstellt man eine entsprechende RRD-Datenbank.

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.

#!/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.

#!/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

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

sudo nano /etc/crontab

und trägt Folgendes ein.

* * * * * 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.

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!

7 Kommentare

  1. 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.

  2. 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

  3. 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

Schreibe einen Kommentar zu Michael Antwort abbrechen

Bitte bestätige diesen Kommentar!
Bitte den Namen hier eingeben

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.