Zabbix Raumtemperatur ueberwachen mit USB Temper

Thermometer im USB Stick

Für 10-20 EUR kann man bei Ebay oder Amazon eine USB Thermometer kaufen. Suchen Sie in Online-Shops nach "usb thermometer". Die Thermometer, egal von welchem Hersteller, eigenen sich hervorragend, um die Raumtemperatur zu messen und an Zabbix zu übergeben. Es gibt diverse Programme, welche die Temperatur auslesen. Der USB-Stick braucht keine speziellen Treiber, da er sich als Tastatur am System "anmeldet".

Anhand der Bilder identifizieren Sie leicht die Modelle mit der Aufschrift "TEMPer" oder "TEMPerl". Die Modelle "TEMPerl", also mit einem "L" haben einen externen Temperaturfühler. Von welchem Hersteller die Hardware stammt, erkennen Sie nur anhand keiner Details. (Siehe Bild).

Einige Modell melden Sich im System wie folgt:

Bus 004 Device 002: ID 0c45:7401 Microdia 
Device Descriptor:
  idVendor           0x0c45 Microdia
  idProduct          0x7401 
  iManufacturer           1 RDing
  iProduct                2 TEMPer1V1.4

Andere Modelle, die identisch aussehen, identifizieren sich wie folgt:

Bus 004 Device 004: ID 1130:660c Tenx Technology, Inc. Foot Pedal/Thermometer
Device Descriptor:
  idVendor           0x1130 Tenx Technology, Inc.
  idProduct          0x660c Foot Pedal/Thermometer
  bcdDevice            1.50
  iProduct                2  PCsensor Temper
günstiges USB-Thermometer mit guter Linux-Unsterstützung

Microdia USB Thermometer unter Linux mit Python auslesen

Mit der Software "temper-pythine" (https://github.com/padelt/temper-python) steht ein Kommandozeilenwerkzeug zur Verfügung, das sich einfach installieren lässt. Auf der Git-Hub-Seite des Entwicklers finden Sie sehr detaillierte Information über die Hardware und wie diese unter Linux benutzt werden kann.

Python Module installieren

Debian und Ubuntu:

apt-get install python-usb python-setuptools
wget -O - "https://github.com/padelt/temper-python/archive/master.zip">temper-python.zip
unzip temper-python.zip 
cd temper-python-master/
python setup.py install

Wenn die Installation erfolgreich war, finden Sie ein Programm zum Auslesen der Temperatur unter /usr/local/bin/temper-poll.

root@monitor-pc:~# /usr/local/bin/temper-poll 
Found 1 devices
Device #0: 27.8°C 82.1°F

Tenx USB Thermometer unter Linux mit Perl auslesen

Perl Module installieren

Das USB Thermometer wird von allen modernen Distributionen als USB-Eingabegerät erkannt. Es wird lediglich ein Perl-Modul benötigt, um die aktuelle Temperatur auszulesen.

Leider liefert keine Distribution des benötige Modul mit, so dass Sie es mit CPAN installieren müssen. Debian und Ubuntu
Debian und Ubuntu verfügen über die benötigten Perl Module, welche Sie über den Paketmanager installieren:

apt-get install libdevice-usb-pcsensor-hidtemper-perl

Red Hat und CentOS
Stellen Sie sicher, dass Sie Perl-CPAN und die USB Entwicklungsbibliotheken, und einen C-Compiler installiert haben.

yum install libusb-devel make gcc

Bereiten Sie nun das System vor, damit per CPAN Perl-Module installiert werden können

cpan -fi Bundle::CPAN

Wenn Sie dieses Kommando das erste Mal ausführen, werden verschiedene Fragen zur Konfiguration von Cpan gefragt, die Sie in der Regel die vorgeschlagenen Antworten übernehmen können. Je nach Rechenleistung Ihres Systems, dauert die CPAN-Einrichtung mehrere Minuten. Es werden sehr viele Dateien heruntergeladen, damit CPAN korrekt funktioniert.

Installieren Sie nun ein weitere CPAN Module, welche zur Installation des USB-Thermometers benötigt werden.

cpan -fi ExtUtils::MakeMaker
cpan -fi Inline::MakeMaker 
cpan -fi Device::USB
cpan -fi Device::USB::PCSensor::HidTEMPer

Alle Fragen können Sie mit Enter bestätigen.

Wenn alles korrekt installiert wurde, dann sollte Sie folgende Ausgabe in Ihrem Terminal erhalten

MSULLAND/Device-USB-PCSensor-HidTEMPer-0.0201.tar.gz
 /usr/bin/make install  -- OK

Temperatur auslesen

Wenn alle Perlmodule installiert wurden, ist das Auslesen der Temperatur vergleichsweise einfach. Legen Sie folgendes Script in zum Beispiel /usr/local/bin/temper_mon.pl an, machen Sie es ausführbar und rufen Sie es auf.

#!/usr/bin/perl

use Device::USB::PCSensor::HidTEMPer;
my $pcsensor = Device::USB::PCSensor::HidTEMPer->new();
my @devices = $pcsensor->list_devices();
foreach my $device ( @devices ){
        print $device->internal()->celsius() if defined $device->internal();
}

Wenn Sie das Skript aufrufen und die Warnung Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/Device/USB.pm line 10 erhalten, dann Kommentieren Sie in der Datei /usr/lib/perl5/Device/USB.pm in Zeile 10 use warnings; aus.

Thermoter unter Windows einrichten

Laden Sie die Datei herunter

e:\tmp\utac\utac>sfk tail -lines=1 TempLog.txt|sfk filter -sep "," -form "$col3"
20

Zabbix User-Parameter einrichten

Richten Sie nun im Zabbix-Agenten einen User-Parameter ein, der die aktuelle Temperatur an den Zabbix-Server meldet.

Da nur Root Zugriff auf angeschlossenen USB-Geräte hat, legen Sie mit dem Befehl visudo -f /etc/sudoers.d/temper eine neue Regel mit folgendem Inhalt an:

zabbix ALL=(ALL) NOPASSWD:/usr/local/bin/temper_mon.pl # Perl Version
zabbix ALL=(ALL) NOPASSWD:/usr/local/bin/temper-poll   # Python Version

Fügen Sie einen der folgenden User-Parameter zur Zabbix-Agent Konfiguration hinzu:

UserParameter=usb.temperatur,sudo /usr/local/bin/temper_mon.pl
UserParameter=usb.temperatur,sudo /usr/local/bin/temper-poll -q -c

Das Item im Zabbix-Server können Sie dann wir folgt einrichten:

Usb temperatur item.png

Links