【Siri 対応】HomeKit で SwitchBot 製品を制御する方法【Homebridge / Home Assistant】

みなさんこんにちは、たいくんです。
SwitchBot製品のほとんどはHomeKitに対応しておらず、Siriなどから制御することができません。
そこで今回は、HomebridgeやHome Assistantを使って、SwitchBot製品をHomeKit対応にする方法を紹介します。


広告



事前準備

SwitchBot製品は、事前にスマートフォンアプリを使って初期設定を完了しておく必要があります。
また、クラウド経由で制御する場合、制御するアクセサリの「クラウドサービス」をオンにしておく必要があります。

Homebridgeで対応させる方法

対応機器

Homebridgeでは、OpenAPIを使ったクラウド経由での制御と、Bluetooth(BLE)通信を使ったローカル制御の2つが行えます。
対応するSwitchBot製品は以下の通りです。
  • SwitchBotスマート加湿器
  • SwitchBot温湿度計
  • SwitchBot温湿度計プラス
  • SwitchBotモーションセンサー
  • SwitchBot開閉センサー
  • SwitchBotカーテン
  • SwitchBotスマート電球(OpenAPIのみ)
  • SwitchBotテープライト(OpenAPIのみ)
  • SwitchBotプラグ(OpenAPIのみ)
  • SwitchBotプラグミニ
  • SwitchBotボット
  • SwitchBotロック(現在Samsung SmartThings経由のみ)
OpenAPIを使ったクラウド経由での制御には、SwitchBotハブミニまたはSwitchBotハブプラスが必要です。

SwitchBotハブミニまたはSwitchBotハブプラスを使って制御できる赤外線デバイスは以下の通りです。
  • テレビ
  • プロジェクター(テレビとして表示)
  • セットトップボックス
  • DVD(セットトップボックスとして表示)
  • ストリーマー(ストリーミングスティックとして表示)
  • スピーカー
  • ファン
  • ライト*
  • 空気清浄機*
  • エアコン
  • カメラ*
  • 掃除機*
  • 給湯器*
  • その他*
* オンとオフの切り替えのみ対応

Homebridgeをインストールする

Homebridgeをインストールする方法は、こちらの記事で詳しく紹介しているのでご覧ください。

プラグインをインストールする

今回は、「Homebridge Switchbot」というプラグインを使用します。このプラグインは、SwitchBotの開発元が作成した、言わばSwitchBot公式のプラグインです。

Homebridgeのプラグイン画面で、「SwitchBot」と検索して表示された、「Homebridge SwitchBot」というプラグインをインストールしてください。


広告



プラグインの設定をする

OpenAPIを使って制御する場合、「OpenAPIトークン」が必要になります。

OpenAPIトークンを取得するには、以下の手順に従ってください。
  1. SwitchBotアプリを開き、プロフィールタブ内の「設定」をタップします。
  2. アプリバージョン」のところを10回連続でタップします。その後、表示された「開発者向けオプション」をタップします。
  3. トークンを取得」をタップします。
すると、トークンが表示されるので、SwitchBotプラグインの「Token」のところに入力します。

その後、Homebridgeを再起動すると、SwitchBotアプリに登録されているすべてのアクセサリがHomeKitに表示されるようになります。

BLEを使って制御する場合は、制御したいSwitchBotデバイスのMACアドレス*を「Optional SwitchBot Device Settings」内の「Device ID」のところに入力した後、「Device Name」(HomeKitに表示されるデバイス名)と「Device Type」(SwitchBot製品の種類)をそれぞれ入力して、「Enable Bluetooth Low Energy (BLE) Connection」にチェックを入れます。
OpenAPIを使って制御している場合でも、ここで設定したデバイスはBLEで制御されるようになります。そのため、OpenAPIとBLEを組み合わせることができます。
また、「Hide Device」にチェックを入れると、特定のデバイスのみを非表示にすることができます。

OpenAPIの場合は、情報取得の間隔が最短30秒(かつHomebridgeへのプッシュにも非対応)のため、人感センサーなどのリアルタイムの情報が必要なデバイスには向いておらず、そのようなデバイスはBLEで設定することをおすすめします。
OpenAPIでは、人感センサーを使って照明をつけるオートメーションは全く使い物になりませんでした。センサーが反応してから照明がつくまでに時間がかかりすぎます。
BLEの場合は、APIの取得回数制限がないため、ほぼリアルタイムで情報を同期させることができます。

ただし、Macの場合はBLE制御ができないようで、エラーが表示されてしまいました。
そのため、私は次のセクションで紹介するHome Assistantを使ってHomeKitに対応させました。

* SwitchBotアプリから確認するか、OpenAPIトークンを入力後にプラグインの「DEVICES」タブから確認できます。


広告



SwitchBotロックを対応させる方法

記事執筆時点では、以前まではAPIを使った制御ができたのですが、API仕様の変更によりロック・ロック解除ができなくなってしまいました。そのため、Samsung SmartThingsを経由して、HomeKitに対応させます。

先程のプラグインを使って設定した場合、HomeKitにロックが表示されるのですが、ロック・ロック解除ができません。そのため、プラグインの設定で、ロックを非表示に設定しておきましょう。

HomeKitに対応させる前に、先にSmartThingsとSwitchBotを連携させておいて、SmartThingsからSwitchBot製品を制御できることを確認しておいてください。

SwitchBotロックを対応させるには、Homebridgeに「homebridge-smartthings-ik」と検索して表示される「SmartThings Plugin」というプラグインをインストールする必要があります。
このプラグインは、SmartThingsに登録されたデバイスをHomeKitから制御できるようにするというプラグインです。

プラグインをインストールしたら、こちらのリンクからSmartThings APIを使うためのパーソナルアクセストークンを生成する必要があります。

Token Name」にはわかりやすい名前を、「Authorized Scopes」では「Devices」にチェックを入れます。
SmartThingsに複数のアクセサリが登録されている場合、HomeKitに追加したくないデバイスを除外できるようにするには、「Locations」のチェックも入れる必要があります(「Locations」機能をつかって、指定したLocation内のデバイスを除外するようです)。
最後に、「GENERATE TOKEN」をクリックして、生成されたトークンをコピーしておきます。

コピーしたトークンを、先ほどインストールしたプラグインの設定にある「Access Token」のところにペーストし、設定を保存したらHomebridgeを再起動します。
すると、SmartThingsに登録されたデバイスがHomeKitの画面に現れるはずです。

HomeKitに追加したくないデバイスを除外するには、除外するデバイスが設置してあるLocation名を「Location Name」のところに入力します。

プラグインのバージョン1.1.12より「IgnoreDevices」機能が追加されました。HomeKitに追加したくないデバイスは「Devices to Ignore」にデバイスの名前を入力します。

ロックが施錠されていて、解錠操作をしていないのに、HomeKitには「解錠中...」の表示が消えない時があるなど、動作が若干不安定ですが、Siriからの解錠・施錠は問題なくできるので、OpenAPI / BLEでの制御ができるようになるまではこの方法で使うのがいいと思います。

プラグインのバージョン1.1.10より、定期的にデバイスの状態を読み取ることができる設定が追加されました。これにより、鍵が解除された時や施錠された時などにほぼリアルタイムでHomeKitに通知することができるようになりました。
そのため、「解錠中...」の表示が消えない不具合は解消されました。


広告



Home Assistantで対応させる方法

対応機器

残念ながら、現時点ではクラウドAPIを使った制御はできません。そのため、対応機器もかなり限られます。
対応するSwitchBot製品は以下の通りです。
  • SwitchBot温湿度計
  • SwitchBotモーションセンサー
  • SwitchBot開閉センサー
  • SwitchBotカーテン
  • SwitchBotスマート電球
  • SwitchBotテープライト
  • SwitchBotプラグミニ
  • SwitchBotボット
SwitchBotハブミニまたはSwitchBotハブプラスを使った赤外線デバイスの制御には対応していません。そのため、SwitchBotハブミニまたはSwitchBotハブプラスを登録することもできません。

Home Assistantをインストールする

Home Assistantをインストールする方法は、こちらの記事で詳しく紹介しているのでご覧ください。

統合を設定する

まずはHome Assistantに「Bluetooth」統合*を追加する必要があります。
内蔵Bluetoothアダプタがうまく使えない場合は、USB接続のBluetoothアダプタを使用する必要があります。対応するBluetoothアダプタはこちらの記事に書かれています。私はこちらのアダプタを使用しました。
Bluetoothアダプターを接続したら、「統合」設定で、「Bluetooth」統合*を追加します。

* VirtualBoxを使ってHome Assistantをインストールした場合、Macでは内臓のBluetoothアダプタを仮想マシンに割り当てることができないため、USB接続のBluetoothアダプタを割り当てる必要があります。
Bluetoothアダプタを割り当てる前に、以下のコマンドをターミナルに入力して、Macが使用するBluetoothアダプタを内蔵のみに変更する必要があります。

sudo nvram bluetoothHostControllerSwitchBehavior=never

元に戻す場合:
sudo nvram bluetoothHostControllerSwitchBehavior=always

また、仮想マシンの設定で、仮想マシンの起動時に自動でBluetoothアダプタが割り当てられるように、こちらの記事を参考にして「USBデバイスフィルター」の設定をしておくことをおすすめします。

その後、SwitchBotデバイスが自動で検出されるのを待つか、手動でSwitchBot統合を設定する必要があります。
自動で検出されたら、「設定」をクリックして設定します。
手動で設定する場合は、「統合を追加」をクリックして、「SwitchBot」と入力して、表示された統合をクリックして設定してください。

HomeKit統合を設定する

HomeKitに対応させるには、「HomeKit」統合を設定する必要があります。
「HomeKit Controller」ではないため、ご注意ください。

追加するときに、「含めるドメイン」を、設定するSwitchBotデバイスの種類のみを選んでください。今回は、温湿度計を追加するため「Sensor」のみを選びました。
その後、「送信(SUBMIT)」をクリックして、統合を追加します。

HomeKit統合が追加されたら、「設定」をクリックして、統合を編集します。
モード」を「bridge」から「accessory」に変更して、「送信(SUBMIT)」をクリックします。

その後表示される「アクセサリーのエンティティを選択」の画面で、追加したいSwitchBotデバイスのエンティティを選択して、「送信(SUBMIT)」をクリックします。HomeKit統合のアクセサリーモードでは、1つのエンティティのみを設定することができます。そのため、同じ設定を追加したいデバイスの個数分設定します。
今回は、温湿度計の温度センサーを選択しました。温湿度計には温度センサー以外にも湿度センサーがあるため、こちらも設定する必要があります。

設定する際に、HomeKit統合の数が増えすぎてどれがどのデバイスの設定なのかがわからなくならないように、一つ一つに名前をつけることをおすすめします。

設定が終わったら、Home Assistantの通知に表示されている画面からSwitchBotデバイスをHomeKitに登録します。

これで、設定が完了しました。


広告



さいごに

今回紹介した方法で、HomeKitに対応のSwitchBotデバイスをHomeKitに対応させることができるようになります。
これにより、SwitchBotデバイスをSiriなどで制御できるようになります。

現在私は、HomebridgeでSwitchBotハブミニ、ロックを、Home Assistantで温湿度計、人感センサーをHomeKit対応にしています。
まだHome Assistantでは対応機器が非常に少ないため、あまりメリットは無いかもしれませんが、今後のアップデートで追加されれば、かなり使いやすくなると思います。

余談

私のように身体障害を抱えて生活している方にとっては、非常に便利な生活になると思うので、試す価値は十分にあると思います。
赤外線デバイスをSiriで操作できるようになって、今までエアコンのリモコンに手を伸ばすのがかなり苦痛で、リモコンを床に落としてしまった場合はエアコンを操作することができず、非常に困っていたのが、声だけで操作できるのは非常に楽です。

Macの場合はHomebridgeがなぜかBluetooth通信ができず、人感センサーが全く役に立っていないため、早いところHome Assistantに対応してほしいところです。
Home Assistant 2022.9.0よりモーションセンサーに対応し、無事に機能するようになりました!

ちなみに、HomebridgeのSwitchBot公式プラグインでSwitchBotロックが対応していたのですが、API仕様の変更により使えなくなってしまいました。開発者側が間も無くBLE APIを公開するとのことなので、Home Assistantにも早く対応することを願っています。

やはり、クラウド制御よりもローカル制御の方が(サーバーダウンなど)何かあった時にも強いですからね。

最後まで読んでくださり、ありがとうございました!それではまた!


広告

コメント

広告