SSブログ
エステ

Zabbixから室温をモニタリングする [ZABBIX]

ZabbixでサーバのHDDやUPSの温度などなどをモニタリングしているのですが、室温との相関を知りたくUSBタイプの温度計で室温もモニタリングすることに。

USBタイプの温度計はこちら。
USB温度計! USB thermometer

USB温度計! USB thermometer

  • 出版社/メーカー: OEM
  • メディア: 
PCSensor社製のTEMPerシリーズのわりと初期のモデルとおもわれます。(TEMPerV1.2)
すでに生産されていないようで、流通在庫のみかと。

photo.JPG
本体右側の小さな穴から外気を取り込めます。

image.jpeg
USBコネクタ反対側にも外気を取り込むための穴が開いています。


Ubuntu11.10のサーバーに接続すると、、

$ cat /var/log/syslog|grep TEMPer

--
Apr 17 13:25:39 ws kernel: [333259.264091] input: RDing TEMPerV1.2 as /devices/pci0000:00/0000:00:04.0/0000:01:00.0/usb8/8-2/8-2:1.0/input/input352
Apr 17 13:25:39 ws kernel: [333259.264401] generic-usb 0003:0C45:7401.02B8: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.2] on usb-0000:01:00.0-2/input0
Apr 17 13:25:39 ws kernel: [333259.276917] generic-usb 0003:0C45:7401.02B9: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.2] on usb-0000:01:00.0-2/input1
--
という具合に認識されます。


Linuxで動かすための方法はいくつかありますが、モデルによって動く・動かないがあるようです。
Perl, C, Ruby で書かれたドライバ等が流通しています。

# lsusb 
の結果に以下が含まれていれば、Cで書かれたドライバがおすすめです。
私はこちらでした。
Bus 008 Device 004: ID 0c45:7401 Microdia

# lsusbの結果が
Bus 003 Device 002: ID 1130:660c Tenx Technology, Inc.
ならPerlで書かれたものでも大丈夫かと。

TEMPerのモデルによってドライバが少し異なるので、モデルがどれか正確に見極めることが最初のステップです。


ではCの場合について説明します。
# sudo apt-get install git build-essential libusb-0.1.4 libusb-0.1.4-dev
# git clone git://github.com/bitplane/temper.git
# cd temper


[1/14/2013 追記]
Ubuntu 12.10では、
# sudo apt-get install git build-essential libusb-1.0-0 libusb-1.0-0 libusb-dev

# vi temper.c で、GMTをローカルタイムに変更します。
また、TEMPerの測定温度を校正したい場合は、scaleとoffsetを一旦リセットします。
校正する必要がなかったり、できない場合は、リセットしなくてもよいかと。

(一旦、校正していない状態にします。)
static float scale = 1;
static float offset = 0;

(表示時刻をローカルタイムにします。)
utc = gmtime(&t);
utc = localtime(&t);

そして、
# make

でおわり。

# ./temper 
12-Apr-2012 17:31,30.000000

という具合に時刻と温度が取得できるはずです。

さて、これで温度を測定して、校正します。

校正するためには、TEMPer以外に温度計が必要です。
校正といっても簡易なものなので、よほど実温度と差があるのでなければしなくても良いかも知れません。

このドライバで提供されている校正方法は至って簡易で、TEMPerで測定できた温度と他の温度計で測定できた温度が1次関数的にズレているものとして、そのズレを算出します。
TEMPerではサーミスタが用いられていますが、サーミスタの誤差は直線的になるようなので、これでも十分なようです。

1次関数なので2点測定してあげればよいことになります。

               1点目   2点目    差
他の温度計 32.2    25.6     6.6          ---(1)
TEMPer    32.329498   25.808313     6.521185  ---(2)

Scale: (1)/(2) = 1.012

Offset: 25.6 - 25.808313x1.012 = -0.52

これらの値をtemper.cの該当する部分を書き換えて、makeします。

static float scale = 1.012;
static float offset = -0.52;

これで、
# ./temper 
を実行すれば、補正された室温が得られるはずです。。

temperを/usr/local/bin/あたりに置いてあげます。


# echo UserParameter=USB.temp,/usr/local/bin/temper|cut -f2 -d"," >> /etc/zabbix/zabbix_agentd.conf

# service zabbix-agent restart

スクリーンショット 2012-04-13 13.38.30.png


あと、temperのレスポンスが遅く、タイムアウトになることが多いので、/etc/zabbix/zabbix-agentd.conとzabbix_server.confのtimeout = 30くらいにしてあげると、取りこぼしが減ります。

これでOKのはず。



ちなみに、他のTEMPerのモデルの場合は、上記のドライバは使えない可能性があります。
そのときは、この辺りが役に立つかと。



Zabbix統合監視「実践」入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plusシリーズ)

Zabbix統合監視「実践」入門 ~障害通知、傾向分析、可視化による省力運用 (Software Design plusシリーズ)

  • 作者: 寺島 広大
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/04/08
  • メディア: 大型本

タグ:calibration

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。