Zum Inhalt springen

Temeraturüberwachung

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