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.
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
"set_magic" sollte auch funktionieren
(set Kuechenradio speak {(my $string = ReadingsVal( $name, 'receiveVoiceCommand', '' );$string =~ s/ansage|mitteilung|durchsage//g; return $string;)})
Das kann man etwas einfacher mit DOIF-Filteroption definieren:
(set Kuechenradio speak [myAmadBridge:receiveVoiceCommand:"(ansage|mitteilung|durchsage)(.*$)":$2])
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.
Die Filteroption ist mit Beispielen hier erklärt: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
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.