株式会社インフィニットループ 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をサーバにしています。

7件のコメント

  1. […] 社内見える化委員会のmatsuiです。 前回は社内温度のグラフ化を行いましたが、今回もまたグラフ化ネタです。     弊社ではインフィニットループでは、ソーシャルゲームの開発を行っ […]

    2012年11月13日 11:49

  2. […] matsuiです。以前書いた「こちらの記事」が好評だったので、また温度計ネタを書いてみます。 […]

    2013年2月20日 11:10

  3. 午前中は失礼いたしました。
    TEMPerの温度測定コマンドのチェックアウトをすると
    タイムアウトになってしまうのですが、なにか対処法は有りますか?
    宜しくお願いいたします。

    2013年3月1日 15:32

    投稿者 : 齋藤 賢司
  4. 失礼しました。記事の書き間違いです。

    間違い githubからチェックアウトします。
    > $ git clone git://github.com/bitplane/temper.git

    正しくは githubからチェックアウトします。
    > $ git clone https://github.com/bitplane/temper.git

    です。修正しておきました。お試し下さい。

    2013年3月1日 15:42

    投稿者 : matsui
  5. 迅速な対応ありがとう御座いました。
    無事にチェックアウトする事が出来ました。
    有難う御座いました。

    2013年3月1日 16:03

    投稿者 : 齋藤 賢司
  6. すいません、また質問です。
    チェックアウトはエラー無しで出来たのですが、$ vi temper.cを実行したら
    New Fillと表示されてしまい、中身がない状態です。
    Raqsupberry Piを再起動しても症状は変わりません。
    宜しくお願い致します。

    2013年3月1日 16:54

    投稿者 : 齋藤 賢司
  7. コメントありがとうございます。
    このviはエディタのコマンドで、中身が編集できれば他のコマンドでも何でも構わないのです。
    この記事を実践するのには、ある程度のLinuxの知識が必要になります。
    コメント欄でのやり取りだけで、それを伝えるのは難しいと思いますので、近くのLinuxに詳しい方に見て貰ってはいかがでしょうか。
    すいませんが、よろしくお願いします。

    2013年3月1日 22:00

    投稿者 : matsui

  • このブログについて

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

    最新の記事