Temperaturmessung mit dem Raspberry Pi

52
12316
AliceKeyStudio / Pixabay

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

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.

Den Server nun neu starten.

Nun kann man mit

die Temperatur zum ersten Mal abrufen werden. Der Befehl

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.

temper

Im Anschluss legt man das Verzeichnis an, wo die Round Robin Datenbank gespeichert wird.

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

Nun wird ein Script sensor.sh mit folgendem Inhalt angelegt und ausführbar gemacht:

Danach noch das Script diagramm.sh mit diesem Inhalt:

Beide Scripte legt man dann in /home/pi ab. Nun wird nur noch ein Cron eigerichtet. Dazu müssen mit

folgende Einträge an das Ende de Datei gesetzt werden.

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.

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ß!

52 Kommentare

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

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

  3. Wieso fragst du im Script nicht einfach den letzten Messwert ab und wenn der gemessene zu absurd ist wird er einfach verworfen? 🙂

  4. 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. 🙂

          • 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)

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

  5. Als root mit $ vor den Variablen sieht es so aus:

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

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

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

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

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

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

  12. Danke,

    mein Script schaut so aus, bei vorherigen anscheinend Copy & Paste problem 🙂

  13. Weiß jemand wie man die Tabellendefinition nachträglich nochmal ändern kann, ohne eine neuanzulegen, oder die alte zu überschreiben?

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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein