格安モーションセンサーをRaspberry PiとhomebridgeでApple HomeKit対応に

MotionSensor + homebridge on Raspberry Pi 3B+

最近は自宅IoT化にハマってます。Appleのホーム.appは統合管理ができるので便利なんですが、残念ながら日本市場にはHomeKit対応の製品がほとんどありません。そこで大活躍するのがhomebridgeですが、今回、これを使って300円の人感センサーをHomeKit対応にしてみました。

『homebridge』はHomeKitをエミュレートしてくれるNode.jsサーバーで、非対応デバイスもiOSのホーム.appに追加できるようになります。この際に常時起動しておくPCが必要になりますが、そこはRaspberry Piが解決してくれます。

Raspberry Piについて

Raspberry Pi 3 B+が日本でも発売されたので購入。電源は2.5A出力対応製品が推奨されており、データが破損したりしても困るので専用電源ケーブルも購入。

MotionSensor + homebridge on Raspberry Pi 3B+

セットアップはキーボードもディスプレイも不要ですし、以前に比べて本当に簡単になりました。microSDにRaspbian Stretch Liteバージョンを焼いて、sshをトップディレクトリに置いて電源を入れるだけ。あとはターミナルからssh接続で設定できます。

homebridgeのインストール

homebridgeは冒頭で説明の通りNode.js環境が必要になります。インストール方法はいろいろなサイトで紹介されていますが、以下のサイトを参考にさせていただきました。

Raspberry PiとHomebridgeとIRKitを利用してiOS端末からエアコンを操作する

ここでホーム.appに実際に登録するアクセサリがなくても問題ありません。config.jsonにはダミーのアクセサリでも構いませんのでhomebridgeを使えるようにしておきます。

Raspberry Piでモーションセンサーを認識させる

モーションセンサーは焦電型赤外線センサー搭載のHC-SR501を使用。Amazon.co.jpでは300円程度で入手可能です。Raspberry PiのGPIOコネクターと接続するためのジャンパーピン(メスメス)も必要です。

MotionSensor + homebridge on Raspberry Pi 3B+

接続はこちらのサイトを参考にさせていただきました。

[Raspberry Pi] 夏だ!人感センサーを使って蝉を鳴かせよう

認識してくれかテストするスクリプトも紹介してくださっているので接続したら試してみます。モーションセンサーに手のひらをかざしたり、体を動かして反応してくれた時はマジで感動でした!

このモーションセンサーは検知範囲角度が約100°で、サイドが3〜4m、センターが5〜7mの範囲、信号出力時間は3s〜200sで調整できます。ただし調整方法が独特で・・・写真のオレンジの部分を回しながら調整するので微調整はできないと思った方が良いです。

homebridge-gpio-deviceプラグインのインストールと設定方法

『homebridge』はHomeKitをエミュレートするサーバーに過ぎないので、デバイスを追加してコントロールするためのプラグインが必要になります。

モーションセンサーHC-SR501などのGPIOデバイス向けに用意されているプラグイン『homebridge-gpio-device』をインストールします。wiring-piも必要になるため合わせてインストールします。

このプラグインを使うためにはhomebridgeはrootユーザーで動かす必要があるので注意してください。

config.jsonには以下サンプルを参考に追記します。accessory、typeは変更不可。nameは好きな名前にできます。pinは使用するGPIOに合わせます。pinは上の例でGPIO18を使っているので1にしてあります。

その他にもoccupancyという信号検知後のタイムアウトする秒数を設定できます(オプション)。詳細は以下のプラグインの公式サイトで確認ください。

homebridge-gpio-device

ホーム.appで動作確認

▼homebridgeを再起動して正しく登録されると以下のようになります。動きを検知した状態。

MotionSensor + homebridge on Raspberry Pi 3B+

▼こちらは検知していない状態。

MotionSensor + homebridge on Raspberry Pi 3B+

▼アクセサリの詳細画面は以下の通りです。検知の状態、設置する部屋、通知の可否などを確認、変更できます。

MotionSensor + homebridge on Raspberry Pi 3B+

▼通知を許可するとバナー通知はこんな感じになります。

MotionSensor + homebridge on Raspberry Pi 3B+

自宅IoTに向けて

モーションセンサーはスマホでの画面操作や音声コントロールを超えて、動作検知と連動したデバイスコントロールが可能となり、自宅IoTをさらに進める武器となります。自分の部屋のシーリング照明はこれで自動運転していますので、これはまた別の機会に。