
はじめに
メリー・クリスマス!
IoTしてますか?
Raspberry PiとかARM板とかは購入していますが、GPIOピンなどは全く活用していない筆者です。
以前はOrange PiにStrawberry LinuxのUSB温度・湿度計モジュールを活用していたのですが、最近のLinuxではソースがコンパイルできなくなっていたこと、また、ソースを配布されていたWebサイトが閉鎖してしまったため、ちょっと困っていました。
代用品を探していたのですが、ちょっとebayで気になっていたのを見つけたので購入してみました。
以前にも同じようなことしてた
ちなみに以前のもの。
USB温度・湿度計モジュール・キット – USBRH – ネット販売
今回は
で、今回購入したものは以下のものです。
DogRatIan’s Products – USB-PA TypeA (BME280)
本当かどうか分かりませんが、結構細かくデータを計測できるようです。
Operating Temperature (CPU): | -20°C ~ +70°C |
Connection to PC: | USB (CDC Virtual COM port) |
Power: | USB Powered |
Pressure Accuracy: (0-65°C, 300 to 1100 hPa) | +/-1 hPa (+/-100 Pa) |
Pressure Range: | 300 – 1100 hPa (30000 – 110000 Pa) |
Temperture Accuracy: | +/-1°C |
Humidity Accuracy: | +/-3 %RH |
対応OSはWindows、MacOS X、Linuxに対応しており、それぞれプログラムおよびソースファイルが配布されています。
私が使用したのはGithubに公開されているLinux向けのソースファイルになります。
DogRatIan/USB-Sensor-OpenSource: Example programs for my USB sensors.
実際にやってみた
ちなみに使用してみるとこんな感じで取得できると思います。
今回試してみた環境は以下の通りです。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"
[email protected]:$ ./get_pa_linux -d /dev/ttyACM0 -a
22.3
43.3
102331.7
SENSOR
[email protected]:$ ./get_pa_linux -d /dev/ttyACM0
102327.0
[email protected]:$ ./get_pa_linux -d /dev/ttyACM0 -t
22.1
[email protected]:$ ./get_pa_linux -d /dev/ttyACM0 -h
44.1
[email protected]:$ ./get_pa_linux -d /dev/ttyACM0 -p
102339.7
[email protected]:$ ./get_pa_linux -d /dev/ttyACM0 -a -j
{ "temperature": 21.9, "humidity": 44.3, "pressure": 102334.9, "name": "SENSOR" }
一部Helpと違う応答を返すので、後ほどソースを確認してみようと思います。
こちらが修正したソースファイルになります。
kometchtech/USB-Sensor-OpenSource: Example programs for my USB sensors.

あと、このままではhPaの単位で取得しても、自動的に単位がまるめられてしまうので、以下のファイルも修正します。
テンプレートやアイテム設定などを適切に設定すると、以下のように正常に値が取得できるようになると思います。

ちなみにですが、BME280というSensor自体は結構安く売っており、秋月電子などでも購入することが出来ます。また、ブレッドボードも合わせて購入してくれば、1,000円ぐらいで同じような構成が出来るはずです。安く済ませたい場合はそちらを検討することをおすすめします。使用できるソースプログラムなどについては、Webを検索することでたくさん見つけることが出来ると思います。
2019/07/09:追記
2020年2月20日:追記
zabbixで値を取得する設定方法
今更ですがZabbix側の設定方法を書いていなかったので書いておきます。
Zabbix agent側はUserParameter
でUSB温湿度計の値を直接取得するようにしています。
item.key
で設定する引数をそのままコマンドに渡す形です。
UserParameter=get_pa_linux[*],/usr/local/bin/get_pa_linux -d /dev/ttyACM0 --$1
Zabbix Server側の設定は以下のような感じで行っています。
2021年5月30日:追記
今更ですが使用しているソースにて直接hPa単位で出力できるようになっているので、上記にある取得した値の変換は不要になっているかと思います。