[ガジェット] Google HomeとRM mini3を使ってSlack経由でエアコンを操作する

Google Homeからエアコンを操作するためにRM mini3を買いました。 Amazonだと日本の代理店が販売しているものと、そうでないものがありますが安い方で十分です。 色々な方法で連携できるみたいですが、僕はRaspberrypiとIFTTTとSlackで連携して実現しました。 環境 * Google Home mini * Raspberry pi (Wheezy) ## RM mini3のセットアップ e-controlアプリでセットアップします。 設定するiPhoneも2.4GのWiFiに設定していないといつまでたっても設定できないので注意してください。 ## RM mini3をRaspberry piから操作できるようにする ググると色々な方法がありますが、Raspberry piのコマンドラインから操作できるようにするのがいちばん導入しやすくてやり易かったです。 [英語のページ](https://alexbelle.wordpress.com/2017/05/24/how-to-control-ibroadlink-rm-mini-3-from-raspberry-pi-or-ubuntu-16-04-lts)しか情報がなかったので、やり方を紹介します。 ### Python Broadlinkの導入 下記のコマンドをRaspberry pi上で叩きます。 ```bash $ cd ~ $ mkdir rm3 $ sudo apt-get -y install python-dev $ sudo apt-get -y install python-pip $ sudo apt-get -y install git $ git clone https://github.com/mjg59/python-broadlink.git $ cd python-broadlink/ $ sudo python -m pip install pycrypto $ sudo python -m pip install netaddr $ wget https://bootstrap.pypa.io/get-pip.py $ sudo python setup.py install ``` python-broadlink/cliフォルダにコマンドがあります。 それぞれ下記の用途で使います。 * broadlink_discover RM mini3を探すコマンド * broadlink_cli RM mini3にコマンドを送る #### ネットワーク上のRM mini3を検索する ```bash $ ./broadlink_discovery discover ########################################### RM2 # broadlink_cli --type 0x2712 --host 192.168.1.103 --mac aabbccddeeff Device file data (to be used with --device @filename in broadlink_cli) : 0x2712 192.168.1.103 aabbccddeeff temperature = 0.0 ``` --type 0x2712 --host 192.168.1.103 --mac aabbccddeeff の部分をbroadlink_cliコマンドを実行する際に使うので覚えておきます。 #### 機器を操作するためのリモコン信号をキャプチャする broadlink_cliコマンドを使います。 コマンドを叩いた後、リモコンをRM mini3に向けてボタンを押すとコマンドファイルが作成されます。 ```bash $ ./broadlink_cli --type 0x2712 --host 192.168.1.103 --mac aabbccddeeff --learnfile Aircon.on Learning... (ここでRM mini3に対してリモコンでボタンを押します。) Saving to Aircon.on ``` Aircon.onと言うファイルができていると思います。 #### キャプチャしたリモコン信号を送る ```bash $ ./broadlink_cli --type 0x2712 --host 192.168.1.103 --mac aabbccddeeff --send @Aircon.on ``` これで先ほどキャプチャして信号が送信されます。 ここまでくればすでに導入済みのHubotから直接操作する事ができました。 ##### 2018.01.08 追記 Aircon.onの前に'@'が必要でしたので修正しました。 ## Google HomeとIFTTTで連携させる ここからが本番です。 IFTTTからSlackに投稿して(Hubotにダイレクトメッセージ)Hubot経由でRM mini3のコマンドを実行させます。 この方法なら自宅のネットワークに穴を開ける必要もないのでお手軽です。 ### IFTTTのページでSlackへの投稿を作成する [このページ](https://kotodama.today/?p=855)を参考にSlackに投稿させるアプレットを作成します。 ポイントは"Say a simple phrase"を選択して、thatにslackへの投稿を指定することです。 また、後述しますがデフォルトだとボットの投稿に対してボットが反応しません。 (無限ループに陥らないようにする為だと思います) Google HomeにSlackに投稿させるコマンドはユニークな物にしておくのが良いです。 私は"ifttt_aricon_on"などのように投稿させることにしました。 [IFTTTのページ](https://ifttt.com/discover) GoogleHomeがどのように聞いているかなどは[マイアクティビティ](https://myactivity.google.com/item?restrict=assist&embedded=1&utm_source=opa&utm_medium=er&utm_campaign=&authuser=1)から確認する事ができます。 ### Slackの投稿をHubotで受け取って処理を行う デフォルトではボットの投稿を無視してしまうので、catchAllで全てのメッセージを受け取ってから処理を行う必要があります。 [ここの情報](https://shoya.io/blog/hubot_listens_webhook/)が役に立ちました。 これで我が家のエアコンもGoogle Homeから操作できるようになりました。

2 件のコメント :

  1. やりたいことにドンピシャだったので参考にさせていただきました。

    ただ一部、そのままでは私の環境で動作しなかったので報告します。
    ./broadlink_cli --type 0x2712 --host 192.168.1.103 --mac aabbccddeeff --send Aircon.on
    とありますが、
    ./broadlink_cli --type 0x2712 --host 192.168.1.103 --mac aabbccddeeff --send @Aircon.on

    @Aircon.onと、アットマークが必要でした。細かいことですが、一応。

    返信削除
  2. ご指摘ありがとうございます。
    ブロブの方も修正しました。

    返信削除