Sunday 11 March 2018

Alexa in Raspberry Pi

How to Connect Alexa In Raspberry Pi




This guide provides step-by-step instructions for setting up AVS on a Raspberry Pi. It demonstrates how to access and test AVS using our Java sample app (running on a Raspberry Pi), a Node.js server, and a third-party wake word engine. You will use the Node.js server to obtain a Login with Amazon (LWA) authorization code by visiting a website using your Raspberry Pi's web browser.
------------------------------------------------------------------------------------------------------------------------

Required hardware

Before you get started, let's review what you'll need.
  1. Raspberry Pi 3 (Recommended) or Pi 2 Model B (Supported) - Buy at Amazon - Pi 3 or Pi 2.
  2. Micro-USB power cable for Raspberry Pi.
  3. Micro SD Card (Minimum 8 GB) - You need an operating system to get started. NOOBS (New Out of the Box Software) is an easy-to-use operating system install manager for Raspberry Pi. The simplest way to get NOOBS is to buy an SD card with NOOBS pre-installed - Raspberry Pi 16GB (NOOBS) Micro SD Card. Alternatively, you can download and install it on your SD card (follow instructions here).
  4. USB 2.0 Mini Microphone - Raspberry Pi does not have a built-in microphone; to interact with Alexa you'll need an external one to plug in -Buy Mic Model 1 OR Mic Model 2 
  5. External Speaker with 3.5mm audio cable - Buy on Flipkart
  6. A USB Keyboard & Mouse, and an external HDMI Monitor - we also recommend having a USB keyboard and mouse as well as an HDMI monitor handy if you're unable to remote(SSH) into your Pi.
  7. Internet connection (Ethernet or WiFi)
  8. (Optional) WiFi Wireless Adapter for Pi 2. Note: Pi 3 has built-in WiFi.

--------------------------------------------------------------------------------------------------------------------------

Let's get started

The original Alexa on a Pi project required manual download of libraries/dependencies and updating a series of configuration files that were prone to human error. To make the process faster and easier, we’ve included an install script with the project that will take care of all the heavy lifting. Not only does this reduce setup time to less than an hour on a Raspberry Pi 3, it only requires developers to adjust three variables in a single install script -

Step 1: Setting up your Pi

Unless you already have Raspbian Stretch or Jessie installed on your Pi, please follow our guide - Setting up the Raspberry Pi - that will walk you through downloading and installing Raspbian, and connecting the hardware (if you're unfamiliar with Raspberry Pi, we highly recommend you follow the guide above to get your Pi up and ready before moving further).

Step 2: Register for an Amazon developer account


Unless you already have one, go ahead and create a free developer account at developer.amazon.com. Make sure you review the AVS Terms and Agreements here.
   

Step 3: Create a device and security profile


Make note of the following parameters. You'll need these in Step 5 below.
  • ProductID,
  • ClientID, and
  • ClientSecret
Important: Make sure your Allowed Origins and Allowed Return URLs are set under Security Profile > Web (see Create a device and security profile)
________________________________________________________________________________________________________________________________________________________________________

Create a device and security profile

Register your product and create a security profile


After you've registered for an Amazon developer account, you'll need to create an Alexa device and security profile. Make note of the following parameters as you go through setup, ProductID, ClientID, and ClientSecret -- you'll need these later.
  1. Login to Amazon Developer Portal - developer.amazon.com
  2. Click Alexa -> Alexa Voice Service -> Get Started
  3. Click Create Product.
  4. Fill-in these values and save:
Product Information
On this page you'll provide information about your product.
  1. Product Name - This is what gets displayed to users when they register an instance of the product with Amazon.
  2. Product ID - A simple identifier for your product.
  3. When asked if your product is an app or device, select Device.
  4. When asked if your product will use a companion app, select Yes.
  5. For Product Category, select Other, and enter "Rapsberry Pi Project on GitHub". Note: For a commercial product, you should select the best option available.
  6. Enter a brief description. For example: My first Pi project.
  7. When asked how users will interact with your product, select Touch-initiated and Hands-free. Note: For a commercial product, you should select the options that best describe your product's functionality.
  8. You can skip uploading an image for now. This content is used on the manage your content and devices screen on amazon.com.
  9. When asked if you will distribute this project, select No. Note: For a commercial product, you should select Yes.
  10. When asked if this product is for children, select No.
  11. Click Next.
Security Profile
On this page we'll create a new Login with Amazon (LWA) security profile. This associates user data and security credentials with one or more products.
  1. Click Create New Profile.
  2. Enter a name and description for your security profile, then click Next. For example:
    • Security Profile Name: Alexa Voice Service Sample App Security Profile
    • Security Profile Description: Alexa Voice Service Sample App Security Profile Description
    Note: These are suggested values. You provide custom information for Security Profile Name and Security Profile Description.
    A Client ID and Client Secret will be generated for you.
  3. Enter your Allowed origins and Allowed return URLs. We need to setup http and https routes for our sample project:
You are now ready to generate self-signed certificates.

Enable Security Profile

  1. Open a web browser, and visit https://developer.amazon.com/lwa/sp/overview.html.
  2. Near the top of the page, select the security profile you created earlier from the drop down menu and click Confirm.
  3. Enter a privacy policy URL beginning with http:// or https://. For this example, you can enter a fake URL such as http://example.com.
  4. [Optional] You may upload an image as well. The image will be shown on the Login with Amazon consent page to give your users context.
  5. Click Save.




__________________________________________________________________________________________________________________________________________________________________________________________________

Step 4: Clone the sample app


Open terminal, and type the following:

cd Desktop
git clone https://github.com/alexa/alexa-avs-sample-app.git

Step 5: Update the install script with your credentials

Before you run the install script, you need to update the script with the credentials that you got in step 3 - ProductID, ClientID, ClientSecret. Type the following in terminal:
cd ~/Desktop/alexa-avs-sample-app
nano automated_install.sh
Paste the values for ProductID, ClientID, and ClientSecret that you got from Step 3 above.
The changes should look like this:
  • ProductID="RaspberryPi3"
  • ClientID="amzn.xxxxx.xxxxxxxxx"
  • ClientSecret="4e8cb14xxxxxxxxxxxxxxxxxxxxxxxxxxxxx6b4f9"
Type ctrl-X and then Y, and then press Enter to save the changes to the file.

Step 6: Run the install script

You are now ready to run the install script. This will install all dependencies, including the two wake word engines from Sensory and KITT.AI.
Note: The install script will install all project files in the folder that the script is run from.
To run the script, open terminal and navigate to the folder where the project was cloned. Then run the following command:
cd ~/Desktop/alexa-avs-sample-app
. automated_install.sh
You'll be prompted to answer a few simple questions. These help to ensure that you've completed all necessary prerequisites before continuing.
When the wizard starts, go grab a cup of coffee - it takes about 30 minutes.

Step 7: Run your web service, sample app and wake word engine

Now that installation is complete, you'll need to run three commands in 3 separate terminal windows:
  1. Terminal Window 1: to run the web service for authorization
  2. Terminal Window 2: to run the sample app to communicate with AVS
  3. Terminal Window 3: to run the wake word engine which allows you to start an interaction using the phrase "Alexa".
Note: These commands must be run in order.

Terminal Window 1

Open a new terminal window and type the following commands to bring up the web service which is used to authorize your sample app with AVS:
cd ~/Desktop/alexa-avs-sample-app/samples
cd companionService && npm start
The server is now running on port 3000 and you are ready to start the client.
See API Overview > Authorization to learn more about authorization.

Terminal Window 2

Open a new terminal window and type the following commands to run the sample app, which communicates with AVS:
cd ~/Desktop/alexa-avs-sample-app/samples
cd javaclient && mvn exec:exec
See API Overview > Interfaces to learn more about the messages sent to/from AVS.
Let's walk through the next few steps relevant to Window 2.
  1. When you run the client, a window should pop up with a message that says -
    Please register your device by visiting the following URL in a web browser and following the instructions: https://localhost:3000/provision/d340f629bd685deeff28a917. Would you like to open the URL automatically in your default browser?
    Click on "Yes" to open the URL in your default browser.
  2. If you're running Raspbian with Pixel desktop (and with Chromium browser), you may get a warning from the browser. You can get around it by clicking on Advanced -> Proceed to localhost(unsafe).
  3. You'll be taken to a Login with Amazon web page. Enter your Amazon credentials.
  4. You'll be taken to a Dev Authorization page, confirming that you’d like your device to access the Security Profile created earlier.
    Click Okay.
  5. You will now be redirected to a URL beginning with https://localhost:3000/authresponse followed by a query string. The body of the web page will say device tokens ready.
  6. Return to the Java application and click the OK button. The client is now ready to accept Alexa requests.

Terminal Window 3

Note: Skip this step to run the same app without a wake word engine.
This project supports two third-party wake word engines: Sensory's TrulyHandsFree and KITT.AI's Snowboy. The -e parameter is used to select the agent and supports two values for {{engine}}: kitt_ai and sensory.
Open a new terminal window and use the following commands to bring up a wake word engine from Sensory or KITT.AI. The wake word engine will allow you to initiate interactions using the phrase "Alexa".
To use the Sensory wake word engine, type -
cd ~/Desktop/alexa-avs-sample-app/samples
cd wakeWordAgent/src && ./wakeWordAgent -e sensory
or, type this to use KITT.AI's wake word engine -
cd ~/Desktop/alexa-avs-sample-app/samples
cd wakeWordAgent/src && ./wakeWordAgent -e kitt_ai
Now you have a working hands-free AVS prototype!
Use the following resources to learn more about available wake word engines:

Step 8: Talk to Alexa

You can now talk to Alexa by simply using the wake word "Alexa". Try the following -
Say "Alexa", then wait for the beep. Now say "what's the time?"
Say "Alexa", then wait for the beep. Now say "what's the weather in Seattle?"
If you prefer, you can also click on the "Listen" button, instead of using the wake word. Click once on the "Listen" button, after releasing the click, wait for the audio cue before beginning to speak. It may take a second or two before you hear the audio cue.

9 - Enable and Test Notifications

To test notifications with the sample app follow these steps:
  1. Enable the Quote Maker development skill.
  2. Create a notification. Here are sample utterances:
    • "Alexa, open Quote Maker."
    • "Alexa, ask Quote Maker to create a notification."
      After the notification has been created, the notification indicator in the sample app will blink.
  3. Retrieve your notifications with this utterance: "Alexa, what are my notifications?"

Step 10: How to Log Out of the Sample App

Sample App Log Out Instructions.

Known Issue

To log out of the AVS java sample app you must clear your sessionId in /samples/javaclient/config.json, and delete your refresh_tokens file in the /samples/companionService folder. Otherwise, the sample app will authenticate on each reboot.
Solution


Follow these instructions to log out of the AVS java sample app:

  1. Quit the AVS java sample app (CTRL + C).
  2. Open /samples/javaclient/config.json and clear your sessionId. It should look like this:
    "sessionId": ""
    
  3. Delete the refresh_tokens file in samples/companionService.

The next time you log in you will be prompted to authenticate.


Step 11: (Optional): Go headless and get rid of the monitor, keyboard, and mouse

Now that you've got your AVS prototype running, you may want to get rid of the monitor, keyboard and mouse. You can do that by using SSH and VNC. Follow the instructions to setup SSH and VNC.


SSH into the Raspberry Pi

NOTE SSH is enabled by default on Raspbian Stretch/Jessie. If you run into problems getting SSH to work, make sure it’s enabled. This is done using the raspi-config utility.

So, let's SSH into your Raspberry Pi. To do that, you need to know the IP address of your Raspberry Pi.

Type this command into the terminal:

hostname -I
> 192.168.1.10 //this is an example Raspberry Pi’s IP - it would be different for you

If you’re on a Windows PC, follow the instructions here to SSH Using windows

Now that you know the IP address of your Pi, you are ready to connect to it remotely using SSH. To do this, open the terminal utility on the computer you would like to connect from and type the following:

ssh pi@<YOUR Raspberry Pi IP ADDRESS>

It will prompt you for your password. NOTE: the default password for the user pi is raspberry

Voila! You’re remotely connected to your Raspberry Pi. Now you can install all the utilities while connected remotely via SSH.

Install VNC Sever

Open Terminal, and type:
sudo apt-get install tightvncserver
Start VNC Server
To start VNC Server, type:
tightvncserver
You'll be asked to set a password to access the Pi. You'll need this when you try to access the Pi from another computer, which we will be doing in a moment.
Run VNCServer at Startup
You want to make sure the VNC Server runs automatically after the Raspberry Pi reboots, so you don’t have to manually start it each time with the command tightvncserver through SSH. To do that, type the following in the terminal:
cd /home/pi
cd .config
Note the '.' at the start of the folder name. This makes it a hidden folder that will not show up when you type 'ls'.
mkdir autostart
cd autostart
Create a new configuration by typing the following command:
nano tightvnc.desktop
Edit the contents of the file with the following text:
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
Type ctrl-X and then Y, and then press Enter to save the changes to the file.
That's it. The next time you reboot, the VNC server will restart automatically.
Connecting to Raspberry Pi via VNC
Please download VNC viewer (available for Mac, Linux, Windows, and more), and follow the instructions to connect to your Pi over VNC.
You may now disconnect the Monitor, keyboard and mouse (if you like). Now with SSH (allows remote access to the terminal) and VNC (allows you to remote control the Raspberry Pi’s desktop interface) installed, the external monitor is optional. Feel free to disconnect it from the Raspberry Pi.

___________________________________________________________________________________________


JOIN SpaceTech
YouTube  :  https://www.youtube.com/SpaceTechOfficial
Twitter     :  https://twitter.com/SpaceTechOffici
Facebook  : https://facebook.com/SpaceTechOfficial
Website    : http://www.spacetechofficial.com/

---------------------------------------

Space Tech
   LIKE it
  SHARE it
 COMMENT it








No comments:

Post a Comment