Edited at

Node-RED Alexa Home Skill Bridgeを設定する[On Onion Omega2+]

More than 1 year has passed since last update.



前回、node-red-contrib-alexa-home-skill のインストールまで完了しました。

今回は、Node-RED Alexa Home Skill Bridge の設定を行い、Node-Red に Alexa ノードを登録するところまで、やってみたいと思います。

やることは、以下の4つです。

尚、赤外線リモコンを実際操作する部分は、次のフェーズでやる予定です。



  1. Node-RED Alexa Home Skill Bridgeでアカウントを作成する。

  2. 制御するデバイスを作成する。

  3. Alexaスキル「Node-Red」を追加し、アカウントをリンクする。

  4. Node-Red でフローを作成する。


0. 前提条件


  • Onion Omega2 Plus


    • BusyBox v1.26.2

    • Ω-ware: 0.1.10 b160

    • Linux 4.4.46 mipsel LE



  • 2GB Micro-SD Card


    • パーティション2分割


      • 512MB=スワップ、残り=システム領域





  • Omega2拡張ドック

  • Node.js version: v4.3.1

  • Node-RED version: v0.18.4

  • node-red-contrib-alexa-home-skillインストール済み


1. アカウントの作成

Alexa(Amazon Echo Dot)と Node-Red にインストールした node-red-contrib-alexa-home-skill を連携させるには、Node-RED Alexa Home Skill Bridgeにアカウントを作成する必要があります。

アカウント作成はこちらでできます。


2. 制御デバイスの追加

アカウントを登録したら、ログインします。

[Devices]タブから、制御するデバイスを登録します。

とりあえず、以下で追加してみました。

項目

Name
リビングライト

Description
リビングのライト

Actions
On, Off, +%, -%をチェック

Application Type
LIGHTをチェック

「リビングライト」が登録されました。


3. Alexaスキル「Node-Red」の追加とアカウントリンク

スマホやタブレットの Amazon AlexaアプリでAlexaスキル「Node-Red」スキルを追加・有効化します。

※PCからも「https://alexa.amazon.co.jp」でできると思います。

有効化の際に、Node-RED Alexa Home Skill Bridgeで作成したアカウントとのリンクを要求されますので、ユーザ名とパスワードを入力して、認証します。

認証が終わると、デバイスの検出を促す画面がでるので、デバイスの検出を行います。

検出ができたら、以下のようにスマートホーム画面に、Node-RED Alexa Home Skill Bridge で作成した「リビングライト」が表示されます。

実は、ここにたどり着くのに2つ問題がありました。

1つ目は、アカウントリンクできない問題でした。

ユーザとパスワード入力後、アカウントリンクが完了せず、Alexaスキルの「Node-Red」が有効化されない状態でした。私がアカウント作成したのは、半年くらい前で、Raspberry-Piで試行していた際に作成してから、使っていない期間が結構ありました。何が原因かわかりませんでしたが、新たなアカウントを作成して、そのアカウントでリンクをかけたら上手くいきました。

2つ目は、アカウントの問題解決後、今度は、デバイスの検出で何も検出されないという問題が発生しました。何度やってもダメで、最後に、Node-RED Alexa Home Skill Bridge でのデバイス登録を、英語の名称(Name)で登録してみました(Descriptionも適当に英語で入力、日本語のデバイスは残したまま)。なんと、これで解決できました。

尚、その後は、日本語のみのデバイス登録も問題ありません。こちらも原因不明です。


4. Node-Red フロー作成と接続確認

ノードの一覧でフローを作成して、Alexaとの接続確認を行います。


フロー作成

まず、ノード一覧から、「alexa home」と「debug」をフローペインにドラッグして、2つを接続します。

「Alexa Home」をダブルクリックすると、「Account」、「Device」を設定する画面が表示されるので、「Account」の設定に Node-RED Alexa Home Skill Bridge のアカウント情報を入力します。

入力後、「Device」部分の更新ボタンを押すと、デバイスが選択可能になりますので、デバイス「リビングライト」を選択し、「完了」ボタンで設定画面を閉じます。

これで、接続確認用のフローが完成しました。

このフローを「デプロイ」ボタンでデプロイします。

デプロイ時にエラーメッセージが出力される場合がありますが、無視しても大丈夫っぽいです(タイミングの問題?)。


Node-RED-Log

Jul 21:40:02 - [error] [alexa-home-conf:82372a7e.ad4a18] Error: connect ECONNREFUSED 34.240.81.189:8883



接続確認

Alexaに問いかけて、実際に接続できているかを確認します。

以下の内容をAlexaに問いかけてみます。

自分:「Alexa、リビングライトを付けて」

Alexa:「はい」

自分:「Alexa、リビングライトを消して」

Alexa:「はい」

自分:「Alexa、リビングライトを暗くして」

Alexa:「はい」

自分:「Alexa、リビングライトを明るくして」

Alexa:「はい」

Node-RED のデバッグペインは、以下のように表示されます。

Node-REDのログファイルにも、同じ内容が出力されます。


  • 「Alexa、リビングライトを付けて」


Node-RED-Log

2 Jul 21:43:35 - [info] [debug:a60137fd.c462a8] true



  • 「Alexa、リビングライトを消して」


Node-RED-Log

2 Jul 21:43:42 - [info] [debug:a60137fd.c462a8] false



  • 「Alexa、リビングライトを暗くして」


Node-RED-Log

2 Jul 21:44:25 - [info] [debug:a60137fd.c462a8] -25



  • 「Alexa、リビングライトを明るくして」


Node-RED-Log

2 Jul 21:44:31 - [info] [debug:a60137fd.c462a8] 25


AlexaとNode-REDとの接続確認まで完了しました。

次は、フローに分岐を設けて、赤外線学習リモコンとの接続を行おうと思います。

以上