[37_echodevice] Amazon Echo Modul (nicht Alexa)

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

Vorheriges Thema - Nächstes Thema

michael.winkler

Zitat von: StephanFHEM am 07 Oktober 2018, 20:56:48
Hammer! Vielen Dank! Damit konnte ich etwas umsetzen was ich schon lange im Kopf hatte. Wenn ich mit Alexa jetzt einen Timer stelle kommt automatisch ein Popup aufs TabletUI welches mir die Restzeit anzeigt.

Leider klappt das aktuell nur für mein Echo in der Küche. Im Wohnzimmer hab ich eine Box von Sonos mit Alexa eingebaut. Die dort gestarteten Timer kann ich nicht in den Readings auslesen. Kann man das evnt. noch mal reinbringen?
Kannst Du mir mal ein list von dem ECHO Device schicken?

michael.winkler

Zitat von: awel am 05 Oktober 2018, 20:50:22
Betr. "set <account> textmessage"
Hallo Michael,
gibt es schon einen Plan wann Text-Mitteilungen von Alexa wieder möglich sein werden?
Danke und Grüße
Achim
Hi,

auf Seite 1 gibt es eine neue Version.


# 2018.10.07 v0.0.43
# - CHANGE:  set speak von Multiroom Geräten entfernt
# - BUGFIX:  set Account Device
#            get conversations

StephanFHEM

Zitat von: michael.winkler am 07 Oktober 2018, 22:45:36
Kannst Du mir mal ein list von dem ECHO Device schicken?
Ja klar:

Internals:
   CFGFN     
   DEF        A15ERDAKK5HQQG 2df9cbbbc81845c79606f943bc4fa8eb
   IODev      AlexaSystem
   NAME       ECHO_2df9cbbbc81845c79606f943bc4fa8eb
   NR         744
   NTFY_ORDER 50-ECHO_2df9cbbbc81845c79606f943bc4fa8eb
   STATE      connected
   TYPE       echodevice
   model      Sonos Display
   OLDREADINGS:
   READINGS:
     2018-10-07 23:02:05   channel         -
     2018-10-07 23:02:05   currentAlbum    -
     2018-10-07 23:02:05   currentArtist   -
     2018-10-07 23:02:05   currentArtwork  -
     2018-10-07 23:02:05   currentTitle    -
     2018-10-07 23:02:05   currentTuneInID -
     2018-10-07 23:02:45   microphone      false
     2018-10-07 17:59:59   model           Sonos Display
     2018-10-07 23:02:05   playStatus      stopped
     2018-10-07 23:02:05   progress        0
     2018-10-07 23:02:05   progresslen     0
     2018-10-07 23:02:37   state           connected
   helper:
     DEVICETYPE A15ERDAKK5HQQG
     RUNNING_REQUEST 0
     bluetooth  -
     CMD_QUEUE:
Attributes:
   IODev      AlexaSystem
   alias      Wohnzimmer
   icon       echo
   room       Amazon

awel

Zitat von: michael.winkler am 07 Oktober 2018, 22:48:51
Hi,

auf Seite 1 gibt es eine neue Version.


# 2018.10.07 v0.0.43
# - CHANGE:  set speak von Multiroom Geräten entfernt
# - BUGFIX:  set Account Device
#            get conversations

Da ist beim Hochladen etwas schief gelaufen: FHEM meldet noch immer Version 0.0.42 und get conversations bzw. set textmessage funktionieren nicht.

Auf jeden Fall: Vielen Dank!

Gruß Achim

michael.winkler

Zitat von: awel am 07 Oktober 2018, 23:32:52
Da ist beim Hochladen etwas schief gelaufen: FHEM meldet noch immer Version 0.0.42 und get conversations bzw. set textmessage funktionieren nicht.

Auf jeden Fall: Vielen Dank!

Gruß Achim
Hi,

habe die Version noch mal hochgeladen

Gruß
Michael

Nemo0815

#1160
Zitat von: Marlen am 05 Oktober 2018, 10:17:34
Das geht meiner Meinung nicht, es sei denn man legt für alles eine Routine an.
War auch nur so eine Idee, weiß noch nicht ob ich das für irgendwas verwende.

Ich habs jetzt auch mit einer Routine gelösts:

-> Routine: "Alexa, wie ist die Warmwassertemperatur" -> HA Bridge (Warmwassertemp) -> FHEM: Notify (Warmwassertemp) -> set ECHO speak " die Temperatur ist ..." usw :)

Funktioniert einwandfrei (um das obligatorische "OK" zu unterdrücken nach der Routine lasse ich Alexa einfach ein "Einen Moment" sagen, bevor sie die eigentlich Antwort über das speak Kommando gibt.

Wenn man mehr braucht kann man sich natürlich auch nur ein Keyword in FHEM (und HA Bridge) für alles festlegen  und sich den gesprochenen Text dann über das Modul holen und zerpflücken. Braucht zwar dann trotzdem noch für alles eine Routine, aber ich denke das ist vertretbar.

Marlen

Genau so hab ich das auch!
Nicht schön ist es halt, das dass bis zu einer Minute dauern kann, bis das voice Reading aktualisiert wird.

LG
  Marlen

Gesendet von meinem Aquaris U Plus mit Tapatalk


Nemo0815

#1162
Zitat von: Marlen am 09 Oktober 2018, 09:06:46
Genau so hab ich das auch!
Nicht schön ist es halt, das dass bis zu einer Minute dauern kann, bis das voice Reading aktualisiert wird.

LG
  Marlen

Gesendet von meinem Aquaris U Plus mit Tapatalk

Dafür hab ich einen Retry eingebaut, wenn das letzte Reading älter ist als 15 Sekunden wird einfach nach 3 Sekunden nochmal geprüft.

Hier mal der Code, getestet hab ich den heute noch nicht :)

AlexaAnfrageDummy {

my $echo_device = "";; # selected ECHO device

#get Alexa voice of device with smallest reading age:
my $device1 = "ECHO_23452345f2345f2345";; # Wohnzimmer
my $device2 = "ECHO_2345f2345f2345f234";; # Büro
my $device3 = "ECHO_sdfgsdffgsdfgsdfgdfff";; # Schlafzimmer

my $timestamp1 = ReadingsAge($device1,'voice','');;
my $timestamp2 = ReadingsAge($device2,'voice','');;
my $timestamp3 = ReadingsAge($device3,'voice','');;

my $latest_time;;

if($timestamp1 < $timestamp2 && $timestamp1 < $timestamp3){
$echo_device = $device1;;
$latest_time = $timestamp1;;
}
elsif($timestamp2 < $timestamp1 && $timestamp2 < $timestamp3){
$echo_device = $device2;;
$latest_time = $timestamp2;;
}
else{
$echo_device = $device3;;
$latest_time = $timestamp3;;
}

#only do if latest time is not older than 15 seconds
if($latest_time < 15)
{
#reset the timeout
fhem("set maxAlexaAnfrageRetries 25");;

my $voice = ReadingsVal($echo_device,"voice",0);;

###### for WarmwasserTemperatur ##########
my $temp = Value("WarmwasserTemperatur");;
my $find = '\.';;
my $replace = " Komma ";;
my $warmwasser= $temp =~ s/$find/$replace/r;;
#################################################

#select action
if($voice =~ m/Warmwassertemperatur/ || $voice =~ m/Warmwasser temperatur/)
{
fhem("set $echo_device speak Die Warmwassertemperatur beträgt $warmwasser Grad Celsius.");;
}
elsif($voice =~ m/Badfenster/ || $voice =~ m/Bad fenster/)
{
my $status = "offen";;
if(Value("Badfenster") ne "offen"){
$status = "geschlossen";;
}
fhem("set $echo_device speak Das Badfenster ist $status.");;
}
else
{
fhem("set $echo_device speak Das habe ich leider nicht verstanden, bitte wiederhole die Anfrage.");;
}
}
else
{
if(Value("maxAlexaAnfrageRetries") > 0)
{
fhem("sleep 3; trigger AlexaAnfrageDummy");;
{Log 1, "Alexa Anfrage retry...".Value("maxAlexaAnfrageRetries")};;
fhem("set maxAlexaAnfrageRetries ".(Value("maxAlexaAnfrageRetries") - 1));;
}
else
{
{Log 1, "Alexa Anfrage retry timed out!"};;
#reset the timeout
fhem("set maxAlexaAnfrageRetries 25");;
}
}
}



Edit: Könnte man das über ein get settings beschleunigen? Oder dauerts bei Amazon so lange bis die Info verfügbar ist?

Marlen

Hääää.......

was prüfst du hier nach 3 Sekunden????

Du findest doch hier nur heraus, welches deiner 3 Dot's zuletzt das Voice-reading aktualisiert hat!?

Ich hab ein notify auf z.B. dot.*:voice:.* Mit $NAME hab ich dann den Dot an dem ich auch die Antwort schicke!

Ich meinte aber, dass das Voice-reading von Amazon nur alle 1 Minuten aktualisiert wird.

LG
  Marlen

michael.winkler

Zitat von: Marlen am 09 Oktober 2018, 12:38:46
Hääää.......

was prüfst du hier nach 3 Sekunden????

Du findest doch hier nur heraus, welches deiner 3 Dot's zuletzt das Voice-reading aktualisiert hat!?

Ich hab ein notify auf z.B. dot.*:voice:.* Mit $NAME hab ich dann den Dot an dem ich auch die Antwort schicke!

Ich meinte aber, dass das Voice-reading von Amazon nur alle 1 Minuten aktualisiert wird.

LG
  Marlen
Ihr könnt den Modul Interval auch kleiner 60 sekunden stellen. Siehe Doku!

Marlen

Hmmm.....ach ja, stimmt, dachte aber es geht nicht weniger als 60....wie weit kann man da gehen? Was kann passieren?

LG
  Marlen

Gesendet von meinem Aquaris U Plus mit Tapatalk


Nemo0815

#1166
Zitat von: Marlen am 09 Oktober 2018, 12:38:46
Hääää.......

was prüfst du hier nach 3 Sekunden????

Du findest doch hier nur heraus, welches deiner 3 Dot's zuletzt das Voice-reading aktualisiert hat!?

Ich hab ein notify auf z.B. dot.*:voice:.* Mit $NAME hab ich dann den Dot an dem ich auch die Antwort schicke!

Ich meinte aber, dass das Voice-reading von Amazon nur alle 1 Minuten aktualisiert wird.

LG
  Marlen

Ich schaue nach welcher meiner 3 Echos angesprochen wurde und dann noch ob das Reading in letzter Zeit (15 Sekunden) aktualisiert wurde.

Aber mit dem notify auf voice geht das etwas eleganter, danke :)  (wobei man dann komplett auf das Poll intervall angewiesen ist, eine Mischung wäre wohl am effektivsten)
Nur triggere ich nicht auf voice sondern explizit auf ein Dummy device welches mir Alexa über die HA Bridge schaltet (bzw triggert), damit nicht zufällig eine Aktion ausgelöst wird wenn ein Keyword in FHEM erkannt wurde.


michael.winkler

Zitat von: Marlen am 09 Oktober 2018, 12:52:58
Hmmm.....ach ja, stimmt, dachte aber es geht nicht weniger als 60....wie weit kann man da gehen? Was kann passieren?

LG
  Marlen

Gesendet von meinem Aquaris U Plus mit Tapatalk
Es gibt, glaube ich keine Grenze. Probiere es einfach aus

Nemo0815

#1168
Zitat von: michael.winkler am 09 Oktober 2018, 14:19:47
Es gibt, glaube ich keine Grenze. Probiere es einfach aus

Wie sieht's mit der Last aus wenn ich das Intervall runtersetze? Wird das nicht zu viel des Guten (z.B. 3 devices á 5 Sekunden, damit man eine gute Response bekommt)?

michael.winkler

Zitat von: Nemo0815 am 09 Oktober 2018, 14:48:01
Wie sieht's mit der Last aus wenn ich das Intervall runtersetze? Wird das nicht zu viel des Guten (z.B. 3 devices á 5 Sekunden, damit man eine gute Response bekommt)?
Habe hier noch keine CPU Auslastung gemessen. Außerdem wäre nur das Account Device dafür zuständig. Probiert es einfach mal aus und schaut wie sich die CPU entwickelt. Ich würde auch nicht kleiner 10 Sekunden gehen!

In der nächsten Version könnt Ihr auch Routinen von FHEM aus anstarten.