(2019-02-11 初稿 - 2021-05-13 転記・修正)
はじめに
Raspberry Pi3 で、CPUの温度は計測し、つぶやく(twitter)ようにした。
どうせなら、その時の部屋の温度も測るようにする。
そこで、USBで接続できる以下の製品を購入した。
この製品を選んだ理由は2つ。
- Raspberry Pi3でも計測の実績があること
- 加工せずにすぐに使える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の活躍の場が広がっている。
また、何かわったら、追記する。