記事内容が古くなったため、こちらの記事「SwitchBotデバイスをHub Mini無しでホームアプリから操作する方法【Homebridge】」をチェック願います。
どうも、CHASUKEです。
SwitchBotと言えば、物理的な壁スイッチなどのスマート化できる便利なアイテムですが、現状、HomeKitには正式対応していません。
しかし、ある方法を使えば、SwitchBotを「HomeKit」に対応させることが可能です。
今回はその方法を紹介していきます。

SwitchBotには、Bluetoothを使ったAPIが公開されてます。以前、このAPI経由でSwitchBotを操作する「Pythonスクリプト」を紹介しました。
-
SwitchBot(スイッチボット)をラズパイ経由で遠隔操作する方法
上記APIを元に作られている、Homebridgeプラグイン「homebridge-switchbot」を使うことで、SwitchBotをHomeKitに対応させることが可能です。今回は、ラズパイにHomebridgeをインストールし、このプラグインを使う方法を紹介していきます。
プラグイン作成者@nkym37様に感謝。
既にHomebridgeがインストール済みの場合、「SwitchBotプラグインをインストール」からお読みください
Homebridgeとは?
Homebridge(ホームブリッジ)とは、ホームネット上でHomeKitAPIをエミュレート実行できるNode.jsサーバーのこと
このHomebridgeを使ってサーバを自宅に作れば、あたかもSwitchBotがHomeKitに対応したかのようにできます。
今回は、ラズベリーパイ (通称ラズパイ)をサーバにして、Appleのホームアプリで操作します!

必要なもの
Apple端末(ホームアプリ)
今回の目的は、SwitchBotのHomeKit化。
当たり前ですが、ホームアプリが使えるApple端末が必要です。

ラズベリーパイ一式
ラズパイ本体の他にも、SDカードや電源ケーブルなど付属品が必要となるので、これから用意するならスターターキットがおすすめ。
最新はラズベリーパイ4です。これからラズパイを使い倒すなら、最新モデルがオススメです。
ラズパイ4は技適取得済み(2019/9/29)です
しかし、旧モデルより大幅スペックUPに伴い、セットで1万円オーバーです。もし、Homebridgeを試すだけなら、旧モデルのラズパイ3B+で十分です。ラズパイZEROでもイケると思います。
今回は、ラズベリーパイ3B+に「Raspberry Stretch with desktop」をインストールしたものを使いました。

SwitchBotボット
今回の主役です。
通常、外出先から遠隔操作するにはSwitchBotハブが必要になりますが、ラズパイが代わりになってくれます。

必要ライブラリのインストール作業
さて、ここからラズパイの設定。
ラズパイのターミナルを開いて、必要ライブラリを初期設定済みのラズベリーパイにインストールしていきます。
少し前にセットアップしたので、バージョンが古いかもしれません。

事前準備
設定していく前に、パッケージの最新化をしておきましょう。
コマンド
$ sudo apt-get update
$ sudo apt-get upgrade
Node.jsのインストール
Homebridgeは、Node.jsサーバなので必要。
▼偶数が安定バージョンなので、8系をインストールしてます。
コマンド
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install -y nodejs
▼実施後の各種バージョンはこんな感じ。
コマンド
$ nodejs -v
v8.11.3
$ npm -v
5.6.0
gatttoolをインストール
ラズパイのBluetooth通信を使うために必要になります。
とは言っても、ラズパイは標準インストールされているため、確認だけしておきましょ。
▼こんな風に出ればOK。
コマンド
$ gatttool
Usage:
gatttool [OPTION...]
Homebridgeのインストール
Homebridgeをラズパイにインストールする。
コマンド
$ sudo npm install -g --unsafe-perm homebridge
正常にインストールできたら、下記コマンドでサーバを起動させ、QRコードやHomeKit設定コードがターミナル上に表示されることを確認しましょう。
コマンド
$ homebridge
これが表示されれば成功。
以降設定が続くので、とりあえず「cntrol + c」でサーバ停止しておきましょう。
SwitchBotプラグインをインストール
Homebridgeのプラグインを追加します。
冒頭にも書きましたが「homebridge-switchbot」を利用しています。
▼インストールコマンドはこちら。
コマンド
$ sudo npm install -g homebridge-switchbot
こちらのプラグインで使えるのは、以下のようなプッシュ/プル操作のみ。ご注意ください。
設定ファイルを編集
ここまで完了すると、「/home/pi/.homebridge」が作成されているはず。
このディレクトリ配下に設定ファイル「config.json」を作成することで、SwitchBotのHomeKit対応は完了します。
config.jsonの編集
中身はこんな感じでイケると思います。
{
"bridge": {
"name": "Homebridge",
"username": "XX:XX:XX:XX:XX:XX",
"port": 51826,
"pin": "031-45-154"
},
"description": "SwitchBot Control",
"accessories": [
{
"accessory": "SwitchBot",
"name": "Wall Switch",
"macAddress": "xx:xx:xx:xx:xx:xx"
}
]
}
macAddressの設定方法
設定ファイル内にある「macAddress」の項目は、SwitchBotアプリから確認できます。
▼対象のSwitchBotの設定ボタンを押す。
これで、MACアドレスを簡単に特定できます。
Appleホームアプリに登録する
最後の仕上げです。
これまで、設定してきたHomebridgeサーバを再度起動させます。設定ファイルが読み込まれ、エラーが表示されずに、QRコードやHomeKit設定コードが表示されれば、成功です。
▼ホームアプリを開いて、アクセサリ登録しましょう。
サーバを停止するとホームアプリから応答しなくなるので、常時起動しておく必要があります
ホームアプリからSwitchBotを操作してみた
こちらのが反応が早い気がしますねー。
SwitchBotの近くにサーバにしたラズパイを設置しておく必要があります。
Bluetoothが届く範囲でOKなので、隣の部屋でも大丈夫でした。
たまに失敗することも..
ホームアプリ側でスイッチの現在状態までわからない。なので、実際の状態とホームアプリでズレることがあります。
そうなると、こんな感じで「ビックリマーク」が出て失敗します。
この場合、何度かアイコンをポチポチしてると正常に戻ります。
ホームハブで外出先からも操作可能
通常は、外出先からSwitchBotを操作するためには、SwitchBot Hubが必要です。
けれど、今回のHomebridgeを使えば、ラズパイがハブの代わりになります。
▼ただし、Apple TVなどのホームハブが必要となります。
-
AppleTVをホームハブとしてHomekitデバイスを外出先から操作する方法
続きを見る
最後に
SwitchBotをAppleのホームアプリから操作できるようにしました。
たまに出る「ビックリマーク」が厄介なものの、比較的反応も良く便利に使えています。
Appleユーザ × SwitchBotユーザさんには、オススメですね。
▼今回のSwitchBot以外にも、Homebridgeネタを書いてますので是非チェックしてみてください。
それではまた。