ラズパイとUSB温度計「TEMPer」(413d:2107)で温度を監視したいのだが,うまく動かない!?

2020 2/11
ラズパイとUSB温度計「TEMPer」(413d:2107)で温度を監視したいのだが,うまく動かない!?

こんにちは,ちゆりです。

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

あわせて読みたい
USB温度計『TEMPer』を使ってRaspberryPiで温度を測定する。
USB温度計『TEMPer』を使ってRaspberryPiで温度を測定する。こんにちは,ちゆりです。以前流行りに乗っかって,Raspberry Piを購入したのですが,特に何をするでもなく放置していたので,そろそろ動かしてみようと思い立った。「...

まずは,関連記事に記載の方法で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を行ってみるとうまく行った。
詳しくは以下の記事でまとめている。

あわせて読みたい
【Raspbian】apt-get upgradeがエラーになるときの対処法
【Raspbian】apt-get upgradeがエラーになるときの対処法Raspberry Pi(Raspbian)へ,パッケージの導入のためにsudo apt-get install "パッケージ名"コマンドを実行したのだが,以下の文言とともにエラーとなった。ap...

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()

こちらから参考にさせていただきました。

Qiita
USB 温度計で気温を測る(TEMPer; ID=413d:2107) - Qiita
USB 温度計で気温を測る(TEMPer; ID=413d:2107) - Qiita研究室のサーバールームの空調が止まって大変なことになったことがある.室温が上昇したら slack 通知するようなものを作った.そのときに USB 温度計の扱いに苦労したので...

 

もっといろんなモジュールを知りたい方におすすめ記事

あわせて読みたい
ラズパイのセンサー/モジュールキットのおすすめ2選
ラズパイのセンサー/モジュールキットのおすすめ2選「そろそろラズパイを本格的に使いたい。」「センサー/モジュールを使って何かしたいなぁ。」「そもそも何をやったら良いか分からない。」そんな時はセンサー・モジュー...

この記事が気に入ったら
フォローしてね!

目次
目次