ガジェット考察

とあるメーカーの若手ハードウェアエンジニア。スマホなどのガジェットやアプリの考察、たまに雑記など。

Node-REDを用いてRaspberry PiとAmazon Alexaを連携させる方法

 

f:id:kodawarism:20180307000152j:plain
bleedingcode.com

 

公開日:2018/03/07

 

今回は、Node-REDを用いてRaspberry PiAmazon Alexaを連携させる方法をご紹介します。これらを連携させることで、「スマートホームスキル」で様々な指示を出すことができます*1。また、Raspberry Piを経由させますので、Amazon Alexaに特定のプログラムのトリガーをかけさせるなど、様々な動作ができるようになります。

 

Raspberry PiAmazon Alexaの連携

環境

Rasperry Pi:Raspberry Pi 3 model B(Raspbian Jessie)

母艦PC:Macbook Air macOS Sierra

その他:Raspberry PiにはSSHVNC導入済み

 

Raspberry Piの初期設定はこちらから

kodawarism.hatenablog.jp

 

 

Raspberry PiにNode REDを導入

Raspberry PiAmazon Alexaの連携にはNode-REDを使用します。Node-REDは2015年11月以降のRasspbian Jessieのフルイメージにはプリインストールされています。私は先日Raspberry Piを購入してRaspbianをインストールしたばかりですので、今回はプリインストールされている前提で勧めます。まずは下記のコマンドを実行しNode-REDをアップデートします。

$ update-nodejs-and-nodered

コマンドを実行したらアップデートするか聞いてくるので「y」で進めてください。進めると次のような画面が表示され、暫く待つとアップデートが完了します。

f:id:kodawarism:20180227004741j:plain

もし、2015年11月以前のRaspbianや、フルイメージではない場合、Raspberry PiへのNode-REDのインストールには下記のサイトを参考にするとよいです。

 

インストールができたら下記のコマンドをでNode-REDを起動します。

$ nodered-start

これでNode-REDが動き出します。Raspberry Piと同一のネットワークにあるPCのブラウザから「http://Raspberry Piのローカルアドレス:1880」にアクセスします。

f:id:kodawarism:20180227235030j:plain

このような画面が表示されればOKです。

 

Alexa Home Skill Bridgeに登録

次にAlexa Home Skill Bridgeに登録を行います。Alexa Home Skill Bridgeは文字通りNode-REDとAlexa Home Skillの架け橋となるサービスです。まずは下記のページにアクセスします。 

f:id:kodawarism:20180227002831j:plain

まずはResisterを選択します。

f:id:kodawarism:20180227233510j:plain

次にUsername、Email、Passwordを入力します。ここで入力した値は後でAmazon Alexaアプリで使いますので覚えておいてください。入力できたらResisterをクリックしてください。

f:id:kodawarism:20180227233647j:plain

登録できたらDevicesでデバイスを登録します。Devicesを開き、Add Deviceをクリックします。

f:id:kodawarism:20180227234120j:plain

ポップアップされた画面を埋めていきます。

  • Name:Alexaに指示する時のデバイス
  • Deispciption:動作の説明(なんでもいいです)
  • Actions:どういったアクションをさせるか(On/Off/温度設定/照明の色設定等)

ここでは例としてテレビのOn/Offを行えるようにするという前提で進めていきます。 上のように入力できたら「OK」を押し、デバイスの登録を完了します。

 

Alexaにスキルをインストール

次にAlexaにNode-REDのスキルをインストールします。Amazon Alexaアプリを開き、メニューからスキルを選択します。

f:id:kodawarism:20180306233301j:plain
f:id:kodawarism:20180306233731j:plain

検索から「node-red」を検索し、スキルを有効にします。有効にしたらアカウント認証を求められますので先程作成したアカウントを入力します。アカウントがリンクできたらスマートホームバイスをAlexaに探してもらいます。

f:id:kodawarism:20180306234020j:plain
f:id:kodawarism:20180306234023j:plain
f:id:kodawarism:20180306234026j:plain

「設定 > スマートホーム > デバイスを追加」とたどるか、Alexaに「Alexa、スマートホームバイスを探して」とお願いします。しばらくすると先程作成した「テレビ」がスマートホームに追加されるはずです。これでAlexa側の準備は完了です。

 

 

Raspberry PiのNode-REDにAlexa Home Skill Bridgeを導入

さて、Raspberry PiAmazon Alexaを連携させる肝となる、Node-RED Alexa Home Skill Bridgeを導入します。これを導入することで、AlexaとNode-REDを連携させることができるようになります。 

f:id:kodawarism:20180306225815j:plain

まずはRaspberry Piで起動しているNode-REDにアクセスし、右のハンバーガーメニューからパレットの管理を選択します。

f:id:kodawarism:20180306230411j:plain

「ノードを追加」タブに移動し、「node-red-contrib-alexa-home-skill」を検索します。ヒットしたノードを追加します。すると左に並んでいるノードに「alexa」が追加されます。

f:id:kodawarism:20180306230925j:plain

追加されたノードの中から、「Alexa Home」をフローにドラッグ・アンド・ドロップします。フローに配置した「Alexa Home」ノードをダブルクリックしてノード編集画面を出し、Accountの編集マークをクリックします。

f:id:kodawarism:20180306231330j:plain

アカウント入力画面が出ますので先程作成したアカウントを入力します。完了したら「追加」を選択します。

f:id:kodawarism:20180306231626j:plain

うまく連携できていればAccountにアカウント名が表示されます。Deviceの更新マークをクリックして先程作成した「テレビ」が出てくればOKです。ここまでできたらテストしてみましょう。

f:id:kodawarism:20180306232320j:plain

ノードにデバッグがあるのでそれと「Alexa Home」をつなぎ、デプロイします。デプロイが完了したらデバッグタブを開き、Alexaに下記の通り指示してみてください。

  • 「Alexa、テレビつけて」
  • 「Alexa、テレビ消して」

f:id:kodawarism:20180306232526j:plain

うまくいっていれば画像のように「つけて」のタイミングで「True」が、「消して」のタイミングで「False」が表示されます。

 

 

まとめ

さて、今回はRaspberry Piを用いてNode-REDとAlexaを連携させました。中々ややこしい手順ですが地道にこなしていけば無理なくたどり着けると思います。今回はデバッグノードを使って動作の確認しかしていませんが、ここにシェルスクリプトなどを仕込めばかなりのことがAlexa経由で可能となります。

 

 

栄光の架橋

栄光の架橋

 

 

はじめてのNode‐RED (I・O BOOKS)

はじめてのNode‐RED (I・O BOOKS)

 

*1:通常のカスタムスキルでは「Alexa、〇〇で▲▲して」というように◯◯の部分が必要になりますが、スマートホームスキルを使うことで◯◯を言わずにAlexaに指示することができます。(例えば「Alexa、テレビ付けて」や「Alexa、4chつけて」など)