node-red-contrib-alexa-remote2 をいれることでNode-REDでAlexaのスキルを実行できたり、google-home-notifierのように喋ることもできるようになります。
認証方法はいくつかあるのですが、Email&Passwordは二段階認証がうまくできなかったり、Cookieは期限があったりするので今回はProxyによる認証で設定しました。
環境
自分の環境は以下になります。
・Raspberry Pi3 Model B
・Node-RED version: v1.0.2
・Node.js v12.13.0
node-red-contrib-alexa-remote2のインストール
node-red-contrib-alexa-remote2を検索して追加してください。
Alexa Routineをフローに追加
node-red-contrib-alexa-remote2をインストールするとノードにAlexaが追加されますのでAlexa Routineをフローに追加します。実行するのにinjectも追加します。
Alexa Accountの設定
Alexa Routineを開いてAccountを新規に追加します。
Auth MethodはProxyを選択し、This IPはRaspberry pi本体のIPアドレスを入れます。
localhostのままではうまくいきませんでした。
複数のamazonアカウントで制御したいのであればPortをそれぞれ別の値にすれば対応可能と思われます。
下にスクロールし、Amazonの設定を行います。
Service Host:alexa.amazon.co.jp
Page:amazon.co.jp
Language:ja_JP
User Agent:空白
設定を完了して、デプロイするとさきほど設定したIPアドレスにアクセスする旨の表示が出ます。
ブラウザでraspberry piのIPアドレス:Portにアクセスすると認証画面が表示されますので、アカウント情報をいれてログインします。
二段階認証を設定している場合はセキュリティコードが送られてくるので設定します。
ログインが完了するとブラウザに「Amazon Alexa Cookie successfully retrieved. You can close the browser.」と表示されるのでNode-REDに戻ります。
しばらくすると「ready」になります。
「ready」になるとAlexa Routineの画面でデバイスが設定できるようになります。
アカウントに紐づいているデバイスが設定できますので実行したいデバイスを選択してください。また、Alexaが任意の言葉を話すようにする場合はSpeakを選んでTextに任意の文字を入れます。
あとはタイムスタンプの左の■をクリックして実行するとgoogle-home-notifierみたいにAlexaが読み上げることができます。
スキルを実行する場合
Lanch Skillを選択すれば有効にしているスキルが表示されますので実行したいスキルを追加してください。これで定期的に運行情報を通知するようなことも可能です。
以上です。