Nachdem auf meinem Raspberry Pi der Webserver und WordPress installiert war, habe ich den Minicomputer mit dem Temperatursensor TEMPer1 (Preis ca. 10€ inkl. Online-Versand) erweitert. So kann ich nun Temperaturen in vorab eingestellten Zeitintervallen messen und protokollieren.
Was ist dazu nötig?
Nachdem der TEMPER1 eingestöpselt ist, überprüft man ob der Sensor vom RasPi mit
1 |
dmesg |
erkannt wird.
Bei mir sieht ein Teil der Ausgabe so aus: usb 1-1.3: Product: TEMPer1V1.4
Ist dies der Fall, dann kann die Software installiert werden.
1 |
sudo bash |
1 2 3 4 5 6 |
apt-get install libusb-dev git clone https://github.com/petervojtek/usb-thermometer.git cd usb-thermometer/ cp 99-tempsensor.rules /etc/udev/rules.d/ make cp pcsensor /usr/local/bin/ |
1 |
exit |
Den Server nun neu starten.
1 |
sudo reboot |
Nun kann man mit
1 |
pcsensor |
die Temperatur zum ersten Mal abrufen werden. Der Befehl
1 |
pcsensor -c -d |
gibt die Temperatur nur in Grad Celsius und ohne Datum aus.
Will man die das Ganze automatisch im zeitlichen Intervall erfassen und als Diagramm z.B. auf einer Webseite ausgeben, so kann man das ganz einfach mit dem RRDtool realisieren, welches i.d.R. noch installiert werden muss.
1 |
sudo apt-get install rrdtool |
Im Anschluss legt man das Verzeichnis an, wo die Round Robin Datenbank gespeichert wird.
1 |
mkdir /home/pi/.temp |
Dann wird die Datenbank erstellt. Ich wähle dazu eine Darstellung im Intervall von 5 Minuten über einen Zeitraum von 36 Stunden (129600 Sekunden). Im Diagramm wird die Temperatur in Minuten-Schritten (60 Sekunden) dargestellt. 2160 Werte werden in der Datenbank gespeichert (129600/60).
1 |
rrdtool create /home/pi/.temp/temp.rrd --step 60 DS:tempsensor1:GAUGE:60:-20:50 RRA:AVERAGE:0.5:1:2160 |
Nun wird ein Script sensor.sh mit folgendem Inhalt angelegt und ausführbar gemacht:
1 2 3 4 5 |
#!/bin/sh # temp liest die Temperatur aus temp=`pcsensor -cm | head -n1` # Temperatur wird in RRDTool eintragen rrdtool update /home/pi/.temp/temp.rrd N:$temp |
Danach noch das Script diagramm.sh mit diesem Inhalt:
1 2 3 4 5 6 7 8 9 |
#!/bin/sh # Darstellung im Diagramm rrdtool graph /var/www/sensor_ext/temp.png -a PNG \ --title="Temperatur im Wohnzimmer" \ --start -129600 \ --vertical-label "Grad Celsius" \ 'DEF:probe1=/home/pi/.temp/temp.rrd:tempsensor1:AVERAGE' \ 'AREA:probe1#009bc2:Temperaturverlauf' \ 'GPRINT:probe1:LAST:Letzte Messung\: %2.1lf'" °C" |
Beide Scripte legt man dann in /home/pi ab. Nun wird nur noch ein Cron eigerichtet. Dazu müssen mit
1 |
sudo nano /etc/crontab |
folgende Einträge an das Ende de Datei gesetzt werden.
1 2 |
* * * * * pi /home/pi/sensor.sh */5 * * * * pi /home/pi/diagramm.sh |
Der Sensor wird minütlich abgefragt und die Werte werden in die RRD geschrieben. Das Diagramm wird im 5 Minuten Takt in dem im Script angegebenen Verzeichnis erstellt. Dieses ist natürlich nach den eigenen Bedürfnissen anzupassen. Die PNG-Grafik kann dann zum Monitoring z.B. auf einer Internetseite eingebunden werden.
Der Cron-Job ist hierzu neu zu starten.
1 |
sudo /etc/init.d/cron restart |
Der Raspberry Pi kann nun so sinnvoll zur Überwachung von z.B. Heizungsanlagen etc. eingesetzt werden.
Leider kommt es hin und wieder zu Fehlmessungen, die unschöne Lücken in das Diagramm reißen. Hierfür habe ich leider noch keine Lösung gefunden. Darüber kann ich aber in Anbetracht des Preises hinweg sehen.
Hier der Link zum Projekt http://meinpi.no-ip.org/.
Viel Spaß!
Interessanter Artikel, ich verwende einen Raspberry Pi ebenfalls zur Temperatur- und auch Feuchtigkeitsmessung, dazu verwende ich einen DHT22 Sensor, der an die GPIO Schnitstelle angeschlossen ist. Ich habe witzigerweise auch Fehlmessungen, die aber meist über dem tatsächlichen Wert liegen. Vielleicht wird im TEMPer1 ja ein ähnlicher Sensor verwendet oder das ist ein generelles Problem der Sensoren dieser Preisklasse, du weißt vermutlich auch nichts genaueres, oder?
Leider nein.
Sehr guter Artikel, habe so etwas schon lange gesucht. Danke.
Keine Ursache.
Hallo,
Ich verwende seit einiger Zeit den DS18B20 am Arduino, bisher sind mir noch keine Fehlschaltungen durch extreme Messfehler aufgefallen. Der Sensor ist 1,60€ (bei Reichelt) auch um ein vielfaches günstiger. Außerdem lassen sich viele Sensoren auf dem gleichen Pin anschließen da 1-Wire als Bus verwendet wird. Laut Blogeintrag [1] lässt sich dieser Sensor auch Problemlos mit dem Raspberry Pi auslesen.
LG
* [1] http://kopfkino.irosaurus.com/tutorial-ds18s20-temperatur-sensor-an-einem-raspberry-pi/
Danke für diesen wertvollen Tipp inkl. Anleitung via Link.
Hier noch ein Tip!
Dann gibt es noch, einen schönen Zeitstempel! http://c0by.de/blog/temper.png
hier ist der richtige Link…
http://c0by.de/temper.png
Danke für den Tipp. Ich habe es gleich mal probiert. Super!
Der Code wurde im Kommentar verwurschtelt. Ich habe das mal korrigiert. So kann man es dann jetzt auch richtig heraus kopieren.
Wieso fragst du im Script nicht einfach den letzten Messwert ab und wenn der gemessene zu absurd ist wird er einfach verworfen? 🙂
Verrat mir wie!?
Danke im Voraus.
Jetzt mit richtigem Gravatar (hoffe ich)
Mir fehlt leider der Output von rrdtool lastupdate /home/pi/.temp/temp.rrd
Den Sensor hab ich aber schon bestellt. Ansonsten wäre das so lauffähig. Jetzt fehlt da noch ein kleines bisschen.
(Eventuelle Fehler sind gewollt um den Leser zu testen. 🙂 )
Danke für den Hinweis. Ich werde es gleich mal testen!
Die Ausgabe lautet:
Falls es nicht klappt, hoffe ich, dass Dein Senso bald eintrifft!
Nach dem Ausführen von sensor.sh kommt folgendes:
So, probier das mal
Das ganze ginge bestimmt noch besser und funktioniert nur in deinem speziellen Szenario ohne Anpassung. Es nimmt sich den letzten Wert (wenn dieser nicht älter als 5 Minuten ist) und überprüft, ob es einen Temperatursturz um mehr als 8 Grad gab (die 8 kannst du natürlich anpassen). Wenn ja ist der Wert ungültig und nichts wird geschrieben.
Ein anderer Ansatz wäre einfach 3 Messwerte zu nehmen, sie zu vergleichen und wenn keiner sonderlich weit ausbricht (Differenz von 1 Grad ) den Mittelwert von allen zu nehmen. Könnt ich auch mich mal dransetzen, aber erst wenn ich das Ding selber da hab. 🙂
ARGH, es hat die Hälfte gefressen. :< ich paste es zu pastebin..
http://paste.debian.net/73992/
Jetzt sieht die Ausgabe so aus:
*kopfkratz*
Was passiert wenn du in Zeile 9 $ vor die variablen machst?
So etwa (Wenn WordPress das nicht frisst)
Habe es gerade probiert. Dann wird der Sensor nicht mehr gefunden.
Wie er wird nicht mehr gefunden?
Ich bin jetzt erst dazu gekommen. Jetzt sieht es so aus:
Du führst das aber mit Bash aus, oder?
Unter Cygwin funktioniert es jedenfalls. oO
Ich schau mal, wenn der Sensor da ist.
Als root mit $ vor den Variablen sieht es so aus:
[…] http://www.intux.de/2013/12/temperaturmessung-mit-dem-raspberry-pi/ […]
[…] ich schon im Artikel “http://www.intux.de/2013/12/temperaturmessung-mit-dem-raspberry-pi/” beschrieben habe, ist es relativ einfach mit dem TEMPer1 für knapp 10€ Temperaturen zu […]
Hallo Frank,
auch bei mir haut das alles nicht hin, wie bei einigen hier. (Auch die Vers. 2.0 und 2.01 nicht) Ich fange aber mal vorne an. Also der PCSensor ist installiert und funkioniert. Nur, die von dir genannte Option PCSENSOR -d (ohne Datum) kennt meiner nicht/gibt es nicht. Woran kann das liegen ?
Lutz
Du darfst den Befehl nicht groß schreiben! Veruche das mal
Da habe ich mich unsauber ausgedrückt.
pcsensor in klein geschrieben funktioniert natürlich. Du schriebest:
pcsensor -c -d
gibt die Temperatur nur in Grad Celsius und ohne Datum aus.
Die Option -d gibt es bei mir nicht. Auch nicht unter -h.
Ich will damit sagen oder fragen, kann es sein das einige bei denen das weitere auch nicht hinhaut, eine andere Version an Soft haben?
Lutz
Verwendest Du auch wirklich einen TEMPer1?
Hallo Frank,
ja, ich habe den TemPer1. Wird nach dmesg auch so angezeigt. Allerdings zeigt meiner wie ich schon sagte bei pcsensor -c -d an, dass er die Option -d nicht kennt. Ansonsten kommt die Temperatur mit Datum und Uhrzeit auch auf den Schirm, wenn ich pcsensor eingebe. Aber leider klappt der Rest nicht so richtig. ./sensor.sh läuft durch. ./diagramm.sh kommt mit Fehlermeldung ERROR parameter probe1 does not present a number in line AREA:probe1#009bs2….
rrdtool lastupdate temp.rrd gibt auch meistens eine Ausgabe wie
tempsensor1
1393361341: 20.19
Also wird die RRD-Bank befüllt.
Ich weiß nicht mehr richtig weiter, zumal ich weiter davon ausgehe, dass du bei deiner Aussage bleibst, dass dein o.g. Befehl pcsensor -c -d eine Ausgabe einer Temperatur ergibt. (Hat aber mit dem (meinem) Problem, dass kein PNG Graph erzeugt wird nichts zu tun.
Gruß
Lutz
Was passiert denn bei der Eingabe von:
Wäre nett wenn Du das mal hier kommentieren könntest.
pcsensor – cm | head n1
ergibt bei mir als Ausgabe:
19.69
Das ist also die aktuelle Temperatur.
Gruß
Lutz
Ja, so ist es!
Also scheint es der richtige TemPer1 zu sein. Nur das Problem ist nicht behoben, dass die Augabe mit dem RRD bei mir erstmal nicht funktioniert. Keine Idee, was das mit dem bemängelten Parameter probe1 auf sich haben könnte?
Gruß
Lutz
Nicht wirklich. Da der zuvor erwähnte Befehl auch die Temperatur ausgibt, sollte diese auch via Script in die RRD geschrieben werden. Die zuvor erwähnte Ausgabe der RRD (1393361341: 20.19) scheint mir aus der Ferne auch plausibel.
Ich habe echt keine Ahnung was da bei Dir schief läuft.
Hallo,
kann mir jemand helfen, ich bekomme in den Graphen keine Werte angezeigt. Es wird immer „nan“ angegeben.
Ich nutze folgende sensor.sh
Ist aus dem Temper1 -2.0 …
Die Ausgabe von rrdtool lastupdate ergibt:
tempsensor1
Als diagramm.sh verwende ich die aus dem Temper1 -2.01 inkl. der Datenbankdefinition.
Egal was ich mache, es wir kein Graph angezeigt …
Bitte um Hilfe!
Danke
wolli112
Hallo wolli112! Wurden denn auch Cron-Jobs angelegt?
Hallo,
habe das Problem nun behoben, es lag an der Definition für die Datenbank. Habe aus dem 50 eine 130 gemacht, und schon geht es. Wie man an dem Diagramm sieht, Werte ich meine Solaranlage aus, und habe daher Werte über 50c.
Jetzt geht es.
Danke
In Zeie 6 des Sensor-Scripts ist auch noch ein Fehler. Überprüfe das auch bitte mal.
Danke,
mein Script schaut so aus, bei vorherigen anscheinend Copy & Paste problem 🙂
Es betrifft die Klammern nach dem „if“.
Weiß jemand wie man die Tabellendefinition nachträglich nochmal ändern kann, ohne eine neuanzulegen, oder die alte zu überschreiben?
Meines Wissens geht das nicht. Du musst sie neu anlegen.
Hat schon mal jemand zwei Temper1 am Raspberry betrieben, z.B. um unterschiedliche Temperaturen zu messen?
hi zusammen..
auch ich plane für die nächsten Wochen eine Heizungssteuerung mit dem RasPi. Daher freue ich mich über jede mögliche Info!!
Als Sensoren möchte ich mit den 1Wire-sensoren arbeiten, und dann die Werte in eine mySQL-Datenbnk schreiben. Und die Werte dann mit PHP über den Apache ausgeben.
Denke mit ein wenig HTML5 kann ich dann im WLAN mit meinen NEXUS – Geräten jederzeit die Daten abfragen. Jedoch mochte ich im Gegensatz zu den hier vorgestellten Projekt nicht mit WordPress arbeiten, denn ich denke dass der RasPi eventuell überfordert ist damit. (WordPress ist zwar toll, aber es laufen für meinen Bedarf zu viele unnötige DB-Abfragen)
das könnte auch eine mögliche Ursache für die oben beschriebenen Fehlmessungen sein.
Geplant habe ich bisher:
Temperatur-Messungen:
1x Heizkessel (Warmwasser) zur Zentralheizung
1x Solarkollektor (warme Seite am Dach)
1x Boiler – Solarzone
1x Boiler – Heizkesselzone
1x Pufferspeicher (derzeit noch nicht vorhanden)
und folgende Pumpen möchte ich dann steuern:
1x Zentralheizung
1x Umwälzpumpe Boiler
1x Umwälzpumpe Solar
1x Umwälzpumpe Pufferspeicher ( aktuell nur Vorbereitung..)
Ich hoffe, ich kann demnächst über meine Arbeiten berichten..
stay tuned
computerazubi
Danke für den Kommentar! Bin gespannt auf einen Bericht der Realisierung dieses Projekts.
[…] unternommen. Leider lieferte der TEMPer nicht bei jeder Messung einen Wert, wie im Artikel “Temperaturmessung mit dem Raspberry Pi” zu sehen […]
[…] 2 USB Thermometer rumliegen, welche ich aber nicht, zum laufen bekommen habe. Aber dank, diesem Artikel funktioniert es […]
Couldn’t find the USB device, Exiting
[…] unternommen. Leider lieferte der TEMPer nicht bei jeder Messung einen Wert, wie im Artikel „Temperaturmessung mit dem Raspberry Pi“ zu sehen […]
[…] ich schon im Artikel „Temperaturmessung mit dem Raspberry Pi“ beschrieben hatte, ist es relativ einfach mit dem TEMPer1 für knapp 10€ Temperaturen zu […]