Wiki
Clone wikiiotalexahhz / Alexa lebt!
Auf dieser Wiki-Seite wird dargestellt, wie Alexa auf dem Raspberry Pi "zum Leben erweckt wurde":
Agenda
Vorgehen
Der Amazon Alexa Javaclient wurde auf dem Raspberry Pi nach folgender Anleitung installiert:
Im Detail wurden folgende Schritte durchgeführt: ####Registrierung für Developer Amazon Account###
URL: https://developer.amazon.com/home.html
####Alexa Voice Service Quellcode herunterladen & auf Raspberry Pi kopieren###
URL: https://github.com/amzn/alexa-avs-raspberry-pi/archive/master.zip
####Produkt registrieren und Security Profil erstellen####
Damit Alexa (samt Core-Services) genutzt werden kann, ist es notwendig, dass Produkt zu registrieren. Hierfür muss auf der Amazon-Developer Seite die Produktregistrierung durchgeführt und ein Security Profil erstellt werden. Dazu wird das Device angelegt und konfiguriert.
Nachdem die Registrierung bei Amazon Developer erfolgreich war
- Klicken Sie auf "ALEXA" > Alexa Voice Service > "Get Started >" - Button
Klicken Sie auf "Register a Product Type" und anschließend auf "Device".
Tragen Sie beim "Device Type Info" in den folgenden Felder
- Company Name: HHZ als Beispiel
- Device Type: my_device
- Display Name: My Device
- "Next" klicken
- Klicken Sie bei Security Profile auf die Dropdownliste "Select Security Profile" und wählen "Create a new profile"
- Klicken Sie "Next"
Tragen Sie im General Tab in folgenden Felder:
- Security Profile Name: Alexa Voice Service Sample App Security Profile*
- Security Profile Description: Alexa Voice Service Sample App Security Profile Description*
- Klicken Sie "Next"
Anschließend werden Client ID und Client Secret generiert
- Klicken Sie auf den Web Settings Tab
- Wählen Sie in der Dropdownliste "Alexa Voice Service Sample App Security Profile" aus und klicken Sie auf "Edit"
- Tragen Sie in den folgenden Textfelder im Bereich Web Settings Tab:
- Allowed Origins: (auf Add Another klicken) https://localhost:3000
- Allowed Return URLs: (auf Add Another klicken) https://localhost:3000/authresponse
- Klicken Sie auf "Next"
Image File herunterladen
Im Bereich Device Details sind folgende Schritte zu erledigen:
- Image: heruntergeladene Bilddatei hochladen
- Category: "Other" in der Dropdownliste auswählen
- Descripten: "Alexa Voice Service sample app test"
- What is your expected timeline for commercialization?: "Longer than 4 months / TBD"
- How many devices are you planning to commercialize?: "0"
- Klicken Sie auf "Next"
Wählen Sie bei "Enable Amazon Music?" die Option "No" aus und klicken Sie auf "Submit".
Ihr Gerät wurde nun erfolgreich unter Registered Products registriert.
####Generate self-signed certificates####
SSL installieren
Befehl eingeben:
#!python sudo apt-get install openssl
Installation verifizieren
#!python whereis openssl
#!python cd <REFERENCE_IMPLEMENTATION>/samples/javaclient - //your sample apps location
Die Skriptdatei "ssl.cnf" bearbeiten (Datei könnte so aussehen)
Folgender Befehl macht die geänderte Skriptdatei ausführbar
#!python chmod +x generate.sh
Zertifikat Skript ausführen
#!python ./generate.sh
Anschließend muss in der Konsole folgende Informationen eingetragen werden:
- Product ID: my_device
- Serial number: 123456
- Password: talktome (als Beispiel)
#!python <REFERENCE_IMPLEMENTATION>/samples/companionService/config.js.
Folgende Felder müssen in der Config.js Datei angepassten werden:
#!python Set sslKey to <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/server/node.key Set sslCert to <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/server/node.crt Set sslCaCert to <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/ca/ca.crt
Folgende Änderungen müssen in der config.json Datei durchgeführt werden:
#!python <REFERENCE_IMPLEMENTATION>/samples/javaclient/config.json.
#!python Set companionApp.sslKeyStore to <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/server/jetty.pkcs12 Set companionApp.sslKeyStorePassphrase --> Beispiel Passwort setzen: "talktome" Set companionService.sslClientKeyStore to <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/client/client.pkcs12 Set companionService.sslClientKeyStorePassphrase --> Beispiel Passwort setzen: "talktome" Set companionService.sslCaCert to <REFERENCE_IMPLEMENTATION>/samples/javaclient/certs/ca/ca.crt
####Install Dependencies####
In den Pfad companionService wechseln
#!python cd <REFERENCE_IMPLEMENTATION>/samples/companionService
npm installieren
#!python npm instal
####Enable Security Profile#### URL https://developer.amazon.com/lwa/sp/overview.html aufrufen
In der Dropdownliste "Alexa Voice Service Sample App Security Profile" auswählen und "Confirm" klicken
Im Textfeld "Consent Privacy Notice URL": http://example.com eingeben
Auf "Show Client ID and Client Secret" klicken
"Show Client ID and Client Secret" werden angezeigt
####Updating Config-Files####
Die Datei config.js im Ordner companionService öffnen und bearbeiten:
#!python <REFERENCE_IMPLEMENTATION>/samples/companionService/config.js
- clientId: <client ID>
- clientSecret: <client secret>
- products: <product number>
Datei abspeichern
Die Datei config.json im Ordner javaclient öffnen und bearbeiten:
#!python <REFERENCE_IMPLEMENTATION>/samples/javaclient/config.json
- productId: "my device" eingeben.
- dsn: "123456" eingeben
- provisioningMethod: "companionService" eingeben
Die Datei pom.xml im Ordner javaclient öffnen und bearbeiten:
#!python <REFERENCE_IMPLEMENTATION>/samples/javaclient/pom.xml
#!python <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>4.1.0</version> <scope>compile</scope> </dependency>
Datei abspeichern
####Alexa starten####
In den Ordner "companionService wechseln und Server starten. In der Konsole folgende Befehle ausführen:
#!python cd <REFERENCE_IMPLEMENTATION>/samples/companionService npm start
Client starten
Neuer Tab Fenster öffnen und in den Ordner javaclient wechseln
#!python cd <REFERENCE_IMPLEMENTATION>/samples/javaclient npm start
Build the App
Bevor man einen Build erzeugt, sollte das Projekt validiert werden und die benötigen Informationen vorhanden sind.
#!python mvn validate
#!python mvn install
Client App starten
Nach dem die Installation erfolgreich war, sehen Sie einen "Build Success" im Terminal Fenster. Anschließend kann die Client App ausgeführt werden.
#!python mvn exec:exec
Alexa Gui wird gestartet
Anschließend muss das Gerät registriert werden. Hierbei soll die URL kopiert und in einem Browser geöffnet werden
Der nächste Schritt ist die Authorisierung bei Amazon
Klicken Sie auf "Okay"
Nun wurde das Gerät erfolgreich registriert und kann genutzt werden.
- Start Listening button : Gespräch wird gestartet
- Stop Listening button : Gespräch wird beendet
##Anmerkungen## Ausgehend der aktuellen Raspbian Version "Jessie" sind bereits die Komponenten Java und Node.js vorinstalliert. Man könnte meinen, dass deswegen alles reibungslos funktioniert. Mitnichten.
Außgehend der Beschreibung müssen beide Komponenten in der jeweils aktuellen Version nachinstalliert werden. Dazu wird das JDK von Oracle heruntergeladen und als zu verwendendes markiert. Siehe Schritt 2.6
Damit der Node.js Server richtig funktioniert muss auch NPM noch nachinstalliert werden. Folgende Schritte sind dazu nötig:
#!python sudo apt-get update sudo apt-get upgrade curl -sL https://deb.nodesource.com/setup | sudo bash - sudo apt-get install nodejs
#!python npm instal
Ebenfalls interessant ist der Python Fork namens AlexiPi, welcher gerade dabei ist die Sprachunterstützung durch Hotword-Detection nachzurüsten. siehe: Snowboy
Screeshot:
Updated