Zum Inhalt springen

Raumtemperatur

Temperaturmessung und -erfassung an einem (Windows)-PC

New_TEMPer_8Hier kurz sowas wie ein Mini-Pick. Es geht um den USB-Stick „TEMPer“ (http://www.pcsensor.com/usb-thermometers/gold-temper.html), der auf extrem günstige Weise euch ermöglicht die Temperatur (am einfachsten mit einem Windows-PC, KEIN Server!) zu erfassen, zu protokollieren und bei Bedarf Warn-Emails zu versenden. Stichwort: Raum- bzw. Serverraum-Überwachtung.

Ich hab mich des Themas schon mal vor einigen Wochen angenommen, doch da war mein Ansatz, dass ich es mit einem Raspberry Pi und einem Temperatur-Sensor umsetzen wollte. Den Artikel, wenn er euch interessiert, findet ihr unter folgender URL: 

Es war ziemlich genau auch zu der Zeit, als ich mir den TEMPer-Stick in China bestellt habe, und nun, rund 2 Monate später ist er bei mir eingetroffen. 😉

Ein erste, kurze Test-Installation auf einem Windows 7 Rechner verlief problemlos und auch die Software ist selbsterklärend, wenn auch optisch etwas gruslig. Aber sie macht, was sie soll. 
Sie zeigt auf zwei Kommastellen genau, die aktuelle Temperatur an und protokolliert diese auch. Auf Wunsch kann man SMTP-Emaildaten hinterlegen und Schwellwerte anlegen, bei deren Unter- oder Überschreitung eine Warn-Email verschickt werden soll. Auch das habe ich getestet und funktioniert so, wie es soll. Allerdings möchte ich euch noch den Tipp geben, dass ihr den Zeitintervall etwas höher stellt. Defaultmässig ist dort eine Sekunde hinterlegt und genau in diesem Intervall werden dann auch die Emails verschickt! Also jede Sekunde eine!

Es gibt auch Projekte und Seiten im Internet, die den TEMPer-Stick an einem Raspberry Pi betreiben, dies habe ich aber selber nicht ausprobiert.

 

Serverraum-Temperatur mit dem Raspberry Pi überwachen

raspberry_piWenn ihr die Raumtemperatur z.B. von einem Serverraum überwachten wollt und dazu deinen Raspi (Raspberry Pi) verwendet wollt, dann möchte ich euch folgende Seite ans Herz legen.

Sie war mir wirklich sehr, sehr behilflich, als ich so ein Projekt zum umsetzten hatte. Allerdings hatte ich bei mir auch noch einige Problemchen, welche ich hier ergänzend zu obigen Post aufführen möchte.

Als ich „w1-gpio“ und „w1-therm“ installiert hatte, wollte ich im angegebenen Pfad nachschauen, ob da mein Sensor auftaucht. Tat er nicht. 
Somit machte ich mich auf die Suche nach dem Problem und bin auch folgende Seite gestossen:

Auf diesem Forumseintrag ist die entscheidende Passage:
Mit neuer Firmware muss man unter: /boot/config.txt folgenden Eintrag ergänzen:
dtoverlay=w1-gpio,gpiopin=4,pullup=on

Als ich das gemacht hatte, wurde der Sensor (nach einem Reboot) bei mir erkannt und ich konnte damit die gemessene Temperatur auslesen.

Dann hatte ich noch ein größeres Problem. Ok, die Temperatur wurde nun gemessen, aber das Script wollte nicht das tun, was es sollte.
Es wurde einfach keine Warn-Email verschickt. 
Ok, jetzt bin ich nicht der Shell-Guru. Aber nachdem ich mir das Script etwas länger und genauer angeschaut habe, bin ich (für mich) zu dem Schluss gekommen, dass die Bedingungen in der If-Then-Else-Schleife falsch bzw. vertauscht angegeben waren und habe diese nun einfach mal „umgedreht“.

Und was soll ich sagen? Nach dieser „Drehung“ funktioniert das Script bei mir tadellos und tut das, was es soll. Meine Version des Script schaut jetzt so aus:

#!/bin/sh
 
# Variablen-Definitionen
# Temperaturen
tempok=30
tempfile="/home/pi/temp.txt"
tempfile2="/home/pi/temp_zu_hoch.txt"
 
# Datum
d=`date +%Y-%m-%d-%H-%M`
d2=`date +%Y-%m-%d`
# Mailversand
subject="!!!!! WARNUNG !!!!! TEMPERATUR IM SERVERRAUM KRITISCH!"
email="markus@ostermeier.net"
emailmessage="/home/pi/tempmail.txt"
 
# Temperatur auslesen, bewerten und reagieren
 
temp=`echo "scale=0; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/28-000007741036/w1_slave | awk -F't=' '{print $2}')/1000" | bc -l`
 
if [ $temp -ge $tempok ]
then 
 # Nur Mail versenden, wenn nicht bereits eine Mail an diesem Tag verschickt wurde!
 grep -i $d2 $tempfile2
 if [ $? -eq 0 ]
 then
 # Logdatei befuellen
 echo "$d -- T=$temp" >> $tempfile2
 # Inhalt der Mail erstellen und in emailmessage.txt zwischenspeichern
 echo "!!ACHTUNG!! Die kritische Temperatur von 30 Grad im Serverraum wurde ueberschritten!" >>$emailmessage
 echo " " >> $emailmessage
 echo "Ein Ausfall der Klimaanlage bei einer Raumtemperatur von T=$temp Grad Celsius ist wahrscheinlich." >>$emailmessage
 echo " " >> $emailmessage
 echo "Bitte Klimatisierung pruefen und ggf. Server herunterfahren!" >> $emailmessage
 echo " " >> $emailmessage
 echo " " >> $emailmessage
 echo "Beste Gruesse, der Severraum" >> $emailmessage
 
 # emailmessage verschicken
 mail -s "$subject" "$email" < $emailmessage
 
 # temporäre emailmessege.txt löschen
 rm $emailmessage
 
 else
 echo "$d -- T=$temp" >> $tempfile2 
 fi
else
 echo "$d -- T=$temp" >> $tempfile
fi