今回はちょっと今まで作ってきたレシピ(IFTTT + Homebridge)の組み合わせで簡単で便利なHomeKitボタンを作成することが出来たので、その手順をまとめておきたいと思います。
今までに過去にルンバのHomeKit化については、Homebridgeプラグインを使うことで実現済みではあったんですが、準備されているプラグインだとオン/オフしか対応しておらず、もう少し細かいことまで指定したかったんですよね。
例えばルンバとGoogleホームの組み合わせではこんなにたくさんのコマンドもあります。
こんな感じのことが、こんなのやり方であれば、Siriでも操作できるようになる訳ですよ。
さて早速やっていきましょう。
システム構成と必要なもの
今回はこんな感じの構成になります。HomebridgeとIFTTの組み合わせっていうことですね。
インストール手順
では、早速設定する手順を一つずつ説明していきます。因みにルンバのアカウントは既に作成できているという前提話を進めていきます。
IFTTTをインストールして、Webhooksのレシピを作る
先ずはIFTTTをインストールしていない方は、App Storeからインストールしていきましょう。
IFTTT
IFTTT無料posted withアプリーチ
インストールが完了したら、New Appletの画面から”THIS”をクリックして、Webhooksを選択してください
Receive URLをクリックして、適当な名前を付けてください。このevent nameは後程使うので、メモ帳などにコピーしておいてください。このevent名には、大文字やスペースは使わないようにしてください。
iRobotアカウントとIFTTTを連携させる
次に”THAT”をクリックして、iRobotを選択してください
動作させたいものを選ぶと(例:Start robot)、iRobotの画面が呼び出されて、ログインを求められます。作成済みのiRobotアカウントでログインしましょう
ログインが成功すると、IFTTTの画面に戻るので、もう一度動作させたいものを選び、今回はルンバをスタートさせる画面になるので、動作させたいルンバを選択して、”Create action”をクリック。
“Finish”をクリックして、アプレットの作成は完了となります
WebhooksのURLとKeyをコピーする
IFTTTのホーム画面に戻り、”Discover”からWebhooksサービスを検索してください。(Appletではないので、注意してください)そして、右上の”Documentation”をクリック
”Make a POST or GET web request to:~”に続くURLをメモ帳などにコピーしておいてください
node と npmのインストール
では次にラズパイ側のインストール手順について説明していきたいと思いますが、本手順ではラズパイの初期設定が完了していることを前提として、nodeソフトのインストールから説明しています。ラズパイの初期設定が完了していない場合は、まずは完了させてから本手順を実施してください。
今回nodeはv10.15.0を使用していますが、新しいものにしておけばとりあえずOKだと思いますが、一部のプラグインでは互換性チェックで動作しないこともあります。また新しいものの場合には、インストールしている他のプラグインが動かなくなる可能性もあるので、そこは注意してください。この手順で実施する方であれば、とりあえずはv10.15.0を使うことをお勧めします。
#nvm v10.15.0のインストール
$ nvm install v10.15.0
#インストールされたversionを確認
$ which node
/home/pi/.nvm/versions/node/v10.15.0/bin/node
$ node -v
v10.15.0
#npmの最新版をインストール
$ sudo npm -g install npm@latest
$ npm -v
6.7.0
以下のコマンドを事前に設定しておけば、nodeの現在の使用versionを”current”として指定するできるので今後使うときには結構便利になるのでお勧めです。
#複数のversionをインストールした時のためのシンボリックの自動更新をできるようにしておく
$ echo export NVM_SYMLINK_CURRENT=true >> ~/.bashrc
#.bashrc を再リロードする。
$ source ~/.bashrc
homebridgeのインストール
nodeが準備できたら、次はhomebridgeをインストールします。これは特にversionを指定せずにインストールしていますので、これを参考にした場合にはまたversionが変わっているかもしれません。
#homebridge の依存ライブラリをインストールする。 //以前に実行済の場合はこの手順はスキップ
$ sudo apt-get install libavahi-compat-libdnssd-dev
#homebridgeのインストールを実行します
$ sudo npm install -g --unsafe-perm homebridge
/home/pi/.nvm/versions/node/v10.15.0/bin/homebridge -> /home/pi/.nvm/versions/node/v10.15.0/lib/node_modules/homebridge/bin/homebridg
homebridge-http-webhooksのインストール
それでは、今回使うプラグインになります。今回使うプラグインはルンバ専用というものではなく、どちらかというと今回のようなWebhooksのトリガーに対応したプラグインというものになるので、今後Webhooksを活用したボタンも増やしていくことも可能ということです。
インストール自体はいつも通り以下のコマンドを打つだけです。
$ npm install -g homebridge-http-webhooks
設定ファイルの編集
あとは設定ファイルをルンバ用に作成していくだけですね。config.jsonファイルを以下のような感じで作成していきます。ラズパイのMACアドレスも必要になるので、事前に調べておいてください。
ファイルの以下のコマンドを使う必要があります。Linuxの編集コマンドに慣れないかもしれませんが、慣れれば簡単です。
$ vi ~/.homebridge/config.json
ファイルを開いたら、設定ファイルを編集していくのですが、ここで追加していくボタンは自分がなんのボタンを追加したいかによって数が変わってくるので、そこを注意してください。
気をつけて欲しいところは、”name”の部分と”push_url”の部分になります。
- “name”の部分に、 IFTTTのwebhooksで設定していたevent nameを入れる
- “push_url”の部分には、IFTTTのwebhooksの手順の際にメモした”Make a POST or GET web request to:~”に続くURLを使って、{event}部分を1のevent nameに差し替える
つまりは、”https://maker.ifttt.com/trigger/start_roomba/with/key/your-key-abcd”のような感じになるはずです。
以下に参考までに我が家の場合の設定ファイルを書いておきます。
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30", #ラズパイのMACアドレスに差し替える
"port": 51826,
"pin": "031-45-154"
},
"platforms": [
{
"platform": "HttpWebHooks",
"webhook_port": "51828",
"cache_directory": "/home/pi/.node-persist/storage",
"pushbuttons": [
{
"id": "pushbutton1",
"name": "start roomba", #掃除を開始する
"push_url": "https://maker.ifttt.com/trigger/start_roomba/with/key/your-key-abcd",
"push_method": "POST"
},
{
"id": "pushbutton2",
"name": "stop roomba", #掃除を終了する
"push_url": "https://maker.ifttt.com/trigger/stop_roomba/with/key/your-key-abcd",
"push_method": "POST"
},
{
"id": "pushbutton3",
"name": "dock roomba", #ルンバをホームに戻す
"push_url": "https://maker.ifttt.com/trigger/dock_roomba/with/key/your-key-abcd",
"push_method": "POST"
},
{
"id": "pushbutton4",
"name": "Pause roomba", #ルンバを一時停止させる
"push_url": "https://maker.ifttt.com/trigger/pause_roomba/with/key/your-key-abcd",
"push_method": "POST"
},
{
"id": "pushbutton5",
"name": "Clean bedroom", #寝室だけを掃除させる
"push_url": "https://maker.ifttt.com/trigger/clean_bedroom/with/key/your-key-abcd",
"push_method": "POST"
},
{
"id": "pushbutton6",
"name": "Clean dining", #ダイニングだけを掃除させる
"push_url": "https://maker.ifttt.com/trigger/clean_dining/with/key/your-key-abcd",
"push_method": "POST"
},
{
"id": "pushbutton7",
"name": "Clean living", #リビングだけを掃除させる
"push_url": "https://maker.ifttt.com/trigger/clean_living/with/key/your-key-abcd",
"push_method": "POST"
}
]
}
因みにもし以下のようなエラーが出る場合には、ディレクトリのパーミッションが間違っている可能性があります。
/home/pi/.nvm/versions/node/v10.15.0/lib/node_modules/homebridge-http-webhooks/node_modules/mkdirp/index.js:90
4月 14 22:10:21 raspberrypi systemd[1]: homebridge.service: Main process exited, code=exited, status=1/FAILURE
4月 14 22:10:21 raspberrypi systemd[1]: homebridge.service: Unit entered failed state.
4月 14 22:10:21 raspberrypi systemd[1]: homebridge.service: Failed with result 'exit-code'.
Systemdでのみ、このようなエラーが出る場合には、homebridge.serviceを実行しているユーザーが、”cache_directory”へのパーミッションを持っていない可能性があります。
もしそうであれば、以下のコマンド入力しておけば、とりあえずは直ると思います。根本的にはsystemdの実行ユーザーの権限を見直しましょう。
$ chmod -R 777 /home/pi/.node-persist
起動確認
あとはhomebridgeを起動してみて、エラーなどが出ないことを確認して、起動が無事確認できれば、Apple Homekit化の成功となります。
# homebridgeの起動確認
$ homebridge
# homebridgeのサービス起動
$ systemctl start homebridge
初めてのhomebridgeを作成の場合にはiPhoneへのアクセサリ登録が必要になります。homebridgeのコマンドを打つと以下のような画面が出てくると思いますので、これをアプリで読み取ってください。
最後に
さて、どんな感じになったかというと、こんな感じになりました。
これでApple homekit/Siriで完全ルンバを操作できるようになったと言っても過言ではないでしょう。我が家では特にルンバをホームに戻す時にSiriを活用できています。あとはせっかくのスマートマッピングの機能があるので、部屋を指定してルンバに掃除させることができると愛着が更に湧きますよね笑
今までGoogleやAlexaでしか出来なかった操作ですが、今回の方法であれば完全にSiriで同じことができるようになりますので、今まで諦めていた方は少しLinuxっぽい知識は必要になりますが、慣れてしまえばそこまで難しくはないので、是非試してみてくださいね。
コメント