Amazon hat ja darüber informiert, dass man mit dem Echo demnächst eine Notifikation realisieren will.
Allerdings will man keine direkte Sprachausgabe realisieren sondern man will den Echo die Meldung signalisieren lassen und erst wenn der User nachfragt, die eigentliche Meldung ablaufen lassen.
Schon lange suche ich nach einer Möglichkeit Alarmmeldungen aus fhem auf dem Echo ausgeben zu können. Dabei bin ich auf die Seite von Thorsten Gehrig gestoßen.
https://www.gehrig.info/alexa/Alexa.html (https://www.gehrig.info/alexa/Alexa.html)
Er zeigt da die Möglichkeit mittels Script TuneIn- Radiostationen über den Echo abzuspielen.
Auch ist es möglich eigene hochgeladene mp3- Files mittels Script abzuspielen.
Man legt also einen Trigger für den Alarm in fhem an, der nach Auslösung die Alarmmeldung in einen Dummy schreibt und anschließend das Script aktiviert. Dieses spielt das MP3- File auf dem Echo ab.
Wenn man den Alarm hört, sagt man ,,Alexa, frage fhem was ist los" und Alexa gibt als Antwort den Inhalt des mittels Trigger gesetzten Dummy aus.
Bei mir löst der Trigger aus, wenn ein Fenster länger als 15 Minuten geöffnet ist.
Mein Echo spielt eine Alarm Meldung ab.
Ich sage ,,Alexa, frage fhem was ist los"
Alexa antwortet dann ,,Deine Frau hat schon wieder das Schlafzimmerfenster offen gelassen".
Hier ist mal mein, nach der Anleitung von Thorsten Gehrig geschriebenes Script.
Wichtig ist, dass man erst das File auf Amazon mittels AmazonMusic hochläd, dann in der Alexa-App nicht TuneIn, sondern das hochgeladene File auswählt und die Daten aus ,,queue-and-play,, verwendet.
alarm-fhem.sh
#!/bin/bash
DEVICENUMBER='G0815ABCDECX'
DEVICETYPE='ABCDE123456789'
CUSTOMERID='123456789ABCDE'
COOKIE='Cookie: x-amzn-dat-gui-client-v=1.24.2112.0; csrf=556644889; session-id=254-4558813-12345687; session-id-time=20821234567; ubid-acbde=251-7774461-78654321; session-token="uQxxrqPlPSYg2FAGG/n5/6ErA8j8AKA20MeuGM4Bogvd7aqtn1U7u97sIIOg9/MIk1LUGrdHCUQHPxdinb14Zj8/+wujCNnzlgUZApGqfJYdU/MFESgmHG4eThTEJJ6JV11ZzX7/ozHzFc7OpnVyHeen7KWf7bXVyYS5RGmGcEnR3SeaZ38SSAbWdmJApnCwpEKVk5X3dX9YApsqwHBES0/bjRpFDkf+i7xhU3+coc8YR1Y="; x-acbde="j38M@P4?wVqF7RaHHJc7GUxTnb4MR?xH"; at-acbde=Atza|IwEBIPguWvlggG0OFjYaX2fxH9Z5HE3P63BInqJ2FA8xfG1HY1-PbKi5l1b_zfMmcJzNY37fRRVb7Wcyt2EGL34H_WaDk5XIUpMQA1sL2j7Yx8h-A8ukeO1fRTYYfynEADQZSBUHWbM_gZekuK9vFRTr-38M@P4?wVqF7RaHHJc7GUxTnb4MR?xH-Ip3gf_5Mfrkrx9_NBOrXZu6lDqy7aQ-719bXPUojTf3pmyPBcW1mTLDMFMdXwrLVgapsmx4PUnuy03QKShbAafNFwM-i98JINhAfHl7YqlfXvFzXidr5-bdsj-5r-HXsTADexf1Il2GhTcPs3Jz-A20MeuGM4Bogvd7aqtn1U7u97sIIOg9-qfTgfKxL8LHR6Q3y-XCr9a8VajfirMh8wBsqI-BFhz9A2wQARkQYFJTN0FBFwMfoS6H8eClp6ZBqhTxnVBVUWXug_yxyuet90G-YxQ2fKA5ZTmJoyrMMgCdpCSKQ1qRe5O3iFAC7MsRZaxA; sess-at-acbde="P8NTp+o/mKu4K5Y9FP/M11234567/t+b0pTNQm1Ws0M="'
CSRF='csrf: 556644889'
TRACKCMD='{"playlistId":"IMPORTED-V0-OBJECTID","playlistTitle":"Importiert","initialTrackIndex":1,"trackId":"4f48d3b4-3e66-474a-a242-452113b0c63e","playQueuePrime":false}'
#echo "${TRACKCMD}"
URL='https://layla.amazon.de/api/cloudplayer/queue-and-play?deviceSerialNumber='$DEVICENUMBER'&deviceType='$DEVICETYPE'&contentType=station&callSign=&mediaOwnerCustomerId='$CUSTOMERID
curl $URL \
-H "$CSRF" \
-H "$COOKIE" \
--data "${TRACKCMD}" \
--compressed
ZitatAllerdings will man keine direkte Sprachausgabe realisieren sondern man will den Echo die Meldung signalisieren lassen und erst wenn der User nachfragt, die eigentliche Meldung ablaufen lassen.
Wie funktioniert das genau? Alexa blinkt irgendwie, und man muss sagen "Alexa, sag was?"
Wie das dann bei Amazon funktioniert kann ich nicht genau sagen.
Bei mir funktioniert das so:
Ein Fenster im Haus wird geöffnet,
Fhem startet darauf hin ein Script und dieses bewirkt, dass Alexa auf dem Echo eine MP3- Datei abspielt.
Die kann man selber gestalten und es sind auch verschiedene Dateien möglich.
Meine MP3- Datei ist "Achtung, im Haus ist ein Alarm aufgetreten.
Ich frage darauf hin Alexa " Was ist los?" und Alexa gibt dann den eigentlichen Alarm als Text aus.
Hallo,
klingt recht interessant! Das möchte ich auch ausprobieren!
Wo muss denn die alarm-fhem.sh liegen?
Und wie starte ich dieses Script?
LG
Marlen
Guten Abend,
bei mir schaut das so aus:
TRACKCMD='{""playlistId^\^":^\^"IMPORTED-V0-OBJECTID^\^",^\^"playlistTitle^\^":^\^"Importiert^\^",^\^"initialTrackIndex^\^":1,^\^"trackId^\^":^\^"e7a26d92-96d9-4bbb-9db1-1dc2afa68c57^\^",^\^"isoTimestamp^\^":^\^"2017-07-20T20:49:26.601Z^\^",^\^"playQueuePrime^\^":false}'
Müssen die ^ ersetzt werden?
Die meisten meiner Sprachmeldungen sind vorgefertigt als MP3 - etwa "Die Hauseingangstür ist offen". Zur Sprachsynthese habe ich schon seit Jahren TTS Ivona mit der Stimme von Marlene verwendet. Ivona wurde von Amazon aufgekauft, kann jetzt als Amazon Polly für denselben Zweck genutzt werden. Für die wesentlichen Events braucht es also keine erneute TTS-Synthese (außerdem muss Amazon nicht wissen, welche Events hier ablaufen...), sondern es wird einfach die MP3-Datei abgespielt. Und zwar
- auf Tablets
- auf meinen Echos, die per BT an ein Tablet gekoppelt sind
Also ist das zunächst einmal nichts Neues - ob die Datei nun auf dem Tablet liegt, oder erst von Amazon geschickt werden muss, ist von Ergebnis her weitgehend gleich. Allerdings treten natürlich bei der Amazon Cloud-Lösung auch Latenzproblem auf.
LG
pah
Zitat von: Marlen am 20 Juli 2017, 23:25:27
Guten Abend,
bei mir schaut das so aus:
TRACKCMD='{""playlistId^\^":^\^"IMPORTED-V0-OBJECTID^\^",^\^"playlistTitle^\^":^\^"Importiert^\^",^\^"initialTrackIndex^\^":1,^\^"trackId^\^":^\^"e7a26d92-96d9-4bbb-9db1-1dc2afa68c57^\^",^\^"isoTimestamp^\^":^\^"2017-07-20T20:49:26.601Z^\^",^\^"playQueuePrime^\^":false}'
Müssen die ^ ersetzt werden?
Ich habe die Daten aus dem Editor von Chrome kopiert, da sind die ^ nicht drin.
Du musst sowiso aufpassen, dass dein Texteditor mit den Sriptsprachen umgehen kann und die Zeilenumbrüche nicht verfälscht.
Die alarm-fhem.sh kannst du überall hinlegen, sie muss ausführbar gemacht werden und dann aus fhem gestartet.
Mit
{system ("/opt/fhem/fhem-alarm.sh &")}
kannst du dann die Datei starten.
Zitat von: Prof. Dr. Peter Henning am 22 Juli 2017, 10:34:16
Die meisten meiner Sprachmeldungen sind vorgefertigt als MP3 - etwa "Die Hauseingangstür ist offen". Zur Sprachsynthese habe ich schon seit Jahren TTS Ivona mit der Stimme von Marlene verwendet. Ivona wurde von Amazon aufgekauft, kann jetzt als Amazon Polly für denselben Zweck genutzt werden. Für die wesentlichen Events braucht es also keine erneute TTS-Synthese (außerdem muss Amazon nicht wissen, welche Events hier ablaufen...), sondern es wird einfach die MP3-Datei abgespielt. Und zwar
- auf Tablets
- auf meinen Echos, die per BT an ein Tablet gekoppelt sind
Also ist das zunächst einmal nichts Neues - ob die Datei nun auf dem Tablet liegt, oder erst von Amazon geschickt werden muss, ist von Ergebnis her weitgehend gleich. Allerdings treten natürlich bei der Amazon Cloud-Lösung auch Latenzproblem auf.
LG
pah
"Probelem" ist hierbei, dass man ein zweites Gerät haben muss, welches über Bluetooth den Dot bedient. Und, dass es wiederum nicht klappt, wenn man zB mit dem Dot über die Hifi Anlage Musik hört. Daher ist die Lösung direkt über den Dot es zu starten und abzuspielen für mich angenehmer. Werde es die Tage mal testen.
Beim mir steht dann in der LogFile
sh: 1: /opt/fhem/alexa-washer.sh: Permission denied
wie kann das sein? Besitzer von der alexa-washer.sh ist fhem!
LG
Marlen
Auch aufführbar (x) ?
Er meinte ausführbar ;D
chmod +x /pfad/zu/mein_Skript
Hmmm.....
jetzt hab ich das im Log
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 202 0 0 100 202 0 729 --:--:-- --:--:-- --:--:-- 729
Scheinbar is ja was passiert, aber es kam zu keiner Sprachausgabe! ::)
Zitat von: Marlen am 31 Juli 2017, 09:10:36
Hmmm.....
jetzt hab ich das im Log
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 202 0 0 100 202 0 729 --:--:-- --:--:-- --:--:-- 729
Scheinbar is ja was passiert, aber es kam zu keiner Sprachausgabe! ::)
Hat keiner eine Idee...waum es nicht auf der Alexa ausgegeben wird??
LG
Marlen
Poste mal bitte deine gesamten Script, aber anonymisier die Daten vorher durch einfach XX. Sonst nichts verändern. Ich habe es auch mal nachgebaut und bei mir ging es. Habe es aber bisher nur einmal getestet.
Hier mal mein Script:
#!/bin/bash
DEVICENUMBER='XXXXXXXX04TT'
DEVICETYPE='XXXXXXXXXX6AW2'
CUSTOMERID='XXXXXXXXXXLDIH'
COOKIE='Cookie: x-amzn-dat-gui-client-v=1.24.2294.0; x-wl-uid=1XmcRL6Y8l412Pj8tqFI9fRJCc1Ru/3k4pyxxG14CdwLboKDoirxX9aITS/erGzFSwJ0HWxizWnmZNSdOIcGV5vIRfK62a+CcxCHrqYaig6YfH83yVfYBdOkvQmiMevZXPGvuYPvgNXc=; at-acbde=Atza^|IwEBIGdYb676tq95RWoHhyuqyaZlnV6FYNFrfTuOAP8THDj5sFJavCF-CqHM63-o0ZeF9SuDuYNpE0Qq0DWiAWW6VheGqT-tyCqVsJpWFsfab27GfyNRByJHhllKW-cjGgGNJLP6Drn1wC6rjN3zXqv0Fn0r3_KDTLCK6LH8g5xR4IVgfdTcPOkBtq9s--L_eXlwd5m-i709PeDfReehtlNNfRzk31kMOIJzxvxHq73ynh1cyeUXkH9CnJFWFkngCLOvYFpDGOE9nMSzRF9O0NR4gZ4DBc5RKBPBp-IlfZ7VPr3JvPQAJrkZ9MKjDFa-gnjfbRy9ESCCnVs8dziedovgP7sGg1zbUWv3X3MBVGY7PTLLootNuUHyb0IvWUwZsJYdvLjUtMkX3v-bCCLaV0H_bYn7; sess-at-acbde="pikL1WSPgsdvEWoer4xDMT+GPE8Tl6khbUEIl4xkjCI="; s_cc=true; s_nr=1500583572907-New; s_vnum=1932583572907^%^26vn^%^3D1; s_invisit=true; s_dslv=1500583572907; s_dslv_s=First^%^20Visit; s_c27=201377290; s_sq=^%^5B^%^5BB^%^5D^%^5D; s_ppv=39; x-acbde="P1vYnz7dRZUkTXAW?dSjGYtwlLC2LOw?"; session-token=ngtyC2AvW'
CSRF='csrf: 43XXXXX09'
TRACKCMD='{"playlistId":"IMPORTED-V0-OBJECTID","playlistTitle":"Importiert","initialTrackIndex":1,"trackId":"e7a26d92-96d9-4bbb-9db1-1dc2afa68c57","isoTimestamp":"2017-07-20T20:49:26.601Z","playQueuePrime":false}'
#echo "${TRACKCMD}"
URL='https://layla.amazon.de/api/cloudplayer/queue-and-play?deviceSerialNumber='$DEVICENUMBER'&deviceType='$DEVICETYPE'&contentType=station&callSign=&mediaOwnerCustomerId='$CUSTOMERID
curl $URL \
-H "$CSRF" \
-H "$COOKIE" \
--data "${TRACKCMD}" \
Hab im Log was übersehen!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 276 100 16 100 260 51 841 --:--:-- --:--:-- --:--:-- 844
{"Message":null}
Das habe ich beim letzten mal übersehen!
{"Message":null}
LG
Marlen
Nachdem ich heute auch mal damit gespielt habe kann ich dir vermutlich sagen woran es liegt.
Dir Session Werte in der Cookie Variablen werden bei jedem neuen Login auf der Alexa Homepage verändert. Damit kann das Script bzw die Werte alt sein und deswegen nicht funktionieren. Allerdings wirft es kein Fehler aus, weil das von der Homepage wohl nicht vorgesehen ist.
Da die Werte dynamisch und nicht fest sind, habe ich das Ganze wieder gelöscht. Habe keine Lust regelmäßig die Daten auszulesen und anzupassen.
Also ändern sich die Variablen quasi jedes mal wenn ich das Script starte??
Zitat von: Marlen am 03 August 2017, 22:54:37
Also ändern sich die Variablen quasi jedes mal wenn ich das Script starte??
Nein, der Cookie ist normalerweise mehrere Wochen gültig. Möglicherweise aber auch nur bis zu einem der Firmwareupdates.
Man kann den Cookie im Script in eine Textdatei auslagern und muss dann nur diese cookie.txt bei abgelaufenen cookie verändern.
Also in etwa so: COOKIE="`cat ./cookie.txt`"
Die restlichen Werte bleiben ja immer gleich.
Evtl. ist das interessant um das mit dem Cookie zu verbessern:
https://forum.fhem.de/index.php/topic,77458.msg701745.html#msg701745
Gruß, Joachim
Zitat von: kawa0815 am 11 Juni 2017, 02:14:15
Wichtig ist, dass man erst das File auf Amazon mittels AmazonMusic hochläd, dann in der Alexa-App nicht TuneIn, sondern das hochgeladene File auswählt und die Daten aus ,,queue-and-play,, verwendet.
Wie lädt man denn eigene mp3-Dateien in Amazon Music hoch?
Hallo,
ohne Abo meines Wissens gar nicht mehr (Service wurde von Amazon beendet), mit Abo mit Amazon Music für PC oder Mac.
Gruß
Thomas