Temperaturmessungen mit dem TEMPer1 USB sensor

Vor einiger Zeit begann ich zuhause mir einen kleinen Serverraum einzurichten - mein Datenklo ;-).
In diesem Serverraum sollte natürlich auch die Raumtemperatur mit Icinga oder Nagios überwacht werden. - Natürlich gibt es verschiedene quasi out-of-the-box Lösungen, wie z.B.

Diese Lösungen mögen zwar im professionellen Umfeld sinnvoll einsetzbar sein, bei Preisen von 270 - 600 EUR sprengen sie jedoch für einen heimischen Serverraum das Budget.
Deswegen habe ich mir für ca. 15,- EUR einen USB-Temperatursensor, den TEMPer1 von PCSensor http://pcsensor.com/index.php?_a=product&product_id=7Temper1 geholt.
Diesen Sensor gibt es in verschiedenen Ausführungen (1 Temperatursensor, 2 Sensoren u.s.w.) und verschiedenen Versionen.
Diese Informationen hier gelten ausschliesslich für den TEMPer1 der sich in der Ausgabe von lsusb folgendermaßen zu erkennen gibt:

lsusb output: ID 0c45:7401 Microdia

Auch der TEMPer2 meldet sich z.T. mit diesem lsub-output. Er besitzt jedoch zwei Temperatursensoren. Für den TEMPer2 muss ein anderes Auslesprogramm verwendet werden.
Wenn ich irgendwann einen TEMPer2 erworben habe, werde ich diese Dokumentation hier entsprechend ergänzen …


Bis ich den TEMPer1 sauber abfragen konnte, war ich auf einer Odysee mit folgenden Programmen, die für mich Ihren Zweck leider nicht erfüllten (Shame on me: poor C coding knowledge :-():

Ich bin dann letztlich mit dem Programm temperv14 von http://dev-random.net/wp-content/uploads/2013/08/temperv14.zip vorwärts gekommen, nachdem ich das Nagios-Plugin kräftig überarbeitet habe.

Ich habe die Früchte meiner Arbeit in ein .tar.gz-File gepackt und diese Doku niedergeschrieben:

Um den TEMPer1 unter Icinga oder Nagios anzusprechen waren für mich folgende Schritte notwendig:

1. Downloaden des tar.gz-Archivs



2. Entpacken des Archivs:

root@haas:~# cd /tmp
root@haas:/tmp# tar -xzvf temper1_usb-device.tar.gz


3. Kopieren der Executable temperv14 nach /usr/local/sbin :

root@haas:/tmp# cp -p usr/local/sbin/temperv14 /usr/local/sbin/


4. Kopieren des Nagios-Check-Scripts nach /usr/lib/nagios/plugins :

root@haas:/tmp# cp -p /usr/lib/nagios/plugins/haasc/check_temper1.sh /usr/lib/nagios/plugins/


5. Mit Hilfe von visudo in /etc/sudoers die folgende Zeile einfügen:

nagios ALL = NOPASSWD: /usr/lib/nagios/plugins/check_temper1.sh


Alternativ kann auch das UDEV-Script 99-tempsensor.rules verwendet werden:

root@haas:/tmp# cp -p usr/share/doc/temper1/99-tempsensor.rules /etc/udev/rules.d/


6. Nun muss noch der entsprechende Icinga-/Nagios-Check eingerichtet werden:
Eine Warnung erfolgt hier bei 27.00°C, der Status wechselt auf Critical, sobald die Raumtemperatur 30.00°C erreicht hat:

define service{
      use                     generic-service
      host_name               haas
      service_description     Serverraum-Temperatur Datenklo via TEMPer1
      contact_groups          cg_haasc
      check_command           check_nrpe_3arg!check_temper1.sh!27.00!30.00
}

7. nagios-plugin usage:

./check_temper1.sh <warn> <crit>

Die Temperaturen müssen in °C mit einer oder zwei Nachkomastellen angegeben werden:

z.B. ./check_temper1.sh 24.0 27.3


Grad Celcius / Grad Fahrenheit:
Standard: Grad Celcius
Um Grad Fahrenheit zu verwenden, als weiteren Parameter 'f' angeben:

./check_temper1.sh 75,2 81,14 f


Mögliche Ausgaben:

OK: 23.00°C Temperature is below warn threshold 24.0°C
WARNING: 25.00°C Temperature is above / equals warn threshold 24.0°C
CRITICAL: 28.00°C Temperature is above / equals crit threshold 27.3°C

oder in Grad Fahrenheit z.B.:

WARNING: 77.79°F Temperature is above / equals warn threshold 75,2°F 



credits to:



zurück