Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuern

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

fantasticn
Beiträge: 102
Registriert: 15.03.2016, 14:34

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von fantasticn » 05.05.2017, 17:40

@uwe111
CuxD klappt bei anderen Programmen. Hab den Fehler aber inzwischen gefunden: Es fehlte "SH" vor Pfad zum Script". Jetzt läuft alchys Lösung also auch, wenn ich es mit CuxD aufrufe :-)

@Dragonfly
Thanks für das Skript. Aber es läuft bei mir nicht. Hab es mit system.exec und mit CuxD versucht. Egal welche Parameter ich nutze, es klappt nicht. Alle Angaben sind im Script korrekt eingetragen. Und der https-link passt bei mir auch (layla.amazon.de/api/...).

fantasticn
Beiträge: 102
Registriert: 15.03.2016, 14:34

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von fantasticn » 06.05.2017, 09:30

Ok, hab das Script von Dragonfy zum Laufen gebracht. Folgende Änderungen musste ich bei mir vornehmen:

1. send-command2() ... musste bei mir wir folgt gesetzt werden:

/usr/local/addons/cuxd/extra/curl --compressed -s -k $URL2 -X POST -H "Origin: http://alexa.amazon.de" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: de" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3080.6 Safari/537.36" -H "Content-Type: application/json; charset=UTF-8" -H "Accept: application/json, text/javascript, */*; q=0.01" -H "Referer: http://alexa.amazon.de/spa/index.html" -H "$CSRF" -H "$COOKIE" -H "Connection: keep-alive" -H "Content-Length: 0" -H "DNT: 1"

2. Die Angaben zu DEVICENUMBER, DEVICETYOE, CSRF, COOKIE und CUSTOMERID mussten statt in '-Zeichen in "-Zeichen gesetzt werden.

Nun klappt der Aufruf mit "tunein s223993" (und anderen Radiosendern), ebenso wie mit pause, play, shuffle on/off, vol XY etc. Was noch schön wäre, wäre der Einbau eines Standard-Radiosenders, wenn man den Parameter tunein ohne zusätzliche Sendernummer verwendet (ähnlich wie bei der vol mit der Standard-Lautstärke 40)

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von Dragonfly » 06.05.2017, 10:43

cool!

Dann passe ich das noch an und baue einen Standart-Sender ein.... und poste das Script zum Testen.

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von Dragonfly » 06.05.2017, 14:51

@fantasticn
so, neue Version zum Testen...

den curl für "send_command2" habe ich noch etwas gekürzt, in der hoffnung, daß das ganze dann nicht nur mit der "layla" läuft....
Dateianhänge
alexa.zip
(1.4 KiB) 151-mal heruntergeladen

fantasticn
Beiträge: 102
Registriert: 15.03.2016, 14:34

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von fantasticn » 06.05.2017, 21:50

hi Dragonfly,

many thanks für die Anpassung. Hab es gerade getestet. Aber Du musst eine Sache (merkwürdigerweise) ändern, sonst klappt es nicht: Du musst bei der Variable COOKIE nicht '-Zeichen, sondern "-Zeichen nehmen. Die anderen Variablen gehen mit '-Zeichen, aber nicht Cookie. Ich nehme an es hat etwas mit den Ebenen und dem Ausklammern zu tun (im Cookie sind ja noch weitere Ebenen drin, die mit \" ausgeklammert sind; genau diese Sache mit den vielen Ebenen dürfte wohl auch der Grund sein, warum wir es nicht hinbekommen, den ganzen Befehl direkt in ein CCU-Skript zu packen).

Mit der vorgenannten Änderung läuft es dann jedenfalls einwandfrei. Und auch der Standardsender geht!

terny
Beiträge: 76
Registriert: 23.10.2015, 09:08
Hat sich bedankt: 6 Mal

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von terny » 07.05.2017, 20:36

Hallo dragonfly,

danke für die super Umsetzung im Script und sogar die Einbindung unserer Wünsche! Dickes Lob! :D
Eine Spende für deinen Einsatz ist soeben raus.

Bei mir funktioniert das letzte Script mit den Hinweisen von fantasticn problemlos mit Cuxd oder direkt über system.exe.

Folgende Dinge waren bei mir jedoch zu beachten:
1. Beim CRF und beim COOCKIE muss jeweils nochmals 'csrf: xxx' bzw. 'Cookie: x-amzn...' mit in die geklammerten Werte. Das war zumindest für mich nicht ganz eindeutig.
2. Beim kopierten Curl Copy Text für den Cookie musste ich alle "\" und alle "^" Zeichen ersatzlos löschen.

Damit sieht das ganze bei mir so aus:

Code: Alles auswählen

DEVICENUMBER='Gxxx7'

DEVICETYPE='Axxx2'

CSRF='csrf: 1xxx5' 

COOKIE='Cookie: x-amzn-dat-gui-clientXXXXX-yAg'

CUSTOMERID='Axxx6'
Der Aufruf des Sriptes erfolgt über diese beiden Varianten, wobei ich hier fantasticn zitiere:

Code: Alles auswählen

Var.1 (besser, weil CuxD "multitastking-fähig" ist, also mehrere Aufrufe gleichzeitig kein problem verursachen):
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh pfad/scriptname.sh parameter");

Var 2 (ohne CuxD, wobei CuxD trotzdem auf der CCU/CCU2 installiert sein muss, damit der Curl-Befehl funktioniert):
string stdout;
string stderr;
system.Exec("sh pfad/scriptname.sh parameter",&stdout,&stderr);
Hier auch nochmal ein Dank an fantasticn, der bei der Lösungsfindung und Erprobung intensiv beteiligt war!
Ich würde sagen: Ziel erreicht!

fantasticn
Beiträge: 102
Registriert: 15.03.2016, 14:34

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von fantasticn » 07.05.2017, 20:53

Hi terny,

ja, das Skript läuft jetzt. Dragonfly ist gerade noch dabei, eine kleine "Optimierung" beim "play"-Befehl vorzunehmen. Ich helfe testen. Mal schauen, ob das noch hinzubekommen ist.

Ansonsten:
- "Cookie: ..." und "csrf: .." musst Du in der Tat mitnehmen. Diese Ausdrücke stehen aber auch in der Curl-Befehlszeile innerhalb der Anführungszeichen. Sie gehören also zu dem jeweiligen Parameter dazu.
- Die ^-Zeichen musst Du auch entfernen (das hatte ich - glaube ich - schon vorher hier im thread ein oder zweimal erwähnt). Aber die \-Zeichen sollten eigentlich bleiben. Ansonsten dürfte es Probleme geben beim Ausklammern der zweiten "Ebene" innerhalb des Cookies. Die \-Zeichen vor den " definieren quasi, dass es nicht das Ende der ersten Ebene (Anführungszeichen-Ende), sondern der Beginn einer zweiten Ebene (Anführungszeichen-auf) ist, also quasi "Anführungszeichen in Anführungszeichen".

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von Dragonfly » 08.05.2017, 10:47

So, kleines Update:

die Play-Erweiterung will noch nicht so recht - zumindest auf der ccu :|

aber: nun kann man Prime-Playlisten nützen:
./alexa.sh primemusic A3C8WGK5P1KO4L


Jetzt muß ich mich aber wieder etwas am Familienleben beteiligen - play und private Playlisten sollten folgen....

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von Dragonfly » 09.05.2017, 13:05

Und schon wieder ein Update:

der Befehl primemusic ist rausgeflogen - jetzt gibt es:
./alexa.sh prime radio AWQEQ4SVHXTEX # for PrimeMusic radiostations
./alexa.sh prime playlist B01N3UD4N6 # for PrimeMusic playlists


Der Play-Befehl ist auch fertig:

Senderliste/Playlisten werden so konfiguriert:
oe3="tunein:s83744"
Country="prime_radio:AWQEQ4SVHXTEX"
Rock80er="prime_playlist:B01N3UD4N6"

Der Aufruf dazu:
./alexa.sh play oe3
./alexa.sh play Country
./alexa.sh play Rock80er
Zuletzt geändert von Dragonfly am 11.05.2017, 17:59, insgesamt 1-mal geändert.

fantasticn
Beiträge: 102
Registriert: 15.03.2016, 14:34

Re: Brauche Hilfe für CURL um Amazon Echo/Alexa fernzusteuer

Beitrag von fantasticn » 09.05.2017, 21:29

Hi Dragonfly,

das hört sich ja jetzt richtig klasse an. Werde es umgehend ausprobieren. Leider ist es nur unter der Woche aus beruflichen Gründen meist nicht so leicht, Zeit dafür zu finden. Aber ich gebe feedback, sobald ich dazu gekommen bin es zu testen.

Many thanx schon mal für Deinen Einsatz!

Antworten

Zurück zu „CUxD“