Google HomeとeRemoteを使って家電を音声操作する(前編)
- 2019.01.06
- IoT
- eRemote, Google Home
家電を携帯のアプリから操作できて便利なeRemote。昨年の夏から使っていたわけですが、最近携帯をiPhoneからAndroidに変更し、そのAndroid端末にeRemoteを操作するためのアプリ(eHome)をインストールして使おうとすると、デバイスが認識されずセットアップできませんでした。他の人も同様の不具合を指摘しており、改善もしばらくされなさそうだったので、ネットの情報を参考に自分で作ってみよー、ついでにGoogle Homeから家電を音声操作できるようにしてみよーと思い立ち、作ってみました。
システム概要
Google HomeとeRemoteを持っていることが前提です。(合わせて1万円くらい。)あとはPCですね。eRemoteのアプリが正しく動けば専用のサーバでGoogle AssistantとeRemoteを連携してくれるのですが、今回はその連携をIFTTT経由のSlackと自前PCで行う、というイメージです。IFTTT経由でSlackを使うことで、グローバルIPが不要となり一般家庭のネット環境に対応できます。
設定手順
- eRemoteのセットアップ
(参考:スマートリモコン eRemote mini をAmazon Echo で使えるようにするの手順10まで) - PCでeRemoteを操作する
- SlackでeRemoteを操作する
- 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からの返事〕発信完了
上記のようなやり方で、他の信号も学習させることが可能です。
一旦、前編はここまでとして、続きは後編に記載していきます。
-
前の記事
LaravelのSocialiteとPassportを使ってWeb APIの認証機能を実装した話 2018.08.30
-
次の記事
DockerでJupyterLabを起動してグラフを表示する 2019.05.26