Wie ich schon im Artikel „Temperaturmessung mit dem Raspberry Pi“ beschrieben hatte, ist es relativ einfach mit dem TEMPer1 für knapp 10€ Temperaturen zu messen und grafisch in einem Diagramm darzustellen. Leider kommt es dabei aber immer wieder zu Fehlmessungen, was man in der Darstellung des älteren Artikel deutlich sieht. Dank der tollen Unterstützung von Sören auf http://hypfer.de/blog war es mir nun möglich einen sauberen Graphen zu erzeugen. Dazu ersetzt man die Inhalte der im ersten Beitrag erwähnten Scripts wie folgt:
sensor.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash # temp liest die Temperatur aus trys=0 function gettemp { temp=`pcsensor -cm | head -n1` if (( trys < 3 )); then if [[ $temp = '*Fatal error> USB read failed*' ]] || [[ $temp = '0.00' ]]; then trys=$((trys+1)) gettemp else rrdtool update /home/pi/.temp/temp.rrd N:$temp fi else exit 0 fi } gettemp |
diagramm.sh
1 2 3 4 5 6 7 8 9 10 |
#!/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" \ --watermark "`date`" \ 'DEF:probe1=/home/pi/.temp/temp.rrd:tempsensor1:MAX' \ 'AREA:probe1#009bc2:Temperaturverlauf' \ 'GPRINT:probe1:LAST:Letzte Messung\: %2.1lf'" °C" |
Auch die Vorgaben für die Datenbank ändern sich hiebei.
1 |
rrdtool create /home/pi/.temp/temp.rrd --step 60 DS:tempsensor1:GAUGE:120:-20:50 RRA:MAX:0.5:1:2160 |
Die Wartezeit ankommender Daten der Tabelle wurde auf 120 Sekunden angehoben und es wird nun mit den Maximalwerten gearbeitet. Die Lücken entstanden durch zwischenzeitliche Erkennungsprobleme des Sensors. Dies wird so nun kompensiert.
Seht selbst!
Das > im ersten Kasten muss > sein. Irgendwie wirres Html Encoding bei WordPress oO
& gt; (ohne leerschritt..
Das heißt? Hast du noch etwas geändert???
Nein, es wird nur falsch angezeigt. Erstes Script Zeile 6 $temp = da ist das. Liegt am HTML encoding.. oO
Danke Hypfer! Hab’s geändert. Was würde ich nur ohne dich machen?
Hallo,
hast du was dagegen, wenn ich mir deinen Code anpasse und mein Munin-Plugin anhand dessen überarbeite?
Grüße
Auf intux.de ist das Kopieren ausdrücklich erwünscht! Ich muss aber dazu sagen, dass der Code des Scriptes sensor.sh von Hypfer stammt. Bitte frage ihn dazu auch um Erlaubnis.
Danke!
Hast du meine Lösung wieder verworfen? Oder ist die auch noch aktuell bei dir? Sprich der Empfänger und die Sensoren?!
Nein, deine Lösung ist schon schicker. Ich muss dazu aber ein paar Euros investieren. Den TEMPer habe ich ja schließlich da und habe nach eine Lösung zum Lückenschluss gesucht. Das hat ja nun geklappt.
Ich will als Nächstes meine Cam in die Seite einbauen und die Temperatur dazu auf das Bild bringen.
Wenn ich mir jedoch den von dir eingesetzten Sensor zulege, dann werde ich deiner Anleitung folgen und mich sicher auch melden.
Hallo,
Mein Setup produziert derzeit folgende Ausgaben: https://stefano.orion.uberspace.de/tmp_download/rPi_temparatur_overview.png
Die Temperaturen sind etwas hoch da der Sensor (nicht aber der Raspberry Pi) am Schrank in einer Altbauwohnung (==> sehr hohe Decke) steht und wärme bekanntlich nach oben steigt. Auf normaler Höhe sehen die Temperaturen OK aus. Laut Datenblatt sind die Temperaturen des DS18B20 relativ genau.
Hier meine Schaltung: https://stefano.orion.uberspace.de/tmp_download/remoteport-u-temp-sensor-am-schrank.pdf
Der Sensor wird mit 5V versorgt. Zusätzlich zum DS18B20 (Temperatur) befindet sich noch ein PCF8574 (Portexpander) auf der Platine der aktuell noch nicht genutzt wird. Das soll sich allerdings ändern sobald ich Zeit habe. Das System läuft an ca. 5 Meter Kabel Stabil.
Grüße
Achja, Die Temperatur steigt so an wenn ich den Holzofen einheize.
Was ich noch ändern sollte / ändern will:
* Die Temperaturen sind ohne Authentifizierung aus dem Web erreichbar, nicht gut.
* Die Website etwas schicker gestalten.
* Den RRD-Plot durch etwas interaktives (Chart.js ?) ersetzen / ergänzen.
Hier ist auch ein gutes Beispiel, für einen Ofen… 😉
http://c0by.de/03tempweek_innen.png
Da hast du wohl jetzt mittlerweile zwei Funksensoren, c0by?
Öhm naja, 3 sind es mittlerweile.
„* Den RRD-Plot durch etwas interaktives (Chart.js ?) ersetzen / ergänzen.“
Hast du dazu eine Anleitung? Sowas suche ich noch…
Eventuell so: http://thule.mine.nu/html/index.html
Vielleicht werde ich mir je nach gewünschter Funktionalität auch selbst etwas schreiben. Mal schauen wie viel Zeit ich in der vorlesungsfreien haben werde.
Sorry, mein Spam-Filter hatte den Kommentar leider geschluckt.
Danke für die Beschreibung Deiner Lösung.
He, tolles Projekt mit dem Temperatursensor. Leider scheitere ich an sensor.sh.
Beim Ausführen erhalte ich:
./sensor2.sh: 4: ./sensor2.sh: function: not found
./sensor2.sh: 6: ./sensor2.sh: trys: not found
Kann doch eigentlich gar nicht sein, dass die Bash mit „function“ nichts anfangen kann? Oder ist das ein copy & paste Problem?
Verwirrte Grüße
m.
Keine Ahnung was da los ist. Ich könnte Dir aber mein Script sensor.sh per Mail senden.
Ja, wäre prima, wenn Du mir das per Mail schicken könntest. Adresse hast Du ja 😉
Die Datei ist unterwegs! Gib bitte mal ein Feedback.
[…] Temperaturerfassung wurde auf eine Woche erweitert. Als Grundlage dient dazu der Artikel “TEMPer1 – 2.0“. Abgeändert wurden hingegen die Eingabe zur Erstellung der Datenbank (60*60*24*7/60=10080 […]
Ich mal wieder. Die sensor.sh von oben, ist die letzte besser funktionierende / optimierte Version?
Nehme die Datei, auch einmal per Mail, bitte.
Du kannst doch den Code abgreifen. Da ich die Datei auch nicht mehr habe, würde ich es auch nur so machen.
Ja, das ist so.
Hatte zum Schluss diesen Sensor eingesetzt, da der zuverlässiger arbeitet und nur ein paar Cent kostet.
https://www.intux.de/2015/08/temperaturaufzeichnung-des-ds18b20-sensors/
ging so. dachte bloß, dass wp wieder den code zerhackt.
Wenn ich aufpasse, nicht. 😉
[…] Temperaturerfassung wurde auf eine Woche erweitert. Als Grundlage dient dazu der Artikel „TEMPer1 – 2.0„. Abgeändert wurden hingegen die Eingabe zur Erstellung der Datenbank (60*60*24*7/60=10080 […]