前回、node-red-contrib-alexa-home-skill のインストールまで完了しました。
今回は、Node-RED Alexa Home Skill Bridge の設定を行い、Node-Red に Alexa ノードを登録するところまで、やってみたいと思います。
やることは、以下の4つです。
尚、赤外線リモコンを実際操作する部分は、次のフェーズでやる予定です。
- Node-RED Alexa Home Skill Bridgeでアカウントを作成する。
- 制御するデバイスを作成する。
- Alexaスキル「Node-Red」を追加し、アカウントをリンクする。
- 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=スワップ、残り=システム領域
- パーティション2分割
- 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」部分の更新ボタンを押すと、デバイスが選択可能になりますので、デバイス「リビングライト」を選択し、「完了」ボタンで設定画面を閉じます。
デプロイ時にエラーメッセージが出力される場合がありますが、無視しても大丈夫っぽいです(タイミングの問題?)。
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、リビングライトを付けて」
2 Jul 21:43:35 - [info] [debug:a60137fd.c462a8] true
- 「Alexa、リビングライトを消して」
2 Jul 21:43:42 - [info] [debug:a60137fd.c462a8] false
- 「Alexa、リビングライトを暗くして」
2 Jul 21:44:25 - [info] [debug:a60137fd.c462a8] -25
- 「Alexa、リビングライトを明るくして」
2 Jul 21:44:31 - [info] [debug:a60137fd.c462a8] 25
AlexaとNode-REDとの接続確認まで完了しました。
次は、フローに分岐を設けて、赤外線学習リモコンとの接続を行おうと思います。
以上