Smart HomeをDIYする

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

SwitchBotをHomebridge / HomeKitで動かす

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

SwitchBot製品

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

これらの製品のうち、電池駆動のものは、省電力なBLEで通信しているようです。電力を十分に得られるプラグなどは、BLEとWiFiの両方で通信するようです。BLEではインターネットに直接接続できないので、WiFiに接続するためのSwitchBot Hub Miniという名前のブリッジ製品も用意されてます。SwitchBot Hub Miniには赤外線リモコン機能もついてます。

ネットワーク構成

ハブを使うことで、BLEの接続をLAN/Internetに拡張できます。さらにその先でSwitchBotクラウドサービスに接続し、家の外からのアクセスも可能にします。クラウドサービスは、Google NestやAmazon Echoとも連携する機能を提供してます。

でも残念なことに一部のスマートプラグ以外のSwitchBot製品はHomeKitに未対応です。販売サイトの説明ではSiriに対応していると書かれていることもありますが、これはiPhone用のSwitchBot専用アプリがAppleのショートカットに対応していて、それを音声で操作できるという意味です。

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

HomebridgeでHomeKit対応

ボットやカーテンなどの大半のSwitchBot製品はHomeKitをサポートしてくれてませんが、Homebridgeを使うことでHomeKit対応可能です。Homebridgeも、BLE直接で、もしくはハブ経由のWiFiでのどちらかで接続します。

この場合も、BLE接続しかしないのであればハブは不要です。今回は以下のBLE直接接続の構成で設定を進めます。SwitchBot社のクラウドを使用しないので、応答が高速になります。SwitchBotのクラウドが不調になっても、問題なく動き続けるメリットもあります。

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のハブは使いません。BotとHomebridgeはBLEで直接接続します。

まずはスマートフォン用のSwitchBot専用アプリで登録して、動作を確認しておきます。

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

それによると、

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

と書いてあります。この手順は、SwitchBot社のハブを用意して、SwitchBotのクラウドに接続して使う場合に必要な手順です。今回は、ハブを使用せずに、BLEだけの接続で動作させます。SwitchBotクラウドを使用しないので、トークンも不要です。

CONTINUEを押すと設定画面に移ります。

クラウドを使用しないので、最初の項目のSwitchBot Account Infoは未記入で良いです。2番目の、SwitchBot Device Settingsを選択します。すると、新しいデバイスの登録画面になります。

ここで、ADD NEW SWITCHBOT DEVICEをクリックし、Device IDを入力します。これはBluetooth Low EnergyのMACアドレスです。SwitchBotのスマホアプリで「デバイス情報」を見ると6バイトの16進数が書かれているので、これを書き込みます。1バイトごとの区切りのコロンは不要です。IDを書き込むと詳細な選択ができるようになります。ここで、

  • 名前をつける
  • BluetoothMACアドレスを入力する(済み)
  • Device TypeからBotを選ぶ
  • Connection TypeをBLEにする

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

$ bluetoothctl
[bluetooth]# scan on

設定ファイルで確認する

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

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

{
    "name": "SwitchBot",
    "credentials": {
        "notice": "Keep your token a secret!"
    },
        "options": {
        "devices": [
            {
                "deviceId": "C71122334455",
                "configDeviceName": "myBot",
                "configDeviceType": "Bot",
                "connectionType": "BLE"
            }
        ]
    },
    "platform": "SwitchBot"
}

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

/var/lib/homebridge/config.json

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

SwitchBotカーテンをHomeKitで使う

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

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

クラウドサービスを使う場合

HomebridgeからSwitchBotのクラウドサービスを使うことも可能です。SwitchBotの赤外線リモコンを使うためにハブ機能のある製品を買ってある場合、HomebridgeサーバがBLEを持っていない場合、BLEの接続が不安定な場合などは、検討しても良いかもしれません。クラウドサービスを使う場合は、上のステップでスキップしたSwitchBotのトークンを設定に書き込みます。SwitchBotアプリの、設定画面のアプリバージョン を10回タップすると、開発者向けオプションというメニューが現れます。これをクリックするとトークンが表示されます。これをHomebridgeの設定ファイルに書き込みます。