2013年4月17日水曜日

USB温度計のUbuntuでの使用

室内の温度測定などのためにUbuntuでの動作が確認されているUSB温度計を購入。

Amazon USB温度計! USB thermometer

980円のUSB温度計を使ってLinuxから室温を計測する (infiniteloop.co.jp)
を参考にしてGitHubから測定プログラムtemperのソースコードを持ってくる。

temper : github bitplane / temper

修正、コンパイルなどは上記リンクやREADMEなどを見ながらやれば特に問題がないだろう。

ただ、このプログラムはそのままだとroot権限でしか実行出来ない。なのでtemper内のREADMEに従い、ソースに同梱されているudevルールのファイルを/etc/udev/rules.d/にコピーしてやる。
$ sudo cp ~/temper/60-temper.rules /etc/udev/rules.d/
で、temperグループを作成しユーザーhogeを追加
$ sudo addgroup temper
$ sudo gpasswd -a hoge temper
udevをリロード
$ sudo service udev reload
これで、温度計を抜いてもう一度挿せばユーザー権限でtemperが… できない。どこか間違っているようだ。

色々調べて見ると、この温度計はlsusbで
ID 1130:660c Tenx Technology, Inc.
と表示されるものと
ID 0c45:7401 Microdia
と表示されるものがある模様。

lsusbを実行してみると、
Bus 002 Device 008: ID 0c45:7401 Microdia
と表示される。

temperに同梱されていた60-temper.rulesの内容は、
ATTR{idVendor}=="1130", ATTR{idProduct}=="660c", OWNER="root", GROUP="temper", MODE="0660"
となり、Tenx Technologyの方の設定になっている。これをlsusbの内容に従って以下のように変更する。
ATTR{idVendor}=="0c45", ATTR{idProduct}=="7401", OWNER="root", GROUP="temper", MODE="0660"
これを/etc/udev/rules.d/に置き、udevリロード以下の手順を実行すると、
$ temper
2013-04-17 21:29:15,23.324450
今度は上手くいったようだ。

0 件のコメント:

コメントを投稿