最近は自宅IoT化にハマってます。Appleのホーム.appは統合管理ができるので便利なんですが、残念ながら日本市場にはHomeKit対応の製品がほとんどありません。そこで大活躍するのがhomebridgeですが、今回、これを使って300円の人感センサーをHomeKit対応にしてみました。
『homebridge』はHomeKitをエミュレートしてくれるNode.jsサーバーで、非対応デバイスもiOSのホーム.appに追加できるようになります。この際に常時起動しておくPCが必要になりますが、そこはRaspberry Piが解決してくれます。
Raspberry Piについて
Raspberry Pi 3 B+が日本でも発売されたので購入。電源は2.5A出力対応製品が推奨されており、データが破損したりしても困るので専用電源ケーブルも購入。
セットアップはキーボードもディスプレイも不要ですし、以前に比べて本当に簡単になりました。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コネクターと接続するためのジャンパーピン(メスメス)も必要です。
接続はこちらのサイトを参考にさせていただきました。
[Raspberry Pi] 夏だ!人感センサーを使って蝉を鳴かせよう
認識してくれかテストするスクリプトも紹介してくださっているので接続したら試してみます。モーションセンサーに手のひらをかざしたり、体を動かして反応してくれた時はマジで感動でした!
このモーションセンサーは検知範囲角度が約100°で、サイドが3〜4m、センターが5〜7mの範囲、信号出力時間は3s〜200sで調整できます。ただし調整方法が独特で・・・写真のオレンジの部分を回しながら調整するので微調整はできないと思った方が良いです。
homebridge-gpio-deviceプラグインのインストールと設定方法
『homebridge』はHomeKitをエミュレートするサーバーに過ぎないので、デバイスを追加してコントロールするためのプラグインが必要になります。
モーションセンサーHC-SR501などのGPIOデバイス向けに用意されているプラグイン『homebridge-gpio-device』をインストールします。wiring-piも必要になるため合わせてインストールします。
1 2 |
# sudo npm install -g homebridge-gpio-device --unsafe-perm # sudo apt-get install wiringpi |
このプラグインを使うためにはhomebridgeはrootユーザーで動かす必要があるので注意してください。
config.jsonには以下サンプルを参考に追記します。accessory、typeは変更不可。nameは好きな名前にできます。pinは使用するGPIOに合わせます。pinは上の例でGPIO18を使っているので1にしてあります。
1 2 3 4 5 6 7 8 |
"accessories": [ { "accessory": "GPIODevice", "type": "MotionSensor", "name": "Sensor", "pin": 1 } ] |
その他にもoccupancyという信号検知後のタイムアウトする秒数を設定できます(オプション)。詳細は以下のプラグインの公式サイトで確認ください。
ホーム.appで動作確認
▼homebridgeを再起動して正しく登録されると以下のようになります。動きを検知した状態。
▼こちらは検知していない状態。
▼アクセサリの詳細画面は以下の通りです。検知の状態、設置する部屋、通知の可否などを確認、変更できます。
▼通知を許可するとバナー通知はこんな感じになります。
自宅IoTに向けて
モーションセンサーはスマホでの画面操作や音声コントロールを超えて、動作検知と連動したデバイスコントロールが可能となり、自宅IoTをさらに進める武器となります。自分の部屋のシーリング照明はこれで自動運転していますので、これはまた別の機会に。