ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Raspberry Pi3(ラズパイ)で温度を測る

(2019-02-11 初稿 - 2021-05-13 転記・修正)

はじめに

Raspberry Pi3 で、CPUの温度は計測し、つぶやく(twitter)ようにした。

どうせなら、その時の部屋の温度も測るようにする。

f:id:hymd3a:20210513092937j:plain

購入したTEMPer

そこで、USBで接続できる以下の製品を購入した。

この製品を選んだ理由は2つ。

  1. Raspberry Pi3でも計測の実績があること
  2. 加工せずにすぐに使えるUSB接続

インストール

製品のマイナーアップデートがあって、再検索して以下のサイトが見つかり、無事に使えるようになった(多謝 m(__)m)。

本機がUSBで認識されることを確認。
本機をUSBに挿した後、以下のコマンドを入力

$ lsusb
Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 005: ID 04d9:1503 Holtek Semiconductor, Inc. Keyboard
Bus 001 Device 007: ID 413d:2107
Bus 001 Device 006: ID 0424:7800 Standard Microsystems Corp. 
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

赤字の413d:2107の行があれば、認識はOK。

実際に、インストールの方法を以下に示す。

$ sudo apt install libusb-1.0-0-dev libudev-dev libfox-1.6-dev cmake
$ git clone https://github.com/signal11/hidapi
$ cd hidapi/linux
$ make -f Makefile-manual
$ sudo cp libhidapi-hidraw.so /usr/local/lib/
$ cd /usr/local/lib
$ sudo ln -s libhidapi-hidraw.so libhidapi-hidraw.so.0
$ cd
$ git clone https://github.com/hughesr/TEMPered
$ cd TEMPered/
$ git checkout hack-413d-2107
$ git reset --hard 75aa1e2
$ cmake .
$ make
$ sudo make install
$ sudo ldconfig

使ってみる

tempered は root user しか使えないので、sudoを使って起動する。

$ sudo tempered
/dev/hidraw1 0: temperature 21.25 °C<
/dev/hidraw1 1: Failed to get the temperature: Not enough data was read from the sensor.
/dev/hidraw1 1: no sensor data available

温度計が2つ付いている製品もあるようで、hidraw1 0 と hidraw1 1の2つのチャンネルがある。

まずは、一般userでも実行できるようにステッキービットを立てる。

$ sudo chmod +s /usr/local/bin/tempered

続いて、不要な表示抑制のために、以下のシェルスクリプトを作成。

$ cat ~/bin/get-temp
#/bin/bash
echo -n "$(date +"%Y-%m-%d %H:%M:%S") :"
/usr/local/bin/tempered 2> /dev/null | grep 0 | cut -d: -f2

作成したシェルスクリプトに実行権を付与。

$ chmod +x ~/bin/get-temp

実行。

$ get-temp
2019-02-11 19:03:42 : temperature 21.18 °C 

実際に温度を測る際には、上の写真のように、USB延長コード等で Raspberry Pi3と離した位置に置かないと、Raspberry Pi3の発熱の影響を受けるので注意。
最低でも、写真奥の白いアダプタのように、直挿しせずに折り曲げて使うこと。

Crontabに登録する

確実に実行できるようになったら、crontab に登録する。

$ crontab -e
# 5分おきにファイルをアップデート すべてメール
*/5 * * * * /home/pi/bin/get-temp
# 同上 エラーのみメール
*/5 * * * * /home/pi/bin/up-gdrive 1> /dev/null
# 同上 エラーメールも送らない
*/5 * * * * /home/pi/bin/up-gdrive > /dev/null 2>&1

 5分毎に温度を測定するが、2番目のエラーが起きたときのみメールが来るように設定するのがおすすめ。

なお、初めてcrontab を設定するときには、exim4またはpostfixなどのメールトランスファーエージェント(MTA)が必要である。

crontabのエラーは、/var/log/syslogに(CRON) info (No MTA installed, discarding output)等と出ますので、つぶやかない場合は確認を。
なお、exim4のインストールと設定は以下のサイトを参照のこと。ただし、メールサーバのエラーは多大な迷惑をかけるので、くれぐれも注意を。

おわりに

少しずつですが、自宅のRaspberry Pi3の活躍の場が広がっている。
また、何かわったら、追記する。

関連ページ