Mit Echo (Alexa) Kodi Media Center steuern

Viele haben ein Kodi Mediacenter zu Hause. Vielleicht auf einem Raspberry PI oder einem Intel NUC.

Wäre es nicht super das Mediacenter via Sprache mit alexa steuern zu können? 

 

 

Der daf√ľr notwendige Skill kommt von Joe Ipson und kann hier¬†heruntergeladen werden.

Im Kodi musst du die Webgui aktivieren und mit User und Kennwort sch√ľtzen.

Auf deinem Router musst du dann noch den Port 8080 freigeben. Weil das Mediacenter nach außen freigegeben wird empfehle ich

ein starkes Kennwort.

 

Jetzt brauchst du einen AWS Account, den du vielleicht bereits hast, da du meiner Anleitung gefolgt bist.

Geh auf https://aws.amazon.com/de/¬†und klick auf ‚ÄěKostenloses Konto erstellen‚Äú. Einfach mit dem Amazon Account einloggen.¬†

Man braucht eine Kreditkarte. Es wird aber nichts berechnet, denn im AWS Account sind 1 Millionen requests im Monat kostenlos enthalten.

Da m√ľsste man schon sehr viel mit Alexa und Kodi f√ľr reden...

Anschlie√üend wird der Account mittels Telefonnummer verifiziert. W√§hle¬†‚ÄěBasis‚Äú Paket aus, das ist n√§mlich kostenlos und tut es f√ľr unsere Zwecke.

 

Show/Hidden bash code

View source
 
 
 
apt-get update
 
 
apt-get install python unp pip
 
 
cd /opt/
 
 
wget https://github.com/m0ngr31/kodi-alexa/archive/master.zip
 
unp master.zip
 
rm master.zip
 
cd kodi-alexa-master
 
mv .env.lambda .env
 
 
 

Die env ist versteckt! Das erkennt man an dem PUNKT vor der Datei. Unter Linux ist das kein Problem.

 

Nun musst du die Datei mit dem Editor deiner Wahl (meiner ist vim) anpassen

Show/Hidden bash code

View source
 
 
 
vim .env
 
 
  

 

Show/Hidden bash code

View source
 
 
KODI_ADDRESS=XXXXXX.dlinkddns.com
 
KODI_PORT=8080
 
KODI_USERNAME=kodiuser
 
KODI_PASSWORD=kodipassword
 
 
 

Bei Kodi Adress bitte kein WWW voran!!!

 

Ganz am Ende der Datei gibt es noch eine Einstellung

Show/Hidden bash code

View source
 
 
AWS_DEFAULT_REGION = eu-west-1
 
 
 
 

 

Nun sind am Ende noch weitere Einstellungen vorzunehmen. Daf√ľr ben√∂tigen wir nun den oben genannten AWS Account.

Hier legst du einen User an --> Add user

 

Vergebe einen Namen / Kennwort und setze alle Einstellungen wie ich hier.

 

Auf ‚ÄěAttach existing policies directly‚Äú klicken und den Haken bei¬†‚ÄěAWSLambdaFullAccess‚Äú setzen.

 

 

"Create User".

"Access Key ID" und "Secret access key" kopieren und f√ľr gleich bereithalten. Wer will f√ľgt es einfach schon in der .env ein.

Jetzt links auf "Roles" und wie hier im Screenshot eine Rolle anlegen.

 

 

"AWS Lambda" wählen --> Select

Nun die Policy "AWSLambdaFullAccess" wählen.

 

Jetzt¬†auf ‚ÄěNext Step‚Äú

Jetzt wird dir¬†unter anderem der Role ARN in der Form ‚Äěarn:aws:iam::11111111111:role/meinRollenName‚Äú. - Kopieren und dann auf ‚ÄěCreate Role‚Äú.

 

Jetzt geht es in der .ENV weiter.

Unten die gerade ermittelten Werte eintragen.

Show/Hidden bash code

View source
 
 
AWS_ACCESS_KEY_ID=XXXxXXXXXXxxXXX
 
AWS_SECRET_ACCESS_KEY=XXXXXXXxxxxxxXXXXXXXXxXxXXx
 
LAMBDA_ROLE=arn:aws:iam::XXXXXXXXXXXX:role/meineRolleName
 
 
 
 

 

Nun musst du die Datei ‚Äěwsgi.py‚Äú anpassen

Show/Hidden bash code

View source
 
 
 
cd /opt/kodi-alexa-master
 
 
vim wsgi.py
 
 
 
  

 

Hier muss die zweite Zeile ergänzt werden.

Show/Hidden bash code

View source
 
 
#!/usr/bin/python
 
# This Python file uses the following encoding: utf-8
 
import os
 
 
 
  

 

Jetzt musst du deinen Skill zu AWS √ľbertragen.

 

Show/Hidden bash code

View source
 
 
 
 
 
 
cd /opt/kodi-alexa-master
 
pip install lambda-deploy
 
lambda-deploy deploy
 
 
 

 

Jetzt geht es wieder in der AWS Console und dort zur Lambda-Seite weiter.

Bei Region oben rechts Ireland auszuwählen, sonst klappt das nicht!

Klicke auf Functions.

 

Wichtig: Im n√§chsten Bild rechts oben den Code der mit ‚ÄěARN‚Äú kopieren und z.B. im Notepad zwischenspeichern.

Create a Lmbda function --> Jetzt auf "Triggers" --> "Add Trigger" --> "Alexa Skill Kit"

Jetzt musst du den Skill mit Alexa verkn√ľpfen.

Dazu brauchst du einen Amazon Developer Account. Den gibt es hier https://developer.amazon.com/login.html

Anmelden mit deinem¬†Amazon Account und registriere dich¬†f√ľr den Developer Account.

Und gib dort an, das du damit kein Geld verdienen willst.

Weiter geht es oben im Men√ľ mit "Alexa" --> "Get Started" --> "Add New Skill"

 

Hier alles eintragen.

Skill Type: Custom Interaction Model

Language: German

Name: Kodi

Invocation name: media center

Audio Player: no

 

Der Invocation Name ist der Name auf den Alexa hört. Mit "Alexa, frage Invocation name, wie heißt der Titel" wird gearbeitet

Ich habe mit "media center" das beste Ergebnis. Denkbar sind aber auch andere Begriff oder Namen (James...).

 

Es geht weiter. Bei¬†Intent Schema diesen Code einf√ľgen

Show/Hidden bash code

View source
 
 
 
{
 "intents": [
 {
 "intent": "WhatNewAlbums",
 "slots": []
 },
 {
 "intent": "WhatNewMovies",
 "slots": [
 {
 "name": "Genre",
 "type": "MOVIEGENRES"
 }
 ]
 },
 {
 "intent": "WhatNewShows",
 "slots": []
 },
 {
 "intent": "NewShowInquiry",
 "slots": [
 {
 "name": "Show",
 "type": "SHOWS"
 }
 ]
 },
 {
 "intent": "CleanVideo",
 "slots": []
 },
 {
 "intent": "UpdateVideo",
 "slots": []
 },
 {
 "intent": "CleanAudio",
 "slots": []
 },
 {
 "intent": "UpdateAudio",
 "slots": []
 },
 {
 "intent": "PlayPause",
 "slots": []
 },
 {
 "intent": "PlayerSeekSmallForward",
 "slots": []
 },
 {
 "intent": "PlayerSeekSmallBackward",
 "slots": []
 },
 {
 "intent": "PlayerSeekBigForward",
 "slots": []
 },
 {
 "intent": "PlayerSeekBigBackward",
 "slots": []
 },
 {
 "intent": "Stop",
 "slots": []
 },
 {
 "intent": "WhatAlbums",
 "slots": [
 {
 "name": "Artist",
 "type": "MUSICARTISTS"
 }
 ]
 },
 {
 "intent": "ListenToArtist",
 "slots": [
 {
 "name": "Artist",
 "type": "MUSICARTISTS"
 }
 ]
 },
 {
 "intent": "ListenToAlbum",
 "slots": [
 {
 "name": "Artist",
 "type": "MUSICARTISTS"
 },
 {
 "name": "Album",
 "type": "MUSICALBUMS"
 }
 ]
 },
 {
 "intent": "ListenToSong",
 "slots": [
 {
 "name": "Artist",
 "type": "MUSICARTISTS"
 },
 {
 "name": "Song",
 "type": "MUSICSONGS"
 }
 ]
 },
 {
 "intent": "ListenToAlbumOrSong",
 "slots": [
 {
 "name": "Artist",
 "type": "MUSICARTISTS"
 },
 {
 "name": "Album",
 "type": "MUSICALBUMS"
 },
 {
 "name": "Song",
 "type": "MUSICSONGS"
 }
 ]
 },
 {
 "intent": "ListenToAudioPlaylist",
 "slots": [
 {
 "name": "AudioPlaylist",
 "type": "MUSICPLAYLISTS"
 }
 ]
 },
 {
 "intent": "ShuffleAudioPlaylist",
 "slots": [
 {
 "name": "AudioPlaylist",
 "type": "MUSICPLAYLISTS"
 }
 ]
 },
 {
 "intent": "ListenToAudioPlaylistRecent",
 "slots": []
 },
 {
 "intent": "WatchEpisode",
 "slots": [
 {
 "name": "Show",
 "type": "SHOWS"
 },
 {
 "name": "Episode",
 "type": "AMAZON.NUMBER"
 },
 {
 "name": "Season",
 "type": "AMAZON.NUMBER"
 }
 ]
 },
 {
 "intent": "WatchRandomEpisode",
 "slots": [
 {
 "name": "Show",
 "type": "SHOWS"
 }
 ]
 },
 {
 "intent": "WatchLatestEpisode",
 "slots": [
 {
 "name": "Show",
 "type": "SHOWS"
 }
 ]
 },
 {
 "intent": "WatchNextEpisode",
 "slots": [
 {
 "name": "Show",
 "type": "SHOWS"
 }
 ]
 },
 {
 "intent": "WatchLastShow",
 "slots": []
 },
 {
 "intent": "WatchMovie",
 "slots": [
 {
 "name": "Movie",
 "type": "MOVIES"
 }
 ]
 },
 {
 "intent": "WatchRandomMovie",
 "slots": [
 {
 "name": "Genre",
 "type": "MOVIEGENRES"
 }
 ]
 },
 {
 "intent": "WatchVideoPlaylist",
 "slots": [
 {
 "name": "VideoPlaylist",
 "type": "VIDEOPLAYLISTS"
 }
 ]
 },
 {
 "intent": "ShuffleVideoPlaylist",
 "slots": [
 {
 "name": "VideoPlaylist",
 "type": "VIDEOPLAYLISTS"
 }
 ]
 },
 {
 "intent": "ShufflePlaylist",
 "slots": [
 {
 "name": "AudioPlaylist",
 "type": "MUSICPLAYLISTS"
 },
 {
 "name": "VideoPlaylist",
 "type": "VIDEOPLAYLISTS"
 }
 ]
 },
 {
 "intent": "Prev",
 "slots": []
 },
 {
 "intent": "Skip",
 "slots": []
 },
 {
 "intent": "StartOver",
 "slots": []
 },
 {
 "intent": "Home",
 "slots": []
 },
 {
 "intent": "Back",
 "slots": []
 },
 {
 "intent": "Up",
 "slots": []
 },
 {
 "intent": "Down",
 "slots": []
 },
 {
 "intent": "Right",
 "slots": []
 },
 {
 "intent": "Left",
 "slots": []
 },
 {
 "intent": "Select",
 "slots": []
 },
 {
 "intent": "Menu",
 "slots": []
 },
 {
 "intent": "PageUp",
 "slots": []
 },
 {
 "intent": "PageDown",
 "slots": []
 },
 {
 "intent": "Fullscreen",
 "slots": []
 },
 {
 "intent": "Mute",
 "slots": []
 },
 {
 "intent": "VolumeUp",
 "slots": []
 },
 {
 "intent": "VolumeDown",
 "slots": []
 },
 {
 "intent": "VolumeSet",
 "slots": [
 {
 "name": "Volume",
 "type": "AMAZON.NUMBER"
 }
 ]
 },
 {
 "intent": "VolumeSetPct",
 "slots": [
 {
 "name": "Volume",
 "type": "AMAZON.NUMBER"
 }
 ]
 },
 {
 "intent": "SubtitlesOn",
 "slots": []
 },
 {
 "intent": "SubtitlesOff",
 "slots": []
 },
 {
 "intent": "SubtitlesNext",
 "slots": []
 },
 {
 "intent": "SubtitlesPrevious",
 "slots": []
 },
 {
 "intent": "AudioStreamNext",
 "slots": []
 },
 {
 "intent": "AudioStreamPrevious",
 "slots": []
 },
 {
 "intent": "PlayerMoveUp",
 "slots": []
 },
 {
 "intent": "PlayerMoveDown",
 "slots": []
 },
 {
 "intent": "PlayerMoveLeft",
 "slots": []
 },
 {
 "intent": "PlayerMoveRight",
 "slots": []
 },
 {
 "intent": "PlayerRotateClockwise",
 "slots": []
 },
 {
 "intent": "PlayerRotateCounterClockwise",
 "slots": []
 },
 {
 "intent": "PlayerZoomHold",
 "slots": []
 },
 {
 "intent": "PlayerZoomIn",
 "slots": []
 },
 {
 "intent": "PlayerZoomInMoveUp",
 "slots": []
 },
 {
 "intent": "PlayerZoomInMoveDown",
 "slots": []
 },
 {
 "intent": "PlayerZoomInMoveLeft",
 "slots": []
 },
 {
 "intent": "PlayerZoomInMoveRight",
 "slots": []
 },
 {
 "intent": "PlayerZoomOut",
 "slots": []
 },
 {
 "intent": "PlayerZoomOutMoveUp",
 "slots": []
 },
 {
 "intent": "PlayerZoomOutMoveDown",
 "slots": []
 },
 {
 "intent": "PlayerZoomOutMoveLeft",
 "slots": []
 },
 {
 "intent": "PlayerZoomOutMoveRight",
 "slots": []
 },
 {
 "intent": "PlayerZoomReset",
 "slots": []
 },
 {
 "intent": "Hibernate",
 "slots": []
 },
 {
 "intent": "Reboot",
 "slots": []
 },
 {
 "intent": "Shutdown",
 "slots": []
 },
 {
 "intent": "Suspend",
 "slots": []
 },
 {
 "intent": "EjectMedia",
 "slots": []
 },
 {
 "intent": "PartyMode",
 "slots": []
 },
 {
 "intent": "CurrentPlayItemInquiry",
 "slots": []
 },
 {
 "intent": "CurrentPlayItemTimeRemaining",
 "slots": []
 },
 {
 "intent": "AddonExecute",
 "slots": [
 {
 "name": "Addon",
 "type": "ADDONS"
 }
 ]
 },
 {
 "intent": "AddonGlobalSearch",
 "slots": [
 {
 "name": "Artist",
 "type": "MUSICARTISTS"
 },
 {
 "name": "Album",
 "type": "MUSICALBUMS"
 },
 {
 "name": "Song",
 "type": "MUSICSONGS"
 },
 {
 "name": "Movie",
 "type": "MOVIES"
 },
 {
 "name": "Show",
 "type": "SHOWS"
 }
 ]
 }
 ]
}
 
 
 

 

Jetzt musst du so genannte Slots anlegen (9). Diese kannst du automatisch f√ľr ein schnelles Copy & Paste hier erzeugen:¬†https://slot-generator.herokuapp.com/

 

 

 

Jetzt k√∂nnt ihr euch die ‚ÄěSample Utterances‚Äú hier laden. Wenn ihr es f√ľr erforderlich haltet, k√∂nnt ihr diese weiter anpassen.

Den Inhalt der Datei bei "Sample Utterances" einf√ľgen und dann "Save", dann auf "Next".

 

Alle so einstellen wie im Bild. Den weiter oben im Notepad gesicherten ARN Code hier einf√ľgen!

 

Folgendes einstellen. Und dann einfach nur auf "Save".

 

 

Jetzt gehts auf http://alexa.amazon.de/ --> Skills --> Ihre Skills (oben rechts).

 

Jetzt kannst du den Skill aktivieren und mit "Alexa, frage mediacenter, spiele musik von Michael Jackson" testen.

 

Dir hat das Projekt gefallen? Dann¬†Unterst√ľtze mich, damit ich weiterhin solche Projekte vorstellen kann!¬†

Kommentare   

0 #13 selfstream 2017-07-03 14:59
Ich bin auch zuerst nach dieser Anleitung vorgegangen und mit den aktuellen Dateien nicht weitergekommen. Habe dann die Anleitung auf github genommen - mit der hat es dann funktioniert.
Dem Administrator melden
0 #12 Brenner 2017-06-30 20:54
Moin moin,

gibt es schon infos zur .env Datei ?Die ist ja leidern ich mehr in dem kodi-alexa-master.zip drin ? Habe sie nachgeschrieben aber auch ohne erfolg. Gibt es schon eine Lösung ? lg
Dem Administrator melden
0 #11 Kevin 2017-06-11 15:50
Ich hab das gleiche Problem wie Florian. Das File .env.lambdadas ist nicht mehr dabei. Auf Github steht, dass das File in die Kodi.config gewandert ist, allerdings finde ich auch dieses File nicht
Dem Administrator melden
0 #10 eikman 2017-06-07 14:58
bekomme den befehl nicht hin

mache das √ľber Windows der befehl lautet
C:\Users\eikma\Desktop\alexa\kodi-alexa-2.1.0>c:\python27\scripts\lambda-deploy deploy

leider bekomme ich diese meldung
2017-06-07 16:58:05:INFO:botocore.credentials: Found credentials in environment variables.
2017-06-07 16:58:05:ERROR:lambda_deploy: Missing AWS Role
2017-06-07 16:58:05:ERROR:lambda_deploy: Invalid arguments.
Usage: lambda-deploy [options] action [args]
Dem Administrator melden
+2 #9 Florian 2017-06-06 16:19
Hallo,

ihr schreibt im ersten Schritt, das ihr das File .env.lambda in .env umbenennt. Leider existiert dieses File in der neusten master.zip nicht wirklich. Sind die Variablen in ein anderes File gewandert?

Gruß
Flo
Dem Administrator melden
-1 #8 eikman 2017-06-06 15:22
Frage, die ersten Code Schnipsel oben, scheinen ja f√ľr die SSH Konsole von Kodi zu sein (bei mir libreelec, oben ist ja schon der download eingepflegt, kann ich das nicht einfach wie jedes addon installieren, also als zip?
Die befehle nimmt mein librelec nicht an
Dem Administrator melden
0 #7 tim 2017-04-30 14:51
Hallo Michael,
erst ein mal vielen Dank f√ľr die M√ľhe die du dir gegeben hast!
Ich habe was Programmieren etc. angeht gefährliches halbwissen ;) probiere aber gerne aus :)
Nun bin ich seit 2 Tagen an diesem Projekt und habe eine vielleicht nun ja doofe Frage ;)
Brauche ich f√ľr diesen "build" auch alexa-fhem? das wird mir irgendwie nicht ganz klar.
Danke schon mal vorab und viele Gr√ľ√üe!
Tim
Dem Administrator melden
0 #6 Pat 2017-04-27 04:45
Ahoi,
nach tagelangen Versuchen endlich zum Laufen bekommen, dank neuem Zappa deploy.
Ist es normal, das alexa in Englisch antwortet oder habe ich da noch einen Denkfehler?
Deutsche Titel versteht sie aber wiederum besser als Englische ^^.
Besten Dank
Dem Administrator melden
0 #5 Michael Heck 2017-04-22 08:49
Habe es gestern nochmal genau nach dem Tutorial gemacht und es klappt genau so.
Dem Administrator melden
0 #4 amau 2017-04-22 08:30
Hallo, bekomme die gleiche Fehlermeldung wie G. Geissler:

Traceback (most recent call last):
File "/usr/local/bin/lambda-deploy", line 7, in
from lambda_deploy.lambda_deploy import main
File "/usr/local/lib/python2.7/dist-packages/lambda_dep loy/lambda_deploy.py", line 8, in
import pip
File "/usr/lib/python2.7/dist-packages/pip/__init__.py" , line 74, in
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/usr/lib/python2.7/dist-packages/pip/vcs/mercuria l.py", line 9, in
from pip.download import path_to_url
File "/usr/lib/python2.7/dist-packages/pip/download.py" , line 25, in
from requests.compat import IncompleteRead
ImportError: cannot import name IncompleteRead

Habe ich was falsch gemacht? Kann jemand helfen?

Andreas
Dem Administrator melden

Kommentar schreiben

Sicherheitscode
Aktualisieren