TEMPer 備忘録

Environment
Photo by hyt.

TEMPer 備忘録です.

Bitly

酷暑です.部屋の温度がヤバいです.なのでその管理のために MicroBot Push と Prota-Pi を導入したのですが,そもそも温度はどうなのよってことで,ネットワーク越しに監視できるようにしてみることにしました.

Microbot Push と Prota Pi on Raspberry pi Zero W 雑感と設置備忘録
Microbot Push と Prota Pi on Raspberry pi Zero W の雑感と設置備忘録です.これなに?私のページをご覧になっている方だと言わずもがなかもしれませんが,bluetooth 経由でボタンを押す IoT...

いつもの如く Google さんに尋ねてみると,TEMPer って言う USB 温度計が良く使われているみたいですね.

TEMPer って?

多分販売元は PCsenser.com っていうところ.製品パッケージ

Photo by hyt.

からすぐに分かりますが,中国製です.最近の中華企業のパッケージってオシャレなことが多いのですが,これは昔懐かしい感じ.

製品の見た目も

Photo by hyt.

の通り(安っぽすぎないけど)それなりです.価格は1000円弱でしょうか.売り出されて5年以上は経っているようですが,USB 温度計の選択肢っていまのところこれしか無さそう.

Bitly

使い方は USB ポートに刺して,ソフトを入れれば良いのですが,残念ながら私は付属する

Photo by hyt.

を読めるドライブ持ってません.探してみると,

PCsensor RDingtech RDing
Shenzhen RDing Tech Co., Ltd. is committed to USB thermometers; computer measurement and control systems; RF measurement...

からダウンロードできるようです.現在 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 を使う

GitHub - bitplane/temper: App to log the current temperature from a Temper1 sensor
App to log the current temperature from a Temper1 sensor - bitplane/temper

にあるプログラムを使うのが手っ取り早そう(初めからライブラリ等入ってた).それで,

$ cd /usr/local/src
$ sudo git clone https://github.com/bitplane/temper.git
$ cd temper
$ sudo make temper

の様にインストールしてみたのですが,コンパイルは通っているにも係わらず,コマンド発行しても何も表示されずそのままストップしてしまいます.

アレコレ調べてみたのですが,どうしても上手くいきません.仕方が無いので,いろいろググってみたところ,

USB 温度計で気温を測る(TEMPer; ID=413d:2107) - Qiita
研究室のサーバールームの空調が止まって大変なことになったことがある.室温が上昇したら slack 通知するようなものを作った.そのときに USB 温度計の扱いに苦労したのでそのことについて書く.A…

に今度は 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度越え!

です.テスト用のサーバーとは言えよくこんな環境で長いこと動かしてたなぁ……とかなり反省しました.

以上!

EnvironmentServer
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました