声だけで明かりとエアコンをつけられるようにしたかった
似た記事はいっぱい転がっていますが,実際に試した時に記事ごとに情報が断片的であると感じたため,自分が引っかかったところの備忘録・一から十までの手引書としてこのメモを書き下しています.下の方法を使うと,特にIFTTT/RM Bridge以外のスキル依存なく赤外線で制御できるあらゆる家電の音声駆動が行えるようになります.
使ったもの
- Amazon Echo (音声インターフェイス.IFTTTのトリガ)
- RM mini3 (赤外線モジュール)
- 余っていたAndroidタブレット (Webサーバ.赤外線モジュールの駆動)
- IFTTT (Alexaからのリクエストを受けてAndroidサーバのエンドポイントを叩く)
Androidは以前タダでもらったものだったので,かかった費用はリモコン代1000円ちょっとのみ.
手順
-
Echoのセットアップ(省略)
-
RM mini3のセットアップ
- スマホでe-controlを開く.wifiに接続した状態でRMデバイスを検索する.
ヒットすると,接続成功の可否に関わらずRM mini端末がLANに接続される.アプリ上ではここまでやればok. - RM miniのMACアドレスがコンソール上でわかるのでメモしておく
- スマホでe-controlを開く.wifiに接続した状態でRMデバイスを検索する.
-
Androidタブレット(サーバ)のセットアップ
- DHCPサーバ上で,固定IPアドレスを割当(実行のたびにIPアドレスが変わらないようにするため)
- RM Bridgeアプリをインストール -> startボタンを押すと,localhost:7474が解放
-
RM Bridgeのセットアップ
- PCでhttp://rm-bridge.fun2code.de/rm_manage/code_learning.htmlにアクセス
- Set RM Bridge Addressにて,先ほど固定したサーバのIPアドレス・ポートを入力
- Load Devicesで赤外線モジュールを検索.見つからない場合は,さきほどメモったMACアドレスを直接入力(自分はこちら)
- URLに乗る信号id(lightonなど)を決定
- Learn Codeボタンを押し,5秒以内に覚えさせたい信号をRM miniに送る
- 生成されたURLを叩くと,学習した信号をRM miniから送れるようになる.実際に意図通りの挙動をしたら成功.
- RM miniの赤外線到達距離は~8mらしいが,距離・障害物に対してはシビアなので成功するまで辛抱強く繰り返す
- カメラで確認したところ,背面(電源ポートなどがある方)から赤外線が強く出ているっぽい
-
ngrokのセットアップ
- android常にngrok(ARM用)をダウンロード・termux(ターミナル)をPlayストアからダウンロード
- unzipし,ngrokに実行権限をつける
-
$ ./ngrok http 7474
でグローバルアドレスがlocalhost:7474と紐づく.したがってIFTTTのwebhookで呼び出せるようになる.
-
IFTTTのセットアップ
- alexaにて,自分のamazonアカウントを登録して,EchoとIFTTTアカウントを紐づける
- new applet -> +Thisにalexaの
say specific phrase
を選択- フレーズは半角でと書いてあるが,わかりやすい日本語でok.「ライト」など.
- +ThenにWebhookを選択,サーバのエンドポイントを記入(hogehoge.ngrok.io/code/lighton)
詰まるとすると赤外線リモコンの学習が失敗するところか,Webインターフェイスが機能しないところかなと思います.それぞれ
- そもそも赤外線が出ているかカメラで確認する/対象家電を近づける
- ngrokのコンソール/IFTTTの実行履歴を見つつデバッグ
をすることで自分は解決できました.
感想
自分の場合はEcho・IFTTTの設定が住んだところから初めて,明かりのonoffができるまで3時間半程度必要でした.Echoと合わせて一万円と数時間の投資でここまで生活が便利になるのは素晴らしいと思います.
ただ,まだ洗練されていない点は結構あると思います
- Amazon Echo自体に赤外線・httpリクエスト機能が付いていればこの記事に書いた手順はほとんど不要である
- IFTTT経由の音声インターフェイスが非直感的になる(「アレクサ,~~~をトリガー」 で動いてくれるが,なんでこんな気持ち悪い仕組みにしているのか理解できない)
とくに音声インターフェイスは直接使用感に関わるので,ぜひコマンド形式ももっと自由にいじれるようにしてほしいです.