Raspberry-Pi
目次
USB接続型温度センサーをRaspberry-Piにて使用する場合のノウハウ。
USB端子に温度計を取り付けた際には以下のメッセージが記録される。
kernel: usb 1-1.2: new low-speed USB device number 4 using dwc_otg kernel: usb 1-1.2: New USB device found, idVendor=0c45, idProduct=7401 kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 kernel: usb 1-1.2: Product: TEMPerV1.4
制御用ソフトウェア「pcsensor」はARM用のバイナリが存在しないため、ソースコードよりコンパイルする。
Fedora 21 Remixにはソースコードをコンパイルするための環境が不足しているため、以下の手順に従い環境を整備する。
# yum install gcc
================================================================================== Package Arch Version Repository Size ================================================================================== Installing: gcc armv7hl 4.9.2-6.fc21 updates 13 M Installing for dependencies: cpp armv7hl 4.9.2-6.fc21 updates 4.7 M libasan armv7hl 4.9.2-6.fc21 updates 196 k libatomic armv7hl 4.9.2-6.fc21 updates 33 k libmpc armv7hl 1.0.2-3.fc21 fedora 47 k libubsan armv7hl 4.9.2-6.fc21 updates 99 k mpfr armv7hl 3.1.2-8.fc21 updates 192 k Transaction Summary ================================================================================== Install 1 Package (+6 Dependent packages)
yum install libusb-devel
================================================================================== Package Arch Version Repository Size ================================================================================== Installing: libusb-devel armv7hl 1:0.1.5-5.fc21 fedora 19 k Installing for dependencies: libusbx-devel armv7hl 1.0.19-2.fc21 fedora 27 k Transaction Summary ================================================================================== Install 1 Package (+1 Dependent package)
apt-get install libusb-dev
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: libusb-dev アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 40.7 kB のアーカイブを取得する必要があります。 この操作後に追加で 236 kB のディスク容量が消費されます。 取得:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libusb-dev armhf 2:0.1.12-20+nmu1 [40.7 kB] 40.7 kB を 1秒 で取得しました (23.5 kB/s) 以前に未選択のパッケージ libusb-dev を選択しています。 (データベースを読み込んでいます ... 現在 77851 個のファイルとディレクトリがインストールされています。) (.../libusb-dev_2%3a0.1.12-20+nmu1_armhf.deb から) libusb-dev を展開しています... man-db のトリガを処理しています ... libusb-dev (2:0.1.12-20+nmu1) を設定しています ...
apt-get install usblib-dev
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: libusb-dev アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 328 個。 29.0 kB のアーカイブを取得する必要があります。 この操作後に追加で 251 kB のディスク容量が消費されます。 取得:1 http://old-releases.ubuntu.com/ubuntu/ utopic/main libusb-dev amd64 2:0.1.12-24 [29.0 kB] 29.0 kB を 0秒 で取得しました (39.9 kB/s) 以前に未選択のパッケージ libusb-dev を選択しています。 (データベースを読み込んでいます ... 現在 191977 個のファイルとディレクトリがインストールされています。) Preparing to unpack .../libusb-dev_2%3a0.1.12-24_amd64.deb ... Unpacking libusb-dev (2:0.1.12-24) ... Processing triggers for man-db (2.7.0.2-2) ... Processing triggers for doc-base (0.10.6) ... doc-base ファイルを 1 個追加 を処理中...
pcsensorのコンパイルを行う。
バージョンや派生型においても、同じ手順でコンパイルすることができる。
# tar xfvz pcsensor-1.0.2.tar.gz # cd pcsensor-1.0.2 # make cc -DUNIT_TEST -o pcsensor pcsensor.c -lusb
バイナリが生成される。
-rwxr-xr-x 1 root root 17870 Jun 17 14:51 pcsensor
バイナリを実行することで、測定された温度が表示される。
# ./pcsensor YYYY/MM/DD HH:MM:DD Temperature 101.98F 38.88C
引数「-d」をつけることで、接続されているバスの情報が付加される。
# ./pcsensor YYYY/MM/DD HH:MM:DD Bus 001 Device 004 Temperature 101.98F 38.88C
Zabbix Agentを経由した温度測定を行う場合のTips。
本機能を実行するためにはroot権限が必要となることから、適切な権限付与とアイテム設計が必要となる。
# visudo ## Zabbix zabbix ALL=(root) NOPASSWD: /usr/local/bin/pcsensor
値を収集するアイテムは、system.runキーを使用して作成。
sudo -u zabbix sudo /usr/local/bin/pcsensor -D0 | cut -d' ' -f5 | sed 's/[A-Z]//g'
system.run["sudo /usr/local/bin/pcsensor -D0 | cut -d' ' -f5 | sed 's\/[A-Z]\/\/g'"]
Raspbian GNU/Linux 9にてコンパイル時に発生するエラー。
pcsensor.c: In function ‘main’: pcsensor.c:426:14: warning: implicit declaration of function ‘isprint’ [-Wimplicit-function-declaration] if (isprint (optopt))
ライブラリ不足と思われるが、解決方法不明。
実際上の動作には問題は無い。