Autor Thema: echodevice - auf Voice-Reading reagieren / bei IF-Statement "contains" möglich?  (Gelesen 466 mal)

Offline Felix_86

  • Full Member
  • ***
  • Beiträge: 169
    • https://smart-altern.de
Hallo zusammen,

nachdem ich nun das echodevice seit einigen Wochen erfolgreich bei mir im Einsatz habe und ich damit meinen Echo Dot als Lautsprecher für FHEM nutze, möchte ich nun Spracheingaben über den Echo Dot in FHEM verarbeiten.

Ich habe also ein notify, welches auf das Reading "voice" des echodevice Alias Echo Dot reagiert. Soweit kein Problem.

Nun habe ich festgestellt, dass das Reading manchmal das Wake Word "Alexa" mit anzeigt und manchmal nicht.

Testweise habe ich mir das Event geloggt, jedes Mal, wenn sich das Reading ändert. Das steht dann im FHEM Log:
2019.07.13 14:14:07 3: ECHO_G090L9097123123123 --- voice: alexa wie warm ist es
2019.07.13 14:19:07 3: ECHO_G090L9097123123123 --- voice: wie warm ist es
2019.07.13 14:21:07 3: ECHO_G090L9097123123123 --- voice: alexa wie warm ist es
2019.07.13 14:24:07 3: ECHO_G090L9097123123123 --- voice: wie warm ist das wohnzimmer
2019.07.13 14:34:08 3: ECHO_G090L9097123123123 --- voice: wie warm ist das wohnzimmer
2019.07.13 14:36:08 3: ECHO_G090L9097123123123 --- voice: wie warm ist es im wohnzimmer
2019.07.13 14:37:08 3: ECHO_G090L9097123123123 --- voice: alexa wie warm ist das wohnzimmer
2019.07.13 14:38:08 3: ECHO_G090L9097123123123 --- voice: alexa wie warm ist es im wohnzimmer
2019.07.13 14:43:08 3: ECHO_G090L9097123123123 --- voice: hop hop
2019.07.13 14:44:08 3: ECHO_G090L9097123123123 --- voice: schalte wohnzimmer aus
2019.07.13 14:45:09 3: ECHO_G090L9097123123123 --- voice: wie warm ist es im wohnzimmer
2019.07.13 14:46:09 3: ECHO_G090L9097123123123 --- voice: wie warm ist es im wohnzimmer

Um nun in dem notify auf meine Frage / Befehle an den Echo Dot zu reagieren müsste ich beide Variante des Voice-Reading abfragen:

if ($EVENT eq "voice: alexa wie warm ist das wohnzimmer"){ # tue etwas in FHEM und gebe das Ergebnis über den Echo Dot aus }
if ($EVENT eq "voice: wie warm ist das wohnzimmer"){ # tue etwas in FHEM und gebe das Ergebnis über den Echo Dot aus }

Bei 2, 4 oder 10 IF-Bedingungen mag das noch handhabbar sein. Da ich aber mein Telegram-Notify mit 50 IF-Bedingungen nun sprachlich abbilden möchte, müsste ich 100 IF-Bedingungen in dem notify verfassen. Das Ganze wird dann wenig übersichtlich.

Daher meine Fragen:
1. Gibt es anstatt dem "eq" (für eine exakte Überprüfung der Bedingung) auch ein "contains" um Fragmente innerhalb des Events zu prüfen?
if ($EVENT contains "wie warm ist das wohnzimmer"){ # tue etwas in FHEM und gebe das Ergebnis über den Echo Dot aus }   Damit wäre mir egal, was vor und / oder nach meinem Befehl noch kommt, solange diese Teil enthalten ist, greift die IF-Bedingungen.
2. Wie habt ihr das geregelt um Fragen / Befehle an Alexa über FHEM "beantworten" / ausführen zu lassen?

Wie immer besten Dank.
« Letzte Änderung: 13 Juli 2019, 16:43:26 von Felix_86 »
MfG,
Felix

RPi3 B, FHEM 5.9, ca 260 Device
CUL, IT, TCM97001, HUEBridge, HUEDevice, mailcheck, readingsGroup, alexa, SYSMON, TelegramBot, Weather (OWM), FRITZBOX, PRESENCE, DWD, UWZ, at, notify, FileLog, DOIF, HTTPMOD, SVG, TRAFFIC, dummy, weblink, echodevice, CUL_TX, EspLedController

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4582
if ($EVENT =~ /wie.warm.ist.das.wohnzimmer/)oder
if ($EVENT =~ /warm.*wohnzimmer/)
« Letzte Änderung: 13 Juli 2019, 22:38:22 von amenomade »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten
Hilfreich Hilfreich x 1 Liste anzeigen

Offline Felix_86

  • Full Member
  • ***
  • Beiträge: 169
    • https://smart-altern.de
besten Dank, amenomade.

Kann es sein, dass deutsche "Sonderzeichen" wie ß,ä,ö,ü ein Problem bei der Prüfing darstellen?

if ($EVENT eq "voice: alexa wie warm ist es draußen") Das funktioniert zwar nicht immer zuverlässig aber immerhin.

if ($EVENT =~ /wie.warm.*draußen/)Das funktioniert nie.
MfG,
Felix

RPi3 B, FHEM 5.9, ca 260 Device
CUL, IT, TCM97001, HUEBridge, HUEDevice, mailcheck, readingsGroup, alexa, SYSMON, TelegramBot, Weather (OWM), FRITZBOX, PRESENCE, DWD, UWZ, at, notify, FileLog, DOIF, HTTPMOD, SVG, TRAFFIC, dummy, weblink, echodevice, CUL_TX, EspLedController

Offline Byte09

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1562
besten Dank, amenomade.

Kann es sein, dass deutsche "Sonderzeichen" wie ß,ä,ö,ü ein Problem bei der Prüfing darstellen?

if ($EVENT eq "voice: alexa wie warm ist es draußen") Das funktioniert zwar nicht immer zuverlässig aber immerhin.

if ($EVENT =~ /wie.warm.*draußen/)Das funktioniert nie.

hi ,

mir ist in diesem zuammenhang völlig unklar wie ein 'eq' vergleich unzuverlässig sein kann. entweder er ist gleich oder nicht ?!

um zu der zweiten version etwas zu sagen wäre es gut, wenn du mal das konkrete event - aus dem monitor - hier postest .

genau dieses beispiel ist nicht in deinem ersten post.

gruss Byte09
Maintainer MSwitch,Siro,Gecos

Offline Felix_86

  • Full Member
  • ***
  • Beiträge: 169
    • https://smart-altern.de
mir ist in diesem zuammenhang völlig unklar wie ein 'eq' vergleich unzuverlässig sein kann. entweder er ist gleich oder nicht ?!
Der Meinung bin ich auch.
Ich habe allerdings festgestellt, dass auf die Frage "wie warm ist es draußen" nicht immer eine Antwort kommt. Zwar wird das Voice-Reading aktualisiert, das notify reagiert, aber die Aktion nach dem IF-Vergleich wird nicht immer ausgeführt.
Wandel ich die Frage und die IF-Prüfung ab auf "wie warm ist es", dann ist der Vergleich 100% zuverlässig.
Ich habe die Vermutung, dass die textuelle Antwort von Amazon bzgl. der deutschen Sonderzeichen einen Zeichencode verwendet, der hier nicht kompatibel ist ?!

Identisch ist das Verhalten bei der Frage "wie warm ist es in der Küche" - darauf kommt nicht immer zuverlässig eine Antwort. Während "wie warm ist das Bad" immer zu 100% ein Antwort kommt,

um zu der zweiten version etwas zu sagen wäre es gut, wenn du mal das konkrete event - aus dem monitor - hier postest .

genau dieses beispiel ist nicht in deinem ersten post.
Hier der Event Monitor:
2019-07-14 18:51:11 notify notify_Alexa_Voice_Kommandos active
2019-07-14 18:51:11 Global global MODIFIED notify_Alexa_Voice_Kommandos
2019-07-14 18:52:05 echodevice ECHO_G090L9123123123 voice: wie warm ist es draußen
2019-07-14 18:52:09 echodevice AmazonConnector list_SHOPPING_ITEM:
2019-07-14 18:52:09 echodevice AmazonConnector list_TASK:
2019-07-14 18:53:03 echodevice AmazonConnector connected
2019-07-14 18:53:03 echodevice AmazonConnector COOKIE_STATE: OK
2019-07-14 18:53:04 echodevice AmazonConnector timer_count: 0
2019-07-14 18:53:04 echodevice AmazonConnector timer_id: -
2019-07-14 18:53:04 echodevice AmazonConnector timer_remainingtime: 0
2019-07-14 18:53:04 echodevice AmazonConnector reminder_count: 0
2019-07-14 18:53:04 echodevice AmazonConnector alarm_count: 0
2019-07-14 18:53:04 echodevice AmazonConnector musicalarm_count: 0
2019-07-14 18:53:04 echodevice AmazonConnector config_address_from: xxxxx
2019-07-14 18:53:04 echodevice AmazonConnector config_address_to: -
2019-07-14 18:53:04 echodevice AmazonConnector config_address_between: -
2019-07-14 18:53:05 echodevice ECHO_G090L9123123123 voice: alexa wie warm ist es draußen
2019-07-14 18:53:09 echodevice AmazonConnector list_SHOPPING_ITEM:
2019-07-14 18:53:09 echodevice AmazonConnector list_TASK:
2019-07-14 18:53:12 notify notify_Alexa_Voice_Kommandos active
2019-07-14 18:53:12 Global global MODIFIED notify_Alexa_Voice_Kommandos
2019-07-14 18:53:26 CUL_TCM97001 Wetter T: 17.4
2019-07-14 18:54:03 SYSMON SysMon_Raspberry fhemuptime: 371255
2019-07-14 18:54:03 echodevice AmazonConnector timer_count: 0
2019-07-14 18:54:03 echodevice AmazonConnector timer_id: -
2019-07-14 18:54:03 echodevice AmazonConnector timer_remainingtime: 0
2019-07-14 18:54:03 echodevice AmazonConnector reminder_count: 0
2019-07-14 18:54:03 echodevice AmazonConnector alarm_count: 0
2019-07-14 18:54:03 echodevice AmazonConnector musicalarm_count: 0
2019-07-14 18:54:03 echodevice AmazonConnector connected
2019-07-14 18:54:03 echodevice AmazonConnector COOKIE_STATE: OK
2019-07-14 18:54:04 echodevice AmazonConnector config_address_from: xxxxx
2019-07-14 18:54:04 echodevice AmazonConnector config_address_to: -
2019-07-14 18:54:04 echodevice AmazonConnector config_address_between: -
2019-07-14 18:54:05 echodevice ECHO_G090L9123123123 voice: wie warm ist das bad
2019-07-14 18:54:09 echodevice AmazonConnector list_SHOPPING_ITEM:
2019-07-14 18:54:09 echodevice AmazonConnector list_TASK:
2019-07-14 18:54:12 CUL_TCM97001 Thermometer_BZ temperature: 19.9
2019-07-14 18:54:12 CUL_TCM97001 Thermometer_BZ T: 19.9 H: 59
2019-07-14 18:54:20 Global global SAVE
2019-07-14 18:55:04 echodevice AmazonConnector timer_count: 0
2019-07-14 18:55:04 echodevice AmazonConnector timer_id: -
2019-07-14 18:55:04 echodevice AmazonConnector timer_remainingtime: 0
2019-07-14 18:55:04 echodevice AmazonConnector reminder_count: 0
2019-07-14 18:55:04 echodevice AmazonConnector alarm_count: 0
2019-07-14 18:55:04 echodevice AmazonConnector musicalarm_count: 0
2019-07-14 18:55:04 echodevice AmazonConnector connected
2019-07-14 18:55:04 echodevice AmazonConnector COOKIE_STATE: OK
2019-07-14 18:55:04 echodevice AmazonConnector config_address_from: xxxxx
2019-07-14 18:55:04 echodevice AmazonConnector config_address_to: -
2019-07-14 18:55:04 echodevice AmazonConnector config_address_between: -
2019-07-14 18:55:05 echodevice ECHO_G090L9123123123 voice: alexa wie warm ist die küche
und hier das Logging durch das entsprechende notify:
2019.07.14 18:52:05 3: Notify getroffen mit Event --- voice: wie warm ist es draußen
2019.07.14 18:53:05 3: Notify getroffen mit Event --- voice: alexa wie warm ist es draußen
2019.07.14 18:54:05 3: Notify getroffen mit Event --- voice: wie warm ist das bad
2019.07.14 18:55:05 3: Notify getroffen mit Event --- voice: alexa wie warm ist die küche
Bei den Events 1,  2 und 4 wurde die entsprechende Aktion nicht ausgeführt, Event 3 hat funktioniert.
MfG,
Felix

RPi3 B, FHEM 5.9, ca 260 Device
CUL, IT, TCM97001, HUEBridge, HUEDevice, mailcheck, readingsGroup, alexa, SYSMON, TelegramBot, Weather (OWM), FRITZBOX, PRESENCE, DWD, UWZ, at, notify, FileLog, DOIF, HTTPMOD, SVG, TRAFFIC, dummy, weblink, echodevice, CUL_TX, EspLedController

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4582
Dann
if ($EVENT =~ /wie.warm.*drau.en/)Wird aber auch natürlich auf "Wie warm ist es denn, sag mal endlich, draupen" oder "drauken" reagieren.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline Byte09

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1562
ich habe da eben mal etwas rumprobiert und konnte keine probleme bei der erkennung von küche, draußen etc. feststellen . es wird bei mir immer korrekt erkannt. Ich habe dazu allerdings nicht notify genutzt , insofern keine Ahnung ob es sich hier anders verhält.

gruss Byte09
Maintainer MSwitch,Siro,Gecos

Offline Felix_86

  • Full Member
  • ***
  • Beiträge: 169
    • https://smart-altern.de
Dann
if ($EVENT =~ /wie.warm.*drau.en/)Wird aber auch natürlich auf "Wie warm ist es denn, sag mal endlich, draupen" oder "drauken" reagieren.

Leider nein:
if ($EVENT =~ /wie.warm.*drau.en/) {Log 3,"Draußen getroffen"}
else {Log 3,"$EVENT - Kein passender Befehl gefunden";}
erzeugt:
2019.07.14 19:57:11 3: Notify getroffen mit Event --- voice: wie warm ist es draußen
2019.07.14 19:57:11 3: voice: wie warm ist es draußen - Kein passender Befehl gefunden

ich habe da eben mal etwas rumprobiert und konnte keine probleme bei der erkennung von küche, draußen etc. feststellen . es wird bei mir immer korrekt erkannt. Ich habe dazu allerdings nicht notify genutzt , insofern keine Ahnung ob es sich hier anders verhält.

gruss Byte09
Im Gui habe ich auch keine Probleme. Dort werden die Zeichen korrekt angezeigt, auch im Log.
MfG,
Felix

RPi3 B, FHEM 5.9, ca 260 Device
CUL, IT, TCM97001, HUEBridge, HUEDevice, mailcheck, readingsGroup, alexa, SYSMON, TelegramBot, Weather (OWM), FRITZBOX, PRESENCE, DWD, UWZ, at, notify, FileLog, DOIF, HTTPMOD, SVG, TRAFFIC, dummy, weblink, echodevice, CUL_TX, EspLedController

Offline Felix_86

  • Full Member
  • ***
  • Beiträge: 169
    • https://smart-altern.de
Ich habe nun im echodevice und im "Echo Dot"-Device die BrowserLanguage auf "de,de-DE" gestellt, es war zuvor noch der Standardwert "de,en-US;q=0.7,en;q=0.3"
weiter habe ich die IF-Prüfung angepasst:
if ($EVENT =~ /voice:.wie.warm.*drau..en/)Damit erhalte ich nun eine Antwort auf die Außentemperatur:
2019-07-14 20:26:12 echodevice ECHO_G090L9097123123 voice: wie warm ist es draußen
2019-07-14 20:26:17 echodevice AmazonConnector list_SHOPPING_ITEM:
2019-07-14 20:26:17 echodevice AmazonConnector list_TASK:
2019-07-14 20:27:11 SYSMON SysMon_Raspberry fhemuptime: 376842
2019-07-14 20:27:11 echodevice AmazonConnector connected
2019-07-14 20:27:11 echodevice AmazonConnector COOKIE_STATE: OK
2019-07-14 20:27:11 echodevice AmazonConnector timer_count: 0
2019-07-14 20:27:11 echodevice AmazonConnector timer_id: -
2019-07-14 20:27:11 echodevice AmazonConnector timer_remainingtime: 0
2019-07-14 20:27:11 echodevice AmazonConnector reminder_count: 0
2019-07-14 20:27:11 echodevice AmazonConnector alarm_count: 0
2019-07-14 20:27:11 echodevice AmazonConnector musicalarm_count: 0
2019-07-14 20:27:11 echodevice AmazonConnector config_address_from: xxx
2019-07-14 20:27:11 echodevice AmazonConnector config_address_to: -
2019-07-14 20:27:11 echodevice AmazonConnector config_address_between: -
2019-07-14 20:27:12 echodevice ECHO_G090L9097123123 voice: sprich mir nach Aktuell sind es draussen 18,2 Grad.
2019-07-14 20:27:17 echodevice AmazonConnector list_SHOPPING_ITEM:
2019-07-14 20:27:17 echodevice AmazonConnector list_TASK:
2019-07-14 20:28:05 CUL_TCM97001 Thermometer_KU temperature: 22.5
2019-07-14 20:28:05 CUL_TCM97001 Thermometer_KU T: 22.5 H: 54
2019-07-14 20:28:11 SYSMON SysMon_Raspberry fhemuptime: 376903
2019-07-14 20:28:11 echodevice AmazonConnector timer_count: 0
2019-07-14 20:28:11 echodevice AmazonConnector timer_id: -
2019-07-14 20:28:11 echodevice AmazonConnector timer_remainingtime: 0
2019-07-14 20:28:11 echodevice AmazonConnector reminder_count: 0
2019-07-14 20:28:11 echodevice AmazonConnector alarm_count: 0
2019-07-14 20:28:11 echodevice AmazonConnector musicalarm_count: 0
2019-07-14 20:28:11 echodevice AmazonConnector connected
2019-07-14 20:28:11 echodevice AmazonConnector COOKIE_STATE: OK
2019-07-14 20:28:11 echodevice AmazonConnector config_address_from: xxx
2019-07-14 20:28:11 echodevice AmazonConnector config_address_to: -
2019-07-14 20:28:11 echodevice AmazonConnector config_address_between: -
2019-07-14 20:28:12 echodevice ECHO_G090L9097123123 voice: wie warm ist es draußen
2019-07-14 20:28:17 echodevice AmazonConnector list_SHOPPING_ITEM:
2019-07-14 20:28:17 echodevice AmazonConnector list_TASK:
2019-07-14 20:29:11 SYSMON SysMon_Raspberry fhemuptime: 376963
2019-07-14 20:29:11 echodevice AmazonConnector connected
2019-07-14 20:29:11 echodevice AmazonConnector COOKIE_STATE: OK
2019-07-14 20:29:11 echodevice AmazonConnector timer_count: 0
2019-07-14 20:29:11 echodevice AmazonConnector timer_id: -
2019-07-14 20:29:11 echodevice AmazonConnector timer_remainingtime: 0
2019-07-14 20:29:11 echodevice AmazonConnector reminder_count: 0
2019-07-14 20:29:11 echodevice AmazonConnector alarm_count: 0
2019-07-14 20:29:11 echodevice AmazonConnector musicalarm_count: 0
2019-07-14 20:29:11 echodevice AmazonConnector config_address_from: xxx
2019-07-14 20:29:11 echodevice AmazonConnector config_address_to: -
2019-07-14 20:29:11 echodevice AmazonConnector config_address_between: -
2019-07-14 20:29:12 echodevice ECHO_G090L9097123123 voice: sprich mir nach Aktuell sind es draussen 18,2 Grad.
MfG,
Felix

RPi3 B, FHEM 5.9, ca 260 Device
CUL, IT, TCM97001, HUEBridge, HUEDevice, mailcheck, readingsGroup, alexa, SYSMON, TelegramBot, Weather (OWM), FRITZBOX, PRESENCE, DWD, UWZ, at, notify, FileLog, DOIF, HTTPMOD, SVG, TRAFFIC, dummy, weblink, echodevice, CUL_TX, EspLedController

Offline Byte09

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1562
.....
Im Gui habe ich auch keine Probleme. Dort werden die Zeichen korrekt angezeigt, auch im Log.


sie werden nicht nur korrrekt dargestellt, es wird je nach 'satz' geschaltet.

gruss Byte09
Maintainer MSwitch,Siro,Gecos

Online amenomade

  • Hero Member
  • *****
  • Beiträge: 4582
Stimmt, Sonderzeichen sind in Unicode multibytes Chars. Deswegen matcht es mit zwei Punkte und nicht mit nur einem.
Alternativen kann man hier lesen:
https://www.regular-expressions.info/unicode.html
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten
Informativ Informativ x 1 Liste anzeigen

 

decade-submarginal