社内見える化委員会のmatsuiです。
最近は少しマシになりましたが、部屋が暑いということで、適切な温度計測を行うため、Linuxマシンから温度測定をできる仕掛けを作ってみました。
使ったUSB温度計はこちら。Amazonで980円です。
Amazon USB温度計! USB thermometer
セットアップ
付属のCDには、Windows用のドライバしか入っていませんので、とりあえず捨てましょう。
セットアップにはこちらのページを参考にさせていただきました。
→ matoken’s wiki. Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58
環境はUbuntu12.04LTSで試しましたが、ここに書いてあることそのままで大丈夫です。
ありがたいです。
USBを指すと普通に認識します。
$ dmesg | grep TEMP [ 1.795200] input: RDing TEMPer1V1.2 as /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/input/input4 [ 1.804362] generic-usb 0003:0C45:7401.0001: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPer1V1.2] on usb-0000:00:1d.0-2/input0 [ 1.822847] generic-usb 0003:0C45:7401.0002: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPer1V1.2] on usb-0000:00:1d.0-2/input1
必要なパッケージをインストールします。
$ sudo apt-get install build-essential libusb-0.1-4 libusb-dev git
温度測定コマンドのソースコードはgithubで公開されているようです。
→ github bitplane / temper
githubからチェックアウトします。
$ git clone https://github.com/bitplane/temper.git
日本人向けにソースコードを修正します。
上の参考ページそのままです。
$ vi temper.c
44行目の utc = gmtime(&t); を utc = localtime(&t); に
47行目の strftime(dt, 80, “%d-%b-%Y %H:%M”, utc); を strftime(dt, 80, “%Y-%m-%d %H:%M:%S”, utc); に
diffで書くとこんな感じ
$ diff temper.c.org temper.c 44c44 < utc = gmtime(&t); --- > utc = localtime(&t); 47c47 < strftime(dt, 80, "%d-%b-%Y %H:%M", utc); --- > strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);
makeして出来たバイナリを/usr/local/binあたりに設置します。
今回は一般ユーザからも利用したかったので「chmod u+s」しています。
$ make $ sudo mv temper /usr/local/bin/ $ sudo chmod u+s /usr/local/bin/temper
使ってみる
実行するとこんな感じです。日付と温度がカンマ区切りで出力されます。
$ temper 2012-10-15 22:01:48,27.825012
あとはこれを適当なアプリケーションから利用してやればOKです。
弊社ではマザーゆっくりという自作SkypeBotに、温度をしゃべらせる機能をつけて使っています。
また温度のグラフをcactiに出しています。
< ?php
exec("/usr/local/bin/temper", $output);
list($dummy, $temper) = explode(',', $output[0]);
echo round($temper, 1);
[/sourcecode]
こんなスクリプトで取得して、cactiでグラフにしています。
安いお値段で楽しめますので、興味のある方は試してみてはいかがでしょうか。
お古のノートPCをサーバにしています。