Amazon Echo Modul (nicht Alexa) - 37_amazonecho (deprecated)

Begonnen von Markus M., 03 Oktober 2017, 14:17:31

Vorheriges Thema - Nächstes Thema

Markus M.

Da ich leider zu wenig Zeit gefunden habe um mich um mich auch noch um dieses Modul zu kümmern,
hat Michael dankenswerterweise übernommen.


Hier geht's weiter: https://forum.fhem.de/index.php/topic,82631.0.html








Da bisher scheinbar noch niemand die ganzen Skripte zur Fernbedienung des Amazon Echo in ein Modul verpackt hat, hab ich das am Wochenende mal angefangen.

Hinweis: Es geht hier nicht um Alexa, nur um den Echo.

Definiert wird das Modul mit der DeviceID und dem DeviceType, ohne die beiden Werte wird der erste erkannte Echo voreingetragen
define echo amazonecho

Für die Authentifizierung bei Amazon braucht ihr immer noch den Cookie (im Attribut cookie), den bekommt man beispielsweise in einer Tabelle angezeigt:

- Mit Firefox unter: Tools -> Web-Developer -> Storage Inspector -> Cookies
- Mit Safari unter: Develop -> Show Web Inspector -> Storage -> Cookies
- Mit Chrome unter: View -> Developer -> Developer Tools -> Application -> Cookies

Format und benötigte Bestandteile des Strings sehen vereinfacht so aus:
x-amzn-dat-gui-client-v=1.24.2698.0; ubid-acbde=000; session-id=000; x-acbde="xxx"; at-acbde="xxx-xxx-xxx"; sess-at-acbde="xxx"; csrf=1234567890
Der gleiche Cookie gilt für alle Devices in eurem Account.


Alternativ kann der Cookie aus der App verwendet werden, der um einen csrf String erweitert werden muss.
Gesetzt wird er in der App für alexa-comms-mobile-service.amazon.com

Cookie Attribut über FHEM UI setzen, zum Beispiel (Cookie sollte mit csrf=... aufhören, ohne "Cookie: " am Anfang):
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=1527573955

Daten der verfügbaren Devices holen:
get echo devices

Definition evtl. noch anpassen, wenn mehr als ein Gerät vorhanden:
define echo amazonecho AABBCC0011223344 AB72C64C86AW2

Settings auslesen:
get echo settings

Update starten:
get echo update

Ab dann sollte alles funktionieren.
Wenn sich Daten lesen aber keine Daten setzen lassen, die Internals überprüfen, wahrscheinlich passt CSRF nicht.






Das Modul kann aktuell:
- Aktuellen Medientitel auslesen
- Start/Pause/etc.
- Lautstärke regeln (auch Alarm)
- Bluetooth Geräte verbinden/trennen
- DND Modus setzen / auslesen
- Erkannte Spracheingaben auslesen
- TuneIn Stationen suchen / via ID starten
- Prime Playlists via ASIN starten (keine Ahnung wie man die bekommt...)
- Tracks mittels Track ID starten
- Tracks der Amazon Imports Playlist auslesen
- Shopping/Todo Liste auslesen und Items hinzufügen
- Reminder setzen

TODO:
- Reminders auslesen
- Alarm setzen / auslesen




Gruss, Markus


Updates:
2017-10-20 - Prevent error loop
2017-10-16 - UTF8 Fixes
2017-10-16 - Listen / Reminder
2017-10-06 - Bugfixing
2017-10-05 - Verfügbare eigene Tracks auslesen
2017-10-04 - Messages (nur mit App Cookie nutzbar)
2017-10-03 - Amazon Tracks via Track ID starten
2017-10-03 - Prime Music via ASIN starten
2017-10-03 - TuneIn Stationen suchen (get) und starten (set)
2017-10-03 - Alarm Volume Get/Set
2017-10-03 - Fehlermeldungen beim Start behoben
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Markus M.

#1
Beispiele:

Code (Listeneintrag erstellen) Auswählen
set echo listitem SHOPPING_ITEM veggies!
Code (Reminder hinzufügen) Auswählen
set echo reminder 1514764800 Happy new year!



Bekannte Probleme:
Nachdem der Echo zu lange im Status IDLE ist, lässt sich die Lautstärke nicht mehr über das Modul ändern.
Teilweise kommen auch überhaupt keine Player Readings mehr zurück.
Nach Abspielen einer beliebigen Audio-Datei funktioniert es wieder eine Zeit lang.



Drop In Funktion:
Drop In funktioniert nicht mit dem Cookie aus der Web-Oberfläche.
Beispielsweise über ein iPhone mit Jailbreak, ssl-killswitch und Charles Proxy lässt sich auch das Cookie der App auslesen.
Damit ist es möglich, Textnachrichten zu versenden.

- Cookie auslesen für: alexa-comms-mobile-service.amazon.com
- Die Variablen für csrf und x-amzn-dat-gui-client-v aus dem Web Cookie kopieren und mit zum Cookie String hinzufügen
- Das Attribut messaging auf 1 setzen um die Funktionalität für Nachrichten zu aktivieren und danach get echo settings aufrufen
- Conversation ID lesen über get echo conversations
- Nachrichten schicken mit set echo textmessage [conversationId] nachrichtentext



Icon:
Ein Echo Dot Icon bei dem man dem Rand eine Farbe zuweisen kann
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Ma_Bo

#2
Hallo Markus,
für was genau brauche ich den Cookie und wo kommt er hin...?

Grüße Marcel


####EDIT

Ok, ich sehe es, steht im Device, wenn man es definiert
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Markus M.

Zitat von: Ma_Bo am 03 Oktober 2017, 15:40:29
für was genau brauche ich den Cookie und wo kommt er hin...?

Für die Authentifizierung mit dem Amazon Server.
Es gibt ein Attribut cookie
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

igami

Sowas stand noch auf meiner ToDo, ich wollte es nur alexaWebApp nennen :)
Schön, dass du es umgesetzt hast, werde ich nachher mal testen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Ma_Bo

Das ist echt genial, danke schon einmal für dieses Modul.

Hast du mal getestet, auf welches Intervall man runter gehen kann?

Wird das Reading voice direkt aktualisiert, sobald etwas gesprochen wurde oder auch erst nach dem intervall?

Folgende Fehlermeldungen habe ich:

2017.10.03 15:41:39.436 1: PERL WARNING: Use of uninitialized value in pattern match (m//) at ./FHEM/37_amazonecho.pm line 68.
2017.10.03 15:57:21.027 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/37_amazonecho.pm line 518.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Markus M.

Zitat von: Ma_Bo am 03 Oktober 2017, 16:04:44
Hast du mal getestet, auf welches Intervall man runter gehen kann?
Wird das Reading voice direkt aktualisiert, sobald etwas gesprochen wurde oder auch erst nach dem intervall?

Nicht getestet, sind aber doch ziemlich viele Daten.
Alle Readings werden gepollt, auch die erkannte Sprache.
In welchem Format ist das Reading bei dir? Deutsch oder Englisch?

Fehler sind jetzt raus.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Ma_Bo

Zitat von: Markus M. am 03 Oktober 2017, 16:22:52
Nicht getestet, sind aber doch ziemlich viele Daten.
Alle Readings werden gepollt, auch die erkannte Sprache.
In welchem Format ist das Reading bei dir? Deutsch oder Englisch?

Fehler sind jetzt raus.

List:

Internals:
   CFGFN
   DEF        xxx xxx
   NAME       Dot_Buero
   NR         28394
   STATE      PAUSED
   TYPE       amazonecho
   READINGS:
     2017-10-03 16:18:22   active          true
     2017-10-03 16:18:25   dnd             off
     2017-10-03 16:22:34   image           https://i.scdn.co/image/567b9ae701ec9d3a9e5c7530a4c3be08fdfccee6
     2017-10-03 16:22:34   line1           More Than You Know
     2017-10-03 16:22:34   line2           Axwell /\ Ingrosso
     2017-10-03 16:22:34   line3           Germany Top 50
     2017-10-03 16:22:35   mute            off
     2017-10-03 16:22:35   progress        131
     2017-10-03 16:22:35   repeat          off
     2017-10-03 16:22:35   shuffle         off
     2017-10-03 16:22:35   state           PAUSED
     2017-10-03 16:16:38   voice           Alexa heard: "alexa stell den fernseher auf super r. t. l."
     2017-10-03 16:22:35   volume          19
     2017-10-03 16:18:22   wakeword        ALEXA
   helper:
     COOKIE     weg ge xxt
     CSRF       xxx
     DEVICETYPE xxx
     SERIAL     xxx
     SERVER     alexa.amazon.de
     bluetooth
Attributes:
   cookie     xxx
   interval   300
   room       4.31_Alexa_Spracherkennung
   server     alexa.amazon.de
   subType    xxx

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Chris8888

#8
Hallo Markus,

ich brauche mal einen Schubs...ich bekomme es nicht hin. Ich habe 1x Echo und 1x Dot
Modul geladen (auch schon das neuere)
Device angelegt (sowohl mal mit, als auch ohne die Ids)
das jeweilge Cookie als attr eingetragen..
außer einem state initialized passiert leider nichts
im Log ist auch nichts
setzte ich ein set xxx dnd on habe ich folgendes im Log:
2017.10.03 17:28:13 2: echo: json evaluation error malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<InternalFailure/>\n") at ./FHEM/37_amazonecho.pm line 485.

$VAR1 = '<InternalFailure/>
';


Muss der Cookie mit einem " oder einem ' oder nichts beginnen und enden? Das kann ich aus den Einträgen nicht erkennen, versucht habe ich alle Versionen mal.
Und deine DeviceID ist die DeviceNumber (= Serinenummer), richtig?

Noch eine Idee?

Danke für deine Hilfe!

VG
Christian


Update:
Selbst gefunden: Das Cookie fängt an mit: x-amzn-dat-gui-....
Auf der Seite ist noch fälschlicherweise von: Cookie: x-amzn-dat-gui-
die Rede...

Jetzt läuft es...
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

MadMax-FHEM

Hi Markus,

blöd, dass ich grad dienstl. unterwegs bin...
...aber sobald ich zuhause bin werd ich das Modul mal anwerfen! :)

Vielen Dank, Joachim
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)

kawa0815

Hallo Marcus,


ich hatte ja hier:


https://forum.fhem.de/index.php/topic,73042.msg646537.html#msg646537


schon einmal versucht zu erklären, wie man mit dem Echo eine Notifikation mit dem Echo machen kann.

Ich habe dazu einfach eine mp3- Datei in mein Musikverzeichnis geladen und starte die über ein Script aus fhem.

Ich verwende das um Alarme auf dem Echo ausgeben zu können.

Fenster offen - Fhem - Script - Echo startet Alarmmeldung - Ich frage "Was ist los?" Echo gibt die aktuelle Alarmmeldung als Text aus.

Möglicherweise kannst du das ja mit in deinem Modul verwenden.

Markus M.

Zitat von: kawa0815 am 03 Oktober 2017, 19:45:09
Ich habe dazu einfach eine mp3- Datei in mein Musikverzeichnis geladen und starte die über ein Script aus fhem.
Möglicherweise kannst du das ja mit in deinem Modul verwenden.

Wenn du mir sagst wie ich an diese Track ID komme gerne
Ist drin, du brauchst nur die TrackID

Wird den meisten allerdings nichts nützen, da zumindest ich mit einem normalen Prime Account keine Musik hochladen kann.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

michael.winkler

Hi Markus,

habe das Modul von Dir mal eingespielt. Echo wird erkannt. Diverse Readings sind auch vorhanden. Aber das setzten von Lautstärke usw. bewirkt nichts. Mache ich etwas falsch?


Internals:
   DEF        xxx xxx
   NAME       Buero.Echo
   NR         615
   STATE      json error
   TYPE       amazonecho
   READINGS:
     2017-10-03 22:28:04   active          true
     2017-10-03 22:28:06   dnd             off
     2017-10-03 22:28:15   image           https://cdn-radiotime-logos.tunein.com/s97029g.png
     2017-10-03 22:28:15   line1           SWR3-Chartshow
     2017-10-03 22:28:15   line2           -
     2017-10-03 22:28:15   line3           -
     2017-10-03 22:28:16   mute            off
     2017-10-03 22:28:16   progress        505
     2017-10-03 22:28:16   repeat          off
     2017-10-03 22:28:16   shuffle         off
     2017-10-03 22:28:19   state           json error
     2017-10-03 22:00:26   voice           Alexa heard: "alexa sie die abspaltung von spanien ausrufe diesel die stabilität karton hinzu"
     2017-10-03 22:28:16   volume          20
     2017-10-03 22:28:03   volume_alarm    70
     2017-10-03 22:28:04   wakeword        ALEXA
   helper:
     COOKIE     xxxxxx365
     CUSTOMER   xxxx
     DEVICETYPE xxx
     SERIAL     xxx
     SERVER     layla.amazon.de
     VERSION    588443520
     bluetooth  9C-FC-01-xxx9/BR-C1
Attributes:
   cookie     xxx3365
   server     layla.amazon.de
   subType    xxxx
   verbose    0


Gruß
Michael

Markus M.

#13
Zitat von: michael.winkler am 03 Oktober 2017, 22:31:22
habe das Modul von Dir mal eingespielt. Echo wird erkannt. Diverse Readings sind auch vorhanden. Aber das setzten von Lautstärke usw. bewirkt nichts. Mache ich etwas falsch?
Internals:
...
helper:
     COOKIE     xxxxxx365
     CUSTOMER   xxxx
     DEVICETYPE xxx
     SERIAL     xxx
     SERVER     layla.amazon.de
     VERSION    588443520
     bluetooth  9C-FC-01-xxx9/BR-C1
rofl@voice :)

CSRF fehlt in den Internals. Hört dein Cookie auch damit auf (csrf=...)?
Lad mal neu runter und probier noch mal.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

michael.winkler

#14
Zitat von: Markus M. am 03 Oktober 2017, 22:44:08
rofl@voice :)

CSRF fehlt in den Internals. Hört dein Cookie auch damit auf (csrf=...)?
Lad mal neu runter und probier noch mal.

so hört die Zeile auf 4NMNo3E8hwZAS3MUY="; csrf=1505053365

OK, habe den Fehler gefunden. CSRF stand zwei mal in der Cookie Zeile