全体表示

[ リスト ]

※アカウント設定の方法を修正しました。

通常、Echoの操作は声かアプリを使って人力でやるしかありませんが
マイコン等から自由に制御が出来るようになれば非常に便利です。
赤外線センサーで人を検知したら自動で音楽再生といったことが出来そうですね。

やり方は既に公開されていてNode-REDのモジュールも出ているので試してみました。
仕組みは単純です。 アレクサのWebサイトhttps://alexa.amazon.co.jpでEchoの操作が出来ると思いますが、
この時にアマゾンのサーバーに送っているデータをマイコン等から送れば声を使わなくてもサーバー経由でEchoを操作出来るという感じです。

やり方
①まずはnode-red-contrib-alexa-remoteをインストール

②「node-red-contrib-alexa-remote」は「alexa-remote2」というJavaScriptをNode-REDから操作出来るようにしただけのモジュールなので単体では使えません。
ラズパイのシェルを開いてalexa-remote2をインストールします。です
コマンドは npm i alexa-remote2 です。
イメージ 1

③あとはNode-REDから設定すればOKです。
 とりあえずボタンを押すとEchoが音楽を再生するフローを作ります
 適当にinjectノードと繋げました。
イメージ 2
④alexa-remoteノードの設定
 今回は音楽再生なのでCommandは「Play」を選択
 SerialはEchoのシリアル番号です。 アレクサアプリのデバイスの設定⇒設定⇒その他で調べられます。
イメージ 3

イメージ 4

⑤Account設定です。
 ServerHost、Language、Amazon Pageは下記の通りに変えてください。 Nameは空欄で大丈夫でした。
 ログイン方法ですが、2通りあります。
 (1)Amazonに登録しているメアド、パスワードを直接入れる
 (2)Cookieを入力する
イメージ 5

⑤-(1)Amazonのメアド、パスを入力すれば設定完了です。
     デプロイしてinjectボタンを押せばEchoから音楽が流れだすと思います。
     でも、この方法セキュリティが不安です。Node-REDがどんなセキュリティ対策をしているか
     分からないのでいつも買い物で使っているアカウントを登録してよいものか・・・
    サブ垢を登録するのも利便性が損なわれそうな気がします。

⑤-(2)アカウントを入力する代わりにCookie使う方法があります。 Cookieはサーバー側がユーザーを識別するために割り振った簡易コードみたいなものですかね? こっちならバレても悪用はされにくいです。
    しかし、Cookieの入力方法が分かりません。 知ってる方は教えてください
    

Cookie自体の調べ方は簡単です。作者さんのサイトに方法が書いてあります。https://www.gehrig.info/alexa/Alexa.html
 ・ChromeでAlexaのサイトを開くhttps://alexa.amazon.co.jp
 ・ミュージック・本のタブからtuneinを選択、適当なラジオ局を開く
 ・Ctrl+Shift+Iキーを押してデベロッパーツールを開く
 ・ラジオを再生 デベロッパーツールに表示された「queue-and-play」を右クリックしてcURL(cmd)cURL(bash)としてコピー(上記のサイトの説明文ではcURL(cmd)となっていますが上手くいきません)
イメージ 6

 ・メモ帳等に貼り付けると大量の文字列が表示されますがその中から
  「x-amzn-dat-gui 〜 session-id-time=○○○○」を探してNode-REDのCookie欄に貼り付ければOKです
 (ちなみにalexaの制御に使用するのはこの中の4つの式だけらしいです)
イメージ 7


イメージ 8


注意点
・操作の有効期限があります。
 例)声を使ってアレクサに音楽を再生させて、そのあと停止させたとします。
   この後、node-redから「再生」コマンドを送ると当然音楽が流れ出します。
   しかし音楽を停止してから長時間経ってしまうと再生コマンドを送っても音楽が流れなくなります。

・cookieに有効期限があります
  一定期間経ったりアレクササイトでログオフしてしまうとcookieが切れてしまい
  再度アレクサのサイトを開いて取り直さないといけません。

この記事に

閉じる コメント(5)

顔アイコン

Cookieはx-amzn-dat-gui-...から 「’」の前まででした。
Alexa speak ノードで試しOKでした。
ただ制限があります。
・Alexa speak ノードでは、日本語を話させることができません。英語のみできました。
・時間がたつと Cookie が無効になるようです。1日経過後に試したらダメでした。
・Node-RED の画面で、Alexa speakノードの下に、エラーの場合「Login unsuccessfull.」と出ます。
これが出たら、以降、設定した Cookie では何をやっても失敗します。
Cookie のとり直しが必要です。 削除

2018/11/19(月) 午後 10:49 [ パソコン鳥 ] 返信する

顔アイコン

> パソコン鳥さん
コメントありがとうございます。

コピーしたcURLの中身って下記のような内容ですか? 「’」が見つからないです・・・

"Cookie: x-amzn-〜;session-id=〜;ubid-acbjp=〜;



at-acbjp=〜;sess-at-acbjp=〜;sst-acbjp=〜;"

いずれにせよ有効期限が24時間しかないcookieだと常用出来ないですね

2018/11/23(金) 午後 3:16 [ ale***** ] 返信する

顔アイコン

返事が遅くなってすみません。
cURLの中身は、
「curl 'XXXXXXXXXXXXXXXXXXX' -H 'Cookie: x-amzn-dat-gui-client-v=.....' -H 'Accept-Encoding:.....」のようなものです。
(XXXXXXの部分は URL です。YAHOO!ブログの制限でしょうか、記載して投稿できなかったので XXXX にしています)
-H 'ZZZ' の形式でオプション?が ' で括られて並んでいます。
そのうちの1つが
-H 'Cookie: x-amzn-dat-gui-client-v=.....' の形式で、 x-amzn-〜 の部分(但し末尾の'は含まず)を 使います。 削除

2018/11/28(水) 午後 9:13 [ パソコン鳥 ] 返信する

顔アイコン

もう1点、忘れていました。
cURLのコピーは、Copy as cURL(bash) でしないとうまくいきませんでした。 削除

2018/11/28(水) 午後 9:16 [ パソコン鳥 ] 返信する

顔アイコン

> パソコン鳥さん
bashのほうだったんですね! やり直したら無事使えるようになりました
ありがとうございました

2018/12/1(土) 午後 11:11 [ ale***** ] 返信する

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

開く トラックバック(1)


.


みんなの更新記事