今回はiPhoneのホームアプリを使用して、家に家族の誰が在宅しているかを見られるようにしたいと思う。
なお、Homebridgeプラグインを使用する為、導入していない人は下記記事のHomebridgeのインストールまでを終わらせておいてほしい。
Homebridgeプラグインをインストール
今回はhomebridge-peopleというプラグインを使用する。
このプラグインで、スマホなどにpingを飛ばして反応があれば、その人は在宅してますよ。
という感じである。
ホームアプリ上では人感センサーとして表示される。
homebridge-people
Homebridge Webからプラグイン検索に「people」と入れ、検索。

Homebridge Peopleをインストールする。
config.jsonの編集
Homebridge Webのコンフィグページからconfig.jsonの編集を行う。
"platforms": [
{ "platform":"前からあったやつ"
},
{
"platform": "People",
"threshold": 15,
"anyoneSensor": true,
"nooneSensor": false,
"webhookPort": 51828,
"cacheDirectory": "./.node-persist/storage",
"pingInterval": 10000,
"ignoreReEnterExitSeconds": 0,
"people": [
{
"name": "父",
"target": "192.168.0.201",
"threshold": 15,
"pingInterval": 10000,
"ignoreReEnterExitSeconds": 0
},
{
"name": "母",
"target": "192.168.0.206",
"threshold": 15,
"pingInterval": 10000,
"ignoreReEnterExitSeconds": 0
},
{
"name": "息子",
"target": "192.168.0.205",
"threshold": 15,
"pingInterval": 10000,
"ignoreReEnterExitSeconds": 0
}
]
}
]
今回はplatformsの中に記述している。
既にplatformsの中に存在してるものがある場合はコンマで区切ろう。
編集箇所 | 設定値 |
name | ホームアプリ上に表示される名前 |
target | 検知に利用する機器(スマートフォンなど)のIPアドレス |
threshold | 不在状態にするまでの閾値(分) 【最後にWi-FiがONになっていた時間<現在の時間-threshold分】 この式が成立することで不在状態になる。 スマホスリープによるWi-Fi切断等で不都合が起きる場合や、反応を早くしたい場合は値を調整する。 |
値は各個人の中に書かれているものが優先される。(記事中では父、母、息子の中にある値)
各スマホのIPアドレスはルーターの設定等で固定IPを割り振るように設定しておこう。
iOS 14からプライベートアドレス機能が有効化されている為、オフにした方が良いかもしれない。
他はデフォルトのままで良いと思う。
保存して再起動をかけよう。
もし再起動できなかった場合は、「状態」リンクをクリックしてみよう。
Homebridgeが停止中になっていればなんらかのエラーが発生しているのでログを見よう。
エラーがなければそのまま完了だ。
homebridgeユーザーに権限付与
今回私は権限が与えられていない旨のエラーが表示された。

キャッシュ(./.node-persist/storage)を作るのに権限が与えられていないのだろう。
homebridgeサーバーはhomebridgeユーザーで実行されているのでhomebridgeユーザーに権限を付与する。
これが良いのかというとよくわからないが、めんどくさいのでもうこの方法で行く。
ラズパイにSSH接続を行う。
$ ssh pi@raspberrypi.local
homebridgeユーザーに権限付与
$ sudo chown -R homebridge: /usr/lib/node_modules/homebridge-people/
これでHomebridgeを再起動してエラーがなくなったか確認してみよう。
ホームアプリ上での動き

正常に動作すると例の場合は上記のようにホームアプリに表示される。
息子、父、母のスマートフォンがWi-Fiに接続されpingが通る状態なので、3人が在宅しているとわかるわけだ。(作動済み=在宅)
Anyoneはこの中の誰か1人が在宅していれば「作動済み」になる。
これによって家族の誰かが一人でも帰ってきたら、エアコンをオンにする。
などのオートメーションを組む事ができる。
外出先から確認するにはホームハブとなるApple TVまたはiPadが必要。

ちなみに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