あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

BME280センサーで室外の温湿度と気圧を測ってみる

Twitterでシャポコさんという方がいて、シャポコさんが描く絵が好きでフォローしているんですが、ベランダでRaspberry Piとセンサーとを置いて気象観測していたのを見て、面白そうだなあと思い、私もやってみることにしました。

センサーは秋月電子でBME280と言うセンサーを購入。1000円もするセンサーは初めてですね……!

f:id:Akkiesoft:20170731223020j:plain

I2C接続するようにジャンパ設定してあと接続してテスト。値が安定して取得できないなあと思っていたら、I2Cのアドレスを設定するためにSDOをGND(0x76)かVDD(0x77)どちらかに繋げないといけませんでした。これをやらないと0x76と0x77がランダムみたいな感じになって失敗するようになりました。マニュアル読め、と言うか読んでも理解していなかったというか。

設置については、私の場合は室内にRaspberry Piを配置して、aitendoのLANポートブレイクアウトモジュールでGPIOケーブルをLANケーブルに変換した後エアコンダクトから外に出して、センサーを接続する方法にしました。

こういう感じにして

f:id:Akkiesoft:20170731222754j:plain:h450

適当に埋め込み。

f:id:Akkiesoft:20170731222758j:plain:h450

もう一個LANポートブレイクアウトモジュールを繋いで、LANケーブルから再びピンヘッダケーブルに変換したあと、センサーに繋いでいます。

f:id:Akkiesoft:20170731223259j:plain

センサーで取得した値はZabbixになげるようにスクリプトを作成しました。

#!/usr/bin/env python

# sudo apt install -y python-pip python-smbus
# sudo pip install rpi.bme280 py-zabbix

import smbus2
import bme280
from pyzabbix import ZabbixMetric, ZabbixSender

address = 0x76
bus = smbus2.SMBus(1)
bme280.load_calibration_params(bus, address)
data = bme280.sample(bus, address)

params = [
  ZabbixMetric("bme280", "verandah_temperature", data.temperature),
  ZabbixMetric("bme280", "verandah_humidity", data.humidity),
  ZabbixMetric("bme280", "verandah_pressure", data.pressure)
]
result = ZabbixSender(use_config=True).send(params)

あとはZabbixでホストを作って、それぞれのアイテム(verandah_*)をZabbixトラッパーで作っておけばデータがたまり始めます。グラフで見てみると、基本的に1000hPa前後の値になる気圧をZabbixが自動でキロ変換して1.01KhPaとかにしてしまって見づらいので、以下の情報をもとに単位がキロに変換されないようにしました。

アイテムの単位計算 | 日本Zabbixユーザー会

UbuntuでZabbix公式リポジトリからパッケージをインストールした場合(うちはUbuntu 14.04でZabbixバージョンは3.0.3でした)、/usr/share/zabbix/include/func.inc.phpを開いて以下の部分を書き換えます。

        // any other unit
        // black list of units that should have no multiplier prefix (K, M, G etc) applied
#        $blackList = ['%', 'ms', 'rpm', 'RPM'];
        $blackList = ['%', 'ms', 'rpm', 'RPM', 'hPa'];  # hPaを追加

これでグラフもバッチリ。

f:id:Akkiesoft:20170731224314p:plain

そして、室温と湿度の方はと言うと……エアコンの室外機の熱風を拾ってしまうらしく、エアコンをつけると値がグワッと変わってしまいます。ううん、おしい。

f:id:Akkiesoft:20170731224346p:plain

Twitterでは、百葉箱的なもっと立派なソリューションを教えてもらいましたが、さすがにそこまで頑張る気もしないので、ここは妥協といったところでしょうか。その内気が向いたら改良してみたいです。とりあえずLANケーブルは3mでは足りなさそうなので5mに交換したいです。3mのケーブルもこのためにアキバの100円ジャンクの箱から拾ってきたけど足らんかったかー。