githubに「Homebridge」が公開されています。Raspberry Pi のでも動作し、ffmpeg や libfdk-aacも一緒になっているイメージファイルなので、イチから構築せず導入できました。
HomeBridgeは既に試している方は多いかもしれませんので今更感は否めませんが、ラズパイを使っても3ステップくらいの簡単操作で行えたのでご紹介します。
インストール方法
今回はイメージファイルをダウンロードして設定します。githubでイメージが配布されています。microSDカードへ書き込むだけで済むので有り難いです。
記事で使用したバージョンは「Raspbian-Homebridge-v1.0.6.zip (584 MB)」です。
HomebridgeはiOS HomeKit APIをエミュレートする軽量のNodeJSサーバーです。
参考:https://github.com/homebridge/homebridge-raspbian-image/wiki/Getting-Started
Raspberry Pi はRaspberry Pi Zero W/WHを使用し、カメラモジュールも接続しておきましょう。今回はカメラモジュールV2.1を使いました。
カメラモジュールも有効にしておかないとなりません。sudo raspi-config
でインターフェイス、カメラを有効にしてください。
このダウンロードしたイメージファイルをEtcherでmicroSDカードへ書き込みます。
イメージファイルの中身はRaspbian Liteが元にカスタマイズしてあります。
Wi-Fiの設定
特にモニターなども必要ないためsshで接続したいですね。有線ネットワーク接続の場合は何もしなくてもOKなんですけど、Wi-Fiで接続したい場合は、先ずは用意されているアクセスポイントへ接続し、Wi-Fiの設定を済ませれば家庭内のWi-Fiへ接続できます。
HomeBridgeを書き込んだmicroSDカードでラズパイを起動します。その後、別のマシンを用意されているアクセスポイントへ接続させます。(ネットワークへ参加)
アクセスポイント名:HomeBridge Wi-Fi Setup

このHomebridge WiFi Setupというネットワークです。ラズパイとピアツーピアで接続する形になります。
公式にあったイメージ図は分かり易いと思います。

接続できると、以下の画像のようになります。
ここで本来繋げたい家庭内のWi-FiのSSIDを選び、パスフレーズを入力して、ラズパイゼロWをネットワークに参加させます。


これで家庭内Wi-Fiに接続しIPアドレスが割り振られます。sshで接続する場合を除き、ほとんどの設定はWebUIで可能です。
ラズパイも自宅のWi-Fiと同じになったので、SSHなり、WebUIなりで操作が可能になりました。
既に存在するシステムへ追加でインストールすることもできます。この場合はイメージファイルを使うのではなく、必要なアプリケーションとライブラリを手動でインストールすることになります。詳しくは冒頭と最下部に記載してあるHomeBridge公式サイトをご覧ください。
WebUIで設定する
ブラウザ経由WebUIの設定画面を表示して、HomeBridgeアプリケーションを管理します。
アクセスは以下URLです。もちろんIPアドレスを指定してもOKです。
http://homebridge.local/

ログイン画面にはユーザー名とパスワードを入れます。デフォルトはadmin/adminです。
以下のようなダッシュボードが表示されます。

メニューとして、上部に「状態」「プラグイン」「コンフィグ」「アクセサリ」とあります。右の方に電源ボタンがあり、それでサーバーを再起動することが可能です。
今回、主に使うのは、状態で確認、プラグインでインストール、コンフィグに一部情報を追加します。都度、サーバーを再起動します。
このWebUIで設定を変更したら、設定を反映させるのにサーバーの再起動をする必要があります。設定ファイルのjsonファイルを読み込み直すためです。
最初に更新があれば、最新のHomeBridgeへ更新しておきましょう。ダッシュボードに更新があればお知らせがあります。そこをクリックしてアップデートができます。
プラグインでインストール
色々と追加や設定が可能ですが、ここでは最低限の設定を行います。
プラグインでhomebridge-camera-rpiをインストールします。

検索で「camera rpi」などど検索して選びます。
インストール後は以下のように、HomeBridgeのプラグインと2つになっていると思います。

この画面から設定できるプラグインもあるのですが、このCamera Rpiは無いため、コンフィグを直接書き換える形で実現させます。
追加する部分
コンフィグに追加する部分は、最低限で以下です。前行に続ける場合にカンマ(,)が必要なので忘れないでください。この辺はJSONの書式に従います。

赤枠の部分が追加した箇所です。
},
{
"platform": "rpi-camera",
"cameras": [
{
"name": "ラズパイゼロWのカメラ"
}
]
}
タブ空白など揃っていないとなりません。画像を参考にしてください。
nameは自由に決めて構いません。
文法を間違えた場合は保存ができません。エラー箇所が表示されます。保存出来たとしても内容が間違っていれば、サーバーの再起動後に読み込みエラーが出て正常に起動しません。その場合は「状態」でメッセージを確認できます。「コンフィグ」で再度書き直しをしてください。
SSHで作業
sshで作業する必要があることの一つに、Node.jsの更新があります。これは最新の方が良いでしょう。特に問題無ければ最初から行わなくても構いません。
Node.jsを更新する
sudo hb-config
でNode.jsのアップグレードを実行します。

更新するのは1番目のUpgrade Node.js なのですが、6番目のConfigureOSでラズパイでいつも行うsudo raspi-config
に移動できます。
Node.jsの関係で上手く動かない場合は、バージョンアップも試してください。
カメラを認識しない場合
仮にHomeBridgeでラズパイのカメラが認識できない場合、コンフィグの記述ミス以外であれば、sudo modprobe bcm2835-v4l2
が必要かも知れません。
iPhoneのHomeKitに接続
プラグインでHomeBridgeCamera Rpiを追加し、コンフィグに必要なコンテナ情報を追記すれば、準備はOKです。
ここからはiPhoneでの操作です。
HomeKitアプリを開き、アクセサリの追加をタップし、先程の管理画面のHomebridge UIまたはHomebridgeログに表示されている番号をiPhoneに手動で入力します。
QRコードで行いたいところですが、手動で入力にしてください。
キモは、近くのアクセサリに出ている設定したい「ラズパイゼロWのカメラ」が出ているハズです。ここに表示されない場合は、何かが足りません。カメラモジュールを有効にしていないか、sudo modprobe bcm2835-v4l2
を実行しないとならないか、コンフィグの設定が間違っているか、のどれかになると思います。
再度確認してください。
認定されていないアクセサリと出ても、このまま追加で構いません。
これで登録が完了します。簡単ですね。
実行してみた
このようにプレビューは10秒ごと?くらいに写真を取得して表示され、クリックすると全画面で動画が表示されます。
ストリームなので少しタイムラグがありますが許容範囲でしょう。少なくてもこれならWi-Fiが届く範囲でカメラの映像を確認できます。
※ストリーム動画のみバグがあります。更新されず落ちることがありました。セットアップし再起動後はとりあえず問題なく全てが動作しています。
非常にお手軽です。家庭内でRaspberry Pi のカメラを利用した仕組みを考えて居るなら、Homebridgeも候補になると思います。
インストールや再起動など、Raspberry Pi Zero Wなので、何をするにも少し時間がかかりました。カメラの設置場所によっては大きくなりますが、Raspberry Pi 3B+や4でも試してみてください。(現時点ではRaspberry Pi 4まで動作するようです)
以前に作った「公式カメラモジュールで省電力「あんまり監視しないカメラ」を作ってみた!」のカメラをリプレイスしようと思います。
HomeBridgeとラズパイの連携でした。
HomeBridgeで連携したスマホはiPhoneSE2020です。もちろんiPadでも同じです。