FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Invers am 02 Dezember 2018, 14:36:07

Titel: Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Invers am 02 Dezember 2018, 14:36:07
Ich weiss nicht, ob das hierher gehört, hoffe aber, dass es richtig platziert ist:

Ich verwende AMAD zur Sprachsteuerung per DOIF. Funktioniert auch prima.
Nun möchte ich jedoch die Sprachsteuerung, also besagtes DOIF, für Durchsagen benutzen.
Ich spreche also ins Handy auf die CommBridge von AMAD und werte dann in der Sprachsteuerung aus:

DOELSEIF ([myAmadBridge:receiveVoiceCommand] =~ "ansage|mitteilung|durchsage") (set Kuechenradio speak [myAmadBridge:receiveVoiceCommand])

Das funktioniert ebenfalls zuverlässig.

Nun möchte ich jedoch die Triggerwörter "ansage","mitteilung" und "durchsage" vor der Ansage aus [myAmadBridge:receiveVoiceCommand] entfernen und dann den Rest abspielen.

Wäre eventuell jemand so nett, mir den Befehlsteil zu formulieren? Falls da so gar nicht funktioniert, wäre eine diesbezügliche Info erbeten.

Danke im Voraus.
Titel: Antw:Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Byte09 am 02 Dezember 2018, 15:16:56
Zitat von: Invers am 02 Dezember 2018, 14:36:07
Ich weiss nicht, ob das hierher gehört, hoffe aber, dass es richtig platziert ist:

Ich verwende AMAD zur Sprachsteuerung per DOIF. Funktioniert auch prima.
Nun möchte ich jedoch die Sprachsteuerung, also besagtes DOIF, für Durchsagen benutzen.
Ich spreche also ins Handy auf die CommBridge von AMAD und werte dann in der Sprachsteuerung aus:

DOELSEIF ([myAmadBridge:receiveVoiceCommand] =~ "ansage|mitteilung|durchsage") (set Kuechenradio speak [myAmadBridge:receiveVoiceCommand])

Das funktioniert ebenfalls zuverlässig.

Nun möchte ich jedoch die Triggerwörter "ansage","mitteilung" und "durchsage" vor der Ansage aus [myAmadBridge:receiveVoiceCommand] entfernen und dann den Rest abspielen.

Wäre eventuell jemand so nett, mir den Befehlsteil zu formulieren? Falls da so gar nicht funktioniert, wäre eine diesbezügliche Info erbeten.

Danke im Voraus.

Hi Invers, kenne mich mit DOIF zwar nicht aus, aber ggf. kannst du es ja über ein userreading lösen , und dieses dann ausgeben.

filteredCommand {my $string = ReadingsVal( $name, 'receiveVoiceCommand', '' );$string =~ s/ansage|mitteilung|durchsage//g; return $string; }

gruss Byte09
Titel: Antw:Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Ellert am 02 Dezember 2018, 18:53:08
"set_magic" sollte auch funktionieren

(set Kuechenradio speak {(my $string = ReadingsVal( $name, 'receiveVoiceCommand', '' );$string =~ s/ansage|mitteilung|durchsage//g; return $string;)})
Titel: Antw:Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Damian am 02 Dezember 2018, 19:44:00
Das kann man etwas einfacher mit DOIF-Filteroption definieren:


(set Kuechenradio speak [myAmadBridge:receiveVoiceCommand:"(ansage|mitteilung|durchsage)(.*$)":$2])
Titel: Antw:Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Invers am 02 Dezember 2018, 20:28:36
Ich danke euch allen für die schnelle und effektive Hilfe. Erstaunlich, wie viele Wege es gibt - und ich habe keinen einzigen gefunden.

Ich habe mich für die kürzeste Lösung von Damian entschieden, die auch auf Anhieb funktioniert hat. 

Falls du mir noch was Gutes tun möchtest, würde  ich mir eine kurze Erklärung zum Verständnis wünschen. In der Commandref finde ich da so nichts auf die Schnelle. Reicht auch, wenn du mir die Stelle sagst, wo ich mal gucken kann.
Ich will aber nicht nerven. Falls du keinen Bock hast, verstehe ich das auch. :-)

Also nochmals Dank an alle.
Titel: Antw:Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Damian am 02 Dezember 2018, 22:04:28
Die Filteroption ist mit Beispielen hier erklärt: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
Titel: Antw:Sprachsteuerung Text filtern (mir fällt kein besserer Betreff ein)
Beitrag von: Invers am 03 Dezember 2018, 01:02:33
Danke, hatte ich nicht gefunden, da ich nicht genau wusste, wonach ich suchen sollte.
Jetzt habe ich 99% verstanden. Gute Erklärung.
Danke und gute Nacht.