[37_echodevice] Amazon Echo Modul (nicht Alexa)

Begonnen von michael.winkler, 12 Januar 2018, 18:20:12

Vorheriges Thema - Nächstes Thema

amenomade

@TobiRm: du kannst noch in deinem Post mit der Log mehr anonymisieren.
Wenn Du Alexa sagst "Alexa, sprich mir nach Das ist ein Test", sagt sie das nach? (erstmal unabhängig von Fhem)

Die Log vom echodevice ACCOUNT Device mit verbose 5 wäre auch interessant (auch anonymisiert), insb. was die Authentifizierung angeht.

Sieht man im ACCOUNT Device ein Reading .COOKIE, und wie alt ist es? Was gibt es in COOKIE_STATE und COOKIE_TYPE und amazon_refreshtoken
Wenn Du ein "list" davon machst, gibt es ein session-id in .COOKIE im helper Abschnitt? Ist .CUSTOMER richtig auf deinem CustomerId gesetzt? Ist .DIRECTID da? Ist .PASSWORT crypt:xxxxxxxxx da? Was ist der Timestamp in echodevice_refreshvoice_lastdate? In .HTTP_CONNECTION, gibt es code 200?
(also... ein "list" vom ACCOUNT Device würde alles zeigen, aber wenn dann, vorsicht: es gibt viel zu anonimisieren)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TobiRm

Zitat von: amenomade am 06 August 2019, 18:43:13
@TobiRm: du kannst noch in deinem Post mit der Log mehr anonymisieren.
Wenn Du Alexa sagst "Alexa, sprich mir nach Das ist ein Test", sagt sie das nach? (erstmal unabhängig von Fhem)
Ja, sie spricht es korrekt nach.


Zitat von: amenomade am 06 August 2019, 18:43:13
Die Log vom echodevice ACCOUNT Device mit verbose 5 wäre auch interessant (auch anonymisiert), insb. was die Authentifizierung angeht.

Sieht man im ACCOUNT Device ein Reading .COOKIE, und wie alt ist es? Was gibt es in COOKIE_STATE und COOKIE_TYPE und amazon_refreshtoken



Internals:
   DEF        crypt:* crypt:+
   FUUID      +
   IODev     
   NAME       echo
   NR         385
   NTFY_ORDER 50-echo
   STATE      connected
   TYPE       echodevice
   model      ACCOUNT
   OLDREADINGS:
   READINGS:
     2019-08-03 20:27:40   2FACode         not used
     2019-08-06 18:57:15   BrowserLanguage de,en-US;q=0.7,en;q=0.3
     2019-08-06 18:57:15   BrowserUserAgent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
     2019-08-06 18:57:05   COOKIE_STATE    OK
     2019-08-03 20:27:41   COOKIE_TYPE     NEW
     2019-08-06 18:57:05   alarm_count     0
     2019-08-03 20:21:28   amazon_refreshtoken vorhanden
     2019-08-04 21:56:07   autocreate_devices found: 1
     2019-08-06 18:57:06   config_address_between -
     2019-08-06 18:57:06   config_address_from R*
     2019-08-06 18:57:06   config_address_to 1 R*
     2019-08-06 18:57:11   list_SHOPPING_ITEM
     2019-08-06 18:57:11   list_TASK       
     2019-08-06 18:57:05   musicalarm_count 0
     2019-08-06 18:57:05   reminder_count  0
     2019-08-06 18:57:05   state           connected
     2019-08-06 18:57:05   timer_count     0
     2019-08-06 18:57:05   timer_id        -
     2019-08-06 18:57:05   timer_remainingtime 0
     2019-08-03 20:27:05   version         0.0.52
   helper:
     DEVICETYPE A*
     RUNLOGIN   0
     RUNNING_REQUEST 0
     SERVER     layla.amazon.de
     TWOFA     
     VERSION    64157*
     echodevice_refreshvoice 0
     echodevice_refreshvoice_lastdate 15*

Plus siehe Screenshot.
Reicht das?


Zitat von: amenomade am 06 August 2019, 18:43:13
Wenn Du ein "list" davon machst, gibt es ein session-id in .COOKIE im helper Abschnitt? Ist .CUSTOMER richtig auf deinem CustomerId gesetzt? Ist .DIRECTID da? Ist .PASSWORT crypt:xxxxxxxxx da? Was ist der Timestamp in echodevice_refreshvoice_lastdate? In .HTTP_CONNECTION, gibt es code 200?
(also... ein "list" vom ACCOUNT Device würde alles zeigen, aber wenn dann, vorsicht: es gibt viel zu anonimisieren)

Was mir aber nun aufgefallen ist, letztes mal habe ich es wohl übersehen:
Nach einem NPN_login refresh:
Login Ergebnis
Das angegebene Refreshtoken Cookie ist ungeueltig! Refreshtoken="session-id=2****"


Dabei habe ich erst vor ein paar Tagen den Login mit NPM_login new erneuert/neu angelegt.

Und, noch aufschlussreicher aus dem verbose 5 Log

2019.05.31 18:43:32 3: [echodot] [echodevice_LoginStart] Alter COOKIE=6030/6000 Refresh Cookie!
2019.05.31 18:43:46 3: [echodot] [echodevice_NPMWaitForCookie] [NPM Login Refresh Fri May 31 18:43:32 2019] write new refreshtoken

Nun wird langsam ein Schuh draus.

Aber warum wird das nicht mehr aktualisiert?

amenomade

Komisch. Du sagst, Du nutzt NPM, aber Du hast COOKIE_TYPE NEW
Bei mir steht COOKIE_TYPE NPM_Login

Ich vermute, er ist nicht richtig authentifiziert.
Und es fehlen viele Readings.

echodevice_refreshvoice_lastdate 15*
Das könntest Du bitte liefern: das wäre ein Timestamp für die letzte Aktualisierung von voice

Wenn Du ein
set echo NPM_login new
machst, was passiert? Da der refresh-token Cookie ungültig ist, wird ein set NPM_login refresh nicht funktionieren.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Icke

Hallo an alle

ich darf berichten das nach nem vollständigen systemupdate (bin da nicht wirklich uptodate)
und der NPM Login Methode, alles wieder wie gewohnt läuft ...
Und bei mir war wirklich alles veraltet... Schande über mich und vielen dank für alle Denkanstöße hier ...

und ja bzw nein der csrf wars nicht mal ein bischen 🙈

liebe grüße Icke

michael.winkler

Sorry Leute! Ich bin noch 10 Tage im Urlaub, daher kann ich momentan nicht helfen.

Wichtig wäre nur dass ihr das Modul auf den aktuellsten Stand von Seite 1 bringt und dann ggf. noch ein npm_install macht damit die Dateien aktualisiert werden.


Gesendet von iPhone mit Tapatalk

87insane

Scheint mir ein alt hoch gekommenes Thema.

Das gleiche gab es einige Seiten zuvor. Scheint also rhythmisch zu passieren. Ggf auf seite 1 mal hinterlegen.

Gesendet von meinem LG-H850 mit Tapatalk


Christoph Morrison

#2796
Ich bekomme mit 0.0.54 wieder den Fehler mit den nicht abgeschlossenen Regexp.

Unmatched ) in regex; marked by <-- HERE in m/g=1) <-- HERE hiD:hv5>8h{7b;%u9!im2~dt/ at ./FHEM/37_echodevice.pm line 4086.

Und inzwischen auch einen, wenn ich npm_login new mache. FHEM hängt sich dann reproduzierbar weg:

Invalid version format (version required) at ./FHEM/37_echodevice.pm line 4284.

Die Zeilennummer stimmt ggf. nicht, denn ich habe die ganzen Checks um Zeile 4086 rausgeworfen, aber es handelt sich dabei um die Versionsprüfung von node:

if (version->declare($NodeResult)->numify < version->declare('8.10')->numify ) {



$ node -v
v10.15.2

TobiRm

Zitat von: amenomade am 06 August 2019, 19:30:42
Komisch. Du sagst, Du nutzt NPM, aber Du hast COOKIE_TYPE NEW
Bei mir steht COOKIE_TYPE NPM_Login

Ich vermute, er ist nicht richtig authentifiziert.
Und es fehlen viele Readings.

echodevice_refreshvoice_lastdate 15*
Das könntest Du bitte liefern: das wäre ein Timestamp für die letzte Aktualisierung von voice

Wenn Du ein
set echo NPM_login new
machst, was passiert? Da der refresh-token Cookie ungültig ist, wird ein set NPM_login refresh nicht funktionieren.

Ich habe das Modul quasi von Anfang an genutzt, zuerst noch dem dem "von Hand Cookie" aktualisieren, dann auf NPM gewechselt. So lief es auch immer.
Der Login und vieles andere funktioniert ja auch.
Vor zwei Tagen habe ich das Modul gelösche und neu erstellt. Das Ergebnis was das gleiche.
Ich nehme mich morgen der Sache nochmal an.

TobiRm

Ich habe grad den alexa-cookie Ordner umbenannt und das NPM_install neu ausgeführt.
Ist alles durchgelaufen, die unter .COOKIE hinterlegten Daten wurden auch aktualisiert, hat aber nicht geholfen.

Bei einem NPM_login refresh bekam ich wieder ein:

Login Ergebnis

Das angegebene Refreshtoken Cookie ist ungeueltig! Refreshtoken= *hier die Daten*


Dann aufeinmal:

Nach dem (gefühlt) 10. mal NPM_login new klappt das speak wieder.
Auch NPM_login refresh liefert mir nun keinen Fehler mehr.

Die unter .COOKIE hinterlegten Daten sind nun auch viel umfangreicher als vorher, rund 4 mal soviel.

Also keine Ahnung was los ist/war und keine Ahnung wie lang es nun läuft.

misux

HI!

Ich wollte mir eben das echodevice definieren wie auf der ersten Seite beschrieben...

Leider sagt mir fhem "unknown Module echodevice"  Wie bekomme ich das installiert? In der Commandref ist es nicht aufgeführt...

Vielen Dank!

TobiRm

Zitat von: misux am 07 August 2019, 16:48:41
HI!

Ich wollte mir eben das echodevice definieren wie auf der ersten Seite beschrieben...

Leider sagt mir fhem "unknown Module echodevice"  Wie bekomme ich das installiert? In der Commandref ist es nicht aufgeführt...

Vielen Dank!
Schau mal auf die erste Seite dieses Threads

amenomade

ZitatIch wollte mir eben das echodevice definieren wie auf der ersten Seite beschrieben...

Leider sagt mir fhem "unknown Module echodevice"  Wie bekomme ich das installiert? In der Commandref ist es nicht aufgeführt...

Naja... auf der ersten Seite gibt es auch den Modul zu downloaden...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

misux

Aj... jetzt kapiere ich... is nix einfach installiert.. erst herunterladen, kopieren installieren... ja, ok, muss mich dann mal einlesen wie man .pm installiert..

Dank!

Christoph Morrison

Zitat von: misux am 07 August 2019, 17:06:32
Aj... jetzt kapiere ich... is nix einfach installiert.. erst herunterladen, kopieren installieren... ja, ok, muss mich dann mal einlesen wie man .pm installiert..

Dank!

Im Zweifelsfall machst du einfach:

update add https://bitbucket.org/christoph-morrison/fhem-amazonecho/raw/development/controls_echodevice.txt

und dann

update echodevice

und dann einen Restart.

MarkusN

#2804
Hallo! Habe dieses Modul erfolgreich in einem notify verwursten können. Dieses notify erlaubt mir, abhängig von der Quelle eines Kommandos, unterschiedliche Dinge zu tun. Ich möchte bspw. gewisse Geräte nur von einem bestimmten Echo aus schaltbar machen, oder eine Routine verschiedene Aufgaben erledigen lassen, abhängig vom Echo zu dem man spricht. Das ganze funtioniert bis jetzt sehr zuverlässig. Wenn ich keine Routine nutze, dann lege ich für das Device welches ich schalten möchte einen Dummy an, welcher absolut nichts tut. Er wird nur über alexa-fhem bekannt gegeben, und verhindert dass Alexa sich beschwert dass das Device nicht existiert. Alles andere erledigt dieses notify:

Zitat
ECHO_.*:voice:.* {   
   if ($EVENT =~ /alles.aus/) {
      if ($NAME eq "ECHO_AABBCCDDEEFF") {
         fhem('set doif_modus_beleuchtung_keller modus auto');
         fhem('set dummy_markus_pc_keller off');
         if (ReadingsVal("doif_keller_xbox","state","") ne "off" ) {
            fhem('set doif_keller_xbox off');
         };
         fhem('set ECHO_AABBCCDDEEFF info Beliebig_Auf_Wiedersehen');
      } else {
         fhem('set $NAME speak Es tut mir Leid, Dave, aber das kann ich nicht tun');
      }
   }
   if ($EVENT =~ /computer.an/)  {
      if ($NAME eq "ECHO_AABBCCDDEEFF") {
         fhem('set dummy_markus_pc_keller on');
      } else {
         fhem('set $NAME speak Es tut mir Leid, Dave, aber das kann ich nicht tun');
      }
   }   
   if ($EVENT =~ /computer.aus/)  {
      if ($NAME eq "ECHO_AABBCCDDEEFF") {
         fhem('set dummy_markus_pc_keller off');   
      } else {
         fhem('set $NAME speak Es tut mir Leid, Dave, aber das kann ich nicht tun');
      }
   }
}

Ich reagiere hiermit auf das voice event jedes Echo devices, und prüfe im weiteren Verlauf welches device das event ausgelöst hat.
Vielleicht kann ja der ein oder andere was damit Anfangen und es für sich verfeinern.
Ein kleines Schönheitsproblem habe ich allerdings, was sich vermutlich mehr auf das notify bezieht, aber vielleicht hat ja jemand eine Idee.

Die von mir rot eingefärbte Zeile sollte eigentlich so aussehen:
fhem('set $NAME info Beliebig_Auf_Wiedersehen');
Hiermit möchte ich dem Echo der das Event ausgelöst hat einen vordefinierten Spruch ausgeben lassen, allerdings funktioniert das so nicht, nur wenn ich den Echo explizit angebe. Die grün markierte Zeile funktioniert allerdings ohne Probleme. Hat jemand eine Idee wieso?

/edit:

hier die Version mit den korrekt gesetzten doppelten Anführungszeichen:

ECHO_.*:voice:.* {
if ($EVENT =~ /alles.aus/) {
if ($NAME eq "ECHO_AABBCCDDEEFF") {
fhem("set doif_modus_beleuchtung_keller modus auto");
fhem("set dummy_markus_pc_keller off");
if (ReadingsVal("doif_keller_xbox","state","") ne "off" ) {
fhem("set doif_keller_xbox off");
};
fhem("set $NAME info Beliebig_Auf_Wiedersehen");
} else {
fhem("set $NAME speak Es tut mir Leid, Dave, aber das kann ich nicht tun");
}
}
if ($EVENT =~ /computer.an/)  {
if ($NAME eq "ECHO_AABBCCDDEEFF") {
fhem("set dummy_markus_pc_keller on");
} else {
fhem("set $NAME speak Es tut mir Leid, Dave, aber das kann ich nicht tun");
}
}
if ($EVENT =~ /computer.aus/)  {
if ($NAME eq "ECHO_AABBCCDDEEFF") {
fhem("set dummy_markus_pc_keller off");
} else {
fhem("set $NAME speak Es tut mir Leid, Dave, aber das kann ich nicht tun");
}
}
}


Grüße,

Markus