どうもCHASUKEです。
Alexaで使えるスマートホームスキル『Node-RED』の利用方法を書いていきます。
なぜ、このスキルが必要と言うと、Amazon EchoからIFTTT経由でNature Remoを使って家電を操作すると、最後に「をトリガー」というトリガーワードをつけなければなりません。
という訳で全く実用性がありません。
今回のAlexaスキル『Node-RED』はスマートホームスキルなため、「アレクサ、電気をつけて」などの自然体な呼び出しが可能となります!!
これを実現するための最大のハードルが、Node-REDをラズベリーパイにインストールして起動してやることです。もちろん、ラズパイの代わりにMacやWindowsパソコンでも利用できますが、実用を考えると常時起動させられるラズパイが一番理想ですね。
https://chasuke.com/wp/raspberrypi3-starter/
全3回に渡ってやり方を説明し、最終目標は、自然体な音声操作でNature Remoに家電を制御してもらったり、搭載された温度/湿度センサーの情報取得までやってみたいと思います。
1回目の今回は、Alexaに話しかけてNode-REDのフローが反応するまでをやっていきます^^
Alexaスマートホームスキル『Node-RED』とは
Node-REDのAlexa専用ノードを呼び出すためのスキルです。
そもそもNode-REDとは、
プログラム言語「Node.js」で開発されたフローベースのプログラミング環境であり、「ノード」と呼ばれる組み合わせ可能なブロックをパレットに配置/接続して、フロー定義することで処理を実行できます。フロー定義はブラウザ上の GUI で手軽に行うことができます。
わかりやすくイメージするために、実際にサンプルで作成したフローがこちら。
矢印のボタンを押すことで処理を実行されます^^
上の例だとボタンを押すことでフローを実行しましたが、Alexaに話しかけて処理が実行できたら面白いですよね。
これを可能にするのがAlexa『Node-REDスキル』です。
これを作っていきます。
「Node-RED」スキルを使うための準備
Node-REDを利用するためには、MacやWindows、またはラズパイにNode-REDをインストールして利用します。
これらはGoogle検索にて「Node-RED インストール ラズパイ」などと検索すると山のように情報が得られます。
例えば、Node-RED日本ユーザー会のドキュメントがこちら。
https://nodered.jp/docs/getting-started/installation
Node-REDでフローを起動してみる
僕の場合、ラズパイにインストールしました。
インストールが完了したら、以下のコマンドでNode-REDを起動させます。
$ node-red
こんな感じで起動します。
続いて、上の赤枠にあるURLにアクセスします。この「127.0.0.1」は自分自身を指す特別なIPアドレスですので、Node-REDをインストールした端末のIPアドレスに変換してブラウザに入力します。
▼すると、フロー定義するためのパレットが表示されます
では、簡単なフローを作成してみます。
左側の一覧からノードをドラッグ&ドロップで配置して、線をビヨーンと伸ばして、別のノードに接続します。
injectノード(左)とdebugノード(右)をくっつけて、簡単なフローを作成。作成後は、忘れずにデプロイを押すように。これをしないと反映されません。
デプロイするとtimestampと記載されたinjectノードのボタンが有効化されます。ボタンから処理を起動するとデバッグエリアにdebugノードの内容が出力されます
timestampと記載されたinjectノードから処理を実行し、デバッグエリアに「1517835025221」と表示されればOKです。
ちなみに、この数字はUNIXタイムスタンプといって、1970年1月1日からの秒数になります。
Alexa Skillノードを追加して実行してみた
ここからがメインイベントですね。
やることは3つなので、少し忙しくなります。
- Node-RED Alexa Home Skill Bridge に登録
- Alexaスキル「Node-RED」を有効化
- Node-REDにAlexaノードを追加
Node-RED Alexa Home Skill Bridge に登録
これがAlexa(Amazon Echo)とNode-RED(ローカル環境にインストール)を連携してくれるブリッジとなります。
▼ここにアクセスして「Register」を選択します。
登録したら、Loginしましょう。
▼Devicesタブから新しいデバイスを登録します。
ここで登録するNameがAlexaにお願いするときの呼び出し名になります。アクションとしてはOn/Offをチェックしときましょう。
こうしておくと、後々、「電気をオンにして/オフにして」という音声操作ができるようになります。
Alexaスキル「Node-RED」を有効化
ここはAlexaアプリを使ってスキルを有効化すればOKです。
先ほどブリッジ登録したときのアカウントでログインします。
これで「電気」というデバイスが作成できました。Alexaアプリでデバイスの検出をするとスマートホーム内のデバイスに新たに追加されます。
Node-REDにAlexaノードを追加
Alexaスキルから呼び出したときのノードを追加します。
▼メニューを開き、パレットの管理を選択します。
※もしも、「パレットの管理」が表示されない場合、Node-REDのアップデートが必要となります。以下のコマンドを実行してください。
$ update-nodejs-and-nodered
▼[ノードを追加]から「alexa」とかで検索すると出てきます。
「node-red-contrib-alexa-home-skill」これをノードを追加します。
追加すると、左側の一覧に「alexa」が登場します!!
このノードをダブルクリックして、先ほどのアカウントでログインします。
ログインして、登録したDeviceを選びます。
完了して、「デプロイ」をするとalexa homeノードの下が緑色でconnectとなればAlexaから呼び出す準備OKということです。
「アレクサ、電気(Device名)をつけて」
「はい」
▼Alexaに話かけたことで処理が実行されました。
デバッグエリアに「true」と出力されていればOKです。
これでAlexaスマートホームスキル「Node-RED」を使って処理を実行することに成功しました!!
最後に
Alexaスマートホームスキル『Node-RED』を使えば、割と自由な仕組みを作ることができます。プログラミングも視覚的なので手軽で簡単です^^
次回は、最近APIが公開された学習リモコン「Nature Remo」のノードを追加して家電を制御してみます!!
https://chasuke.com/wp/noderemo/
それではまた。