れすたぴは死んでしまった

ラビットハウスは年俸制

【2023年12月時点】LinuxからAmazon Echoデバイスを自発的に喋らせる方法

目次

はじめに

AmazonでEcho Popを買ったので、対話形式ではなく任意のタイミングで自発的に喋らせてみました。

 

環境

Amazon Echo Pop (Alexa搭載スマートスピーカー)

Raspberry Pi 3 Model B Plus Rev 1.3

 ▶Raspbian GNU/Linux 11 (bullseye)

・Windows11 (22H2)

 ▶リフレッシュトークン取得に使用

 

やったこと

開封と初期セットアップ

意外とコンパクトです。初期セットアップ方法はAmazon公式サイトを参照ください。

https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=Tdhja0feDINQLl19Ll

 

自発的に喋らせる手順

1.専用のシェルスクリプトをDLする

alexa_remote_control.sh を使います。

wget https://raw.githubusercontent.com/thorsten-gehrig/alexa-remote-control/master/alexa_remote_control.sh

alexa-remote-control/README.md at master · thorsten-gehrig/alexa-remote-control · GitHub

※ alexa_remote_control_plain.sh ならJSON処理のためのjqライブラリが不要らしいのですが、リフレッシュトークンの認証も使えず非推奨なので使いません。

 

2.jqライブラリをインストール
sudo apt install jq

 

3.リフレッシュトークンを取得

2023年12月現在、Amazonアカウント認証にはリフレッシュトークンを利用すると良いようです。リフレッシュトークンは一度だけ取得すればOKです。

Lötzimmer: Alexa Remote Control Shell Script

※従来のメールアドレス / パスワード / 2段階認証(MFA)のやり方は2023年12月現在は非推奨のようです。私はこのやり方だとうまくいきませんでした。

 

で、リフレッシュトークン取得のための専用の実行ファイルが用意されています。

今回はWindows環境で実行しますが、LinuxでもGUIWebブラウザが開ける環境ならいけそうです。

Releases · adn77/alexa-cookie-cli · GitHub

上記リンクから alexa-cookie-cli-win-x64.exe をDLしてコマンドプロンプト上で実行します。

C:\Users\xxxxx\Downloads>alexa-cookie-cli-win-x64.exe
Error: Please open http://127.0.0.1:8080/ with your browser and login to Amazon. The cookie will be output here after successfull login. / null

と表示されたらWebブラウザhttp://127.0.0.1:8080/ にアクセスします。

ファイアウォールの許可画面が出てもキャンセルで良いです。

 

Amazonのログイン画面が出てくるので、アカウント情報を入力して「ANMELDEN(ログインする)」をクリックします。

 

すると先程のコマンドプロンプト画面に

=======================================================================
refreshToken: Atnr|xxxxxxxxxxxxxxxxxxxxxx
=======================================================================

みたいな文字列が表示されるので「Atnr|xxxxxxxxxxx」の部分をコピっておきます。

 

4.alexa_remote_control.sh の中身を書き換える

Linuxに戻ります。

手順1でDLした alexa_remote_control.sh の中身を書き換えます。

sudo vi alexa_remote_control.sh
SET_EMAIL='' ←リフレッシュトークンを使うので不要
SET_PASSWORD='' ←リフレッシュトークンを使うので不要
SET_MFA_SECRET='' ←リフレッシュトークンを使うので不要 SET_REFRESH_TOKEN='Atnr|xxxxxxxxxxxxxxxxxxxxxx' ←手順3のリフレッシュトークンを入れる SET_LANGUAGE='ja-JP'
SET_TTS_LOCALE='ja-JP'
SET_AMAZON='amazon.co.jp'
SET_ALEXA='alexa.amazon.co.jp'

 

5.alexa_remote_control.sh に実行権限を付与
chmod 755 alexa_remote_control.sh

 

6.alexa_remote_control.sh を実行して喋らせる
sudo ./alexa_remote_control.sh -d "ALL" -e "speak:テストだよ"
sending cmd:speak:テストだよ to dev:れすたぴさんのEcho Pop type:XXXXXXXX serial:XXXXXXX customerid:XXXXXXX

キェェェェェェアァァァァァァシャァベッタァァァァァァァ!! (成功)

目の前のAmazon Echoバイスくんが喋りだせば成功です。

 

その後

あとは煮るなり焼くなり色々できそうです。

オプション等のリファレンスは以下を参照ください。

github.com