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

raspberrypi-temper2
  • URLをコピーしました!

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

以前こちらの記事で紹介した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

 

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

raspberrypi-temper2

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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントする

目次