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

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

Moderator: Co-Administratoren

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

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

Beitrag von uwe111 » 02.05.2017, 20:45

fantasticn hat geschrieben:Ich habe den Befehl sowohl unter WinSCP (Terminal-Fenster) als auch unter Putty versucht einzugeben. Aber er scheint zu lang. Beim reinkopieren wird im hinteren Bereich einfach abgebrochen. Ich kann mehr Zeichen dann nicht hinzufügen.
Falls das Terminal eine Begrenzung hat, kannst Du die Zeile auch mit \ am Zeilenende in mehrere Zeilen aufteilen.
Geht das auch nicht?

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

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

Beitrag von alchy » 02.05.2017, 23:30

Ich wollte mich nicht mehr so einbringen im Forum, wurde aber per PN genötigt. :oops:
Damit alle testen können, hier meine Antwort.

Auf der Kommandozeile gibt es also noch Probleme. :mrgreen:

So geht es:

Auf der CCU in den Pfad:

Code: Alles auswählen

/usr/local/addons/test/
legst du eine datei an mit namen: shcurl

der Inhalt der Datei sieht dann so aus:

Code: Alles auswählen

#!/bin/sh
/usr/local/addons/cuxd/extra/curl --compressed -s -k  "https://layla.amazon.de/ ...  ... . ...... und ..  ...weiterer...  .... Link . . .. aus ...  .. der ..   .. Anleitung..  ... Connection: keep-alive" -H "Content-Length: 0" -H "DNT: 1" 
Also natürlich mit deinen Daten:

Der originale Link fängt so an:
curl "https://layla.amazon.de....

daraus machst du:

/usr/local/addons/cuxd/extra/curl --compressed -s -k "https://layla.amazon.de...


am Ende des originalen Links steht
.....Content-Length: 0" -H "DNT: 1" --compressed

Und das --compressed wird ersatzlos da gelöscht. Verständlich?


die Datei mit entsprechenden Rechten versehen und mal probehalber starten in dem du auf der Shell
mittels

Code: Alles auswählen

cd /usr/local/addons/test/
zur datei gehst und dann mit

Code: Alles auswählen

sh shcurl
die Sache startest.


Ein einfaches HM Script kann das natürlich auch.
Vorzugsweise erstmal mit system.exec für die Rückgaben vor allem im Fehlerfall.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("sh /usr/local/addons/test/shcurl",&stdout,&stderr);
WriteLine("FEHLER:\n "#stderr);
WriteLine("AUSGABE:\n"#stdout);
Das war es dann schon auf die Schnelle.
Viel Spass bei der weiteren Integration.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

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

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

Beitrag von fantasticn » 03.05.2017, 07:49

Hi alchy,

du bist mein Held! Es funktioniert! Sh-Script erstellt mit --compressed nach vorne gezogen, vom Terminal-fenster aus gestartet ... und sofort klappt es. Ich bin begeistert.

Na dann kann ich ja jetzt für meine Echo-Dots ein paar Scripts erstellen und diese dann in meine Programme einbinden.

Many thanx!

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

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

Beitrag von fantasticn » 04.05.2017, 09:16

Interessant übrigens:

1. Kopiere ich den Curl-Aufruf in der vorliegenden Form statt in das SH-Skript direkt in den system-Exec-Befehl, klappt es nicht (auch nicht, wenn ich es in '-Zeichen setze). Ich nehme an, dass sich dann wieder das Thema mit den drei Ebenen und dem Ausklammern bemerkbar macht.

2. Nehme ich statt system.Exec CuxD zum Aufruf, also

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/user/scriptname.sh");

dann klappt es damit merkwürdigerweise auch nicht.

Momentan geht es also bei mir nur mit einem SH-Script, das dann mit Hilfe von system.Exec aufgerufen werden muss. Aber immerhin: Das ist doch schon mal ein Lösungsweg.

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

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

Beitrag von alchy » 04.05.2017, 10:32

Um einen Direktaufruf mittels System.exec oder cuxd.exec erfolgreich hinzubekommen, muss *IMHO* noch etwas gefeilt werden.
Das macht es aber nicht einfacher, da nicht jeder seinen Link einfach so kopieren kann wie ich in meiner >Anleitung< gepostet habe, sondern ihn auch noch anpassen muss.
Und das würde wieder extrem viele Hilferufe aka " Alchy, bei mir geht das nicht, deine Anleitung ist falsch" geben.
Deshalb hatte ich ja die Lösung mit dem SH-Script gepostet, da dies *IMHO* der leichteste gemeinsame Nenner ist.
Zum Testen fehlt mir die Hardware und vor allem die Zeit und Lust. Vielleicht später. :wink:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

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

Beitrag von uwe111 » 04.05.2017, 10:36

fantasticn hat geschrieben:2. Nehme ich statt system.Exec CuxD zum Aufruf, also

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/user/scriptname.sh");

dann klappt es damit merkwürdigerweise auch nicht.
Hast Du CUX2801001 auf der CCU angelegt?
Steht im CUxD-Syslog eine Fehlermeldung?
Werden andere Scripts mittels CUX2801001:1.CMD_EXEC ausgeführt?

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

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 » 04.05.2017, 10:38

1. Geht vermutlich wegen dem encoden nicht, und wird eine ewige Baustelle...
2. kriegen wir schon hin

Versuch bitte mal mein Alexa-Script zum laufen zu bringen - habs nur auf der Syno getestet (dies war nur durch Alchy´s Tipps möglich) - habe es aber für die CCU vorbereitet.
Dort hab ich momentan noch nicht getestet, weil ich es dort nicht brauche.

Bitte einfach deine Daten eingeben und versuchen.

Aufrufe:
./alexa.sh play
./alexa.sh pause
./alexa.sh next
./alexa.sh prev
./alexa.sh forward
./alexa.sh rewind
./alexa.sh vol 20
./alexa.sh shuffle on
./alexa.sh repeat off
./alexa.sh tunein s83744

EDIT:
TuneIn hinzugefügt.
Dateianhänge
alexa.zip
(1002 Bytes) 128-mal heruntergeladen

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 » 04.05.2017, 15:33

Hallo nochmal....

Gehrig hat eine andere url als ich... vermutlich über Amerika angemeldet.... wir sollten die "layla" haben.
Bitte mir alle Möglichkeiten zukommen lassen... dann hinterlege ich die im Script - danke.

Code: Alles auswählen

URL='https://pitangui.amazon.com/api/np/command?deviceSerialNumber='$DEVICENUMBER'&deviceType='$DEVICETYPE
    URL='https://layla.amazon.de/api/np/command?deviceSerialNumber='$DEVICENUMBER'&deviceType='$DEVICETYPE

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 » 04.05.2017, 17:21

Hallo dragonfly,

so sieht es bei mir aus:

Code: Alles auswählen

https://layla.amazon.de/api/tunein/queue-and-play?deviceSerialNumber=XXXXXXXXXXXXXXXXXXX&deviceType=xxxxxxxxxxxxxxxxxx&guideId=s96494&contentType=station&callSign=&mediaOwnerCustomerId=XXXXXXXXXXXXXXXXXXXXXXXXX" -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/57.0.2987.133 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: 17xxxxxxxx" -H "Cookie: x-amzn-xxxxx\"" -H "Connection: keep-alive" -H "Content-Length: 0"
Zuletzt geändert von terny am 07.05.2017, 21:12, insgesamt 1-mal geändert.

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 » 04.05.2017, 17:36

Gut. URL und URL2 musst du im script nicht anpassen.

Gesendet von meinem FRD-L09 mit Tapatalk

Antworten

Zurück zu „CUxD“