Alexa automatisiert "Fernsteuern"

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

Maragon
Beiträge: 1
Registriert: Mi 15. Nov 2017, 19:43

Mi 15. Nov 2017, 19:46

Hallo, ich lese schon eine Weile mit. möchte mich jetzt jedoch mit meiner Frage einbringen. Ist es möglich über solch ein Skript die Bluetooth Verbindung von Alexa zu starten? Der Hintergrund ist, dass ich per IO Broker einige Szenen habe die zwar alles einstellen, meine Bluetooth Verbindung mit den Lautsprechern jedoch "manuell" (per Sprachbefehl) hergestellt werden muss.
0 x
Benutzeravatar

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

Fr 17. Nov 2017, 11:15

eyeq2020 hat geschrieben:
Di 14. Nov 2017, 17:36
Jedoch kann ich meine Playlisten nicht über alexa_remote_control.sh -d Esszimmer -s abspielen. Kommt zwar eine playing library track aber es wird nichts auf dem Echo abgespielt.
An Alle, die Probleme haben, hochegladene Playlists/Stücke abzuspielen: das Argument "-s" verwendet die TrackID, auf der /api/cloudplayer/ URL.
Diese ID unterscheidet sich von der QueueID. Wie im Beitrag alexa-allgemein-f14/alexa-automatisiert ... tml#p28465 gezeigt, bieten sich insgesamt drei URLs für die aktuelle Statusanzeige an.

In der Standard-Einstellung, die heruntergeladen werden kann, war es mir wichtig, den aktuellen "PLAYING" Status auszulesen //api/np/player URL). Wenn man die TrackID benötigt, weil man den Song z.B. per Sprachbefehl gestartet hat, bietet sich die /api/media/state URL an.
Man kann einfach eine der drei kommentierten Zeilen ab Zeile 276 nach oben kopieren und auskommentieren, um zu sehen, was die URLs jeweils an Daten zeigen.

Genauere Zusammenhänge zwischen Playlist/Track/Queue etc. kann man nur im Entwickler-Modus im Browser nachvollziehen. Wenn jemand die Funktionsweise erläutern möchte... ich baue sie gern ins Script ein.

Alex
0 x
Benutzeravatar

Matthy
Beiträge: 61
Registriert: Do 26. Okt 2017, 00:27
Vorhandene Echos: 1
Vorhandene Echo Dots: 5

Fr 17. Nov 2017, 13:55

Maragon hat geschrieben:
Mi 15. Nov 2017, 19:46
Hallo, ich lese schon eine Weile mit. möchte mich jetzt jedoch mit meiner Frage einbringen. Ist es möglich über solch ein Skript die Bluetooth Verbindung von Alexa zu starten? Der Hintergrund ist, dass ich per IO Broker einige Szenen habe die zwar alles einstellen, meine Bluetooth Verbindung mit den Lautsprechern jedoch "manuell" (per Sprachbefehl) hergestellt werden muss.
Würde mich auch interessieren! Das wäre eine super Sache! Da man die Bluetooth-Geräte über die Alexa-Weboberfläche verbinden und trennen kann, sollte es meiner Meinung nach per Skript technisch grundsätzlich möglich sein.
0 x
Benutzeravatar

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

Fr 17. Nov 2017, 19:08

Bluetooth betreffend müsste jemand mal die entsprechenden URLs posten. Ich habe leider kein Equipment - Alexa kann ja sowohl Sink als auch Source sein. Als Sink ist es relativ einfach, da muss wahrscheinlich nur die URL

Code: Alles auswählen

/api/bluetooth/pair-sink/<deviceType>/<deviceSerialNumber>
aufgerufen werden (Verbindungsmodus für den entsprechenden Echo).
Als Source kann man sich ja auf verschiedene Endpunkte (Bluetooth Lautsprecher) verbinden. Da müsste man zumindest noch eine ID übergeben, bzw. vorher eine Liste holen...
radza hat geschrieben:
Mi 15. Nov 2017, 16:20
Hab das Skript gestern getestet und muss leider melden, dass ich seit dem Probleme habe überhaupt Musik abzuspielen. Weder mit Skript noch per Sprache noch per Klick im Browser scheint das ab und zu zu funktionieren. Hat noch jemand das Problem?
@radza:
Per Sprache muss es immer funktionieren, ebenso per App bzw. Browser. Das Script greift in keiner Weise in die Echos oder deinen Account ein.
Beim ersten Start holt es sich nur ein Session Cookie - sonst ist es vollkommen zustandslos.

Wenn Musik-Abspielen nicht funktioniert, dazu habe ich zwei Posts weiter oben etwas geschrieben.

Alex
Zuletzt geändert von adn77 am Fr 17. Nov 2017, 19:17, insgesamt 1-mal geändert.
0 x
Benutzeravatar

tom1982
Beiträge: 1
Registriert: Mo 6. Mär 2017, 11:50

Sa 18. Nov 2017, 09:47

Hi!

Das mit dem Bluetooth würde mich auch brennend interessieren - also quasi den Befehl "Alexa verbinde Lautsprecher" über ein Kommando ablaufen zu lassen!

Ich hab das ganze mal für die Leute mit Loxone zusammengebastelt und hier erklärt

https://www.loxforum.com/forum/faqs-tut ... in-steuern

Hoffe das ist soweit OK wenn ich hier die Infos geklaut hab?!?

Gruß
Tom
0 x
Benutzeravatar

eyeq2020
Beiträge: 10
Registriert: Do 9. Mär 2017, 21:03

So 19. Nov 2017, 23:15

adn77 hat geschrieben:
Fr 17. Nov 2017, 11:15
eyeq2020 hat geschrieben:
Di 14. Nov 2017, 17:36
Jedoch kann ich meine Playlisten nicht über alexa_remote_control.sh -d Esszimmer -s abspielen. Kommt zwar eine playing library track aber es wird nichts auf dem Echo abgespielt.
An Alle, die Probleme haben, hochegladene Playlists/Stücke abzuspielen: das Argument "-s" verwendet die TrackID, auf der /api/cloudplayer/ URL.
Diese ID unterscheidet sich von der QueueID. Wie im Beitrag alexa-allgemein-f14/alexa-automatisiert ... tml#p28465 gezeigt, bieten sich insgesamt drei URLs für die aktuelle Statusanzeige an.

In der Standard-Einstellung, die heruntergeladen werden kann, war es mir wichtig, den aktuellen "PLAYING" Status auszulesen //api/np/player URL). Wenn man die TrackID benötigt, weil man den Song z.B. per Sprachbefehl gestartet hat, bietet sich die /api/media/state URL an.
Man kann einfach eine der drei kommentierten Zeilen ab Zeile 276 nach oben kopieren und auskommentieren, um zu sehen, was die URLs jeweils an Daten zeigen.

Genauere Zusammenhänge zwischen Playlist/Track/Queue etc. kann man nur im Entwickler-Modus im Browser nachvollziehen. Wenn jemand die Funktionsweise erläutern möchte... ich baue sie gern ins Script ein.

Alex
Hallo Alex, wenn man die Möglichkeiten hätte um z.b. seine Playliste, Prime Playliste, Prime Radio Musik und TuneIn abzuspielen würde das Skript ja alles abdecken. Würde bestimmt allen sehr gut gefallen.
1 x
Benutzeravatar

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

Di 21. Nov 2017, 22:32

Ich habe jetzt nochmal eine erweiterte Version gebaut - leider fallen mir kaum noch kreative Kommandozeilen Parameter ein...

Code: Alles auswählen

/usr/local/bin/alexa_remote_control.sh [-d <device>|ALL] -e <pause|play|next|prev|fwd|rwd|shuffle|vol:<0-100>> | -q | -r <"station name"|stationid> | -s <trackID> | -t <ASIN> | -u <seedID> | -i | -p | -P | -S | -a | -l | -h
   -e : run command
   -q : query queue
   -r : play tunein radio
   -s : play library track
   -t : play Prime playlist
   -u : play Prime station
   -v : play Prime historical queue
   -i : list imported library tracks
   -p : list purchased library tracks
   -P : list Prime playlists
   -S : list Prime stations
   -a : list available devices
   -l : logoff
   -h : help

Code: Alles auswählen

-i legt eine Liste der zu Amazon hochgeladenen Tracks an "/tmp/.alexa.IMPORTED.list" => trackId für Option -s

Code: Alles auswählen

-p legt eine Liste der bei Amazon gekauften Tracks an "/tmp/.alexa.PURCHASES.list" => trackId für Option -s

Code: Alles auswählen

-P legt eine Liste aller Amazon Playlists an "/tmp/.alexa.prime-playlist-browse-nodes.list" => asin für Option -t

Code: Alles auswählen

-S legt eine Liste aller Amazon Stationen an "/tmp/.alexa.prime-sections.list" => seedId für option -u
Die Optionen "-s", "-t" und "-u" spielen die Tracks/Playlists/Stationen dann ab.

Als Prime Benutzer kann man per Sprachkommando auch bestimmte Interpreten spielen lassen. In der Oberfläche fehlt eine entsprechende Steuermöglichkeit. Fragt man den aktuellen Play-Status in diesem fall aber mit de -q Option ab, so erhält man eine queueId, die man mit der -v Option abspielen kann

Code: Alles auswählen

alexa_remote_control.sh -d Esszimmer -v 1f4919d7-45db-45cf-a47f-1234567890ab
Die Playlist muss auf dem jeweiligen Device schonmal gespielt worden sein!!!

Alex
Zuletzt geändert von adn77 am Mi 22. Nov 2017, 10:32, insgesamt 1-mal geändert.
1 x
Benutzeravatar

eyeq2020
Beiträge: 10
Registriert: Do 9. Mär 2017, 21:03

Mi 22. Nov 2017, 00:23

Wow Alex ! Was für ein Skript. Ich hätte niemals gedacht, dass man so viel hier rausholen kann. Der Anfang von Thorsten war schon ein riesen Schritt. Abgerundet mit deiner Cookie Automation sowie die ganzen Playlisten, Radiolisten etc. Wirklich klasse was du hier geleistet hast…….
Es funktioniert wirklich alles so, wie man es braucht um die Alexa fernzusteuern. Im Zusammenspiel mit einer Homeautomation wirklich SUPER.

Grüße

eyeq!
0 x
Benutzeravatar

fantasticn
Beiträge: 9
Registriert: Do 23. Mär 2017, 17:00

Mi 22. Nov 2017, 07:31

Hallo Leute,

ich habe vor längerer Zeit bereits mit der Lösung von Gehrig herum expirementiert, um von einer Homematic CCU2 (Funksendestation für Homematic-Heimautomation auf Linux-Basis) meine Echo-Dots zu steuern. Ein erfahrener User im Homematic-Forum hat schließlich ein Script gebastelt, das ich und einige andere Nutzer eine Zeit lang im Einsatz hatten. Leider stellte sich immer wieder das Problem mit dem ablaufenden Cookie. Das habt Ihr aber inzwischen gelöst.

Nun habe ich also das vorliegende Script (in der Version ohne "jq", weil ich nichts dazu gefunden habe, wie man jq auf der CCU2 zum Laufen bekommen kann) genommen und getestet. Natürlich hatte ich zunächst auch den "copy&paste"-Fehler gemacht und das Script lief gar nicht. Durch den Hinweis hier im Forum habe ich das Script dann nochmals ordnungsgemäß runtergeladen und meine Amazon-Zugangsdaten eingetragen. Danach lief es - zumindest in einer Bash-Shell von Windows - einwandfrei. Als nächstes habe ich es auf die CCU2 kopiert und dort gestartet, aber ich wurde von Fehlermeldungen nur so erschlagen. Folgende Anpassungen habe ich daraufhin noch vorgenommen:

1. Den Pfad zu CURL auf der CCU2 gesetzt (also im Script "curl" ersetzt durch ""/usr/local/addons/cuxd/extra/curl").

2. Hinter dem Befehl "sed" den Parameter "-E" ersetzt gegen "-r". Soweit ich herausfinden konnte, bewirken beide das selbe. Indes unterstützt die CCU2 kein "-E", sondern eben nur "-r".

Nun indes hänge ich beim Befehl "getopts". Auch dieser wird von der CCU2 nicht unterstützt, wohl aber "getopt" (falls das eine Alternative darstellt). Leider habe ich von der Script-Programmierung kaum Ahnung und meine Frage lautet daher, kann jemand vielleicht den "getopts"-Aufruf auf "getopt" umstellen, so dass es damit funktioniert? Eventuell läuft das Script ja dann auf der Homematic CCU2 auch, was für mich und viele andere Leute sehr hilfreich wäre.

Vielen Dank für Eure Unterstützung vorab!

FantasticN

PS: Ich habe den post von adn77 so verstanden, dass eventuell noch nach Ideen für das Script gesucht wird. Deshalb Folgendes: Besteht vielleicht die Möglichkeit, das Script so zu erweitern, das Multiroom-Gruppen geschaffen und aufgelöst werden können? So könnte man dann beliebige Echos und Sonos-Lautsprecher (mit denen das vorliegende Script übrigens nach meinen Tests auch läuft) beliebigen zu Multiroom-Gruppen zusammenfügen. Über die Alexa-App ist das ja leider recht aufwendig und "starr". Eine flexible Gestaltung wäre vor allem deshalb hilfreich, weil ja aktuell jedes Device zeitgleich nur Mitglied einer Gruppe sein kann. Man könnte sich deshalb über ein solches Script verschiedene Gruppen vorfertigen und bei Bedarf aktivieren. Ist nur so eine Idee.
Zuletzt geändert von fantasticn am Mi 22. Nov 2017, 07:34, insgesamt 2-mal geändert.
0 x
Benutzeravatar

Matthy
Beiträge: 61
Registriert: Do 26. Okt 2017, 00:27
Vorhandene Echos: 1
Vorhandene Echo Dots: 5

Mi 22. Nov 2017, 10:24

Echt ein super Script!
Ein echtes STOP-Kommando fände ich noch extrem nützlich. Vor allem in Bezug auf Heimautomatisierung.
Es gibt aktuell nur das Kommando "pause", was das Abspielen aber auch wieder fortsetzt, falls die Musik bereits pausiert ist.
Da die API ein Stop nicht "nativ" anbietet, könnte man über "query queue" erst abfragen in welchem Zustand sich der Abspieler befindet. Und dann nur ein "pause" senden, wenn der Status nicht "IDLE" ist.
0 x
Antworten

Zurück zu „Alexa Allgemein“

  • Information