インターネット接続しているケーブルを引き抜いて、外部接続が停止した時のHomeKit動作を確認しました。外部接続が遮断されても、HAPで接続するHomeKitアクセサリ類は動きます。また、MQTT・Zigbee・BLEで接続するアクセサリも動作しました。クラウドサービスを参照するアクセサリは動かなくなりました。
クラウドの利点・欠点
スマートホームの機器には、インターネット上のサーバで動いているクラウドサービスを利用するもの、利用しないもの、どちらも可能なものがあります。家の外から機器をコントロールすることを考えると、クラウドを利用する方が設定が楽で安全です。また自社のエコシステムへの囲い込みも容易になります。なので多くの機器が、メーカが用意したクラウドサービスを利用する方式で設計されてます。
Home Assistantを作った人たちは、これに異を唱えて、自分の家の機器は自分の家のサーバで制御すべきだと言ってます。実際に、クラウドサービスが終了してしまい、機器が使用できなくなる事例が多数あることから、クラウドを避けたい気持ちには共感します。
クラウドが終了する事態にならなくても、不調だったり、遅延することも多いので、全部自前で揃えるメリットは大きいです。
ただ、家の外から安全にアクセスできる段階まで自前で設定するのは大変です。できる限りローカルに動作させつつ、外部からの接続に関してだけは信頼できるクラウドサービスを使うのが最適解ではないかと思います。Home Assistantも関連会社が有料のクラウドサービスを運営しています。
HomeKitを使っている場合は、Appleの信頼できるクラウドサービスを無料で使用できます。HomeKitでは、家庭内からの機器制御はローカルに実行可能で、外からの制御にはクラウドを使用する使い分けがうまく取り込まれています。
今回はインターネットへの接続を一時的に切断して、スマートホームのどの部分がクラウドに依存しているか、実感したいと思いました。
HomeKit実験環境
クラウド依存を実験した機器の構成は以下です。
「ホームサーバ」(HomeKitで外部接続を担当するサーバ)としてHomePod miniを使用しています。HomeKit対応デバイスは、Merossのスマートプラグだけです。HomeKit非対応機器をHAP (HomeKit Accessory Protocol)接続するために、Homebridgeを稼働させています。同じマシンで、MQTTブローカーとZigbee2MQTTが動いています。Tuya, Nature, SwitchBotのデバイスも、Homebridgeに接続しています。このうち、TuyaとNatureのプラグインは、それぞれの会社のクラウドサービスが提供するAPIを使用しています。SwitchBotに関しては、ローカルなBLE接続で制御しているので、クラウドを使用していません。
HomePod: Siriは動かないけどサーバは稼働
この状態で、インターネット接続を遮断しました。具体的には、インターネットプロバイダに接続しているケーブルをルーターから抜きました。
この結果、まずはHomePodのSiriは動かなくなりました。Siriへ呼びかけすると「インターネット接続されていない」という内容の返事を返します。Siriの本体はクラウド上にあるので、動かなくなって当然です。HomePodは外出先からの接続も担当しています。外部接続を遮断したので、当然ですが外部接続も不可能になっているはずです。
一方、HomePodは、例えば「センサに反応があったら照明を点灯する」というような、オートメーションやアクションも管理しています。オートメーションやアクションをiPhoneやMacに任せることはできません。必ず家にあって、常時稼働しているデバイスが対応する必要があります。そこで、HomePodやAppleTVがホームサーバとして、オートメーションやアクションを担当しています。この機能は、外部接続が遮断されても動いていました。
HAP機器は動く
HAP接続している機器(ここではMerossのスマートプラグ)は、問題なく安定して稼働しました。HomeKitは、クラウドがなくても機器を操作できるということがメリットであると聞いたことがありますが、それを確認できました。
Homebridgeは要調整
想定外だったことは、Homebridgeが動かなくなったことです。それも、インターネット切断した直後は動作していて、ZigbeeやMQTT経由のデバイスが正しく稼働してました。それが一つ一つ徐々に反応しなくなり、最後には全て「応答なし」の表示になってしまいました。Homebridge接続のセンサ類も応答なくなりました。HAPデバイスのスマートプラグだけは健気に動いています。
Homebridgeのwebインタフェースを開いて、そこのエラーメッセージから、原因を特定できました。Nature Remoのプラグインが、Natureのサーバーに接続しようとして失敗しているのですが、その結果、Homebridgeにシグナルを送って再起動させているようでした。Homebridgeが再起動を繰り返しているために、ブリッジとしての機能が果たせていませんでした。そこで、Nature Remoのプラグインを停止したところ、Homebridgeは正常に機能再開しました。この結果、スマートホームの多くの部分が復旧しました。
MQTTとZigbeeは動く
Homebridgeが動作したので、MQTT経由でWiFi接続していた自作のESP32類が動くようになりました。またZigbee2MQTTで接続しているセンサ類、照明、壁スイッチなどが全て動くようになりました。センサ類・スイッチ類の動作に紐付けされる機器操作(「スイッチを入れると照明が点灯する」などのアクション)は、HomePodが管理していますが、これも動作します。
BLEも動く
BLEで接続しているSwitchBot製品も動きました。SwitchBot社のクラウドAPIを使用しておらず、内部のBLE接続だけを使用しているので、インターネット接続が不通になっても、問題なく動きます。
クラウド連携機器は動かない
動作しなかったのは、予想通りTuyaとNatureの機器です。どちらもそれぞれの会社のクラウドAPIを使用しているので、外部接続がないと使用できません。
まとめ
インターネットへの接続を外しても、引き続き動作するデバイスを確認しました。その結果、クラウドAPIを使うTuyaとNatureの機器を除いて、動作を確認できました。家にあるデバイスの8割以上は外部接続ができなくても動作する感じです。また、外部接続ができない場合に、停止しなければならないHomebridgeプラグイン (Natureのプラグイン) があることも確認できました。クラウドサービスが停止したり終了した場合や、何かの理由でインターネット接続できなくなった場合のシミュレーションにもなりました。
コメント