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

raspberrypi-temper2












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

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

raspberrypi-temper

USB温度計『TEMPer』を使ってRaspberryPiで温度を測定する。

2019年9月18日

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

apt-get-upgradeエラー

【Raspbian】apt-get upgradeがエラーになるときの対処法

2019年9月19日

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

★人気の記事一覧

合法的に女の子に精液の匂いを嗅がせる方法

【精子を食べる!?】食ザーが理にかなっているというお話

[Froala Design Blocks ]無料でオシャレなサイト作成ができるHTMLのテンプレート

スムージーは本当に健康に効果があるのか化学の観点でのみ考えてみる












★人気の記事一覧

合法的に女の子に精液の匂いを嗅がせる方法

【精子を食べる!?】食ザーが理にかなっているというお話

[Froala Design Blocks ]無料でオシャレなサイト作成ができるHTMLのテンプレート

スムージーは本当に健康に効果があるのか化学の観点でのみ考えてみる

気に入ったらLet's Share!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

ちゆり

6年間化学を専攻していたのになぜか一部上場のIT企業のエンジニアへ。脱サラ田舎暮らしに憧れ,なんだかんだプログラミングが好き。口癖は仕事辞めたい。凡人にはなりたくない凡人。