Mit Echo (Alexa) das eigene Kodi Media Center steuern
Eigene, lokal gespeicherte Medien (Musik, Filme, Bilder, Serien) etc über Echo (Alexa) abspielen, z.B. vom eigenen NAS
Diese Anleitung beschreibt wie man mittels einem eigenen Skill über den Echo und Sprachbefehle das KODI Media Center steuern kann. Damit ist es möglich auch lokal gespeicherte Medien über Sprachbefehle an den Echo abzuspielen.
Der dafür notwendige Skill kommt von Joe Ipson und kann von folgender URL heruntergeladen werden: https://github.com/m0ngr31/kodi-alexa
Es gibt auch einem emglischen Support-Thread dazu und zwar hier: http://forum.kodi.tv/showthread.php?tid=254502
Die Original-Anleitung findet ihr hier: http://www.howtogeek.com/249336/how-to-control-your-kodi-media-center-with-an-amazon-echo/
Beides auf englisch
Ich dachte aber eine Anleitung auf deutsch mit ein paar Tipps und Erfahrungswerten von mir kann nicht schaden
Zudem sind die Screenshots aus dem englischen Tutorial tw. nicht mehr aktuell weil Amazon die Prozesse seitdem verändert hat, was mich auch etwas aufgehalten hat.
Schritt 1 – lokale Vorbereitungen
Als erstes müsst ihr dafür sorgen dass Euer Kodi über das Web erreichbar ist. Dafür gibt es in Kodi eine Einstellung. In Kodi 17 und dem neuen „Estuary“ Standardskin findet ihr die entsprechende Maske unter „Einstellungen“ und dann „Dienste“
Hier hakt ihr „Steuerung über http erlauben“ an und vergebt einen Port. Ihr könnt auch den Standardport 8080 beibehalten. Ich persönlich habe den Port geändert. Vergebt dann einen Benutzernamen und ein Passwort. Wie immer, das Passwort möglichst kryptisch.
Damit man nun über das Web auf euer Kodi zugreifen kann, braucht das KODI eine feste, öffentliche Adresse im Internet. Da sich eure externe IP-Adresse die ihr von eurem Provider erhaltet von Zeit zu Zeit ändert, kann man hier auf einen sog. DynDNS Service zurück greifen, z.B. DDNSS. Eine Anleitung wie man das einrichtet lasse ich hier mal weg, da sich das von Anbieter zu Anbieter unterscheidet, einfach mal googlen.
Wenn ihr bei einem ISP (z.B. Strato) einen Hosting-Paket für Webspace und eine eigene Domain habt, dann ist hier oftmals auch ein DynDNS Service mit dabei, dann könnt ihr auch diesen nutzen.
Als nächstes müsst ihr bei Eurem Router die sogenannte Port-Weiterleitung aktivieren. Auch hier unterscheidet sich das Prozedere natürlich von Router zu Router, die folgenden Screenshots sind von meiner Unitymedia-Fritzbox, als erstes die Maske um eine neue Portfreigabe zu erstellen
Und so sieht das dann in der Übersicht aus
Wenn alles geklappt hat, dann müsstet ihr mittels der URL
http://meine-dynamische-ip.de:8080
auf die Webobverfläche Eures Kodis zugreifen können, wobei „meine-dynamische-ip“ die dynamische URL ist die ihr euch bei z.B. ddnss.de eingerichtet habt, und 8080 eben der Port ist den ihr sowohl im Kodi als auch bei der Port-Weiterleitung am Router eingetragen habt.
Erst wenn das funktioniert macht es Sinn mit Schritt 2 weiter zu machen
Schritt 2 - AWS Account
Als nächstes braucht Ihr einen Account bei „Amazon Web Services“. Geht auf [https://aws.amazon.com/de/|https://aws.amazon.com/de/]] und klickt auf „Kostenloses Konto erstellen“. Hier könnt ihr euch auch mit eurem Amazon Account einloggen. Wenn ihr noch keinen AWS Account habt müsst ihr einige persönliche Angaben machen. Dabei „Personal Account“ aktivieren.
Man muss auch Kreditkartendaten eingeben. Es wird aber nichts berechnet, denn im AWS Account sind 1 Millionen requests im Monat kostenlos enthalten. Das sollte für einen privaten, nicht öffentlichen Skill ausreichen, außer ihr schaut viel zu viel Fern und bombadiert Euren Echo mit Kodi Anfragen im Sekundentakt
Anschließend wird der Account mittels Telefonnummer verifiziert. Wählt am besten danach das „Basis“ Paket aus, das ist nämlich kostenlos und tut es für unsere Zwecke.
Schritt 3 - Python installieren und Skill herunterladen
Um den „Alexa-Kodi“-Skill an Amazon zu übertragen müsst ihr auf eurem Computer Python 2.7 installieren. Da ich Windows verwende kann ich Euch nur die Anleitung für Windows geben. Im Python zu installieren, geht zur Python Download Page und ladet Python 2.7 herunter. Startet die Installation wie bei jedem anderen Windows Programm. Einfach alle Standard-Angaben so beibehalten während dem Installationsprozess.
Nun ladet ihr den Skill herunter, diesen findet ihr hier: https://github.com/m0ngr31/kodi-alexa/archive/master.zip. Entpackt die zip-Datei auf Eurem Computer, ihr habe dann einen Ordner „kodi-alexa-master“.
Nun müsst ihr einige Variablen in den Dateien des Skills ändern. Dazu geht ihr in den „kodi-alexa-master-Ordner“ und öffnet die Datei „.env.lambda“ in einem Texteditor (Notepad++ z.B.). Speichert diese Datei als erstes neu ab und zwar unter dem Namen „.env“ (das ist alles). Stellt dabei sicher dass der Dateinamen nicht von eurem Textprogramm in „.env.txt“ umgewandelt wird. Das kann passieren denn normalerweise heissen Dateien eben nicht so (quasi nur die Dateiendung). Am besten stellt ihr unter Windows auch so ein, dass Dateiendungen von bekannten Dateitypen NICHT ausgeblendet werden (würde ich eh immer empfehlen).
In der nun vorhandenen „.env“ Datei müsst ihr nun die folgenden Variablen befüllen
- KODI_ADDRESS =
- KODI_PORT =
- KODI_USERNAME =
- KODI_PASSWORD =
KODI_ADDRESS ist die Adrese die ihr bei der Einrichtung des DynDNS-Dienstes erhalten habt (bspw: meine-dynamische-domain.de)
KODI_PORT ist der schon mehrfach erwähnte Port
KODI_USERNAME ist der Benutzername den ihr im Kodi vergeben habt (aus dem ersten Screenshot)
KODI_PASSWORDE ist das Passwort das ihr im Kodi vergeben habt (aus dem ersten Screenshot)
Am Ende der Datei gibt es weitere Variablen zu befüllen
AWS_DEFAULT_REGION =
Tragt hier „eu-west-1“ ein.
Die weiteren Variablen die ihr eintragen müsst bekommt ihr über die sog. AWS Console. Geht zu https://console.aws.amazon.com/iam/home (ggf. müsst ihr euch einloggen, den Account habt ihr ja vorhin angelegt), klickt dann auf „Users“ in der linken Menüleiste und dann auf „Add user“
Legt einen neuen Benutzer an mit einem Namen Eurer Wahl und folgenden Einstellungen
Klickt dann auf „Next: Permissions“
Auf der folgenden Maske wählt ihr „Attach existing policies directly“ aus und wählt dann aus der Liste unten „AWSLambdaFullAccess“ aus.
Klick auf „Next: Review“. Auf der nächsten Maske klickt auf „Create user“
Es folgt eine Maske auf der euer user angezeigt wird zusammen mit der „Access key ID“ und dem „Secret access key“. Beides ist wichtig und wird nur hier angezeigt, also hier abschreiben (oder weg kopieren) oder als csv downloaden.
Als nächstes geht ihr in der linken Menüleiste auf „Roles“ und klickt dann auf „Create New Role“. Auf der nächsten Maske gebt ihr einen beliebigen Rollen-Namen ein und klickt auf „Next Step“
Auf der nächsten Maske wählt ihr unter „Select Role Type“ „AWS Lambda“ aus
und auf der folgenden Liste dann „AWSLambdaFullAccess“
Klickt auf „Next Step“
Auf der nächsten Seite werden Euch einige Wert angezeigt, unter anderem der Role ARN in der Form „arn:aws:iam::11111111111:role/meinRollenName“. Kopiert Euch diesen Wert. Anschließend klickt ihr rechts unten auf „Create Role“
Zurück zur „.env“-Datei.
Hier müsst ihr nun die oben kopierten Werte für „Access-Key, Secret-Access-Key und Lambda-Role“ einsetzen
Eurer .env-Datei sollte dann am Ende mit folgenden Variablen gefüllt sein (hier natürlich nur dummy-Werte angegeben)
KODI_ADDRESS = my.dynamic-address.com
KODI_PORT = 8080
KODI_USERNAME = kodi
KODI_PASSWORD = mysupersecretpassword
LAMBDA_ENV_VARS = KODI_PASSWORD,KODI_USERNAME,KODI_PORT,KODI_ADDRESS
AWS_DEFAULT_REGION = eu-west-1
LAMBDA_TIMEOUT = 60
LAMBDA_MEMORY_SIZE = 128
LAMBDA_HANDLER = wsgi.lambda_handler
AWS_ACCESS_KEY_ID =ABCDEFGHIJKLMNOPQRST
AWS_SECRET_ACCESS_KEY = ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN
LAMBDA_ROLE = arn:aws:iam::11111111111:role/lambda
Wichtig:
KODI_ADDRESS ohne http vornedran
Wenn das soweit passt, speichert die Datei neu ab.
Schritt 4 - Den Skill zu AWS übertragen
Nun werden wir den Skill zum AWS Dienst übertragen
Öffnet dazu die Eingabeaufforderung im Windows (Eingabe cmd im Startmenü) und wechselt in das Verzeichnis in das ihr den skill entpackt habt und in dem eure modifiziert .env-Datei liegt. Etwa in der Art
cd C:\users\johndoe\downloads\echo\kodi-alexa-master
Natürlich müsst ihr hier euren Pfad eingeben.
Nun gebt das folgende ein
C:\Python27\Scripts\pip.exe install lambda-deploy
Solltet ihr Python woanders hin installiert haben, müsst ihr auch hier den Pfad anpassen. Aber Achtung: Pfade mit Leerzeichen sind hier tricky.
Dieser Befehl wird das Lambda-Script installieren dass ihr zum übertragen des Skills zu AWS benötigt.
Hier sollte das Script ohne Fehlermeldung durchlaufen.
Als nächstes gebt folgendes ein
C:\Python27\Scripts\lambda-deploy.exe deploy
Dies wird euren Skill übertragen (man nennt das auch „deployen“).
Auch hier solltet ihr eine Erfolgsmeldung am Ende erhalten der Form „Successfully deployed kodi-alexa-master“-
Nun wechselt ihr wieder zur AWS Console und dort zur Lambda-Seite
Wichtig ist hier die richtige Region auszuwählen, und der Trick ist eben NICHT EU (Frankfurt) zu wählen sondern EU (Ireland). Denn dies ist das Äquivalent zu „eu-west-1“ was ihr in der .env-Datei angegeben habt.
Hinweis: Wenn ihr dem obigen Link folgt und nicht direkt diese Maske seht, dann klickt vorher noch auf „Get started now“. Beim ersten Aufruf der Seite sieht es etwas anders aus, aber das sehe ich eben nicht mehr.
Wenn ihr die Region EU (Ireland) gewählt habt, solltet Ihr Eure Funktion nun hier angezeigt bekommen
Klickt auf die Funktion.
Hinweis: Auf der nächjsten Maske kopiert ihr euch als erstes von rechts oben den Code der mit „ARN“ bezeichnet ist, diesen braucht ihr später
Klickt dann auf „Triggers“
und als nächstes auf „Add Trigger“ und dann in das gestrichelte Quadrat klicken und dann „Alexa Skills Kit“ auswählen
Hinweis: Der Alexa Skills Kit steht nur zur Verfügung wenn ihr vorher bei Region auch „EU (Ireland)“ gewählt habt (oben rechts).
Klickt als nächstes auf „Submit“
Schritt 5 - Den Skill mit Eurem Echo verknüpfen
Um die hochgeladene Funktion auf eurem Echo bzw. in Eurer Alexa-App verfügbar zu machen, muss aus dieser Funktion ein „Skill“ werden. Dieses wird aber kein öffentlicher Skill werden, sondern er wird den Status „Test“ oder „Entwicklung“ bekommen und nie öffentlich werden, nichts desto trotz könnt ihr ihn verwenden.
Dazu braucht ihr als erstes einen Amazon Developer Account. Geht zu dieser Seite https://developer.amazon.com/login.html, loggt euch mit eurem Amazon Account ein und registriert euch für den Developer Account. Füllt dazu die Pflichtfelder aus und klickt bei „Do you plan to monetize apps“ auf „no“.
Sobald ihr dann eingeloggt seid, klickt ihr oben auf Alexa
und dann auf „Alexa Skills Kit“ ⇒ Get started
Auf der nächsten Maske klickt ihr rechts oben auf „Add new skill“
Auf der nächsten Maske müsst ihr nun die Felder ausfüllen
Ich habe dies folgendermaßen gemacht:
Skill Type: Custom Interaction Model
Language: German
Name: Kodi (hier könnt ihr euren skill nennen wie ihr woll)
Invocation name: media center
Dies ist das Kommando für den Echo das den skill aktiviert. Also „Alexa, öffne ….“ oder „Alexa, starte …“ Anscheinend wird „Kodi“ als Begriff nicht wirklich gut verstanden, bessere Ergebnisse wurden bisher wohl mit z.B. „media center“ erzielt.
Audio Player: no
Das Anlegen des Skills mit „Next“ abschließen.
Als nächstes kommt ihr im Menü links auf den Reiter „Interaction Model“. Das ist einer der wichtigsten Teile.
Als erstes habt ihr ein Textfeld mit dem Titel „Intent Schema“.
Um dieses zu befüllen öffnet ihr aus eurem lokalen kodi-alexa-master Verzeichnis die Datei „alexa.intents“ in einem Texteditor und kopiert den Text aus dieser Datei und fügt ihn in das Textfeld „Intent Schema“ ein.
Nun kommen wir zu den Slot Types. Der Skill erfordert das Anlegen von insgesamt 9 Slot Types. Diese heissen MOVIES, MOVIEGENRES, SHOWS, MUSICARTISTS, MUSICALBUMS, MUSICSONGS, MUSICPLAYLISTS, VIDEOPLAYLISTS, ADDONS. Bitte auf genaue Schreibweise achten. Diese legt ihr also an über den Button „Add Slot Type“ und befüllt diese mit Werten aus Eurer Kodi-Datenbank.
Der Skill wird umso besser funktionieren, umso mehr ihr da eingebt. Man muss nun nicht jeden Filmtitel eingeben oder jeden Song den man hat, aber je mehr desto besser. Um sich das Ganze zu vereinfachen hat der Skill Entwickler dafür einen Slot-Generator geschrieben. Diesen findet ihr unter https://slot-generator.herokuapp.com/. Wenn ihr dort Eure Daten für den Webzugriff auf euer Kodi eingebt, dann befüllt Euch das Script die einzelnen Slots mit den Daten aus Eurer Datenbank und ihr braucht die Sachen nur noch ins Interaction Model eures Scripts rein kopieren.
Am Ende sieht das dann (hoffentlich) so aus
Natürlich mit Euren richtigen Werten und nicht meinen Beispielen. Wenn ihr nun z.b. nur eine Muiskdatenbank habt, aber keine Serien oder Filme oder keine Playlists, müsst ihr diese Slots trotzdem anlegen und dort eben irgendeinen Eintrag (oder mehrere) machen. Das schadet nicht. Also z.B. „Serie 1“ reinschreiben. Es müssen alle 9 Slots angelegt sein.
Als letztes auf der Seite gibt es ein Textfeld das heisst „Sample Utterances“. Befüllt dieses in dem ihr die Datei „alexa.utterances“ aus eurem alexa-kodi-master Verzeichnis öffnet, den Inhalt kopiert und in dieses Textfeld einfügt. Diese „utterances“ sind die Kommandos oder Fragen die ihr Alexa stellen könnt in Bezug auf Kodi, und diese sind miot Kodi Befehlen verknüpft.
Da die Muttersprache des Skill Entwicklers Englisch ist, ist hier alles auf Englisch. Wenn ihr eurem Echo deutsche Kommandos geben wollt, dann ergänzt einfach die „Utterances Textbox“ durch entsprechende deutsche Anweisungen oder überschreibt gleich alles mit deutschen Begriffen. In der Datei sind fast 2000 verschiedene Befehle auf englisch. Ich habe lediglich um die 100 davon auf deutsch ergänzt.
Bsp für Serienfolge abspielen:
WatchEpisode und spiele Staffel {Season} Folge {Episode} von {Show}
„WatchEpisode“ ist das Kommando für Kodi. Nun kommt ja als erstes der Aufruf für den Skill. Also „Alexa, starte media center“ .. „und spiele Staffel {Season} Folge {Episode} von {Show}“
durch das „und“ vorne dran, bekommt man halt einmen vernünftigen deutschen Satz. Will man nun das Kommando andersrum geben, also erst die Folge und dann die Staffel nennen, dann gibt man halt eine zweite Zeile ein
WatchEpisode und spiele Folge {Episode} Staffel {Season} von {Show}
Will man erst die Serie nennen, also so fragen:
„Alexa, starte media center und Spiele von „Lost“ die Folge 1 der Staffel 1
dann muss man eben eine dritte Zeile der Art hinzufügen
WatchEpisode und spiele von {Show} die Folge {Episode} der Staffel {Season}
Da man den Skill sowohl mit „starte media center“, mit „öffne media center“ aber auch mit „frage media center“ aktivieren kann, kann man das natürlich noch verfeinern, in dem man bei der Version mit
„Alexa, frage media center“ ein Kommando eingibt „nach der Folge 1 der Staffel 1 von Lost
also
WatchEpisode nach Folge {Episode} der Staffel {Season} von {Show}
so dass man wieder einen vernünftigen deutschen Satz hat.
Ihr könnt auch auf dieser Seite „Interaction Model“ jederzeit nachträglich neue Sätze/Kommandos ergänzen oder bei neuen Alben, Serien, Filmen, auch die custom slot types natürlich ergänzen.
Auf „Save“ klicken links unten auf der Seite nicht vergessen.
Auf dem nächsten Reiter links „Configuration“ müsst ihr nun folgendes ausfüllen/anklicken
Wählt als erstes „AWS Lambda ARN (Amazon Resource Name)“ aus (nicht https). Unten dann „Europe“ und in das Textfeld für Europe gebt ihr dann den ARN Code ein den ihr Euch bei Schritt 4 vor dem Anlegen des Triggers kopiert habt.
Bei Account Linking klickt ihr auf „No“.
So, fast geschafft
Links im Menü gibt es noch den Punkt „Test“. Hier könnt ihr Euren Skill testen
Als erstes stellt sicher dass der Skill aktiviert ist
Dann gebt weiter unten bei „Service Simulator“ bei Text eine Frage an euren Echo ein.
Bspw: „Welche Serien gibt es“.
Hinweis: Diese Syntax der Fragestellung solltet ihr natürlich auf der Maske „Interaction Model“ bei „Utterances“ auch genauso eingegeben haben
Im linken Textfeld sollte dann die Abarbeitung des Skills kommen anhand der Frage, und rechts die Ausgabe vom Echo, die man sich sogar auch anhören kann
Wenn was schief gegangen ist mit eurem skill, dann bekommt ihr im rechten Textfeld eine Fehlermeldung.
Hinweis: Wie ihr seht ist bei mir die Sprachausgabe auf deutsch. Das ist nicht standardmäßig so, weil der Skill eben auf englisch programmiert wurde. Wenn ihr wollt das euch der Echo deutsche Antworten gibt, dann müsst ihr die englischen Antworten in der Datei „wsgi.py“ aus eurem „alexa-kodi-master“ Verzeichnis übersetzen.
Sucht in der Datei nach „alexa_response“ oder „answer“. Danach findet ihr die englischen Antwortsätze die ihr dann einfach mit deutschen Sätzen nach Euren Wünschen überschreiben könnt.
Wenn es euch wichtig ist, dass auch die Kartenbezeichnung in der Alexa App auf deutsch ist für Eure Anfragen, dann könnt ihr auch noch nach „card_title“ suchen und diese Titel „eindeutschen“.
Diese Vorgehensweise für eine deutsche „Sprachversion“ des skills ist natpürlich nicht sehr professionell. Der Entwickler hat bereits eine deutsche Sprachversion in Aussicht gestellt und dann wird das sicher besser gelöst (indem man einzelne language files hat die dann bei Bedarf aktiviert werden können z.B.), auf die Schnelle geht es aber auch so wie hier beschrieben.
Noch ein Hinweis: Wenn ihr in den deutschen Antwortsätzen Umlaute verwendet, dann bekommt ihr beim testen des Skills erstmal einen Fehler. Um das zu verhindern ergänzt die Datei „wsgi.py“ um eine weitere Zeile als zweite Zeile in der Datei mit folgendem
# This Python file uses the following encoding: utf-8
Als nächstes gibt es links im Menü noch den Reiter „Publishing Information“. Da ihr den Skill ja nicht veröffentlichen wollt und der/die einzige seid die den Skill so verwenden, ist es eigentlich wurscht was ihr da eingebt. ZWei Icons die man da hochladen kann, findet ihr im englischen Original Tutorial zum Download ziemlich am Ende der Seite (link siehe ganz oben).
Klickt am Ende auf „Save“ aber nicht auf „Submit for Certification“.
Die letzte Seite heisst „Privacy Compliance“. Klickt einfach überall „No“ an und hakt die „Compliance checkbox“ an.
Klickt wieder auf „Save“ aber nicht auf „Submit for Certification“.
GESCHAFFT
Nun könnt ihr Euren Skill testen. Kodi sollte natürlich angeschaltet sein und ihr könnt Euren Echo mit den Kommandos „füttern“ die ihr unter „Utterances“ eingetragen habt.
Ihr solltet auch Euren Skill in Eurer Alexa App bei Euren aktivierten Skills sehen.
Anhang: Angepasste Dateien für deutsche Sprachunterstützung
In der „utterances.txt“ habe ich nur wenige Zeilen in deutsch übersetzt, das was mir halt sinnvoll erschien