Alarm Notifikation aus fhem auf dem Echo.

Begonnen von kawa0815, 11 Juni 2017, 02:14:15

Vorheriges Thema - Nächstes Thema

kawa0815

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

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


amenomade

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?"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

kawa0815

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.

Marlen

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

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?

Prof. Dr. Peter Henning

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

kawa0815

#6
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.

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Marlen

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

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Marlen


Hollo

Er meinte ausführbar  ;D
chmod +x /pfad/zu/mein_Skript
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Marlen

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!  ::)

Marlen

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

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Marlen

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}" \

Marlen

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

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Marlen

Also ändern sich die Variablen quasi jedes mal wenn ich das Script starte??

kawa0815

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.

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

petjek

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?
Die Möglichkeiten der deutschen Grammatik können einen, wenn man sich darauf, was man ruhig, wenn man möchte, sollte, einlässt, überraschen.

TomLee

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