Docker上のHomebridge:安価なスマートデバイスをAppleのエコシステムに統合する

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

クローズドなエコシステムからの脱却

先日、8ドルの汎用スマートプラグを購入しました。動作は高速で信頼性も高かったのですが、大きな欠点がありました。それは、広告だらけの使いにくい専用アプリの中でしか動かないということです。電源を切るためにSiriやMacのホームアプリを使うことはできず、わざわざスマホのロックを解除し、メーカーのアプリを探し、同期を待つ必要がありました。これはスマートホームにおける典型的なトレードオフです。「HomeKit公式認定」のギアに3倍の価格を払うか、バラバラなアプリの乱立に耐えるかの二択です。

Homebridgeはこの問題を解決します。これはiOSのHomeKit APIをエミュレートする軽量なNodeJSサーバーです。本質的には、10ドルのTuyaの電球や古いNestのサーモスタットを、あたかもApple認定のネイティブデバイスであるかのようにiPhoneに認識させます。スイッチ一つひとつに50ドルもかけずに、統一感のあるHomeLabを構築したいのであれば、Homebridgeのマスターは必須条件です。

Home Assistantの方が複雑な自動化機能に優れていますが、Apple HomeのUIを好みつつ、限定的なハードウェアサポートに不満を感じている人にはHomebridgeが最適な選択肢です。さらに、Dockerで実行することでエクスペリエンスは向上します。セットアップのポータビリティが保たれ、アップデートによってベースとなるOSが破損する心配もありません。

ハードウェアと環境要件

Homebridgeは、ほぼあらゆる環境で動作します。Raspberry Pi 4、SynologyのNAS、あるいはUbuntuを搭載した古いIntel NUCでも完璧に動作します。Homebridgeは非常に効率的で、12個ほどのプラグインがアクティブな状態でも、通常消費するメモリは150MB未満です。開始する前に、ホストマシンにDockerとDocker Composeがインストールされていることを確認してください。

Docker Composeの設定

docker runコマンドの使用は避けましょう。管理が難しく、アップデートも困難だからです。代わりに、docker-compose.ymlファイルを使用してインフラをドキュメント化します。まず、設定を整理するための専用ディレクトリを作成します。

mkdir homebridge
cd homebridge
nano docker-compose.yml

以下の設定をファイルに貼り付けてください。ここでは、メンテナンスが行き届いており安全な公式イメージを使用しています。

version: '3.8'
services:
  homebridge:
    image: homebridge/homebridge:latest
    container_name: homebridge
    restart: always
    network_mode: host
    environment:
      - TZ=Asia/Tokyo
      - PGID=1000
      - PUID=1000
      - HOMEBRIDGE_CONFIG_UI=1
      - HOMEBRIDGE_CONFIG_UI_PORT=8581
    volumes:
      - ./config:/homebridge

なぜホストモードが必須なのか

標準的なDockerコンテナは通常、隔離されたブリッジネットワーク内で動作します。しかし、Homebridgeは自身の存在をiPhoneに通知するためにmDNS(Bonjour/Avahi)に依存しています。標準的なポートマッピングを使用すると、Appleデバイスがブリッジを「発見」できない可能性が高くなります。network_mode: hostを使用することで、コンテナがルーターと直接通信できるようになります。この設定一つで、初心者を悩ませる「応答なし」エラーのほとんどを解消できます。

インストールと初回起動

一つのコマンドでコンテナを起動します:

docker-compose up -d

Dockerがイメージをダウンロードし、バックグラウンドでサービスを開始します。ログを追跡することで進捗を確認できます:

docker logs -f homebridge

ログにサーバーがアクティブになったことが表示されたら、ブラウザで http://<あなたのIPアドレス>:8581 にアクセスしてください。セットアップウィザードに従って管理者アカウントを作成します。その後、大きなQRコードが表示されたメインダッシュボードが表示されます。このタブは開いたままにしておいてください。スマホと連携させるためにそのコードが必要になります。

プラグインによる機能拡張

Homebridgeの真の魔法はプラグインライブラリにあります。コミュニティによってメンテナンスされている2,000以上のプラグインにより、Dysonの扇風機やRingのドアベルから、Teslaの車両まで、あらゆるものを統合できます。

例:TP-Link Kasaデバイスの追加

Kasaのスマートプラグをお持ちの場合は、プラグインタブに移動し、homebridge-tplink-smarthomeを検索してください。「インストール」をクリックします。最近のプラグインの多くはビジュアル設定GUIを備えています。つまり、もう手動でconfig.jsonを編集し、カンマを忘れていないか祈る必要はありません。プラグインがデバイスを検出したら、ダッシュボードの右上にある再起動アイコンを押して変更を適用します。

設定構造を理解する

GUIがあっても、トラブルシューティングの際には基盤となる JSONを知っておくと役立ちます。bridgeセクションはサーバーの識別情報を扱い、platformsには各ブランドのハードウェア用の特定のロジックが含まれます。構成は以下のようになります:

{
    "bridge": {
        "name": "Homebridge-Lab",
        "username": "0E:31:34:AF:42:A1",
        "port": 51826,
        "pin": "123-45-678"
    },
    "accessories": [],
    "platforms": [
        {
            "platform": "TplinkSmarthome",
            "name": "TplinkSmarthome"
        }
    ]
}

メンテナンスと安定性

スマートホームの世界での成功は、初期設定だけでなく、稼働率(アップタイム)にかかっています。iPhoneでホームアプリを開き、アクセサリを追加をタップして、ダッシュボードのQRコードをスキャンします。Appleから「未認定のアクセサリ」であるという警告が表示されますが、「そのまま追加」をタップしてペアリングを完了させます。

スムーズな動作を維持するために、時々HomebridgeのUIをチェックしてプラグインのアップデートを確認してください。デバイスが反応しなくなった場合、最初のステップはログを確認することです。ほとんどの問題は、デバイスのローカルIPアドレスが変更されたことに起因します。これを防ぐために、ルーターのDHCP設定でスマートデバイスに固定IPを割り当てることをお勧めします。

簡単なバックアップ

./configボリュームをマッピングしているため、すべての設定とペアリングキーはホストマシンの単一のフォルダ内に保存されています。スマートホーム全体のバックアップは、そのディレクトリをコピーするだけで完了します。ハードウェアが故障しても、別のマシンで新しいコンテナをデプロイし、バックアップフォルダを指定すれば、すべてが瞬時にオンラインに戻ります。電球一つひとつを再ペアリングする必要はありません。

Homebridgeは、バラバラなガジェットの山を、統一されたハイエンドなシステムへと変えてくれます。高価なハードウェアを買わなくても、プレミアムなApple体験を手に入れることができるのです。

Share: