Amazon Echo(Alexa)とIRKitをIFTTTで連携してホームオートメーション
なかなかハマったので軽くまとめておきます。
一年ほど前に Amazon Echo と Google Home のこんなエントリを書きましたが
とうとう日本にも Amazon Echo が発売されましたね!テンション上がってさっそくゲットしました。 ひとまずテレビの電源を Echo で操作するために、もともと持っていた IRKit と Alexa を連携させることにしました。 Alexa の強みはスキルベースでそのスキルを公開できるプラットフォームがあることかと思いますが、 一般ユーザ的にはゼロ開発で簡単に設定できることがとても大事ですよね。 というわけでカスタムスキルも開発も全くなしで Google Home と同じように、 Alexa の IFTTT 連携によって IRKit を操作してみましょう。
必要なものは
- Amazon Echo
Amazon Echo (Newモデル)、チャコール (ファブリック)
- 出版社/メーカー: Amazon
- 発売日: 2017/11/15
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
- dot でも plus でも
- Amazon アカウント
- IRKit
IRKit - iPhone,iPadを使って外出先からエアコン等の家電を操作できる学習リモコン
- 出版社/メーカー: maaash.jp
- メディア: ホーム&キッチン
- この商品を含むブログ (2件) を見る
- IFTTT アカウント
- IFTTT はこちら ifttt.com
になります。ゼロ開発なので AWS Lambda も不要です。
1. Amazon Echo をセットアップする
Alexa の iOS アプリと Android アプリがストアにあるので、そちらに従うとセットアップができます。 Wifi の繋がる PC でセットアップしたい場合、Amazon アカウントが JP (amazon.co.jp) の場合はこちらから http://alexa.amazon.co.jp 、 US (amazon.com) の場合はこちらから http://alexa.amazon.com でもセットアップできます。
僕は iOS アプリでセットアップを行い、何故か初回の Wifi 設定がエラーで ID パスワード 入れ直してもうまくいかなかったのですが、アプリを再起動して最初からやり直したらうまく Wifi に繋がりました。困ったときの再起動。
2. IRKit で赤外線データを取得する
IRKit はそのデバイスだけでなく、パブリックなインターネットから繋がる API を提供しています。これを使うことで IFTTT からおうちの IRKit に指示を送ることができるのです。 IRKit のセットアップも Amazon Echo と同じく定番の方法で、 ストアにある IRKit のアプリに従い Wifi の設定を行うだけです。 赤外線データの取得は公式 http://getirkit.com に丁寧に書かれていますので、よく読みましょう。コマンドに慣れていない人はハマるところかもしれません。
やることをまとめますと、
- IRKit アプリで IRKit を Wifi に接続する
- 例えばテレビの電源の赤外線を記憶させてボタン登録し、スマホからテレビが操作できるか試しておく
- http://getirkit.com に従って IRKit の IP アドレスを特定し、必要な情報を取得する
GET /messages
で表示されたテレビの電源の赤外線のデータをメモしておく- 不安なら
POST /messages
でテレビの電源が操作できるか確認しておく
- 不安なら
POST /keys
でclienttoken
を取得する
- http://getirkit.com に従って IRKit Internet HTTP API で必要な情報を取得する
POST https://api.getirkit.com/1/keys
で上記で取得したclienttoken
を使い、deviceid
とclientkey
を取得してメモしておく
という感じです。 deviceid
と clientkey
と赤外線データは次の IFTTT の設定に使用します。
3. IFTTT に Alexa のトリガーを登録する
IFTTT は様々な Web サービスを連携し、アプレットと呼ばれる "もしこれなら、それをする" というルールを設定することでたくさんのことを実現できるサービスです。アカウントを持ってない人は登録しましょう。
IFTTT には Amazon Alexa の Service https://ifttt.com/amazon_alexa があるのでこれを使います。 また、 IRKit の操作には Webhooks https://ifttt.com/maker_webhooks の Request を使います。 Webhooks はもともと Maker と呼ばれていたものと同一で、 "if this then that" の "if this" の方のトリガーを受け付ける API としても、 "then that" の方の HTTP リクエストを発行する機能としても利用することができます。
ともかく必要なのは
- Amazon Alexa の Service https://ifttt.com/amazon_alexa に連携の設定をする
- Webhooks の Service https://ifttt.com/maker_webhooks に連携の設定をする
- Alexa で テレビの電源をつけるアプレットを登録する
になります。アプレット登録については詳しく説明していきます。
まずは "if this" の部分です。 Alexa を選んでから "Say a specific phrase" を選び、好きなフレーズで操作できるようにします。
今回はテレビの電源なので "テレビ" としておきましょう。もともとの作りが英語用なので大文字の英語は入力できないようになっていますが、日本語は問題ないようです。
続いて then の部分いきましょう。
Webhooks を選んで、 "Make a web request" を選びます。
ここで IRKit で取得した情報を入力します。
- URL:
https://api.getirkit.com/1/messages
https
を使うように気をつける
- Method:
POST
- Content Type:
application/x-www-form-urlencoded
- Body:
clientkey=XXXXXXXXXXXXXXXX&deviceid=YYYYYYYYYYYYYYYY&message={"format":"raw","freq":99,"data":[99999,...]}
clientkey
とdeviceid
は取得した通りmessage
には赤外線データの json を入力
最後はアプレットの名前を入力します。
これで全てできましたね。わくわく!
4. Amazon Echo に話しかける
IFTTT の Amazon Alexa の Service の説明によると "Alexa trigger xxxxxx" と話しかけることで IFTTT に連携できるわけですが、これは英語用の仕様です。 日本語の場合は、どうやら "アレクサ xxxxxx トリガー" や "アレクサ xxxxxx をトリガー" などと言う必要があるようです。 それでは大きな声で
「アレクサ テレビ トリガー!」
「イフトに送信します」と返されて、テレビの電源がついたはずです。 Congratulations!! 他の家電を操作する場合も同じ手順でアプレットを増やしていけば良いです。アプレットを duplicate するボタンがあったような気がしましたが見つからないので My applets から New Applet で一つ一つ登録しましょう...
僕は amazon の US アカウントを IFTTT に設定してしまったために何度も "そんな IFTTT トリガーはありません" と怒られて涙目になりましたが、上記の手順でできます。 なのでうまく動かない場合は、 IRKit 単体で POST リクエストに対してテレビの電源がつくか、 IFTTT で Alexa と Email のアプレットを作って Alexa に "アレクサ テレビ トリガー" と言うとメールが送れられるか、などと一つ一つの動作確認を行うと良いでしょう。
これから快適な Alexa ライフが始まりますね!
余談ですが「アレクサ、面白い話をして」はなかなかクセになって愛着が湧いてきます。「アレクサ、歌を歌って」も洗脳されてきて毎日聴きたくなります。