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

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

Beitrag von fantasticn » 02.04.2017, 08:55

Hallo Leute,

ich habe eine CCU2 und dank einiger Anleitungen und Tipps hier im Forum schon einige nette Projekte damit lösen können (Waschmaschinen-Benachrichtigung, Schaltung meines Onkyo-Receivers, Benachrichtigung auf meinen Kodi-Media-Center etc.). Trotzdem bin ich leider alles andere als ein "Experte" in dieser Thematik. Aktuell versuche ich meinen Amazon Echo Dots Befehle mit CURL zu senden (CuxD ist auf der CCU2 installiert). So soll bei Auslösung eines bestimmten Ereignisses oder bei einer bestimmten Uhrzeit der Echo Dot einen bestimmten Radiosender abspielen.

Der Befehl dafür sieht nun so aus (meine Zugangsdaten und Gerätenummern habe ich mit XXX getauscht):

Code: Alles auswählen

curl "https://layla.amazon.de/api/tunein/queue-and-play?deviceSerialNumber=XXXXXXXXXXXXXXXX&deviceType=XXXXXXXXXXXXXX&guideId=s223993&contentType=station&callSign=&mediaOwnerCustomerId=XXXXXXXXXXXXXX" -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/59.0.3053.3 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: -XXXXXXXXX" -H "Cookie: x-amzn-dat-gui-client-v=1.24.1837.0; x-wl-uid=1XWqRlX555joaQVJuFPBsHvRvpHa6OCtH0QtkmYURb0DwIGKl6zdyVJtZMAMSO42psBfuEKOgBdurevCV45Q24I47G9FXJYhSlTaUc5G2lzuy2WZbATOefyeJq4MaLMMrjFvftrP2msQ=; AMCV_69C78985561E42B67F000101%40AdobeOrg=283337926%7CMCIDTS%7C17170%7CMCMID%7C36908078956851579490100616601931278352%7CMCAAMLH-1484036062%7C6%7CMCAAMB-1484036062%7CNRX38WO0n5BH8Th-nqAG_A%7CMCAID%7C2BB7CA3F8530D255-40000306C005C3F5; s_getNewRepeat=1483431714451-New; s_vnum=1894446732970%26vn%3D10; s_nr=1491035878848-Repeat; s_dslv=1491035878849; lc-acbde=de_DE; csrf=-278072885; session-id=252-4392109-2867543; session-id-time=2121772066l; ubid-acbde=277-8128891-9759763; session-token=\"q122ff9VOEACrdKgr/sS8gQgJBpZvNM3lNyHN6OfOAjkvavPAnAo69Yg4sT4Ox4y3njmnrGFQf9A5RB3uAgv3QUQw4me5KDquiPfaXLuTyMKcB0YbEfsTQLA4Mx6KVmBlUeNCaZMzoBkBMgNoN2vGL3ywPLMr6ByNanO/BItU0olPSv5H3/nCehxgbRV2uXHoCd4mmthAzmBKyo6FnZWjxaBlsOUbDmPeFzmNWWxNPw=\"; x-acbde=\"hz1QY8YzbAces@WHIF?HTVtYMj3QYUQP\"; at-acbde=Atza|IwEBICPdOTiv_Xv7YjcTAW1Gm5rMFKP55PIiURY8lyrsP-AywJEDzZ3KVTmRZj0BR-SNFiaTwcDbBZsvpJEzDpZQS8Cf1S6r6s3L0-GVizipPRl4kDfh8zTZumwSJwDep-Cm8hR7ypXuqV_OqMJk2fdJ9Ylzdo0b5N4ntGdNvgtBniU_tJfkYYZFEoLZtINzv8SzRN1qU60EXizmmeXKjKWhgsZnepRFqRTBtYWdpKr61o9edWcjlczqgVPwU-qDGT4kNtLHiHm0oUrvfv3nkmiVs4Hjv9-ujobqzNJMTKYC_GeM1Y8VPqIx1ByG9I2hU_d7bML0KlqTCK5Jrb5QqMYDs2f8NsCTHq9LDQmN3dVqpYsvVAf8XdRHtLQXsxKJpSVCcRYf_OqhJ-rXaLCeCUSrQECj; sess-at-acbde=\"eO9fGMk29JwaLOVRtGXHww6J7i4tDRkvcgRnQCU1IvI=\"" -H "Connection: keep-alive" -H "Content-Length: 0" -H "DNT: 1" --compressed

Sende ich den Befehl mit CURL.exe aus Windows heraus, klappt es auch einwandfrei. Aber all meine Versuche, das in ein Skript für die CCU2 zu verpacken, sind bislang gescheitert. Ich vermute, es liegt an den vielen Anführungszeichen und Leerzeichen. Ich habe da noch nie durchgeblickt, wie man eine solche Befehlszeile in einem Skript richtig verpackt. Kann mir dabei jemand helfen?

Ach ja: Wer sich persönlich auch für das Thema CURL-Steuerung des Amazon Echo/Echo Dot interessiert, kann hier lesen wie es funktioniert:

Code: Alles auswählen

https://www.gehrig.info/alexa/Alexa.html
Vielen Dank vorab!
Zuletzt geändert von fantasticn am 07.04.2017, 17:30, insgesamt 2-mal geändert.

Benutzeravatar
Hubobel
Beiträge: 123
Registriert: 10.05.2016, 11:49
Wohnort: Exilplauner in Oggersheim

Re: Brauche Hilfe für CURL

Beitrag von Hubobel » 02.04.2017, 11:57

Du musst vor jeden " einen \ setzen, außer beim aller ersten " und dem letzten ".
Es könnte aber auch über einen URl-Shortener gehen (z.Bsp.bit.ly) was aber in Sachen Datenschutz eher suboptimal sein dürfte.
Gruß, Carsten
--------------------------------------------
RaspberryMatic 2.29.22.20171007 @ RPi3
--------------------------------------------
102 Kanäle in 39 Geräten und 4 CUxD-Geräten
Programme: 59 - Skripte: 67 - Variabelnamen: 30
--------------------------------------------

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

Re: Brauche Hilfe für CURL

Beitrag von fantasticn » 02.04.2017, 14:20

Hallo Carsten,

vielen Dank für die Antwort. Ich habe jetzt wieder etliche Versuche gestartet und "\" vor die Anführungszeichen gesetzt (teilweise waren schon welche vorhanden). Ich habe sie mal nur vor die öffnenden Anführungszeichen gesetzt, dann auch vor die schließenden. Aber nichts hat etwas gebracht.

Mein Skript sieht nun so aus (mit allen Anführungszeichen):

Code: Alles auswählen

string stdout;
string stderr;
dom.GetObject(„CUxD.CUX2801001:1.CMD_EXEC“).State(„LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl \"https://layla.amazon.de/api/tunein/queue-and-play?deviceSerialNumber=XXXXXXXXXXXXXXXX&deviceType=XXXXXXXXXXXXXX&guideId=s223993&contentType=station&callSign=&mediaOwnerCustomerId=XXXXXXXXXXXXXX\" -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/59.0.3053.3 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: -XXXXXXXXX\" -H \"Cookie: x-amzn-dat-gui-client-v=1.24.1837.0; x-wl-uid=1XWqRlX555joaQVJuFPBsHvRvpHa6OCtH0QtkmYURb0DwIGKl6zdyVJtZMAMSO42psBfuEKOgBdurevCV45Q24I47G9FXJYhSlTaUc5G2lzuy2WZbATOefyeJq4MaLMMrjFvftrP2msQ=; AMCV_69C78985561E42B67F000101%40AdobeOrg=283337926%7CMCIDTS%7C17170%7CMCMID%7C36908078956851579490100616601931278352%7CMCAAMLH-1484036062%7C6%7CMCAAMB-1484036062%7CNRX38WO0n5BH8Th-nqAG_A%7CMCAID%7C2BB7CA3F8530D255-40000306C005C3F5; s_getNewRepeat=1483431714451-New; s_vnum=1894446732970%26vn%3D10; s_nr=1491035878848-Repeat; s_dslv=1491035878849; lc-acbde=de_DE; csrf=-XXXXXXXXX; session-id=252-4392109-2867543; session-id-time=2121772066l; ubid-acbde=277-8128891-9759763; session-token=\"q122ff9VOEACrdKgr/sS8gQgJBpZvNM3lNyHN6OfOAjkvavPAnAo69Yg4sT4Ox4y3njmnrGFQf9A5RB3uAgv3QUQw4me5KDquiPfaXLuTyMKcB0YbEfsTQLA4Mx6KVmBlUeNCaZMzoBkBMgNoN2vGL3ywPLMr6ByNanO/BItU0olPSv5H3/nCehxgbRV2uXHoCd4mmthAzmBKyo6FnZWjxaBlsOUbDmPeFzmNWWxNPw=\"; x-acbde=\"hz1QY8YzbAces@WHIF?HTVtYMj3QYUQP\"; at-acbde=Atza|IwEBICPdOTiv_Xv7YjcTAW1Gm5rMFKP55PIiURY8lyrsP-AywJEDzZ3KVTmRZj0BR-SNFiaTwcDbBZsvpJEzDpZQS8Cf1S6r6s3L0-GVizipPRl4kDfh8zTZumwSJwDep-Cm8hR7ypXuqV_OqMJk2fdJ9Ylzdo0b5N4ntGdNvgtBniU_tJfkYYZFEoLZtINzv8SzRN1qU60EXizmmeXKjKWhgsZnepRFqRTBtYWdpKr61o9edWcjlczqgVPwU-qDGT4kNtLHiHm0oUrvfv3nkmiVs4Hjv9-ujobqzNJMTKYC_GeM1Y8VPqIx1ByG9I2hU_d7bML0KlqTCK5Jrb5QqMYDs2f8NsCTHq9LDQmN3dVqpYsvVAf8XdRHtLQXsxKJpSVCcRYf_OqhJ-rXaLCeCUSrQECj; sess-at-acbde=\"eO9fGMk29JwaLOVRtGXHww6J7i4tDRkvcgRnQCU1IvI=\"" -H \"Connection: keep-alive\" -H \"Content-Length: 0\" -H \"DNT: 1\" --compressed“)
Zuletzt geändert von alchy am 05.04.2017, 11:22, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Benutzeravatar
Hubobel
Beiträge: 123
Registriert: 10.05.2016, 11:49
Wohnort: Exilplauner in Oggersheim

Re: Brauche Hilfe für CURL

Beitrag von Hubobel » 03.04.2017, 09:10

Ohne das ich eine URL jetzt im Detail überprüfen konnte, das Script sollte so aussehen:

Code: Alles auswählen

string tmpB = "extra/curl curl -k https://layla.amazon.de/api/tunein/queue-and-play?deviceSerialNumber=XXXXXXXXXXXXXXXX&deviceType=XXXXXXXXXXXXXX&guideId=s223993&contentType=station&callSign=&mediaOwnerCustomerId=XXXXXXXXXXXXXX\" -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/59.0.3053.3 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: -XXXXXXXXX\" -H \"Cookie: x-amzn-dat-gui-client-v=1.24.1837.0; x-wl-uid=1XWqRlX555joaQVJuFPBsHvRvpHa6OCtH0QtkmYURb0DwIGKl6zdyVJtZMAMSO42psBfuEKOgBdurevCV45Q24I47G9FXJYhSlTaUc5G2lzuy2WZbATOefyeJq4MaLMMrjFvftrP2msQ=; AMCV_69C78985561E42B67F000101%40AdobeOrg=283337926%7CMCIDTS%7C17170%7CMCMID%7C36908078956851579490100616601931278352%7CMCAAMLH-1484036062%7C6%7CMCAAMB-1484036062%7CNRX38WO0n5BH8Th-nqAG_A%7CMCAID%7C2BB7CA3F8530D255-40000306C005C3F5; s_getNewRepeat=1483431714451-New; s_vnum=1894446732970%26vn%3D10; s_nr=1491035878848-Repeat; s_dslv=1491035878849; lc-acbde=de_DE; csrf=-XXXXXXXXX; session-id=252-4392109-2867543; session-id-time=2121772066l; ubid-acbde=277-8128891-9759763; session-token=\"q122ff9VOEACrdKgr/sS8gQgJBpZvNM3lNyHN6OfOAjkvavPAnAo69Yg4sT4Ox4y3njmnrGFQf9A5RB3uAgv3QUQw4me5KDquiPfaXLuTyMKcB0YbEfsTQLA4Mx6KVmBlUeNCaZMzoBkBMgNoN2vGL3ywPLMr6ByNanO/BItU0olPSv5H3/nCehxgbRV2uXHoCd4mmthAzmBKyo6FnZWjxaBlsOUbDmPeFzmNWWxNPw=\"; x-acbde=\"hz1QY8YzbAces@WHIF?HTVtYMj3QYUQP\"; at-acbde=Atza|IwEBICPdOTiv_Xv7YjcTAW1Gm5rMFKP55PIiURY8lyrsP-AywJEDzZ3KVTmRZj0BR-SNFiaTwcDbBZsvpJEzDpZQS8Cf1S6r6s3L0-GVizipPRl4kDfh8zTZumwSJwDep-Cm8hR7ypXuqV_OqMJk2fdJ9Ylzdo0b5N4ntGdNvgtBniU_tJfkYYZFEoLZtINzv8SzRN1qU60EXizmmeXKjKWhgsZnepRFqRTBtYWdpKr61o9edWcjlczqgVPwU-qDGT4kNtLHiHm0oUrvfv3nkmiVs4Hjv9-ujobqzNJMTKYC_GeM1Y8VPqIx1ByG9I2hU_d7bML0KlqTCK5Jrb5QqMYDs2f8NsCTHq9LDQmN3dVqpYsvVAf8XdRHtLQXsxKJpSVCcRYf_OqhJ-rXaLCeCUSrQECj; sess-at-acbde=\"eO9fGMk29JwaLOVRtGXHww6J7i4tDRkvcgRnQCU1IvI=\"" -H \"Connection: keep-alive\" -H \"Content-Length: 0\" -H \"DNT: 1\" --compressed";
 
dom.GetObject("CUxD.CUX2801001:5.CMD_SETS").State(tmpB);
dom.GetObject("CUxD.CUX2801001:5.CMD_QUERY_RET").State(1);
string tmpC = dom.GetObject("CUxD.CUX2801001:5.CMD_RETS").State();
in tmpC wird dir die Antwort zurückgeliefert, sollte der curl-Aufruf prinzipiell erfolgreich abgesetzt werden.

Weiterhin viel Erfolg!
Gruß, Carsten
--------------------------------------------
RaspberryMatic 2.29.22.20171007 @ RPi3
--------------------------------------------
102 Kanäle in 39 Geräten und 4 CUxD-Geräten
Programme: 59 - Skripte: 67 - Variabelnamen: 30
--------------------------------------------

Benutzeravatar
shartelt
Beiträge: 7421
Registriert: 14.01.2015, 14:59
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 524 Mal
Danksagung erhalten: 752 Mal

Re: Brauche Hilfe für CURL

Beitrag von shartelt » 03.04.2017, 10:05

könntet Ihr bitte die Codes in die Code Tags packen?

Und Hubobel...bitte die Typenbezeichnungen aus Deiner Signatur nehmen ;) Danke!

Tante Edit(h) sagt: hier der entsprechende Faden dazu

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

Re: Brauche Hilfe für CURL

Beitrag von fantasticn » 03.04.2017, 20:44

Hallo Carsten,

Vielen Dank für Deine Hilfe! Ich hab gerade Dein vorgeschlagenes Skript getestet, also den Text rüberkopiert, die "XXXX"-Felder mit den jeweiligen Daten ersetzt und dann gestartet. Keine Reaktion. Der Amazon Echo Dot macht nichts (eigentlich sollte er beginnen, Hit Radio FFH abzuspielen).

Wie gesagt: Mit Curl.exe unter Windows läuft die o.g. Befehlszeile einwandfrei. Das muss doch also umsetzbar sein unter der CCU2...?

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

Re: Brauche Hilfe für CURL

Beitrag von terny » 07.04.2017, 16:46

Hallo zusammen,

seit einigen Tagen habe ich auch einen Echo und versuche diesen nun als Radiowecker zu verwenden.
Damit könnte ich die Bose Soundtouch 10, welche ich bisher dazu verwende ausmustern.
Mit der Bose hat es nach der Anleitung schnell funktioniert diese über die CCU2+CuxD zu automatisieren:
(http://www.appproject.de/Hausautomatisi ... matic.html)

Leider kann die Alexa APP keinen Radiowecker abbilden, weswegen ich den Echo per oben genannte "Gehrig" Anleitung mittels eines Programms zeitgesteuert aus der CCU2 starten will.
In diesen Foren geht es ebenfalls darum, jedoch kann ich dort auch keine Lösung finden:
(https://www.amzecho.de/alexa-allgemein- ... -t739.html,
https://knx-user-forum.de/forum/projekt ... t%C3%A4rke)


Leider scheitere ich auch daran den ausgelesenen Curl Befehl mittels Skript durch die CCU2 zu starten.
Ist das auf diesem Weg, den auch fantasticn versucht, überhaupt technisch möglich oder nicht?
Oder liegt es einfach an der falschen Ausführung des Skripts bzw. der falschen Syntax?

Versuche wie unten haben leider nicht funktioniert.

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl "https://layla.amazon.de/api/tunein/.......6575" -H "Connection: keep-alive" -H "Content-Length: 0" --compressed");
Danke vorab für euer Hilfe.

@ fantasticn: Aufgrund des recht allgemeinen Überschrift, habe ich diesen Beitrag erst recht spät gefunden.
Vielleicht könntest du diesen noch auf z.B. "Brauche Hilfe für CURL um Alexa / Echo / Echo Dot fernzusteuern"
Bestimmt hilft es, dass mehr Nutzer mit gleichem Problem oder mit bereits fertigen Lösungen hier landen :-)
Zuletzt geändert von terny am 02.05.2017, 14:06, 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 » 07.04.2017, 17:41

Hallo terny,

freut mich, dass ich nicht der Einzige bin, der nach einer Lösung für ein solches Skript sucht. Deinem Vorschlag folgend habe ich die Überschrift des threads mal etwas angepasst. Aber eigentlich war meine Frage tatsächlich gar nicht so Alexa spezifisch gestellt, sondern eher allgemein auf die Umsetzung von Curl-Skripts auf der CCU2 gemünzt. Denn - und damit beantwortet sich wohl auch Deine entsprechende Frage - prinzipiell habe ich die Sache mit Curl.exe unter Windows bereits laufen. Man muss nur der verlinkten Anleitung von Gehrig folgen und dann von dem aus Chrome heraus kopierten link noch alle ^-Zeichen entfernen. Aber wenn ich das mit Curl auf der CCU2 versuche, geht es leider merkwürdigerweise nicht.

Meine Vermutung ist, dass das Problem etwas mit den mehrfach geschachtelten Anführungszeichen und ggf. noch weiteren "Sonderzeichen" zu tun hat. Unter Curl.exe bei Windows wird es geschluckt, unter Curl auf der CCU2 nicht. Ich hab mir da aber schon eine Wolf getestet (\ vor jedes Anführungszeichen oder die Anführungszeichen erstezt mit ') ohne Erfolg. Wir brauchen also jemand, der uns den von mir oben verlinkten Textbaustein mal probeweise so umstellt, dass er auch mit Curl auf der CCU läuft. Wenn wir den Kniff raushaben, wissen wir, wie wir weitere Befehle (andere Radiosender, Play, Pause, Stop etc.) entsprechend umsetzen müssen.

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.04.2017, 00:48

Das wird so nix - für den Aufruf in der Form muß man encoden - und das lass ich dich bei der Wurst mal machen....
Das einfachste wäre, die Shell-Dateien vom Autor zu nehmen und dann einfach den curl-Aufruf auf CUxD umschreiben;
Diese Shell-Datei dann über ein Programm aufrufen.

LG

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.04.2017, 09:48

Dragonfly hat geschrieben:Das wird so nix - für den Aufruf in der Form muß man encoden - und das lass ich dich bei der Wurst mal machen....
Das einfachste wäre, die Shell-Dateien vom Autor zu nehmen und dann einfach den curl-Aufruf auf CUxD umschreiben;
Diese Shell-Datei dann über ein Programm aufrufen.

LG
Hi Dragonfly,

thanks für die Antwort. Ich hatte die SH-Scripts von Gehrig mit win-bash unter Windows getestet, aber sie liefen bei mir nicht. Meine Hoffnung, dass sie auf der CCU2 laufen würden, hält sich deshalb in Grenzen. Zudem muss ich eingestehen, dass ich nicht genau weiß, wie man sie einbinden würde. Irgendwie muss doch dieser dämliche Curl-Befehl auf der CCU umsetzbar sein...

Antworten

Zurück zu „CUxD“