TEMPer 備忘録です.
酷暑です.部屋の温度がヤバいです.なのでその管理のために MicroBot Push と Prota-Pi を導入したのですが,そもそも温度はどうなのよってことで,ネットワーク越しに監視できるようにしてみることにしました.
いつもの如く Google さんに尋ねてみると,TEMPer って言う USB 温度計が良く使われているみたいですね.
TEMPer って?
多分販売元は PCsenser.com っていうところ.製品パッケージ
からすぐに分かりますが,中国製です.最近の中華企業のパッケージってオシャレなことが多いのですが,これは昔懐かしい感じ.
製品の見た目も
の通り(安っぽすぎないけど)それなりです.価格は1000円弱でしょうか.売り出されて5年以上は経っているようですが,USB 温度計の選択肢っていまのところこれしか無さそう.
使い方は USB ポートに刺して,ソフトを入れれば良いのですが,残念ながら私は付属する
を読めるドライブ持ってません.探してみると,
からダウンロードできるようです.現在 ver 26.2 で Windows 向けです.動作確認の為入れてみると複数の温度計を管理できるようになっていました.
TEMPer の設定
今回は監視用途なので,クライアントとして使っている Windows には入れられないし,Windows Server も Hyper-V サーバーとして利用しているので,これにいれるのもあまりよろしくなさそうです.
で,少し考えた結果,今回は常時動いていて低消費電力な Volumio2 が稼働している Raspberry pi に同居させることにしました.
まずは,温度計を USB ポートに差し,SSH サーバーを有効化した Volumio2 にログインし,まずはきちんと認識されているかどうかを確認します.
$ lsusb Bus 001 Device 005: ID 0781:5583 SanDisk Corp. Bus 001 Device 006: ID 413d:2107 Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[602284.626416] usb 1-1.2: new full-speed USB device number 7 using dwc_otg [602284.758947] usb 1-1.2: New USB device found, idVendor=413d, idProduct=2107 [602284.758960] usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [602284.763895] input: HID 413d:2107 as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:413D:2107.0003/input/input1 [602284.827854] hid-generic 0003:413D:2107.0003: input,hidraw0: USB HID v1.11 Keyboard [HID 413d:2107] on usb-3f980000.usb-1.2/input0 [602284.832691] hid-generic 0003:413D:2107.0004: hiddev96,hidraw1: USB HID v1.10 Device [HID 413d:2107] on usb-3f980000.usb-1.2/input1
Bus 001 Device 006: ID 413d:2107 ってのが該当のものなので,大丈夫そうです.で,ググってみると,libusb-0.1 を使う
にあるプログラムを使うのが手っ取り早そう(初めからライブラリ等入ってた).それで,
$ cd /usr/local/src $ sudo git clone https://github.com/bitplane/temper.git $ cd temper $ sudo make temper
の様にインストールしてみたのですが,コンパイルは通っているにも係わらず,コマンド発行しても何も表示されずそのままストップしてしまいます.
アレコレ調べてみたのですが,どうしても上手くいきません.仕方が無いので,いろいろググってみたところ,
に今度は libusb-1.0 を利用する方法が載っていたました.この記事に従って,
$ sudo apt install libusb-1.0-0-dev libudev-dev libfox-1.6-dev cmake $ cd /usr/local/src $ sudo git clone https://github.com/signal11/hidapi $ cd hidapi/linux $ sudo 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 /usr/local/src $ sudo git clone https://github.com/hughesr/TEMPered $ cd TEMPered/ $ sudo git checkout hack-413d-2107 $ sudo git reset --hard 75aa1e2 $ sudo cmake . $ sudo make $ sudo make install $ sudo ldconfig
のようにすることで,/usr/local/bin に tempered というプログラムがインストールでき,実行してみると
$ sudo tempered [sudo] password for volumio: /dev/hidraw1 0: temperature 22.12 °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つ温度センサーが入っている製品があるようです.この製品の場合は片方からしか温度が読めないのでエラーが出ているということで,このエラーのためだけにソースコードを読むのも嫌なので,
$ sudo vi /usr/local/bin/labotemper #!/bin/bash /usr/local/bin/tempered 2> /dev/null | awk 'NR==1' | cut -b 17-
のような簡単なスクリプトで逃げることにしました.
後は一般ユーザーから実行できるよう
$ sudo chmod +s /usr/local/bin/tempered $ sudo chmod +x /usr/local/bin/labotemper
の様に権限を設定すれば,
$ labotemper temperature 20.31 °C
の様に短く表示されていい感じになりました.後は,cron で定期的に適当なテキストファイルに温度を追加していくよう設定して完了です.
監視結果は?
で,監視してみたのですが,やっぱりクーラー無いとヤバいです.南向きの部屋だからでしょうか.日中クーラー無いとすぐ
45度!
超えます.おまけに夜中でも
40度越え!
です.テスト用のサーバーとは言えよくこんな環境で長いこと動かしてたなぁ……とかなり反省しました.
以上!