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
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, 11:00

Script anpassen:
curl-Befehl dort mit Pfadangabe für den CUxD-Curl anpassen:

Code: Alles auswählen

/usr/local/addons/cuxd/curl
Das Script nach "/usr/local/addons/cuxd/user/" in der CCU hochladen, Dateirechte 755 nicht vergessen !

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/user/irgendeine.sh");
Testen und hoffen, daß der Rest vom Script schon so passt.
Gehen wird es sicher, die Frage ist nur, wie lange es dauert :mrgreen:

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, 12:04

Hi Dragonfly,

nochmals many thanx für die Hilfe. Ich habe alles entsprechend gemacht. Ich habe auch noch die \-Zeichen vor den Anführungszeichen entfernt (soweit ich das verstehe, bezeichnen sie eine weitere Öffnung/Schließung von Anführungszeichen innerhalb von geöffneten Anführungszeichen, das sog. Escapen; da wir den betroffenen Text im SH-Skript aber nicht mehr in Anführungszeichen setzen, sondern in '-Zeichen, ist es wohl entbehrlich bzw. würde stören). Im Vergleich zum direkt aus Chrome heraus kopierten Link sind also nun alle ^und \ Zeichen entfernt. Unter Windows (curl.exe) läuft das SH-Skript nun auch einwandfrei, aber nicht unter der CCU2. Dort sieht es jetzt so aus:

Code: Alles auswählen

#!/bin/bash
DEVICENUMBER='XXXXXXXXXXXXXXXX'
DEVICETYPE='XXXXXXXXXXXXXX'
STATION='s223993'
CUSTOMERID='XXXXXXXXXXXXXXX'
COOKIE='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="'
CSRF='csrf: -XXXXXXXXX' 

URL='https://layla.amazon.de/api/tunein/queue-and-play?deviceSerialNumber='$DEVICENUMBER'&deviceType='$DEVICETYPE'&guideId='$STATION'&contentType=station&callSign=&mediaOwnerCustomerId='$CUSTOMERID
/usr/local/addons/cuxd/curl $URL \
-X POST  \
-H "$CSRF" \
-H "$COOKIE" \
--compressed
Any idea?

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, 18:23

mach aus dem mal ne wurst...

Code: Alles auswählen

/usr/local/addons/cuxd/curl $URL -X POST -H "$CSRF" -H "$COOKIE" --compressed
wenns nix ist, tausch noch die " gegen ' aus....

leider zum nachbauen keine zeit - Kinder haben Ferien :cry:

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, 20:19

Hi Dragonfly,

nochmals many thanx für Deinen Einsatz. Hab beides probiert (mit " und mit '-Zeichen), aber es klappt nicht. Keine Reaktion.

Wie gesagt: Das Script läuft unter Windows einwandfrei - sowohl direkt mit Curl (also als ganz lange "Wurst") als auch als SH-Skript. Aber eben nicht unter CCU. Und ich vermute weiterhin, dass es etwas mit dem "escapen" zu tun hat. Immerhin hat der Ausdruck hinter Cookies zwei Ebenen mit "-Zeichen und wenn man den gesamten Befehl - wie wohl mit CuxD auf der CCU notwendig - nochmals komplett in Anführungszeichen setzt, dann sind es sogar insgesamt drei Ebenen. Wie man das verpackt, weiß ich leider nicht. Und mit dem \-Zeichen voran scheint es nicht zu klappen.

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 » 11.04.2017, 20:44

Hallo zusammen,

leider habe ich wie fantasticn auch noch keinen funktionierenden Lösungsweg für den CURL Befehl mittels CCU2 zum Echo gefunden.

Im KNX Forum gibt es seit kurzem schon ein "EDOMI LBS", welche die gewünschte Ansteuerung des Echo von außen ermöglichen soll.
https://knx-user-forum.de/forum/projekt ... 4rke/page2

Weiß jemand, ob man ein "EDOMI LBS" mittels Anpassung/Modifikation auch über die CCU2 starten kann bzw. diesen Weg der Ansteuerung für den Echo umsetzen kann?
Ist dies der leichtere Weg, oder ist der obige Weg über ein "richtig ausgeführten" Curl Befehl zielführender?

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

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

Beitrag von fantasticn » 12.04.2017, 09:33

Zu dem EDOMI.LBS kann ich wenig sagen. Ich denke indes nicht, dass man das direkt auf der CCU nutzbar machen kann.

Da sowohl der Curl-Befehl, als auch das SH-Skript unter Windows laufen, gehe ich eher davon aus, dass wir an der korrekten Umsetzung derselben für die CCU2 arbeiten sollten. Nach wie vor tippe ich darauf, dass es am sog. "Escapen" liegt, also der verschachtelten Klammerbildung. Unter Windows sind es nämlich nur zwei Ebenen (die Links und Parameter stehen jeweils in Anführungszeichen und innerhalb des Cookies sind nochmals Anführungszeichen). Hier klappt es auch einwandfrei, unter Curl die zweite Ebene im Cookie mit einem \-Zeichen vor den Anführungszeichen auszuklammern bzw. im SH-Skript die Parameter in '-Zeichen zu setzen. Unter der CCU2 jedoch muss der gesamte Curl-Aufruf selbst nochmals in Anführungszeichen stehen. Dadurch rutscht der Rest eine Ebene tiefer, d.h. wir haben jetzt drei verschachtelte Ebenen. Und hier ist dann wohl der Wurm drin.

Meine erfolglosen Versuche mit Curl auf der CCU2 waren:
"Ebene1 \" Ebene2 'Ebene3' \" "
"Ebene1 'Ebene2 \"Ebene3\" ' "
"Ebene 1 "\""Ebene2 'Ebene3' "\" "
"Ebene 1 'Ebene2 "\"Ebene3"\" ' "

Any Ideas?

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 » 12.04.2017, 11:12

Mich fuxt es auch:
Habe mit Putty direkt versucht:
beim Reinkopieren schneidets den Befehl auf der CCU schon ab - auf der Syno geht er und ist ausführbar; darauf wollte ich ihn 1:1 in eine Shell packen - die Syno meldet ein problem mit --compressed (obwohl´s in putty geht). Auch durch openHAB kann ich ihn nicht "durchquetschen"....

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

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

Beitrag von fantasticn » 13.04.2017, 07:41

Tja, da ich wirklich keine große Ahnung von Curl, Bash-Skripten und ähnlichem habe, kann ich nur von der rein "logischen" Seite herangehen: Curl auf der CCU2 sollte ja prinzipiell genauso funktionieren bzw. zumindest die gleichen Fähigkeiten besitzen wie auf anderen Plattformen, also z.B. unter Windows. Und auch SH-Skripts sollten prinzipiell genauso funktionieren. Insofern müssen wir ergründen, was an unserer Befehlskette auf der CCU2 anders läuft. Aus meiner Sicht ist es primär die Sache mit der zusätzlichen Ebene, die hier eingezogen werden muss (weil der ganze Curl-Befehl selbst nochmals in Anführungszeichen gesetzt werden muss). Wir haben also nicht zwei, sondern drei Ebenen und müssen deshalb nicht eine - wie in den meisten Anleitungen beschrieben - sondern zwei Ebenen "escapen". Ich habe aber nix dazu gefunden, wie das geht, Falls es grundsätzlich nicht klappt, wäre die Überlegung nach einem "workaround". D.h. wir müssten schauen, ob wir den Befehl nicht in anderer Form absetzen können. Dazu müssten wir ggf. die Parameter auseinander nehmen. Ich denke der Hauptknackpunkt wird der Teil mit dem cookie sein, der ja auch die dritte Ebene beinhaltet.

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 » 27.04.2017, 14:05

Hallo fantasticn,

trotz diverser Versuche, habe ich es leider auch noch immer nicht geschafft über die CCU2 den Echo anzusteuern.
Nun überlege ich ob es über die App bzw. Plattform IFTTT einfacher geht eine Zeitsteuerung bzw Ereignissteuerung zu realisieren.
Bin jedoch noch an der Einarbeitung.

Hast du schon andere Ideen bzw. Lösungsansätze verfolgt?

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

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

Beitrag von fantasticn » 28.04.2017, 07:31

Hallo terny,

leider habe auch ich für die CCU2 noch immer keine Lösung gefunden. Ich habe die Curl-Befehlszeile auf verschiedenste Weisen getestet, d.h. vor allem mit den Anführungszeichen herumgespielt. Das gleiche habe ich auch nochmals über ein SH-Script versucht. Aber es war nie erfolgreich. Wie schon gesagt, vermute ich, dass es an der dritten "Ebenen" liegt, die durch die zusätzliche Anführungszeichen beim CuxD-Befehl entsteht. Ob es dafür überhaupt eine Lösung gibt bzw. ob man das durch Aufgleisen der Parameter in der Befehlszeile in den Griff bekommen könnte, weiß ich nicht. Ich vermute schon, dass es einen Weg geben würde. Aber mir fehlen die Kenntnisse in dieser Skript-Thematik, um ihn zu finden.

Über IFTTT habe ich gerade in letzter Zeit einiges gelesen und von der Idee her klingt es sehr interessant. Allerdings muss man sagen, dass ich aktuell meine Homematic mittels Alexa (also der umgekehrte Weg, den wir hier gerade in diesem thread diskutieren) über ioBroker steuere. Dazu gab es im Netz eine sehr verständliche Anleitung für die Einrichtung. Diese Lösung basiert - wie auch wohl nahezu alle anderen Ansätze, um irgendetwas über Alexa steuern zu lassen - bereits auf einem eigenen Cloud-Dienst. Ich scheue mich nun, für die vorliegende Thematik, also das Starten und Stoppen eines Radiosenders auf dem Echo/Echo-Dot (was ja eigentlich nur einen lokalen Http-Aufruf erforderlich macht), noch einen weiteren Cloud-Dienst als Schnittstelle einzuschalten. Von denen gibt es zudem inzwischen zahlreiche für die Homematic, z.B. auch CloudMatic oder Conrad Connect. Jeder dieser Dienste folgt einer eigenen Logik, was man wie konfigurieren und nutzen muss. Jeder dieser Dienste bedeutet quasi, dass man einem unbekannten Unternehmen den Zugang zum eigenen Heim ermöglicht. Und bereits Alexa selbst ist ein weiterer Cloud-Dienst von Amazon. Hinzu tritt, dass ich mich auch aktuell damit beschäftige, meine 5 Kodi-Mediaplayer im Haus mit Alexa steuern zu können. Momentan ist das noch recht aufwendig einzurichten und richtet sich primär nur an ein einziges Kodi-System. Aber vielleicht kommt da demnächst ein etwas einfacherer Ansatz, der vor allem auch die Steuerung mehrerer Kodi-PCs erlaubt. In jedem Fall ist absehbar, dass auch hier die Lösungen nur über Cloud-Dienste laufen - und dabei wieder andere genutzt werden, als für die Homematic.

Deshalb: Für jede "Schnittstelle" zu Alexa einen eigenen Cloud-Zugang aufzubauen, der wiederum ganz anders zu konfigurieren ist als alle anderen, und der jeweils ein Einfallstor ins eigene Netz darstellt, will ich vermeiden. Ich nutze daher erstmal nur den Zugang über ioBroker und sonst nichts. Für die Fernsteuerung von Alexa, also das hier diskutierte starten von Musik oder Radiosendern auf einem Echo/Echo Dot, nutze ich einfach momentan ein Batch-Script, in welches ich die Curl-Befehlszeile eingebaut habe. D.h. ich habe mir mehrere Batch-Scripts für das Starten und Stoppen von Radiosendern für meine diversen Echo-Dots im Haus geschrieben. Unter Curl-exe für Windows laufen die erforderlichen Curl-Befehle ja auch einwandfrei. Und da ich zuhause einen Windows-Server betreibe, der 24/7 läuft (ist mein Arbeits-PC, den ich einfach nie ausschalte und der damit zugleich als Server für Daten und alle möglichen Dienste fungiert), kann ich die Batch-Skripte auch von dort aus zeitgesteuert oder manuell aufrufen. Lieber wäre es mir zwar auf der CCU2, weil ich dort auch noch bestimmte Events damit verknüpfen könnte (z.B. Licht an, Echo spielt Radio; Licht aus, Echo stoppt Radio). Aber da die erforderliche Curl-Befehlszeile ja dämlicher Weise nicht auf der CCU2 zum Laufen zu bekommen ist, muss ich auf diesen zusätzlichen Komfort einstweilen verzichten.

Antworten

Zurück zu „CUxD“