暫定 - 技術メモなど

今のところはRaspberry Piを使ったIoTが話題の中心です

BME280をhomebridgeに載せてホームアプリに温度・湿度を表示させる

f:id:yrn7:20181117202238p:plain
Raspberry Piを購入して、homebridgeを実装した当初から、温度・湿度もホームアプリに表示できるようにしたいな、と考えていました。
通常、ホームアプリに部屋の温度と湿度を表示させようと思うと、homekitに対応したElgatoなどの製品を購入するのが簡単でしょう。
https://amzn.to/2rrtWZT


手元にRaspberry Piがあること、センサーを単品で買う方が安いことから、homebridgeでセンサーの表示をすることを目指し、うまくいかなかったときはまたその時に考えよう、という方針を固めました。

用意したパーツやワイヤは下記のとおりです。

  • BME280搭載 温湿度・気圧センサモジュール( https://amzn.to/2FMP3A9 )
  • ブレッドボード
  • ブレッドボード用ジャンパワイヤ
  • Raspberry Piとブレッドボード接続用ジャンパワイヤ

また、今回参考にさせていただいたサイトは下記のとおりです。
qiita.com
karaage.hatenadiary.jp
www.instructables.com

1.センサーとRaspberry Piを配線する

まずは上記のセンサーをブレッドボードに配置し、ワイヤでRaspberry Piと接続します。
(その前にBME280のピンヘッダを半田付けする必要があります。半田ごてがない場合や、半田付けが苦手な人向けに半田付け済みの製品もあります。 https://amzn.to/2G4MXf1 )
接続は参考先のサイトに従い、下記のように接続しました。
f:id:yrn7:20181117190414p:plain

2.センサーの値を取得できるように設定する

I2Cを有効にするため、raspi-configを実行します。

$ sudo raspi-config

メニューから"5 Interfacing Options"を選択し、"P5 I2C"で Enable にします。
Enable にしたら必要なツールをインストールします。

$ sudo apt-get install i2c-tools
$ sudo apt-get install python-smbus 

1.で接続したセンサーの確認をします。

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

上記のように 0x76 になっていれば問題ありません。上記のように表示されない場合は接続を確認してください。

3.センサーの動作確認

今回の使ったBME280の販売元のスイッチサイエンスさんがサンプルのPythonコードを作ってくれているので、適当なディレクトリにダウンロードします。

$ mkdir ~/python_apps/switchsience
$ cd !$
$ wget https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py

サンプルコードを実行してセンサーの動作確認をします。

$ chmod 755 bme280_sample.py
$ sudo python bme280_sample.py
temp : 20.47  ℃
pressure : 1016.69 hPa
hum :  64.87 %

温度、気圧、湿度が湿度が取得できました。

4.homebridgeの設定

homebridgeを起動しているユーザーをi2cグループに追加します。

$ usermod -aG i2c [ユーザー名]

本ブログの通り設定している場合、ユーザー名は homebridge になります。
yorino.hatenablog.com

BME280用のhomebridgeプラグインをインストールします。

$ sudo npm install -g homebridge-bme280 --unsafe-perm

エラーが出た場合は下記を実行します。

$ sudo su -
$ npm install -g homebridge-bme280 --unsafe-perm

プラグインをインストールしたら、configファイルを編集します。

$ sudo vim /var/homebridge/config.json

{
    "bridge": {
        "name": "Homebridge",
        "username": "xx:xx:xx:xx:xx:xx", 
        "port": 51826,
        "pin": "031-45-154"
    },
    "accessories": [
    	{
・
・
・
        },
        {
            "accessory": "BME280",
            "name": "Sensor",
            "name_temperature": "Temperature",
            "name_humidity": "Humidity",
            "options": {
                "i2cBusNo": 1,
                "i2cAddress": "0x76"
            }
        }
    ]
}

homebridgeを再起動します。

$ sudo systemctl restart homebridge

iPhoneのホームアプリに温度と湿度が表示されていることを確認します。
※ホームアプリでは気圧は表示されません。

設定は以上です。
お疲れ様でした。