Google HomeとeRemoteを使って家電を音声操作する(前編)

Google HomeとeRemoteを使って家電を音声操作する(前編)

家電を携帯のアプリから操作できて便利なeRemote。昨年の夏から使っていたわけですが、最近携帯をiPhoneからAndroidに変更し、そのAndroid端末にeRemoteを操作するためのアプリ(eHome)をインストールして使おうとすると、デバイスが認識されずセットアップできませんでした。他の人も同様の不具合を指摘しており、改善もしばらくされなさそうだったので、ネットの情報を参考に自分で作ってみよー、ついでにGoogle Homeから家電を音声操作できるようにしてみよーと思い立ち、作ってみました。

システム概要

Google HomeとeRemoteを持っていることが前提です。(合わせて1万円くらい。)あとはPCですね。eRemoteのアプリが正しく動けば専用のサーバでGoogle AssistantとeRemoteを連携してくれるのですが、今回はその連携をIFTTT経由のSlackと自前PCで行う、というイメージです。IFTTT経由でSlackを使うことで、グローバルIPが不要となり一般家庭のネット環境に対応できます。

設定手順

  1. eRemoteのセットアップ
    (参考:スマートリモコン eRemote mini をAmazon Echo で使えるようにするの手順10まで)
  2. PCでeRemoteを操作する
  3. SlackでeRemoteを操作する
  4. GoogleHomeでeRemoteを操作する

PCでeRemoteを操作する

hubotのインストール

まず、PCにhubotというGitHub製のbotをインストールします。最近では様々なSNSやチャットツールでそれ専用のbotを作成することができますが(例えばTwitterのbotを作るならtwittbot)、hubotは⁠アダプタを切り替えるだけで多くのチャットツールに対応させることができる、いわゆるbotを作成する汎用的なフレームワークです。また、Node.jsが動く環境ならnpmを使って簡単に導入できることも特徴です。これを使うことで、slackにコマンドを入力すればeRemoteを動かせるようになります。

$ sudo npm install -g yo generator-hubot
$ mkdir homebot
$ cd homebot
$ yo hubot
? Owner          # デフォルトのままでOK
? Bot name       # 「homebot」と入力
? Description
? Bot adapter    # 「slack」と入力

redisのインストール

赤外線信号を登録するためにredisをインストールします。

$ brew install redis
$ brew services start redis

hubotの起動

$ bin/hubot

上記コマンドを入力すると、以下警告やエラーが表示されます。が、herokuまわりのエラーなので今回のケースでは無視しても問題ありませんでした。解決したい方は、以下のようにしてください。これで、hubotの設定は完了です。

 $ npm install coffee-script@^1.12.6    # coffee-scriptをインストール
 $ rm hubot-scripts.json                # 不要なファイルを削除
 $ vi external-scripts.json             # heroku用の設定を削除
 [
              :
    "hubot-heroku-keepalive",           # この1行を削除
              :
 ]

hubotからeRemoteを操作できるよう拡張

 $ cd ~/homebot                      # hubotのディレクトリに移動
 $ npm install hubot-broadlink-rm    # eRemoteを使うための拡張スクリプトをインストール
 $ nano external-scripts.json        # この拡張スクリプトを使う旨を、external-scripts.json に明記
 [
   "hubot-broadlink-rm",             # この1行を追加
             :
 ]

hubotで赤外線信号を学習

実際に、hubotを起動して、照明をonする赤外線を学習してみます。

$ bin/hubot
homebot> homebot learn light:on       # 今から受信する赤外線データに「light:on」という名前で覚えるように指示
homebot> ready light:on               # 〔homebotからの返事〕eRemote が赤外線を受信できる状態になった
                                      # 照明のリモコンの「点灯ボタン」を押すと、、、
set light:on to 123rwttg4...gajgejga  # 〔homebotからの返事〕学習完了

学習した信号をeRemoteに発信させる

homebot> homebot send light:on        # 「light:on」の赤外線データを発信するように指示
homebot> sent light:on                # 〔homebotからの返事〕発信完了

上記のようなやり方で、他の信号も学習させることが可能です。
一旦、前編はここまでとして、続きは後編に記載していきます。