NEWS
Alexa Radio ausschalten bzw. Einschalten
-
Hallo,
ich habe bisher mehrere Situationen erlebt, wo es von Vorteil wäre das Radio (Echo) auszuschalten oder zum Beispiel bei der Szene Relax einen bestimmten Sender einzuschalten. Gibt es da seitens des Echo überhaupt eine Möglichkeit?
Gruß Marco
-
Hi, das ist kein Problem. Mit curl lässt sich Alexa fernsteuern. Wie man an die Infos dazu kommt, ist hier beschrieben:
https://www.gehrig.info/alexa/Alexa.html
Gruss, mayer
-
Hi, das ist kein Problem. Mit curl lässt sich Alexa fernsteuern. Wie man an die Infos dazu kommt, ist hier beschrieben:
https://www.gehrig.info/alexa/Alexa.html
Gruss, mayer `
Schon ausprobiert? Klang beim drueberlesen nicht ganz einfach.Kann mir das auch gut vorstellen. Z.B. koennte dann ein Bewegungsmelder ausloesen und Alexa einen bestimmten Radiosender starten?
-
> Schon ausprobiert?
Aber sicher doch. Ich starte mein Radio in der Küche so. Nur nutze ich nicht ioBroker dazu sondern die HA Bridge. Per URL schalte ich eine Sonoff Steckdose und über eine Batch File rufe ich Curl für Windows auf und lasse den Dot mit dem Radiosender starten. (Alexa schalte das Küchenradio ein/aus)
> Klang beim drueberlesen nicht ganz einfach.
Ist nicht kompliziert. Einfach den ausgehenden Befehl mit 'Copy as cURL (cmd)' kopieren, etwas bereinigen (Sonderzeichen zur Trennung raus) und so mit Curl losschicken. Funktioniert schon seit Wochen bei mir. Einen Pause Befehl kann man auch so absetzen.
Für ioBroker muss es natürlich etwas anders aufbereitet werden.
> koennte dann ein Bewegungsmelder ausloesen und Alexa einen bestimmten Radiosender starten?
Geht auch.Gruss, mayer
-
> Schon ausprobiert?
Aber sicher doch. Ich starte mein Radio in der Küche so. Nur nutze ich nicht ioBroker dazu sondern die HA Bridge. Per URL schalte ich eine Sonoff Steckdose und über eine Batch File rufe ich Curl für Windows auf und lasse den Dot mit dem Radiosender starten. (Alexa schalte das Küchenradio ein/aus)
> Klang beim drueberlesen nicht ganz einfach.
Ist nicht kompliziert. Einfach den ausgehenden Befehl mit 'Copy as cURL (cmd)' kopieren, etwas bereinigen (Sonderzeichen zur Trennung raus) und so mit Curl losschicken. Funktioniert schon seit Wochen bei mir. Einen Pause Befehl kann man auch so absetzen.
Für ioBroker muss es natürlich etwas anders aufbereitet werden.
> koennte dann ein Bewegungsmelder ausloesen und Alexa einen bestimmten Radiosender starten?
Geht auch.Gruss, mayer `
In wie fern muss der Befehl denn für IO Broker anders aufbereitet werden? -
Also bis hier würde ich es noch schaffen:
Now you can find all the important credentials for authentication - you need to copy them into the shell-scripts: DEVICENUMBER = "G999LF0964210K58" (SerialNumber) DEVICETYPE = "A3S5BHHHU6VAYF" CUSTOMERID = "A2C7IGOABH59PS" CSRF = "-2012345694" (please copy the complete csrf with leading sign) COOKIE = "Cookie: x-amzn-<.......>.aA="; csrf=-2012345694" (the whole very long string!) guideId = "s133505" - this is the parameter for the selected radio station on TuneIn - will be required as parameter
Aber wie mache ich da was mit CURL für iobroker? Am liebsten würde ich es mit Blockly gestalten. Mit request oder exec oder wie?
-
Ich bekomm das leider ums verrecken nicht hin…
hab den curl string auch schon direkt ohne script ausgeführt ... passiert einfach gar nichts.
selbst wenn ich den String händisch ausführe - ohne script und variablen.
-
Es gibt ja prinzipiell die Möglichkeit curl requests auch in Javascript umzuformen. Hat hiermit vielleicht jemand Erfahrungen?
-
Direkt in/aus JavaScript zwar nicht, aber hier wurde ein Weg über ein bash-Script aufgezeigt : http://forum.iobroker.net/viewtopic.php … 24&p=60359
Vielleicht hilfst.
Gruß,
Eric
-
Es gibt ja prinzipiell die Möglichkeit curl requests auch in Javascript umzuformen. Hat hiermit vielleicht jemand Erfahrungen? `
Bei mir läuft es nicht mal direkt auf dem raspi. ioBroker mal noch ganz außen vor. Das macht mich so verrückt.
Und man kann ja gar nicht viel falsch machen…
Alexa zuckt einfach nicht. :evil: :evil: :evil:
-
Es gibt ja prinzipiell die Möglichkeit curl requests auch in Javascript umzuformen. Hat hiermit vielleicht jemand Erfahrungen? `
Bei mir läuft es nicht mal direkt auf dem raspi. ioBroker mal noch ganz außen vor. Das macht mich so verrückt.
Und man kann ja gar nicht viel falsch machen…
Alexa zuckt einfach nicht. :evil: :evil: :evil: `
Du bist immerhin schon weiter als ich. Mir sagt dieses CURL gar nichts. Wie sieht denn dein Code dafür aus?Dieses Thema müsste doch eigentlich sehr viele hier interessieren. Gibt ja sehr viele mit Alexa
-
Ich habe das schon bei meinem ersten Post im Trello angelegt. Vielleicht stimmt ihr ja mal darüber ab, damit man die WICHTIGKEIT erkennt. :lol:
-
Es gibt ja prinzipiell die Möglichkeit curl requests auch in Javascript umzuformen. Hat hiermit vielleicht jemand Erfahrungen? `
Wenn Du den curl request postest, kann ich es gerne versuche.
Habe das selbst noch nicht gemacht :mrgreen:
Auf der Basis des Skripts hier müsste man das aber anpassen können:
http://forum.iobroker.net/viewtopic.php?f=37&t=5943
Die Options für das module http sind hier beschrieben:
https://nodejs.org/api/http.html#http_h … s_callback
Dort ist auch beschrieben, wie man mehrere Headerinfos einfügt:
var options = { hostname: 'www.google.com', port: 80, path: '/upload', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(postData) } };
-
Hi!
Mich würde dies auch interessieren, wie man Alexa fernsteuern kann bzw. einen Radiosender per Taste oder Bewegung aktivieren kann.
Ich habe laut Anleitung die curl "Wurst" im Chrome extrahiert, nur wie ich die jetzt umformatieren muss ist mir ein Rätsel.
Vielleicht hat ja jemand dies schon gemacht?
Liebe Grüße
Jürgen
-
Habe das gerade mal im Javascript gemacht.
Funktioniert. Nur mit dem module "https" und nicht mit "http".
Änder noch ein bisschen daran und den poste ich das Skript hier.
-
Mich würde dies auch interessieren, wie man Alexa fernsteuern kann bzw. einen Radiosender per Taste oder Bewegung aktivieren kann.
Ich habe laut Anleitung die curl "Wurst" im Chrome extrahiert, nur wie ich die jetzt umformatieren muss ist mir ein Rätsel. `
Anbei die einfache Version. Startet einen Radiosender.
Bei den Variablen am Anfang die eigenen Daten aus dem langen extrahierten Wurst verwenden.
Skript:
! ````
// ALexa mit Javaskript in ioBroker steuern
// ----------------------------------------
! // 1. cURL extrahieren, siehe
// https://www.gehrig.info/alexa/Alexa.html
! // ---------------------------------------
// Tunein Radiosender raussuchen
// http://tunein.com/radio/Antenne-Düsseldorf-1042-s25772/
// s25772 -> Antenne Düsseldorf
! // Liste einiger Sender:
// s25772 -> Antenne Düsseldorf
// s100198 -> Einslive
// s100183 -> WDR2 Rheinland
// s8007 -> Hitradio Ö3
! // ----------------------------------------
// Infos und Resourcen zum Skript:
// Webseiten/URLs Request mit Fehlerbehandlung, siehe:
// http://forum.iobroker.net/viewtopic.php?f=21&t=4259&p=40890&hilit=request#p40880
// Alexa Steuerskripte:
// https://github.com/thorsten-gehrig/alexa-remote-control
! var logOn = true; // Skript Logausgabe ein- (true) / ausschalten (false). Fehler werden immer ausgegeben.
var https = require('https'); // Node Module https verwenden
! var deviceSerialNumber = 'xxxxxxxxxx';
var deviceType = 'xxxxxxxx';
! var guideId = 's100198'; // Radiostation: eins Live
var mediaOwnerCustomerId = 'A3V01NCOU0M93M'; // CUSTOMERID
var csrf = 'xxxxxxx'; // aus der URL
! var cookie = 'xxx hier den langen Cookie Wurm eintragen xxx';
! // URL, die abgefragt, bzw. gesendet werden soll:
var options = {
host: 'layla.amazon.de',
path: '/api/tunein/queue-and-play?deviceSerialNumber='+deviceSerialNumber+'&deviceType='+deviceType+'&guideId='+guideId+'&contentType=station&callSign=&mediaOwnerCustomerId='+mediaOwnerCustomerId,
method: 'POST',
headers: {
'Origin': 'http://alexa.amazon.de',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language' : 'de',
'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Content-Type' : 'application/json; charset=UTF-8',
'Accept' : 'application/json, text/javascript, /; q=0.01',
'Referer' : 'http://alexa.amazon.de/spa/index.html',
'csrf' : csrf,
'Cookie' : cookie,
'Connection' : 'keep-alive',
'Content-Length' : 0,
'DNT' : 1
}
};
! function httpsRequest() {
var req = https.get(options, function(res) {
! if(logOn) log('STATUS: ' + res.statusCode); // Statuscode
if(logOn) log('HEADERS: ' + JSON.stringify(res.headers)); // Header (Rückmeldung vom Webserver)
// Buffer the body entirely for processing as a whole.
var bodyChunks = [];
var chunkLine = 0;
res.on('data', function(chunk) {
chunkLine = chunkLine + 1;
if(logOn) log("Zeilennummer: " + chunkLine+ " ,Inhalt: " + chunk);// Hier können die einzelnen Zeilen verarbeitet werden... bodyChunks.push(chunk); }).on('end', function() { if(logOn) log("ARRAY mit den einzelnen Zeilen: " + bodyChunks); if(logOn) log("ARRAY Länge: " + bodyChunks.length);
! var body = Buffer.concat(bodyChunks);
! if(logOn) log('BODY: ' + body);
// ...und/oder das Gesamtergebnis.
! });
! });
! req.on('error', function(e) { // Fehler abfangen
log('ERROR: ' + e.message,"warn");
});
}
! // main
// -----------------------------------------------------------------------------
function main() {
httpsRequest();
}
! // Start Skript:
// -----------------------------------------------------------------------------
! // Kommentar entfernen, wenn die Abfrage zum Skriptstart ausgeführt werden soll:
setTimeout(main, 500);
! ```` -
Hallo,
wo fängt die Cookie-Wurst an und wo hört sie auf?
Bei x-wl-uid= ?
08:01:28.204 [error] javascript.0 script.js.Alexamusik compile failed: SyntaxError: Invalid or unexpected token Bisher gibt es leider nur eine ungenaue Fehlermeldung:
Das Script ist schonmal ein riesengroßer Fortschritt.
Gruß Marco
-
Den Fehler hab ich gefunden bei:
var cookie = 'xxx hier den langen Cookie Wurm eintragen xxx'';
da ist hinten ein Strich zuviel:
var cookie = 'xxx hier den langen Cookie Wurm eintragen xxx';
Die Cookiewurst fängt an mit: cookie …...... und endet vor````
; s_nr=Jetzt funktioniert es. Dankeschön! Gruß Marco
-
Den Fehler hab ich gefunden bei:
var cookie = 'xxx hier den langen Cookie Wurm eintragen xxx'';
da ist hinten ein Strich zuviel:
var cookie = 'xxx hier den langen Cookie Wurm eintragen xxx';
Die Cookiewurst fängt an mit: cookie …...... und endet vor
; s_nr=
`Danke!
Das zweite Hochkomma zuviel ist reingekommen, als ich meinen Cookie gelöscht hatte.
Ich ändere das oben im Skript.
Für alle:
Der Cookie sieht ungefähr so aus:
(Beispiel von: https://www.gehrig.info/alexa/Alexa.html)
x-amzn-dat-gui-client-v=1.24.986.0; aws-target-static-id=14712345678-839972; aws-session-id=168-0412369-4130549; aws-session-id-time=2106194071l; aws-x-main=PgpqvER9Wibauhf4zfSDriNBlBILfMnk; aws-at-main=Atza|IwEBIAFsntUWFc_PZvFde5drDzPNXXXXXXXXXHPqI53aQNl-Fu83eAMUsFJmMtamv_4mLKEh6N82lqq8OHA8SKgh44X2MZwTguXNcUvd0-RVQyayT2lQ86JjoXvJrlMlrZIs7kJLWBryCGJEXXXXXXXXXXFJQpHhnGeC72ljNT_nVObL_wZoYhMFHVMXGiYjFyrb-QcjYY-I3ar-Q-kLAmzZYQIKU-mZ8GChNefKuG_x4ZZ2A06XXXXXXXXXOhX9w94vgmn2y3Qr9Q0rEi8K--UoFuTQ54GArubNsofNLh4U2dov8D7Gs3GoW6Hp2zEwt7cyumpRR_vceAz3aUjskoNKXsgDfpPZrebl-0R4bC6BfIasyoDOX9XXXXXXXXjRihKSxf4gs79p1ExYBmaBOX6glBrsKRqOXfk6Vh87_96uQ; aws-userInfo=%7B%22arn%22%3A%22arn%3Aaws%3Aiam%3A%3A314911114493%3Aroot%22%2C%22alias%22%3A%22%22%2C%22username%22%3A%22MeinUser%2520Name%22%2C%22keybase%22%3A%22dhVv%2Fmb%2BJyCH%2BJA6zwfighlgs5jc0W0mVYXkLBkb77M%5Cu003d%22%2C%22issuer%22%3A%22https%3A%2F%2Fwww.amazon.com%2Fap%2Fsignin%22%7D; __utmv=191231197.PgpqvER9Wibauhf4zfSDXXXXXXXXk; s_dslv=1475471239073; regStatus=registered; aws-target-visitor-id=1475445653051-715340.26_4; aws-target-data=%7B%22support%22%3A%221%22%7D; s_pers=%20s_ev15%3D%255B%255B%2527Typed%252FBookmarked%2527%252C%25212375474893114%2527%255D%255D%7C1632141293114%3B%20s_fid%3D0523A63XXXXXXXXX3C9679E640DA3570%7C1538547024210%3B%20s_dl%3D1%7C1475481765932%3B%20gpv_page%3Dno%2520value%7C1475481765939%3B; session-id=151-3512347-8293901; session-id-time=2106212731l; s_fid=71689F1234D6D238-299FD69294EFC3C1; s_nr=1475492764173-Repeat; aws-ubid-main=151-3388123-1263140; aws-session-token="lprp9YroXXXXXXXXXz5EFfSaPt96R0oSBWL2dR/AGFdlmk4QwRcVPXXXXXXXrmZ5kfHBdNwvSWWMKTnYU0pB5CE2XXXXXXUk6SIuaQYti17ZQ8B3NGwyCKNs7Lil+kz9qonZS5/cwtmrWHCe7SGx/QmPXXXXXXX89WbiV2xwTRkhVw6hTjO+8WUOXXXXXXXXi8MaR196v+Ewflx7dd3ouTVtY+hbJE4XSs="; __utma=194891197.1975555581.1444474071.1475495555.1475555580.5; __utmz=194555597.1475555680.5.2.utmccn=(referral)|utmcsr=console.aws.amazon.com|utmcct=/cloudwatch/home|utmcmd=referral; ubid-main=152-8362434-2710144; session-token="Y2Eoqs81+wIbanI7mPonK9t7gFvH7ZdTG2OxCZB3orqTILNY5ev4cFBWiSPTl2u8nFNXNmwtFP6RxnPBTunkdbHfpos8WYYOX7gEF52wnn5J3SknsvO99+MAT5GeyMR4JRa+ZOX+DcnIt8xtgYY2sSaEZ3JspjrQF+M9PUkuT9D4aYbZGRNa1BkFvoOt8Kettr9xxS/ODPfXEaE6xJr7qyPv0IQ3K6e+FbfGk3AWypY="; x-main=4r7ZrJJV4BT1R2sWn2W4NpiXZm9RSJLD; at-main=Atza|IwEEEEE4EikDns-CTHnGRqXXXcnnaij75AfcF1-XOBvphYTp_ATJHu6f0vDgMI7B1ApWn51cP6bqvG-XXXXeTPD8t7jl5El_FdhlYn3mmtn476FfnI5E7anoZNSKLyE-jauNJssBeGUjsSd0z8746mujYcJbKQsMMVVUlxcu4jXXxXXYcC4GasQyvOIp92wY-TPKAOys8NV0-yXH4xTGBzgJ0zzJa5JvyRz2v0x3fijvyXXXXXXSDhZtaDOZ6GOQlYrsUmudsorYUcUT52x0EYavXXXXX92cmgkMUzuTxppV1SpLk2Wk63LQQkCCZLs6_HWlnX2Saf0zgc13BdUehhSBiYHzJJeg1Ys7g68GLG5IuSGvyGe8ebmcN9KUDdD2CwphaeW34iy6dVKGbUpJ3GKVlz; sess-at-main="eSHstcxm5Krki5T1EAcQyk9XXXXXXqMbqcJqDBaA="; csrf=-2012345694'
Der Cookie Steht im folgenden Header im cURL (Beginn des Cookies):
-H 'Cookie: x-am
Das:
-H 'Cookie: ````entfällt. Dann das erste Hochkomma setzen. Vor dem nächsten -H im cURL endet der Cookie. Das Hochkomma ist in der Debugausgabe schon drin.
-
Hmm. Das funktioniert noch immer nicht.
10:09:49.977 [info] javascript.0 script.js.Relaxmusik: STATUS: 401 10:09:49.978 [info] javascript.0 script.js.Relaxmusik: HEADERS: {"x-amzn-requestid":"*****************************************","access-control-allow-origin":"http://alexa.amazon.de","loginurl":"https://www.amazon.de/ap/signin?showRmrMe=1&openid.return_to=https%3A%2F%2Falexa.amazon.de&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=amzn_dp_project_dee_de&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&","content-encoding":"gzip","vary":"Origin","access-control-expose-headers":"x-amzn-dat-gui-client-upgrade,X-Amzn-Error,loginUrl,X-Amzn-RequestId,x-amzn-alt-domain,Date,Location","access-control-allow-credentials":"true","content-length":"20","date":"Sat, 08 Apr 2017 08:09:49 GMT"} 10:09:49.979 [info] javascript.0 script.js.Relaxmusik: Zeilennummer: 1 ,Inhalt: � 10:09:49.979 [info] javascript.0 script.js.Relaxmusik: ARRAY mit den einzelnen Zeilen: � 10:09:49.979 [info] javascript.0 script.js.Relaxmusik: ARRAY Länge: 1 10:09:49.980 [info] javascript.0 script.js.Relaxmusik: BODY: �