RaspberryPiの検索で、たまたまUSB温度計を使ってLinuxから室温を計測する を発見
それから、matoken’s wiki. Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58で、eBay 日本で買うより安いという情報を頂いたので、買ってみた。
同じの品物ないが、類似したものを一個$6.49で買った。送料無料!(しかし安いものがいっぱいあるからついつい、84ドル超える買い物になった。)
届いたら、早速RaspberryPiに刺してみたら、
[702457.972061] usb 1-1.2: new low-speed USB device number 5 using dwc_otg
[702458.078478] usb 1-1.2: New USB device found, idVendor=0c45, idProduct=7401
[702458.078511] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[702458.078528] usb 1-1.2: Product: TEMPerV1.4
[702458.078543] usb 1-1.2: Manufacturer: RDing
[702458.093433] input: RDing TEMPerV1.4 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input0
[702458.094931] hid-generic 0003:0C45:7401.0001: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-bcm2708_usb-1.2/input0
[702458.104938] hid-generic 0003:0C45:7401.0002: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-bcm2708_usb-1.2/input1
認識された。
こちら(http://hpv.cc/~maty/pukiwiki1/index.php?Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58)を参考に、ソースコードを取得し、カスタマイズする。
詳しい製作過程は、WIKIへ(http://linux.uc4.net//xoops/modules/xpwiki/)どうぞ。
# apt-get install build-essential libusb-0.1-4 libusb-dev git
一部パッケージが見つからない、失敗に終わった。パッケージ更新する。
# apt-get update
# apt-get install build-essential libusb-0.1-4 libusb-dev git
今度上手く完成した。
temper ソースをgit から。
# git clone git://github.com/bitplane/temper.git
# ls temper
60-temper.rules log.sh Makefile pcsensor.c pcsensor.h README temper.c
# cp -p temper.c temper.c.org
# vi temper.c
# 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
# mv temper /usr/local/bin/
# chmod u+s /usr/local/bin/temper
# temper
2013-02-16 03:48:08,30.396763
ちゃんと温度の表示ができた。しかし30度は高いね!USB延長ケーブルを付けて再度計測。
$ temper
2013-02-16 03:55:17,23.710213
23度くらい、室温に近いかも。
運用
PHPでWEBに表示するため、UNIX通算時間の表示、ログの生成、cron に登録、ログの解析が必要。
# vi temper.c
# 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);
49c49
< printf("%s,%fn", dt, tempc);
---
> printf("%ld,%s,%fn", t, dt, tempc);
5分置きに、/var/log/temper.logにログを吐き
*/5 * * * * /usr/local/bin/temper >> /var/log/temper.log
最後は、PHPでWEBに表示する
オーダーした、Webカメラもそろそろ届くので、無線で画像、音声、温度、湿度を送るフィールドサーバみたいなものを作りたいね!
Ref
参考:
- http://model.job.affrc.go.jp/FieldServer/ — フィールドサーバ