Serverraum-Temperatur mit dem Raspberry Pi überwachen
Wenn 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.
-
RASPBERRY PI – RAUMTEMPERATUR ÜBERWACHEN
http://www.imrazor.de/wordpress/?p=1654#comment-18915
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:
- Temperatursensor DS18B20 wird nicht erkannt.
http://www.forum-raspberrypi.de/Thread-temperatursensor-ds18b20-wird-nicht-erkannt
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