株式会社インフィニットループ PHPとスマホアプリ開発を行う札幌のシステム会社

技術ブログ

  1. トップ>
  2. 技術ブログ>
  3. 980円のUSB温度計を使ってLinuxから室温を計測する

2012年10月18日 (木)

著者 : 

980円のUSB温度計を使ってLinuxから室温を計測する

社内見える化委員会の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);

こんなスクリプトで取得して、cactiでグラフにしています。


 
 
安いお値段で楽しめますので、興味のある方は試してみてはいかがでしょうか。
 

お古のノートPCをサーバにしています。

  • このブログについて

    このブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。
    お仕事で使えるITネタを社員たちが発信します!

    最新の記事