こんにちは,ちゆりです。
以前こちらの記事で紹介したUSB温度計「TEMPer」がgitのクローンだけではうまく動かない人向けの記事となります。

まずは,関連記事に記載の方法でTEMPerの導入を検討してみてください。
それでも,うまく行かない場合。
もしくは,TEMPer挿入後に以下のコマンドで
$ lsusb
413d:2107
(venderID:productID)と表示される方はこの記事対象です。
どうぞ,ごゆっくり読んでいってください。
413d:2107(venderID:productID)
まず,413d:2107
(venderID:productID)が一体なんなんだというところから始まります。
TEMPer導入には本来gitのクローンで可能なはずなんですが,gitソースのマイナーチェンジのため413d:2107
(venderID:productID)のIDを持つ「TEMPer」はgitのクローンだけではうまく動作しないということになってしまった。
では,どうしよう..。大丈夫です。他の方法で温度を測定することができるので,そちらの方法を紹介します。
ライブラリの導入
すでに導入済みの方はこの手順は必要ないですが,以下のコマンドでライブラリをインストールしておきます。
sudo apt install libusb-1.0-0-dev libudev-dev libfox-1.6-dev cmake
必要であれば以下もインストールしておく。
sudo apt-get install autotools-dev autoconf automake libtool
usb関連のパッケージを導入していたらapt-get
がうまく動作しなくて,ライブラリのインストールができなくなることもあった。
その場合は,full-upgradeを行ってみるとうまく行った。
詳しくは以下の記事でまとめている。

hidapiライブラリのインストール
まずは,hidapiのインストールを行います。(なんだそら。)
USBと通信をするために必要となりますので,こちらをつべこべ言わず導入しておきましょう。
gitクローンするだけです。
git clone https://github.com/signal11/hidapi
その後ちょこちょことシンボリックリンクを貼って完了
cd hidapi/linux
make -f Makefile-manual
sudo cp libhidapi-hidraw.so /usr/local/lib/
sudo ln -s /usr/local/lib/libhidapi-hidraw.so /usr/local/lib/libhidapi-hidraw.so.0
TEMPerdのインストール
続きましてUSB温度測定用ライブラリのTEMPerdをインストールしていきます。
こちらもgitクローンしていきます。
git clone https://github.com/hughesr/TEMPered
最新のクローンしたソースではmac用に改変されているのだとか..。
今回はラズパイ(Linux用)で動かしたいので,Linuxで動いていたリビジョンまでコミットを戻していきます。
cd TEMPered/
sudo git checkout hack-413d-2107
sudo git reset --hard 75aa1e2
sudo cmake .
sudo make
sudo make install
sudo ldconfig
sudo make install
で/usr/local/binにインストールされるため,そのままコマンドとして扱えるようになります。
温度を測定してみましょう
さぁ,ここまで来れば導入完了です。コマンドでUSB温度計から温度を取得できます。
sudo tempered
するとどうでしょう。1行目には温度が表示され,2.3行目にエラーのような出力がされると思います。
///出力///
/dev/hidraw1 0: temperature 27.36 °C
/dev/hidraw1 1: Failed to get the temperature: Not enough data was read from the sensor.
/dev/hidraw1 1: no sensor data available
今回のUSB温度計には非搭載のセンサーから温度を出力しているようです。
TEMPerには非搭載のためエラーが出力されます。
このエラーも邪魔くさいのでこのコマンドで解決
/usr/local/bin/tempered 2> /dev/null | awk 'NR==1' | cut -b 17-
いちいちこんな長ったらしいコマンドを打つのも面倒なのでaliasにでも登録しちゃいましょう。
vi /home/pi/.bashrc
:
alias temperd='/usr/local/bin/tempered 2> /dev/null | awk 'NR==1' | cut -b 17-'
source /home/pi/.bashrc
これで,簡単に温度のみ取得可能となりました。
sudo tempered
:
temperature 27.36 °C
最後に
pythonで組み込んだプログラムにて温度取得を行いたいと思っていたので,subprocess
でコールしてみたのですが,温度以外のエラーも一緒に出力されてしまいますね。pythonプログラム内ではalias
設定はうまく反映されないのかぁ。まだまだ未熟ものですね。
ちなみに温度のみ取得したい場合は,こんな関数を作るといいみたい。(早く言ってよ〜。)
import subprocess
def getTemperature():
response = subprocess.check_output('/absolute/path/to/tempered', universal_newlines=True)
temperature = response.split(" ")[3]
return temperature
temperature = getTemperature()
こちらから参考にさせていただきました。
https://qiita.com/fiftystorm36/items/8fa764b703baa1a47687
★もっといろんなモジュールを知りたい方におすすめ記事

コメント
コメント一覧 (1件)
[…] […]