SwitchBotをApple HomeKitで動かす

SwitchBotのBLE搭載製品をHomeKitに接続して、iPhone/MacのホームアプリやSiriから制御できるように設定します。そのために、BLEアダプタを用意して、Homebridgeにプラグインを設定します。

SwitchBot

SwitchBotという会社は、その名前の通り、スイッチを押してくれる超小型ロボット製品でお馴染みです。壁のスイッチや電化製品のスイッチにこれを貼り付けておけば、スマホからの操作でサーボモータが動いて、物理的にスイッチを押してくれます。人が指で押すスイッチならなんでも自動化できる、文字通り力技な商品です。今はこれ以外にも、カーテン開閉ロボット、スマートプラグ、赤外線リモコン、掃除ロボットなどいろいろな製品を作ってます。

これらの製品の大半は、BLEで通信しているようです。ただしBLEではインターネットに直接接続できないので、WiFiに接続するためのSwitchBot Hub Miniという名前のブリッジ製品も用意されてます。SwitchBot Hub Miniには赤外線リモコン機能もついてます。

ハブを使うことで、BLEの接続をLAN/Internetに拡張できます。さらにその先で、Google NestやAmazon Echoと連携させることができます。でも残念なことにHomeKitには未対応です。製品説明ではSiriに対応していると書いてありますが、これはiPhone用のSwitchBot専用アプリがAppleのショートカットに対応していて、それを音声で操作できるという意味です。

SwitchBot製品は、基本的にはスマートフォン上のSwitchBot専用アプリで操作します。その場合、スマホはBLE接続もしくは、ハブ経由のWiFi接続されます。どちらかで接続していれば良く、BLE接続しか使わなければハブは不要です。

HomebridgeでHomeKit対応

SwitchBot社はHomeKitをサポートしてくれてませんが、Homebridgeを使うことでHomeKit対応可能です。Homebridgeも、BLE直接で、もしくはハブ経由のWiFiでのどちらかで接続します。

この場合も、BLE接続しかしないのであればハブは不要です。今回は以下のBLE直接接続の構成で設定を進めます。

BLEを使う場合は、当然ですがHomebridgeサーバーコンピュータにBLEが備わっている必要があります。Raspberry Pi 3や4のBluetooth付きモデルならBLE対応してます。古いコンピュータだとBLE未搭載だったり、搭載していてもLinux非互換だったりしますので、対応したUSBアダプタがあると良いです。前回はLinuxと互換性の高いCSRチップ搭載Bluetooth 4.0 USBアダプタをUbuntuサーバに取り付けました。

diysmarthome.hatenablog.com

プラグインを入れる

HomebridgeをSwitchBot製品に対応させるために、SwitchBot用プラグインを探します。Homebridgeのサイトや、ネット検索でも探せますが、Homebridgeのwebインタフェースから探すのが簡単です。ブラウザからHomebridgeサーバにログインした後、

プラグインのタブを選びます。ここの検索窓にswitchbotと入力すると、関連するプラグインが表示されます。

switchbotで検索すると13個のプラグインが見つかりました。必要なのは一つだけなので、どれかを選ぶ必要があります。右上に「Verified」と書かれているプラグインは、Homebridgeの人たちが動作などを確認したという推奨マークです。選択の目安になります。また右下の矢印アイコンは、それぞれのプラグインの開発ページにリンクしてます。ここで説明を読んで、必要なプラグインかどうかを判断します。開発ページからわかる更新の頻度も目安になります。2-3年前で更新が止まっているプラグインは、デバイスやHomebridgeの仕様が変わるなどの影響があるのか、動かないこともあります。

ここに現れたプラグインから、「Homebridge SwitchBot」を使うことにしました。「Homebridge SwitchBot」は、Verifyマークもついてますし、更新も頻繁で、最適な選択かと思います。BLE接続に限定すれば「Homebridge SwitchBot Ble」も使えました。Homebridgeのプラグインは、導入も簡単で、削除すると設定も消してくれるので、気軽に色々と試せる点が良いです。複数の選択肢があれば、動くプラグインが見つかるまで次々と試すのも良いです。

上のスクリーンショットでは、すでにインストールした後の状態なので、「Homebridge SwitchBot」プラグインが「インストール済」と表示されていますが、未インストールだと「インストール」というボタンが出ます。このボタンはインストールが終了すると「設定」に変わります。

SwitchBot BotをHomeKitで使う

今回は「Homebridge SwitchBot」にSwitchBot Botを1個登録します。まずはスマートフォン用のSwitchBot専用アプリで登録して、動作を確認しておきます。

次にHomebridgeでの設定に戻ります。プラグインの画面でのプラグイン導入が終わると「設定」ボタンが押せるようになります。Homebridge SwitchBotプラグインの設定ボタンを押すと、最初は説明の画面が出ます。

それによると、

  1. iPhoneAndroidからSwitchBotの専用アプリを開く
  2. その「プロフィール」ボタンを押す(人のアイコンのボタンです)
  3. 「設定」ボタンを押す(歯車アイコンのボタンです)
  4. 一番下にある「アプリバージョン」の表示を10回タップする(隠しコマンドですね)
  5. すると「開発者向けオプション」のボタンが出るのでこれをタップする
  6. 英数字のトークンが表示されるのでコピーボタンを押してクリップボードにコピーする

Macを使っていてiPhoneと連携させているなら、iPhoneでコピーした内容は、Macでペーストできます。なのでiPhoneで上の操作をして、Macで開いているHomebridgeページにペーストできます。それができない場合は、ネット経由でうまいこと持ってきてください。目視と人手でコピペするのは無理な長さです。トークンはこの先にも必要になる情報ですので、Mac環境ならばデバイス間で共有できるメモ.appにメモしておいても良いと思います。

CONTINUEを押すと設定画面に移ります。SwitchBot Account Infoにトークンをペーストします。

Optional SwitchBot Device Settingで新しいデバイスを追加します。ここでDevice IDを聞かれます。これはBluetooth Low EnergyのMACアドレスです。SwitchBotのスマホアプリで「デバイス情報」を見ると6バイトの16進数が書かれているので、これを書き込みます。少し書き込むと詳細な選択ができるようになります。

ここで、

などの設定をします。

MACアドレスを手作業でコピペするのが面倒でしたら、サーバーマシンにsshして、bluetoothctlコマンド+scan onして流れているアドレスからSwitchBotのものをコピペしても良いと思います。ここに現れなければこの先でも動作しないですので、事前の確認にもなります。

$ bluetoothctl
[bluetooth]# scan on

設定ファイルで確認する

GUIで適当に入力した後は、テキストの設定ファイルで確認してます。ブラウザのタブから「コンフィグ」を選びます。

これでテキスト編集して設定が可能です。プラグインと同じ名前が、platformに書かれているので、SwitchBotという場所を探します。以下のようでした。

{
    "name": "SwitchBot",
    "credentials": {
        "openToken": "999999999999999999999999999999999999",
        "notice": "Keep your token a secret!"
    },
        "options": {
        "devices": [
            {
                "deviceId": "C71122334455",
                "configDeviceName": "myBot",
                "hide_device": false,
                "configDeviceType": "Bot",
                "ble": true
            }
        ]
    },
    "platform": "SwitchBot"
}

ちなみにこの設定ファイルは、サーバの

/var/lib/homebridge/config.json

の場所にありますので、sshして編集しても良いです。確認できたらwebページ右上の電源ボタンアイコンを押して、Homebridgeを再起動します。これでiPhoneMacのホーム.appにSwitchBot Botのボタンが現れるはずです。クリックすると動作しました。

SwitchBotカーテンをHomeKitで使う

次に、SwitchBotカーテンも使ってみました。カーテンレールにぶら下がって移動することで、カーテンを開閉してくれます。カーテンレールの形状によって機種が違うので、合うモデルを選びます。

これも、SwitchBot専用スマホアプリに登録して、カーテン開閉の向きやカーテン幅を調整します。その後、SwitchBot Botと同様にHomebridgeから設定をすることで利用できました。プラグインの設定では、Device TypeとしてCurtainを選びます。カーテン開閉は見た目にもインパクトあって面白いです。