【ハブ2不要】HomeKit で SwitchBot 製品を制御する方法【Homebridge / Home Assistant】

記事の最終更新日: 2023/9/7

みなさんこんにちは、たいくんです。
ほとんどのSwitchBot製品はHomeKitに対応しておらず、Siriなどから制御することができません。新登場のSwitchBot ハブ2を使っても、(Matter経由の)HomeKitから制御できるデバイスは限られており、すべてのSwitchBot製品が制御できるわけではありません。
そこで今回は、HomebridgeやHome Assistantを使って、ハブ2をお持ちの方もそうでない方も、様々なSwitchBot製品をHomeKit対応にする方法を紹介します。


広告



事前準備

初期設定が必要

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

Homebridgeで対応させる方法

対応機器

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

SwitchBot ハブ2内臓の温湿度計も対応しています(OpenAPIのみ)。

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

Homebridgeをインストールする

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

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

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

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


広告



プラグインの設定をする

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

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

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

BLEを使って制御する場合は、「Optional SwitchBot Device Settings」内で「Device Name」(HomeKitに表示されるデバイス名)と制御したいSwitchBotデバイスのMACアドレス*を「Device ID」、「Device Type」(SwitchBot製品の種類)を入力した後、「Connection Type」を「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に対応させます。

-----

2022/10/13 追記:
SwitchBot公式プラグインのアップデートにより、再びSwitchBot ロックを動作させることができるようになりました。
しかし、この方法を使えば情報取得のタイミングを30秒よりも少なくできるため、よりリアルタイムに近い状態を取得することができます。

-----

先程のプラグインを使って設定した場合、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 ロック*
  • SwitchBot ボット
SwitchBot ハブミニ、SwitchBot ハブプラス、またはSwitchBot ハブ2を使った赤外線(IR)デバイスの制御には対応していません。そのため、SwitchBot ハブミニ、SwitchBot ハブプラス、またはSwitchBot ハブ2を登録することもできません。


* 設定するためには、暗号化キーが必要です。暗号化キーは、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 Bridge」統合を設定する必要があります。
「HomeKit Controller」ではないため、ご注意ください。

追加するときに、「含めるドメイン」を、HomeKitに登録したいSwitchBotデバイスのエンティティの種類を選択します。今回は、温湿度計と人感センサーを追加するため「Binary Sensor」と「Sensor」を選びました。

登録したいデバイスのエンティティの種類がわからない場合は、「統合」設定のエンティティ一覧から、登録したいデバイスを探します。
そのデバイスのエンティティIDが、どのような文字列で始まっているかを確認します。
この画像の場合は、「binary_sensor.」で始まっていることから、このエンティティはバイナリセンサー(オンかオフであるかを検出するセンサー)であることがわかります。
ここで確認したものを、上記の「含めるドメイン」で選択します。

ドメインを選択したら、「送信(SUBMIT)」をクリックして、統合を追加します。

HomeKit Bridge統合が追加されたら、「設定」をクリックして、統合を編集します。
インクルージョンモード」を「exclude」から「include」に変更して、「送信(SUBMIT)」をクリックします。
これで、HomeKit Bridgeに含めるアクセサリを、これから指定するエンティティのみに制限することができます。

その後表示される「含めるエンティティを選択」の画面で、追加したいSwitchBotデバイスのエンティティを選択して、「送信(SUBMIT)」をクリックします。
今回は、温湿度計の温度センサー(センサー)・湿度センサー(センサー)と、人感センサーのモーションセンサー(バイナリセンサー)を選択しました。

次に、「高度な設定」が表示されますが、ここでは何も設定せずに「送信(SUBMIT)」をクリックします。

設定が終わったら、HomeKit Bridge統合に名前をつけておくことをおすすめします。

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

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


広告



さいごに

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

現在私は、HomebridgeでSwitchBot ハブミニ、SwitchBot ロックを、Home AssistantでSwitchBot 温湿度計、SwitchBot 人感センサーをHomeKit対応にしています。
まだHome Assistantでは赤外線リモコンを操作することができず、大きなメリットは無いかもしれませんが、今後のアップデートで追加されれば、かなり使いやすくなると思います。

余談

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

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

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

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

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


広告

コメント

広告