今回はiPhoneのホームアプリを使用して、家に家族の誰が在宅しているかを見られるようにしたいと思う。
なお、Homebridgeプラグインを使用する為、導入していない人は下記記事のHomebridgeのインストールまでを終わらせておいてほしい。
Homebridgeプラグインをインストール
今回はHomebridge People Proというプラグインを使用する。
このプラグインで、スマホなどにpingを飛ばして反応があれば、その人は在宅してますよ。
という感じである。
ホームアプリ上ではモーションセンサーか人感センサーとして表示される。
Homebridge People Pro
Homebridge Webからプラグイン検索に「homebridge people」と入れ、検索。
Homebridge People Pro欄のインストールをクリックする。
設定
インストール完了後、プラグイン設定が開くので(開かなければ、プラグインページのHomebridge People Pro欄の「設定」をクリック)そこから設定していく。
各種記入欄の意味合いは以下の通り。
そこまで重要ではない部分は省略している所もあるのはご了承頂きたい。
*マークがある箇所は必須項目。
Enable anyone sensor | 何らかのセンサーがONになったら「anyone」センサーがONとなる。 「誰かのスマホがWi-Fiに接続されたら」という条件に使える。 基本的にこれだけチェックマークをつけておけば大丈夫。 Type of the anyone sensorはOccupancy Sensor(人感センサー)とMotion Sensor(動作センサー) のタイプが選択できる。 それっぽいのはOccupancy Sensor(人型のアイコン)だが、サードパーティアプリで履歴機能を 見ることができないデメリットもある。 基本どちらか好きな方で良い。 |
Enable no-one sensor | 全てのセンサーがOFFになったら「no-one」センサーがONとなる。 「誰のスマホもWi-Fiに接続されていなければ」という条件に使える。 |
Enable web hook/webserver | Webhookを利用できるアプリ等で例えば指定した地域に入ったらセンサーがONとなる。 (上級者向け) |
Sensor Name * | ホームアプリ上で表示されるセンサー名を入力する |
Target * | 検知に利用する機器(スマホ等)のIPアドレスかホスト名を入力する |
Sensor Type * | Occupancy Sensor(人感センサー)とMotion Sensor(動作センサー) の2タイプが選択できる。 それっぽいのはOccupancy Sensor(人型のアイコン)だが、サードパーティアプリで履歴機能を 見ることができないデメリットもある。 基本どちらか好きな方で良い。 |
Threshold (min) | 不在状態になるまでの閾値(分) 【最後にWi-FiがONになっていた時間<現在の時間-threshold分】 この式が成立することで不在状態になる。 スマホスリープによるWi-Fi切断等で不都合が起きる場合や、反応を早くしたい場合は値を調整する。 デフォルトの15分が色々な環境で都合が良いみたいだ。 |
ADD PERSON /TARGET (ボタン) | クリックすることでセンサーを追加する。 登録したい機器が複数ある場合は都度クリックしよう。 |
各スマホのIPアドレスはルーターの設定等で固定IPを割り振るように設定しておこう。
iOS 14からプライベートアドレス機能が有効化されている為、オフにした方が良いかもしれない。
他はデフォルトのままで良いと思う。
保存して再起動をかけよう。
トラブルシューティング:homebridgeユーザーに権限付与
権限が与えられていない旨のエラーが表示された場合。
キャッシュ(./.node-persist/storage)を作るのに権限が与えられていないのだろう。
homebridgeサーバーはhomebridgeユーザーで実行するようにしている(私のセットアップを参照して構築した場合)ので、homebridgeユーザーに権限を付与する。
これが良いのかというとよくわからないが、めんどくさいのでもうこの方法で行く。
ラズパイにSSH接続を行う。(ユーザー名が異なる場合はpiの部分を変更しよう)
$ ssh pi@raspberrypi.local
homebridgeユーザーに権限付与
$ sudo chown -R homebridge: /usr/lib/node_modules/homebridge-people/
これでHomebridgeを再起動してエラーがなくなったか確認してみよう。
ホームアプリ上での動き
正常に動作すると上記のようにホームアプリに表示される。
息子、父、母のスマートフォンがWi-Fiに接続されpingが通る状態なので、3人が在宅しているとわかるわけだ。(作動済み=在宅)
Anyoneはこの中の誰か1人が在宅していれば「作動済み」になる。
これによって家族の誰かが一人でも帰ってきたら、エアコンをオンにする。
などのオートメーションを組む事ができる。
外出先から確認するにはホームハブとなるApple TVまたはHomePodが必要。
ちなみにiOS 14以降は上記のようにまとめられてしまう。
「人がいます」の部分をタップすると、各個人ごとの在宅状況を確認できる。
コメント
homebridge関連の記事を色々参考にさせていただいています。
homebridge-peopeで2点躓いてしまい、お時間あるときに教えていただけると幸いです。
・jsonファイルを同様に修正(変更点は名前とIPのみ)したのですが、ホームアプリの結果が異なります
本記事ではアクセサリに表示されていますが、こちらの環境だとシーンの上段に1か所で「人がいます」と表示されてしまいそれぞれのステータスが見れません。「人がいます」をタップし画面遷移すればそれぞれのステータスが見えますが、設定が異なるのでしょうか?
・wi-fiオフ時の挙動
wi-fiがオンのときはすぐに作動済みになるのですが、オフになったときはなかなか切り替わりません。。これもどこかの設定なのでしょうか?
コメントありがとうございます。
>jsonファイルを同様に修正(変更点は名前とIPのみ)したのですが、ホームアプリの結果が異なります
記事中の画像はiOS 13の時のものです。
iOS 14になってからご指摘の通り、上段にまとめられてしまいます。
これはiOS 14からの仕様ですので、記事中の画像の通りにはなりません。
(紛らわしくて申し訳ありません。差し替えておきます。)
>wi-fiオフ時の挙動
これはthresholdの値を15(分)から1(分)に変えれば切り替わりを早くすることができます。
【最後にWi-FiがONになっていた時間<現在の時間-threshold分】
上の式が成立すると準備完了状態(人がいない)に切り替わります。
ただ、スマホをスリープ状態にしてしばらく経つとWi-Fiから切断する機種はよくあり、あまり短い値にしていると何度も切り替わりを繰り返したり、在宅しているのに人がいない扱いになる場合があります。
ですのでとりあえず小さい値から設定してみて、もし変な動きをするならば少しずつ値を大きくしていくと良いです。
スマホによって設定が違うと思いますので、各個人毎にthresholdの値をそれぞれ最適な値に変更してみてください。
解決しました!丁寧にありがとうございますmm