Amazon Echo Dot(Alexa)とNode-REDで家電をスマートホームに対応させる

最近、Echo(Alexa)をそこそこ使っています。
特にエアコンのオン・オフは便利でおすすめです。
Amazon Echo Dot(Alexa)を活用してみる

 

IFTTT + トリガーの問題点

便利は便利なのですが、 現状は は、IFTTT + トリガーで実行しているため、最後に「トリガー」と言わなければいけませんでした。
 
具体的には、「Alexa エアコンオン トリガー」みたいな感じでした。
すごい不自然です。

Node-RED でスマートホームに対応させる

スマートホームに対応させることで「Alexa エアコンつけて」という感じでとても自然な言い回しになります。
 
通常スマートホームは、家電側が対応していないと利用できないのですが、Node-RED Alexa Home Skill Bridge を利用することで、スマートホームに登録することができます。Alexaの呼び出しをNode-RED側で受けてコマンド実行(今回はcurlでpost)することでiRkitから赤外線を送信し家電を操作することができます。
 

概要図

ざっくりこんな感じ。
Node-REDの実行環境はRaspberry Piを利用しています。
f:id:rochefort:20180214201452p:plain

 

参考

 

やり方ざっくり

細かいやり方は、上記リンクに記載されているので割愛します。

  1. Node-RED Alexa Home Skill Bridgeのエンドポイントにユーザ・デバイス情報の登録
  2. AlexaアプリでスマートホームスキルにNode-REDを追加、アカウントのリンク、デバイスを追加
  3. Node-RED を実行環境(Raspberry Pi)にインストールしデーモンとして実行、Node-REDのフローを作成

Node-RED Alexa Home Skill Bridge

肝は Node-RED Alexa Home Skill Bridge で、ここにデバイスを登録することで、Alexaアプリのスマートホームにデバイスを追加することができ、後述のNode-REDでフローを定義することができます。
なのでユーザ登録およびデバイスの登録が必要です。
 
バイス登録例:
f:id:rochefort:20180214115805p:plain

バイス情報の使われ方

  1. Alexaアプリを通してスマートホームに登録する際にこのエンドポイントの情報を引っ張って来る
  2. Node-REDのノードとエンドポイントのデバイスを紐付ける

 

Node-RED

Node-RED日本ユーザ会

Node-REDはハードウェアデバイス/APIおよびオンラインサービスを接続するためのツールです。

GUIでフローを作成することでイベントドリブンなアプリケーションを作成することができます。すごい便利そう!!

フロー例:
f:id:rochefort:20180214121723p:plain
今回は家電のON/OFFを制御するのみ。
この末端のON/OFFのノードにコマンドを登録します。具体的には、iRKitのAPIを叩くcurlコマンド。

iRKitのcurl は以下参照。

IRKit - Open Source WiFi Connected Infrared Remote Controller

$  curl -i "http://x.x.x.x/messages" -H "X-Requested-With: curl" -d '{"freq":xx,"data":...}'

のような感じで実行できます。
試していないのですが、Node-RED 側でHTTPのRequestも飛ばせるようなので、おそらくそれでも動くと思います。

See Also

Alexa活用術

Siriの場合

同様にHomebridgeを使うことで対応可能です。