Smart HomeをDIYする

Apple HomeKit は対応製品が少なくて高価なのでHomebridgeでがんばります

Appleホームサーバーのお仕事

HomeKitで作ったスマートホームに、Appleがいうところの「ホームサーバー」を設置すると、外出先から家の中をコントロールできるようになります。そのほか「スイッチAをonにしたら電球Bが点灯する」のような自動化も可能になります。Appleのサイトの説明だけではよくわからなかったこの辺りの機能をまとめておきます。

最小構成HomeKit

iPhoneとHomeKit対応のアクセサリーがあれば、最小構成のスマートホームを構築できます。例えば、アクセサリとして、WiFi接続のHomeKit対応スマートプラグがあれば、iPhoneに接続できます。

(プラグの写真は amazon.co.jp より引用)

HomeKitではアクセサリの登録にiPhoneは必須です。アクセサリとiPhoneの間は、HomeKit Accessory Protocol (HAP) と呼ばれるプロトコルで情報を受け渡しします。HAPは機器同士が1:1で動作するので、これ以外にサーバーやクラウドサービスは不要です。アクセサリがiPhoneと同じLANに接続していれば良く、iPhoneがインターネットに接続している必要もありません。

今話題のMatterは、このHAPに相当するものです。MatterにはApple社が技術協力しているようで、MatterプロトコルとHAPはかなり似たものになっているらしいです。

Zigbee/Thread接続のデバイスの場合は、iPhoneに対応する無線チップが搭載されていないため、上の図のような直接接続はできません。Zigbee/ThreadからLANに橋渡しをするブリッジが必要です。例えばIKEAZigbee製品の場合、TRÅDFRIゲートウェイというブリッジ製品が必要です。

上図のプラグには、WiFiの信号によりon/offする機能が実装されているとします。これに対して、iPhoneはHAPを使ってon/offの信号を送ります。iPhoneがリモコンスイッチになっているような単純な構成ですが、これでもSiriの音声操作や、iOSのショートカット機能を使って自動化するなど、色々な利用方法が可能です。

スイッチを追加する

上の最小構成に、on/offの状態をWiFi/BLE経由で発信するスイッチを追加した構成を考えます。このスイッチでプラグをon/offする方法を考えます。

最小構成と同じく、スイッチもiPhoneと接続するのなら、iPhoneで連動させる方法が考えられます。iPhoneがスイッチの状態をチェックして、on/offされたらプラグを制御する方法です。実現容易な機能ですが、iPhoneのホームアプリでは、iPhoneが直接このようなオートメーションを実行する機能は提供されていません。その理由は、iPhoneが家に無い場合や、電源offや機内モードになっている場合、スイッチが使えなくなるからです。いつでも確実にスイッチを動作させるためには、iPhoneのような個人が持ち歩くデバイスに頼らず、家に常駐して24時間稼働する仕掛けを利用する必要があります。

(スイッチの写真は amazon.co.jp より引用)

ペアリングする方法

スイッチとプラグがペアリングする機能があれば、下の図のようにペアリングして、スイッチでプラグをon/offできます。これならiPhoneが不在の場合でも動作します。さらには、iPhoneからも引き続きプラグをコントロール可能です。IKEAのTRÅDFRIはこの方式で動いています。ただしIKEAの場合、プラグとペアリングしたスイッチの状態はHomeKit (iPhone) から知ることはできません。

常時稼働サーバーを使う

もう一つの方法は、家の中に24時間稼働するサーバーを設置する方法です。HomeKitでは、HomePod mini, Apple TV, iPadが「ホームサーバー」になります。HomePod miniやApple TVは、一旦設置されたら24時間稼働するデバイスなのでホームサーバーに適しています。Appleは以前、AirPort (日本では商標の関係でAirMac) というWiFiルーターを販売してました。今も継続販売されていたらAirPortも間違いなくホームサーバーになっていたはずです。

 

ホームサーバーは常時稼働しているので、スイッチをプラグに連動する手順を常時実行できます。そのためには、「スイッチが押されたらプラグをon/offする」という手続きをホームサーバーに記憶させておく必要があります。手続きの登録や編集にはiPhoneを用います。iPhoneから、スイッチの「アクション」や、家の「オートメーション」を設定する操作を行い、自動化の手順を作成・編集します。この手順はホームサーバーに登録されて実行されるので、iPhoneを家から持ち出した状態でも機能します。

ペアリングするIKEA方式と比較して、HomeKit側からスイッチの状態を知ることができます。なので、プラグ以外の色々な機器を、このスイッチからコントロールするオートメーションを書くことができます。

Home Assistantも、家の中に常時稼働するHome Assistantサーバーを設置する方法で動作してます。Home Assistantを作った人たちは、インターネット上のクラウドに頼らない形で、自分たちが管理する仕組みで、自分の家の機器をコントロールすることが重要なのだと主張しています。

家の外から操作する

家庭内サーバーを設置すれば、家の中からの操作は容易に自動化できます。ただ、家のWiFi圏外からも操作できるようにするには、通常はかなり面倒な手順が必要です。外部からホームサーバーに接続できるように、家のルーターにポートフォワーディングの設定をしたり、家のIPアドレスを固定アドレスにしたり、ダイナミックDNSを利用したり、さまざまな準備が必要です。家のサーバーを外部接続可能にするので、セキュリティにも気を配らないといけません。

Appleのホームサーバーでは、外部からの接続設定が非常に楽です。HomePodなどにApple IDを設定すると、ホームサーバーはiCloudに接続します。この状態で、iPhoneMacが家のWiFiの圏外に出ると、ホームサーバーとiPhoneの接続が、自動的にiCloud経由に切り替わります。通信はすべて暗号化されているので安全です。

Home Assistantにも、外出先からのアクセスを安全に実現するためのクラウドサービスが用意されてます。当初は無償で提供されてましたが、管理が大変になったとのことで現在は年額65ドルです。一方で、iCloudには無償プランがあります。なので、iPhoneユーザーでしたら、Home Assistantを使う場合でも、HomeKit/iCloud経由で外部接続するのが良いと思います。

Threadが使える

ホームサーバーのうち、HomePod miniとApple TVの一部はThread Border Routerになります。これによりThreadに流れている情報を、WiFiEthernetに橋渡しするので、Threadデバイスが使用可能です。

 

Threadについてはこちらもご覧ください。

diysmarthome.hatenablog.com

Appleのホームサーバーでは、現在Zigbeeバイスはサポートされていません。Zigbee自体がThreadに移行するらしいので、おそらく今後もサポートされないと思います。

サーバー追加・削除が柔軟

Home Assistantなどのように、DIYでサーバーを設置すると、管理が大変です。Appleのホームサーバーは、電源を入れてApple IDを設定するだけで、必要な管理を自動的に行ってくれます。例えば、最初に示した最小構成

に、HomePod miniを追加すると、自動的にホームサーバーとして設定されて、機能開始します。

ここでHomePod miniの電源を外して停止すると、ホームサーバーが無かった時の状態に戻ります。

iPhoneからのプラグon/off操作は、ホームサーバの有無に関わらず可能です。

また、家の中には複数のHomePod mini, Apple TVが設置される可能性もありますが、その場合は、どれか一つがホームサーバーとして機能し、残りがバックアップサーバになります。

 

例えば以下は、HomeSpanのモニター機能で調べた結果です。このネットワークには、HomePod miniとApple TVが同じApple IDに登録されています。通常は、このうちHomePod mini (192.168.x.136) が接続に使われていました。

*** HomeSpan Status ***
(略)
Connection #0 192.168.x.136 on Socket 2/16  ID=315...   (admin)
(略)
*** End Status ***

ここで、HomePod miniの電源を落とすと、自動的にApple TV (192.168.x.137) に接続しました。

*** HomeSpan Status ***
(略)
Connection #0 192.168.x.135 on Socket 2/16  ID=315...   (admin)
(略)
*** End Status ***

HomePod miniからApple TVにホームサーバーが引き継がれても、同じオートメーションが引き続き使用可能です。おそらくは設定内容がiCloud側にバックアップされていて、共有されているのだと思われます。このように、iCloudで管理されているおかげで、ホームサーバーの追加や削除が非常に簡単です。サーバーを設定したり管理する手間も知識も不要です。

しかし、デメリットもあります。設定変更が反映されるまで、時間がかかることです。クラウドに関係しそうな変更によって不具合が生じた場合は、しばらく時間が経つと解消していることが何度かありました。それを待っていられない場合は、HomePodやApple TVを再起動するのも良いと思います。

まとめ

HomeKitのホームサーバーの役割をまとめてみました。家の外からのアクセス、サーバーの設定、サーバーの追加・バックアップの仕組みなど、よく考えられています。自前のローカルサーバーだけでここまで設定するのは大変だと思います。

Home Assistantはローカルなサーバでの運営が基本ですが、Google, Amazonをはじめとする多くのIoTメーカーの製品はクラウドサービスを中心に据えてます。これらに対してApple HomeKitは、ローカルで行える部分はHAPによりローカル処理し、クラウドが必要な部分にはiCloudを使用することで、ローカルとクラウドがバランス良く取り込まれた構成を目指しているように思います。