Alexa automatisiert "Fernsteuern"

Hier geht es um grundlegende Diskussionen bezüglich des Alexa Voice Service.
Benutzeravatar

dizzy85
Beiträge: 39
Registriert: Mi 15. Mär 2017, 13:44
Vorhandene Echos: 3
Vorhandene Echo Dots: 1

Mo 16. Okt 2017, 20:46

Könnte evtl. mal jemand bei sich überprüfen ob bei ihm der selbe Fehler wie bei mir auftritt unter der Verwendung der Scripte von Torsten Gehring.
Folgender Fehler ist zu überprüfen:
Und zwar wenn ihr über den Script einen "importierten Titel" bei Amazon-Prime-Music auswählt. (Also selbst hoch geladener Track)
Wird dieser sauber und einmal abgespielt oder wird er doppelt abgespielt bzw. kurz unterbrochen und fängt von vorne an....?
Wie gesagt habe seid letzte Woche Sonntag das Problem das alles was ich über die Scripte mache... doppelt abgespielt wird bzw. nach einigen sekunden abgebrochen wird und wieder von vorne anfängt wie ob die Alexa´s zwei Befehle ganz kurz hintereinander bekommen...
Ich denke seid den letzen Updates vom Amazon kommt irgendwas mit den Skripten ins Gehege....

Wenn ich die Curl die man ja "manuell" über einen Browser generieren kann (beim Auslesen der Cookie´s, Csrf etc.) in die Commandline eines Raspberry mit Raspian eingebe werden die Tracks sauber und nur einmal abgespielt.
Das einzige was Alexa dann macht, ist das Sie die komplette Liste von den "importierten-tracks" abspielt..... das macht sie aber auch wenn ich in der Alexa-App bzw im Webinterface einen Track spielen will, dann Spielt Sie auch die komplette Liste von den importierten Tracks (ca.34 Tracks) ab.....!?

Würde halt gerne herausfinden ob es ein Problem mit den Scripten gibt oder es irgendwie an meiner Hard/Software liegt....
Das hat mit der Remote so wunderbar funktioniert bis zu blöden "Telefon-Update"
Danke schon mal im Vorraus
Zuletzt geändert von dizzy85 am Mo 16. Okt 2017, 21:23, insgesamt 3-mal geändert.
0 x
Benutzeravatar

adn77
Beiträge: 63
Registriert: Di 10. Okt 2017, 19:44

Mo 16. Okt 2017, 23:47

Ich habe meinem Script mal das Abspielen von Library Tracks hinzugefügt.
Man muss nur per Web-Developer-Tools die trackID aus dem POST beim Abspielen herauskopieren.

Hier mein Blog-Eintrag: http://blog.loetzimmer.de/2017/10/amazo ... -echo.html
Und der direkte Link auf das Script: https://loetzimmer.de//patches/alexa_remote_control.sh
Es gibt jetzt auch eine Version ohne JSON Parser mit weniger Funktionen: https://loetzimmer.de//patches/alexa_re ... l_plain.sh
Zuletzt geändert von adn77 am Mo 6. Nov 2017, 09:49, insgesamt 2-mal geändert.
1 x
Benutzeravatar

dizzy85
Beiträge: 39
Registriert: Mi 15. Mär 2017, 13:44
Vorhandene Echos: 3
Vorhandene Echo Dots: 1

Di 17. Okt 2017, 09:24

Hallo...
Danke erstmal für deine Bemühungen.
Kannst du evtl. mal ne kurze Anleitung dazu geben wie man das ganze zum Laufen bekommt....!
Vielleicht für eine Installation auf einen Raspberry oder so. Sorry bin jetzt nicht der große Linux Zauberer
0 x
Benutzeravatar

adn77
Beiträge: 63
Registriert: Di 10. Okt 2017, 19:44

Di 17. Okt 2017, 14:33

dizzy85 hat geschrieben:
Di 17. Okt 2017, 09:24
.
Kannst du evtl. mal ne kurze Anleitung dazu geben wie man das ganze zum Laufen bekommt....!
Vielleicht für eine Installation auf einen Raspberry oder so. Sorry bin jetzt nicht der große Linux Zauberer

Code: Alles auswählen

apt-get install gawk sed jq
wget https://loetzimmer.de//patches/alexa_remote_control.sh
chmod a+x alexa_remote_control.sh
nano alexa_remote_control.sh
# Amazon Login Daten eintragen (EMAIL und PASSWORD)
./alexa_remote_control.sh -h
AWK und SED sollten auf den meisten Rechnern bereits vorhanden sein. "jq" ist ein Kommandozeilen JSON Parser. Wer die kryptischen Bezeichnungen seienr Geräte kennt, kann das Script auch umgestalten, dass es ohne "jq" auskommt. Für die Automatik wird's benötigt, da Amazons Antworten nunmal JSON sind.

Am Anfang ist es evtl hilfreich eine Liste der Echo Geräte zu holen:

Code: Alles auswählen

alexa_remote_control.sh -a
Jetzt kann man bei TuneIn einen Sender suchen lassen und diesen auf einem Gerät (z.B. Wohnzimmer) in der Liste abspielen

Code: Alles auswählen

alexa_remote_control.sh -d Wohnzimmer -r "radioeins vom rbb"
oder man kennt die TuneIn StationID

Code: Alles auswählen

alexa_remote_control.sh -d Wohnzimmer -r s25111
Möchte man sämtliche Wiedergaben stoppen, gibt es ein spezielles Gerät "ALL"

Code: Alles auswählen

alexa_remote_control.sh -d ALL -e pause
Wird kein Gerät ausgewählt, nutztdas Script immer das erste Echo(dot)-Gerät in der Liste.
Ein Gerät darf selbstverständlich auch eine Multiroom-Gruppe sein.

Für deine Anforderung, einen Bibliothekstrack abzuspielen, spielt man diesen Track zunächst im Web-Frontend und kopiert sich aus der POST-Anfrage die trackID, die in der JSON-Anfrage enthalten ist.
Anschließend spielt folgendes Kommando den Track im Esszimmer ab:

Code: Alles auswählen

alexa_remote_control.sh -d Esszimmer -s 162ab3024d22a-401a-93f4-1234567890
0 x
Benutzeravatar

dizzy85
Beiträge: 39
Registriert: Mi 15. Mär 2017, 13:44
Vorhandene Echos: 3
Vorhandene Echo Dots: 1

Mi 18. Okt 2017, 22:03

Also ich habe es hin bekommen die Scripte zum laufen zu bringen...

Die Scripte funktionieren sehr gut und es wird alles auch sauber abgespielt und nur einmal.

Musste vor den Befehlen ein ./ ranstellen dann ging es mir

Gibt es eine Möglichkeit die Scripte per IP-Befehl zu steuern....?

Also quasi http://ip-des-Raspberry/XXX/XXX ?

Würde das gerne mit meinen Smarthomesssystem (Loxone) steuern. Also mit einen virtuellen Ausgang von Loxone den Raspberry triggern (per IP) der dann Alexa steuert.
Zuletzt geändert von dizzy85 am Mi 18. Okt 2017, 22:12, insgesamt 3-mal geändert.
0 x
Benutzeravatar

adn77
Beiträge: 63
Registriert: Di 10. Okt 2017, 19:44

Mi 18. Okt 2017, 23:33

dizzy85 hat geschrieben:
Mi 18. Okt 2017, 22:03
Gibt es eine Möglichkeit die Scripte per IP-Befehl zu steuern....?

Also quasi http://ip-des-Raspberry/XXX/XXX ?

Würde das gerne mit meinen Smarthomesssystem (Loxone) steuern. Also mit einen virtuellen Ausgang von Loxone den Raspberry triggern (per IP) der dann Alexa steuert.
Was läuft denn auf deinem Raspberry als Webserver? Du brauchst entweder ein PHP "Programm" oder ein CGI-Script (jede beliebige Sprache), die deine HTTP-GET Anforderung in Parameter für das Shellscript umsetzt.
Soweit ich sehen kann gibt es für Loxone eine Serverkomponente auf dem Raspberry namens Loxberry. Da würdest das CGI-Script in webfrontends/cgi/ legen und ausführbar machen. Genaue Dokumentation gibt es hier: http://www.loxwiki.eu/pages/viewpage.ac ... getreemode

Ein Beispiel BASH Script, was die Key/Value Paare einfach in Kommandozeilenargumente umbaut (ohne Fehlerprüfung) könnte z.B. so aussehen:

Code: Alles auswählen

#!/bin/bash
# webfrontend/cgi/alexa.cgi
#

echo "Conent-type: text/plain
"

saveIFS=$IFS
IFS='=&'
p=($QUERY_STRING)
IFS=$saveIFS

ARG=""
for ((i=0; i<${#p[@]}; i+=2)) ; do
        ARG="${ARG} -${p[$i]} ${p[$i+1]}"
done
<pfad/zu>/alexa_remote_control.sh $ARG
Dann könntest du das Script im Browser per http://Raspi/cgi-bin/alexa.cgi?d=Esszimmer&r=s2511 aufrufen.

Allerdings sollte das Script Asynchron aufgerufen werden, da es bis zu zwei Sekunden dauern kann, bis die Amazon Anmeldung vollzogen ist.
0 x
Benutzeravatar

dizzy85
Beiträge: 39
Registriert: Mi 15. Mär 2017, 13:44
Vorhandene Echos: 3
Vorhandene Echo Dots: 1

Mo 23. Okt 2017, 19:19

@ adn77
Ist es irgendwie möglich Werte von dieser Seite einzulesen?
https://layla.amazon.de/api/np/player?d ... XXXXXXXXXX
0 x
Benutzeravatar

adn77
Beiträge: 63
Registriert: Di 10. Okt 2017, 19:44

Mo 23. Okt 2017, 19:22

dizzy85 hat geschrieben:
Mo 23. Okt 2017, 19:19
Ist es irgendwie möglich Werte von dieser Seite einzulesen?
https://layla.amazon.de/api/np/player?d ... XXXXXXXXXX
Was möchtest du denn wissen?
0 x
Benutzeravatar

dizzy85
Beiträge: 39
Registriert: Mi 15. Mär 2017, 13:44
Vorhandene Echos: 3
Vorhandene Echo Dots: 1

Mo 23. Okt 2017, 20:23

Eigentlich den aktuellen Status der Alexa´s..... quasi den aktuellen Interpret / Tunein-Sender / Track / Volume etc. und wenns möglich ist, das irgendwie für alle Alexa´s die im System/Netzwerk hängen. Halt eine Rückmeldung. "Wir" basten im "Loxoneforum" an Hand deines Scriptes gerade an einem Plugin für den Loxberry herum, hoffe das ist ok für dich?

Vielleicht interessiert es ja jemanden oder möchte evtl. mithelfen.... Der Grundansatz sollte ja dann auch für andere Systeme (Homematic, ip symcon etc....) zu übernehmen sein.

Es gab schon mal ein fertiges und funktionierendes Plugin das auf den Grundlagen der im Anfang des Thread´s genannten Scripts von Torsten Gehring erstellt wurde. https://www.loxforum.com/forum/projektf ... -alexa-lox
Diese funktionieren aber nicht mehr 100% wie sie sollen nach dem Update von Amazon....
Daher wollten wir das ganze mit dem Script von dir Versuchen :-)
0 x
Benutzeravatar

adn77
Beiträge: 63
Registriert: Di 10. Okt 2017, 19:44

Di 24. Okt 2017, 00:03

dizzy85 hat geschrieben:
Mo 23. Okt 2017, 20:23
Eigentlich den aktuellen Status der Alexa´s..... quasi den aktuellen Interpret / Tunein-Sender / Track / Volume etc. und wenns möglich ist, das irgendwie für alle Alexa´s die im System/Netzwerk hängen. Halt eine Rückmeldung.
Also ich denke, es handelt sich bei den Queue Abfragen um ganz normale GET-Requests ohne Zusatzdaten. Die Antwort kommt als JSON..
Allerdings bringen die MultiRoom Geräte ein wenig die Ordnung durcheinander:

Code: Alles auswählen

"message": "music and state service do not agree on what's playing:...
Hole mal die neue Version des Scripts:http://blog.loetzimmer.de/2017/10/amazo ... -echo.html
und mach mal ein

Code: Alles auswählen

./alexa_remote_control.sh -d ALL -q
Die Ausgabe wird von "jq" momentan nicht weiter geparst, wenn du sagst, welche Felder du brauchst, dann füge ich das in Zeile 268 zum Parsing hinzu.
0 x
Antworten

Zurück zu „Alexa Allgemein“

  • Information