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

記事の最終更新日: 2024/11/7

みなさんこんにちは、たいくんです。
ほとんどのSwitchBot製品はHomeKitに対応しておらず、Siriなどから制御することができません。Matter対応のSwitchBot ハブ2ハブミニを使っても、Matter経由のHomeKitから制御できるデバイスは限られており、すべてのSwitchBot製品が制御できるわけではありません。
他にも、Matterではエアコンのリモコンなどの機能が限られてしまう場合もあります。

そこで今回は、HomebridgeやHome Assistantを使って、Matter対応のハブをお持ちの方もそうでない方も、様々なSwitchBot製品をHomeKit対応にする方法を紹介します。


広告



事前準備

初期設定が必要

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

Homebridgeで対応させる方法

対応機器

Homebridgeでは、OpenAPIを使ったクラウド経由での制御と、Bluetooth(BLE)通信を使ったローカル制御の2つが行えます。
対応するSwitchBot製品は以下の通りです。
OpenAPIを使ったクラウド経由での制御には、SwitchBot ハブミニ(Matter対応非対応の両モデル)またはSwitchBot ハブ2が必要です(もしかしたらハブプラスや、シーリングライト プロに搭載されているハブ機能も使用できる可能性はありますが、未確認です)。

SwitchBot ハブ2内臓の温湿度センサーと照度センサーも対応しています(OpenAPIとBLE)。

SwitchBot ハブミニ、またはSwitchBot ハブ2を使って制御できる赤外線デバイスは以下の通りです(OpenAPIのみ)。
  • テレビ
  • プロジェクター(テレビとして表示)
  • セットトップボックス
  • 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を使って制御する場合は、「noble」の準備事項(prerequisites)に従う必要があります。
BLEを使って制御するように設定するには、まず「SwitchBot Device Settings」内で「Device Name」(HomeKitに表示されるデバイス名)と制御したいSwitchBotデバイスのMACアドレス*を「Device ID」に入力します。
その後、「Device Type」(SwitchBot製品の種類)を選択し、「Connection Type」を「BLE/OpenAPI」または「BLE」を選択します。

プラグインの設定にある「Hide Device」にチェックを入れると、特定のデバイスのみを非表示にすることができます。
既にHomeKit(またはMatter)に対応している製品や、HomeKitに追加したくない製品などの場合に有効化します。

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

ただし、Macの場合はBLE制御ができないようで、エラーが表示されてしまいました(最近のmacOSでは動作しない場合があるようです。macOS 12.3以降で動作するようになったという情報もありましたが、私の場合はうまくいきませんでした)。
そのため、私はこの先のセクションで紹介するHome Assistantを使ってHomeKitに対応させました。

macOSの場合、Bluetoothを使用できるようにするためにシステム設定の「プライバシーとセキュリティ」内にある「Bluetooth」から、「node」にBluetoothの使用権限を与える必要があります。nodeは「/usr/local/bin/」内にあります。
「usr」フォルダは隠しフォルダになっているため、Shift + Command + .(ピリオド)を押して隠しフォルダを表示するか、Finderの「フォルダへ移動...」から「/usr/local/bin/」へ移動した後、「node」をシステム設定の「下のアプリケーションにBluetoothの使用を許可。」の下に表示されているリストにドラッグアンドドロップします。


* 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で対応させる方法

Home Assistantでは、OpenAPIを使ったクラウド経由での制御公式、またはカスタム統合)と、Bluetooth(BLE)通信を使ったローカル制御Matterを使ったローカル制御の3つが行えます。

対応機器(公式統合を使ったOpenAPI)

OpenAPIを使って制御する場合、「OpenAPIトークン」と「シークレットコード」が必要になります。Homebridgeの時と同じ方法でコードを入手してください。

Home Assistantに含まれる統合を使ったOpenAPIでの制御に対応するSwitchBot製品は以下の通りです。
OpenAPIを使ったクラウド経由での制御には、SwitchBot ハブミニ(Matter対応非対応の両モデル)またはSwitchBot ハブ2が必要です(もしかしたらハブプラスや、シーリングライト プロに搭載されているハブ機能も使用できる可能性はありますが、未確認です)。

追加されるセンサーは10分(600秒)に一度、クラウドサーバーに更新を要求します。
これは、SwitchBotのクラウドAPIがユーザーに、1日あたり1万回までのリクエストに制限されているためです。

制御できる赤外線デバイスは以下の通りです。
  • 「その他」を除く全ての赤外線リモコン
  • エアコン
なお、エアコン以外の赤外線リモコンは「オン」と「オフ」状態を切り替える「スイッチ」エンティティとして登録されます。

対応機器(カスタム統合を使ったOpenAPI)

OpenAPIを使って制御する場合、「OpenAPIトークン」と「シークレットコード」が必要になります。Homebridgeの時と同じ方法でコードを入手してください。

HACSからインストールすることができるカスタム統合を使った、OpenAPIでの制御に対応する赤外線デバイスは以下の通りです。
  • エアコン
  • テレビ・IPTV・ストリーマー・セットトップボックス
  • DVD・スピーカー
  • ファン
  • 照明
  • 空気清浄機
  • 給湯器
  • 掃除機
  • カメラのシャッター
  • その他
自分で学習させたカスタムボタン・コマンド機能もサポートしています。
それぞれの赤外線リモコンで利用可能な機能については、カスタム統合の公式ページをご覧ください。

    対応機器(BLE)

    Bluetoothでの制御に対応するSwitchBot製品は以下の通りです。


    * 設定するためには、暗号化キーが必要です。暗号化キーは、SwitchBotアカウントからインポートする方法と、手動で入力する方法があります。
    暗号化キーを手動で入力する場合は、こちら(英語)の方法を使って暗号化キーを入手してください。この記事では詳細の解説は割愛します。
    なお、どちらの手順もSSOアカウント(Apple、Google、Amazonの外部アカウントを使って登録したアカウント)では実行することができないためご注意ください(私はSSOアカウントだったので、わざわざ通常のアカウントを作り直し、持っているデバイスを全て登録し直しました...)。


    ** 記事の最終更新時点では、ハブ内蔵の温湿度計・照度センサーの取得のみに対応しており、赤外線リモコンの操作には対応していません。


    対応機器(Matter)

    Matterでの制御に対応するSwitchBot製品は以下の通りです。


    * 対応する赤外線リモコンの種類は、SwitchBot ハブ2でのMatterブリッジに対応していて、さらにHome AssistantのMatter統合にも対応している必要があります。
    SwitchBot ハブ2でのMatterブリッジに対応している赤外線リモコンの種類はこちらご覧ください。
    記事の最終更新時点で、Home AssistantのMatter統合に対応しているエンティティの種類は以下の通りです。
    • バイナリセンサー(「オン」と「オフ」状態を検出するデバイス)
    • クライメイト(エアコンやサーモスタットなど)
    • カバー(ブラインドやシャッターなど)
    • 照明
    • ロック
    • センサー(温湿度計などの、数値を検出するデバイス)
    • スイッチ(「オン」と「オフ」状態を切り替えるデバイス)
    赤外線リモコンのうち、おそらくエアコンのリモコンは「クライメイト」として、その他のリモコンは「スイッチ」として登録されるものと思われます。

    Home Assistantをインストールする

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

    公式統合のOpenAPIで制御する場合

    統合」設定で、「統合を追加」をクリックして、「SwitchBot Cloud」と入力して、表示された統合をクリックして設定してください。

    APIトークンとAPIキーの入力画面が表示されるので、SwitchBotアプリから入手したコードを入力して、右下の「送信(SUBMIT)」をクリックすると設定完了です。

    カスタム統合のOpenAPIで制御する場合

    まずはHACSから、または手動でカスタム統合「SwitchBot Remote IR」をダウンロード・インストール後、Home Assistantを再起動します。

    統合」設定で、「統合を追加」をクリックして、「SwitchBot Remote IR」と入力して、表示された統合をクリックして設定してください。

    ハブの名前とAPIトークン・APIキーの入力画面が表示されるので、お好みを名前を入力し、SwitchBotアプリから入手したコードを入力して、右下の「送信(SUBMIT)」をクリックすると設定完了です。

    ハブの名前については、複数台のハブをお持ちでもそれぞれ識別される事は無い(複数台のハブが登録されていても、1つのハブとして認識される)ため、お好みの名前で構いません。

    それぞれのデバイスの設定を変更したい場合は、ハブ一覧の「設定」をクリックします。

    ハブに登録されているデバイスが表示されるので、設定を変更したいデバイスを選択し、「送信(SUBMIT)」をクリックします。

    選択したデバイスの設定画面が表示されます。表示される設定内容は、デバイスの種類によって異なります。

    自分で学習させたカスタムボタンを追加したい場合は、最も下にある「Button names」に、SwitchBotアプリに登録したボタンの名前を正確に(英語の名前は、大文字小文字も正確に)入力します。
    登録したボタンは、ボタンエンティティとして1つずつ追加されます。

    Bluetoothで制御する場合

    まずはHome Assistantに「Bluetooth」統合*を追加する必要があります。
    内蔵Bluetoothアダプタがうまく使えない場合は、USB接続のBluetoothアダプタを使用するか、ESP32を使った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 Bluetooth」と入力して、表示された統合をクリックして設定してください。

    Matterで制御する場合

    iPhoneやiPadで「ホーム」アプリを開き、直接、Matter対応のSwitchBot ハブを登録すると、HomeKitで使用することができます(SwitchBotアプリから、Matterに登録するデバイスを選択する必要があります)。
    この記事では、HomeKitに対応していないデバイスをHomeKitで制御する方法を目的としているため、Home AssistantにMatterデバイスを登録する方法については割愛します。

    HomeKit統合を設定する

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

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

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

    なお、ロックを登録する場合は、1つだけのドメインを選択する必要があります(1つのブリッジにこのデバイスを登録すると正しく動作しなくなるため、単体で登録する必要があります)。
    複数のSwitchBot ロックを登録する場合、複数のブリッジを作成する必要があります。

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

    HomeKit Bridge統合が追加されたら、「設定」をクリックして、統合を編集します。
    インクルージョンモード」を「exclude」から「include」に変更して、「送信(SUBMIT)」をクリックします。

    これで、HomeKit Bridgeに含めるアクセサリを、これから指定するエンティティのみに制限することができます。
    ちなみに、ロックを選択した場合、上記設定に加えて「モード」を「accessory」に変更します。

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

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

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

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

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


    広告



    さいごに

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

    私はHomebridgeでSwitchBot ハブミニ(Matter非対応)とハブ2を、Home AssistantでSwitchBot 温湿度計と人感センサー、ロック、そして、ボットをHomeKit対応にしています。
    まだHome Assistantでは、赤外線リモコンの高度な操作には対応していませんが、今後のアップデートで対応すればかなり便利に使えると思うので、今後に期待したいところです。

    Home Assistant 2023.10より、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 ロックに対応しました!

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

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


    広告

    コメント

    広告