インフィニットループ 技術ブログ

2013年02月20日 (水)

著者 : matsui

Raspberry Piで温度と湿度を計測しグラフ化してみました

matsuiです。以前書いた「こちらの記事」が好評だったので、また温度計ネタを書いてみます。
Raspberry PiとUSBセンサーを使って温度と湿度を計測し、それをグラフ化してみます。

使用する機器

Raspberry Pi(ラズベリーパイ)
http://www.raspberrypi.org/
Linuxで動作する名刺サイズのPCです。
小さくて省電力ですので、今回のような常時起動しておく用途にはぴったりですね。
3000円くらいで購入できます。

Strawberry Linux USB温度・湿度計モジュール (USBRH-FG)
http://strawberry-linux.com/catalog/items?code=52002
USB接続の温度/湿度計です。
組み立て済みで4980円、自作キットでも3980円です。
写真はケース付きのもので、更に+1260円です。
(恐ろしいことにRaspberry Pi本体よりかなり高いです 笑)

設定

Raspberry PiのOSに「Raspbian “wheezy”」を使っている場合を例として解説していきます。
まずUSBRHは挿すだけで認識するはずです。
USBポートにケーブルを挿し、以下のコマンドを叩いて正しく認識されていることを確認しましょう。

$ dmesg
 [略]
[  128.363346] usb 1-1.3: new low-speed USB device number 5 using dwc_otg
[  128.470187] usb 1-1.3: New USB device found, idVendor=1774, idProduct=1001
[  128.470219] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  128.470236] usb 1-1.3: Product: Hygrometer/Thermometer
[  128.470249] usb 1-1.3: Manufacturer: Strawberry Linux Co.,Ltd.
[  128.485357] generic-usb 0003:1774:1001.0003: hiddev0: USB HID v1.00 Device [Strawberry Linux Co.,Ltd. Hygrometer/Thermometer] on usb-bcm2708_usb-1.3/input0

必要なパッケージをインストールします。多くの場合もう既に入っているはずです。

$ sudo apt-get install gcc libusb-dev

こちらのサイトからドライバを落としてきます。
→ USBRH on Linux

$ cd /usr/local/src
$ sudo wget http://www.dd.iij4u.or.jp/~briareos/soft/usbrh-0.05.tar.gz
$ sudo tar xvfz usbrh-0.05.tar.gz

しかしながら、ソースコードに少し修正を加えないと、「usb_set_configuration error」というエラーになってしまうようです。
修正には以下のWikiの情報を参考にさせていただきました。
→ USB温湿度計
反転表示してある、233行目と237行目を追加します。

if((rc = usb_set_configuration(dh, dev->config->bConfigurationValue))<0){
    if( rc = usb_detach_kernel_driver_np(dh, dev->config->interface->altsetting->bInterfaceNumber)<0 ){
        puts("usb_set_configuration error");
        usb_close(dh);
        exit(3);
    }
}

修正が終わったらmakeします。

$ cd usbrh-0.05
$ make

このままではroot権限以外で実行した場合エラーとなってしまうので、お好みでsetuidして使うと便利かもしれません。

$ sudo chown root:root usbrh
$ sudo chmod u+s usbrh
$ sudo mv -i usbrh /usr/local/bin/
$ usbrh
24.34 21.81

無事、コマンドから温度と湿度がとれるようになりました。

グラフ化する

muninをインストールしましょう。

$ sudo apt-get install apache2 munin munin-node

これだけで基本的なグラフが生えてきます。
ただし、描画するグラフがいっぱいあるとRaspberryPiの処理能力ではかなり重くなるので、/etc/munin/plugins以下のシンボリックリンクを消して、不要なグラフは削除すると良いと思います。
USBRHの情報をグラフに加えるのは以下のサイトのスクリプトを利用させていただきました。
→ T-Saitoh’s Diary 熱くなってきたしUSBRH復活
上記サイトのスクリプトを/usr/share/munin/plugins/usbrhとして設置し、/etc/munin/plugins以下にシンボリックリンクをはります。

$ sudo vi /usr/share/munin/plugins/usbrh
[上記のサイトのスクリプトを保存]
$ sudo chmod 755 /usr/share/munin/plugins/usbrh
$ sudo ln -s /usr/share/munin/plugins/usbrh /etc/munin/plugins/
$ sudo /etc/init.d/munin-node restart

完成

温度の安定する位置に温度計を固定し、しばらく待ちましょう。

温度と湿度のグラフが生えてくるはずです。


なんだかジグザグしているのは、定期的にストーブが動くからです。春になれば安定したグラフが取れることでしょう。
洗濯をしたり、お風呂に入ったりすると湿度が跳ね上がるのも見てて楽しいです。
簡単にできますので、みなさんもぜひ試してみてはいかがでしょうか。

ブログ記事検索

このブログについて

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