#はじめに
Amazon Echoが気になって、「Amazon Echo Alexa」とかで検索してると
たまたま、Raspberry Pi2でも作れるということで、せっかくなので、作ってみたいと思い、
マイクとスピーカーを買って作ってみました。
実は、これを書くまでに1度失敗してます。何が失敗だったのか分からないくらいいじりすぎたので、
もう一度、さらからやりなおすことに。
そこで、メモしたので、ログ残しします。
#今回準備したもの
- Raspberry Pi2(Model B)
- TaoTronics Bluetooth 4.0 ポータブルスピーカー A2DP対応 (ブラック)TT-SK05
- iBUFFALO マイクロフォン USB音源 ブラック BSHSM05BK
- BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2
#Raspberry Pi2のイメージ
- 2016-03-18-raspbian-jessie.zip
#前提条件
- Raspberry Pi2は起動する状態であること
- 無線LANの設定が終わってること(通信できる状態であること、ここでは仮にIPアドレスを「192.168.0.10」とします)
#ここから設定開始
##SSHでログイン
次のコマンドを実行して、Raspberry Pi2にログインする。
ssh pi@<Raspberry Pi2のIPアドレス>
##VNC Serverのインストール
次のコマンドを実行して、VNC Serverをインストールします。
sudo apt-get install tightvncserver
##VNC Serverの設定
VNC Serverが自動起動してくるように設定します。
cd /home/pi/.config
mkdir autostart
cd autostart
vi tightvnc.desktop
でファイルを作成していきます。
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
ここで、リブートします。
sudo reboot
##Raspberry Pi2にVNCで接続
Finder→移動→サーバへ接続
を選択して、「vnc://192.168.0.10:5901」を入力し、「接続」ボタンをクリック
##VLCのインストール
次のコマンドを実行して、VLCをインストールします。
sudo apt-get install vlc-nox vlc-data
sudo echo export LD_LIBRARY_PATH=/usr/lib/vlc > ~/.bashrc
sudo echo export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins > ~/.bashrc
##Node.jsインストール
次のコマンドを実行して、Node.jsをインストールします。
sudo apt-get upgrade
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install nodejs
##Java8のインストール
※2016/06/06時点でのJavaです。
以下のURLからJava SE Development Kit 8u91をダウンロードする
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
次のコマンドを実行して、Java8をインストールします。
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_77/bin/javac 1
sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_77/bin/java 1
sudo update-alternatives --config javac
sudo update-alternatives --config java
##Mavenのインストール
※2016/06/06時点でのMavenです。
以下のURLからApache Maven 3.3.9をダウンロードする
https://maven.apache.org/download.cgi
次のコマンドを実行してMavenをインストールします。
sudo echo export M2_HOME=/opt/apache-maven-3.3.9 > ~/.bashrc
sudo echo export PATH=$PATH:$M2_HOME/bin > ~/.bashrc
##Alexa Voice Serviceの用意(その1 : Product登録とセキュリティプロファイルの作成)
ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「3 - Getting started with Alexa Voice Service」に書かれてる
以下の章を実行してください。
- Register for a free Amazon Developer Account
- Register your product and create a security profile.
注意点としては
- amazon.comにアカウントを作っておくこと
これくらいです。
##Alexa Voice Serviceの用意(その2 : Raspberry Pi2 へのプログラム展開
以下のURLからAlexa Voice ServiceのサンプルアプリZIPをダウンロードします。
https://github.com/amzn/alexa-avs-raspberry-pi/archive/master.zip
ZIPを解凍し、/opt配下にコピーする
(以降、/opt/alexa-avs-raspberry-pi*フォルダを<< REFERENCE_IMPLEMENTATION >>とします)
##OpenSSLのインストール
次のコマンドを実行して、OpenSSLをインストールします。
sudo apt-get install openssl
##オレオレ証明書作成準備
次のコマンドを実行して、ファイルを開きます。
vi << REFERENCE_IMPLEMENTATION >>/samples/javaclient/ssl.cnf
で以下の内容のように修正してください。
commonName = $ENV::COMMON_NAME
countryName = JP
stateOrProvinceName = Osaka
localityName = OsakaCity
organizationName = raspi
organizationalUnitName = alexa
※「countryName」は「JP」にしてください。
##オレオレ証明書の作成
次のコマンドを実行して、オレオレ証明書を作成します。
cd << REFERENCE_IMPLEMENTATION >>/samples/javaclient
chmod +x generate.sh
./generate.sh
実行してる時に、いくつか入力待ちになるので、以下を入力します。
「Product ID」には、「3.4」で入力した「Device Type ID」を入れる
「Serial Number」には、「123456」と固定で入れてください(もし入力を変えた場合は、ちゃんと覚えておいてください)
「Password for Keystores」には何も入れずにEnterキーを押してください(もし入力を変えた場合は、ちゃんと覚えておいてください)
##config.jsの更新
<< REFERENCE_IMPLEMENTATION >>/samples/companionService/config.jsを開いて、以下を更新してください。
sslKey: '/opt/alexa-avs-raspberry-pi/samples/javaclient/certs/server/node.key',
sslCert: '/opt/alexa-avs-raspberry-pi/samples/javaclient/certs/server/node.crt',
sslCaCert: '/opt/alexa-avs-raspberry-pi/samples/javaclient/certs/ca/ca.crt',
##config.jsonの更新
<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/config.jsonを開いて、以下を更新してください。
{
"productId":"",
"dsn":"",
"provisioningMethod":"",
"companionApp":{
"localPort":8443,
"sslKeyStore":"<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/certs/server/jetty.pkcs12",
"sslKeyStorePassphrase":"",
"lwaUrl":"https://api.amazon.com"
},
"companionService":{
"serviceUrl":"https://localhost:3000",
"sslClientKeyStore":"<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/certs/client/client.pkcs12",
"sslClientKeyStorePassphrase":"",
"sslCaCert":"<< REFERENCE_IMPLEMENTATION >>/samples/javaclient/certs/ca/ca.crt"
}
}
※「sslKeyStorePassphrase」は「オレオレ証明書の作成」の「Password for Keystores」と同じ
##依存関係のインストール
以下のコマンドを実行して、依存関係のインストールをします。
cd << REFERENCE_IMPLEMENTATION >>/samples/companionService
npm install
##セキュリティファイルの有効
ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「6 - Enable Security Profile」に書かれてる
##コンフィグファイルの更新
ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「7 - Updating the config files」に書かれてる
##サーバの起動
Terminalを起動し、次のコマンドを実行し、サーバを起動します
cd << REFERENCE_IMPLEMENTATION >>/samples/companionService
npm start
##クライアントの起動
Terminalを起動し、次のコマンドを実行し、クライアントを起動します。
cd <REFERENCE_IMPLEMENTATION>/samples/javaclient
mvn validate
mvn install
mvn exec:exec
##Amazon.comへのログインと承認
ここはこのまま参考元のページの手順を実施すればOKです。
https://github.com/amzn/alexa-avs-raspberry-pi
このURLの「10 - Obtain Authorization from Login with Amazon」に書かれてる
##Alexaとお話し。
「Start Listening」ボタンを押して、話してみてください。
いいお友達になれると思います。
僕はいろいろ話してみました。が、ご理解いただけないこともしばしば。
発音が悪かったんですね。精進します。