Samlung von Sprachkomandos. Was habt ihr bereits Realisiert?

Begonnen von Markus, 09 Februar 2014, 11:58:15

Vorheriges Thema - Nächstes Thema

Agamemnon

Raspberry Pi / CULV3 und JeeLinkLaCrosse
MAX Thermostat
LaCrosse TX29DTH

dlinus

Hm....worum geht´s hier nun !?  Sprachkomandos, oder Sprachausgabe ?!
Hier poste mal beides, wie ich es realisiert habe.....

Sprachausgabe :
an einem Raspberry einen aktiven kleinen Lautsprecherwürfel via Klinke angeschlossen.
Auf meinem Ipad habe ich eine App welche Text zu Mp3 konvertiert, diese erstellen Mp3 auf dem Raspberry nach mpg321 /media kopieren, der Aufruf erfolgt so:
define Rollosprachausgabe at *{sunset(-2000,"15:00","23:00")} "mpg321 /media/Rolladen_ab.mp3"

In der Rolladen_ab.mp3 wird "gesagt":  die Rolläden fahren gleich herunter

Spracheingabe:
Auf meinem Handy die APP AIVC Pro (Alice) installiert.
Dort kann mann eigene HTTP Request´s hinterlegen
Nach dem Motto:
Licht an.......Licht aus.....Heizung im Wohnzimmer an....Heizung im Wohnzimmer aus.
Hat Charme- wenn man es übertreiben wollte, kann jedes Komando auch mit einer Sprachausgabe quittiert werden.
Nun habe ich noch ein altes Handy herumliegen. Damit werde ich am WE einmal testen, ob es klappt wie in der Beschreibung von Alice
beschrieben. Alice soll auch im Hintergrund zuhören und Befehle ausführen, dass wär´s natürlich. Dann müßte man nicht mal mehr einen Knopf drücken



Markus

Ja so hab ich es auch aber leider versteht mich das Handy nicht mehr wenn ich weiter weg bin und da ich eigentlich alles über fhem Programmieren möchte warte ich mit dem kauf einer vernünftigen Freisprecheinrichtung noch bis Dirk wvc soweit ändert das die app auch immer zuhört
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

hotwebnet

Hallo Markus, hört das Handy oder Tablet jetzt immer zu ??? das mit der Akkuanzeige zum starten der Voice Kontrolle ist nicht gut gelöst, oder hast du eine andere Lösung gefunden......

Michi240281

Hi,

habt Ihr auch folgende Auffälligkeit:

Das letzte Kommando, welches vom speechrecognizer empfangen wurde, wird ständig wiederholt ausgeführt! Es steht zwar noch bei den "voiceRecognitionLastResult", aber das notify darf doch nicht am laufenden Band auf den alten trigger reagieren?

So sehen meine notifies bislang aus:

define speechRecognizer_Vase_aus notify .*voiceRecognitionLastResult.*Vase|Warte|Waage|Base|sage|geradeaus.*(aus).* set Vase aus
define speechRecognizer_Vase_an notify .*voiceRecognitionLastResult.*Vase|Base|base|salam|Vasse.*(ein|an|am).* set Vase an
define speechRecognizer_Alarmanlage_scharf notify .*voiceRecognitionLastResult.*Alarmanlage.*scharf|an.* set Anlage_Scharf ein
define speechRecognizer_Alarmanlage_scharf2 notify .*voiceRecognitionLastResult.*Alarmanlage.*scharf.* set Anlage_Scharf ein
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

pnewman

#50
Hallo zusammen,
hier mal was ich so zusammen habe:

In 99_myUtils.pm:
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;



# Enter you functions below _this_ line.

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub str_replace($$$)
{
  my ($find,$replace,$string) = @_;
  $string =~ s/$find/$replace/g;
  return $string;
}
sub
SprechKommaUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub say($)
{
  my ($msg) = @_;
  fhem "set androidTablet ttsSay $msg";

}


1;

Dies damit die Temperaturangaben auch angesagt werden und zwar mit Komma, also 21 Komma 4!!

Sprachkommandos:
#
#            WebviewControl fuer Android
#
define androidTablet webViewControl XXXXX
attr androidTablet group AndroidTablet
attr androidTablet icon it_smartphone
attr androidTablet room Haus
#
#            Hilfefunktion für Spracheingabe (WebViewControl)
#
define speechRecognizer_HILFEFHEM notify .*voiceRecognitionLastResult.*Hilfe.* set @ ttsSay Folgende Sprachbefehle führe Ich aus: Temperatur Wohnzimmer, Wohnzimmer 17, Wohnzimmer 21, Wohnzimmer 22, Wohnzimmer buhst, Wohnzimmer Stehlampe an, ein, aus.
attr speechRecognizer_HILFEFHEM group WebviewControl
attr speechRecognizer_HILFEFHEM room Haus
define speechRecognizer_Hallo notify .*voiceRecognitionLastResult.*Hallo.* set @ ttsSay Hallo, schön das Du da bist, was kann Ich für Dich tun.
attr speechRecognizer_Hallo group WebviewControl
attr speechRecognizer_Hallo room Haus
define speechRecognizer_Wohnzimmer_Temp notify .*voiceRecognitionLastResult.*Temperatur.*Wohnzimmer {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("T_Wohn","temperature","Fehler"))." Grad") }
attr speechRecognizer_Wohnzimmer_Temp group WebviewControl
attr speechRecognizer_Wohnzimmer_Temp room Haus
define speechRecognizer_Wohn_17 notify .*voiceRecognitionLastResult.*Wohnzimmer.*17 set T_Wohn desiredTemperature 17.0 ;; set @ ttsSay Die Heizung im Wohnzimmer stelle Ich auf 17 Grad
attr speechRecognizer_Wohn_17 group WebviewControl
attr speechRecognizer_Wohn_17 room Haus
define speechRecognizer_Wohn_21 notify .*voiceRecognitionLastResult.*Wohnzimmer.*21 set T_Wohn desiredTemperature 21.0 ;; set @ ttsSay Die Heizung im Wohnzimmer stelle Ich auf 21 Grad
attr speechRecognizer_Wohn_21 group WebviewControl
attr speechRecognizer_Wohn_21 room Haus
define speechRecognizer_Wohn_22 notify .*voiceRecognitionLastResult.*Wohnzimmer.*22 set T_Wohn desiredTemperature 22.0 ;; set @ ttsSay Die Heizung im Wohnzimmer stelle Ich auf 22 Grad
attr speechRecognizer_Wohn_22 group WebviewControl
attr speechRecognizer_Wohn_22 room Haus
define speechRecognizer_Wohn_boost notify .*voiceRecognitionLastResult.*Wohnzimmer.*boost set T_Wohn desiredTemperature boost ;; set @ ttsSay Die Heizung im Wohnzimmer stelle Ich für 10 Minuten auf Buust
attr speechRecognizer_Wohn_boost group WebviewControl
attr speechRecognizer_Wohn_boost room Haus
define speechRecognizer_Wohn_Stehlampe_ein notify .*voiceRecognitionLastResult.*Wohnzimmer.*Stehlampe.*(ein|an).* set  SD_WZ_Angel on ;; set @ ttsSay Die Stehlampe im Wohnzimmer ist an
attr speechRecognizer_Wohn_Stehlampe_ein group WebviewControl
attr speechRecognizer_Wohn_Stehlampe_ein room Haus
define speechRecognizer_Wohn_Stehlampe_aus notify .*voiceRecognitionLastResult.*Wohnzimmer.*Stehlampe.*aus.* set SD_WZ_Angel off ;; set @ ttsSay Die Stehlampe im Wohnzimmer ist aus
attr speechRecognizer_Wohn_Stehlampe_aus group WebviewControl
attr speechRecognizer_Wohn_Stehlampe_aus room Haus
define speechRecognizer_Wohn_Rollo_Re_oeffnen notify .*voiceRecognitionLastResult.*Wohnzimmer.*(Rollo|rollo).* rechts.*(öffnen|hoch|auf).* set  R_WZ_RE Auf ;; set @ ttsSay Das Rollo im Wohnzimmer rechts fährt hoch
attr speechRecognizer_Wohn_Rollo_Re_oeffnen group WebviewControl
attr speechRecognizer_Wohn_Rollo_Re_oeffnen room Haus
define speechRecognizer_Wohn_Rollo_Re_schliessen notify .*voiceRecognitionLastResult.*Wohnzimmer.*(Rollo|rollo).*rechts.*(schließen|runter|zu).* set  R_WZ_RE Zu ;; set @ ttsSay Das Rollo im Wohnzimmer rechts fährt runter
attr speechRecognizer_Wohn_Rollo_Re_oeffnen group WebviewControl
attr speechRecognizer_Wohn_Rollo_Re_oeffnen room Haus
define speechRecognizer_Wohn_Rollo_LI_oeffnen notify .*voiceRecognitionLastResult.*Wohnzimmer.*(Rollo|rollo).*links.*(öffnen|hoch|auf).* set  R_WZ_LI Auf ;; set @ ttsSay Das Rollo im Wohnzimmer links fährt hoch
attr speechRecognizer_Wohn_Rollo_LI_oeffnen group WebviewControl
attr speechRecognizer_Wohn_Rollo_LI_oeffnen room Haus
define speechRecognizer_Wohn_Rollo_LI_schliessen notify .*voiceRecognitionLastResult.*Wohnzimmer.*(Rollo|rollo).*links.*(schließen|runter|zu).* set  R_WZ_LI Zu ;; set @ ttsSay Das Rollo im Wohnzimmer links fährt runter
attr speechRecognizer_Wohn_Rollo_LI_oeffnen group WebviewControl
attr speechRecognizer_Wohn_Rollo_LI_oeffnen room Haus
define speechRecognizer_Amelie_Rollo_schliessen notify .*voiceRecognitionLastResult.*Amelie.*(Rollo|rollo).*(schließen|runter|zu).* set  R_Amelie Zu ;; set @ ttsSay Das Rollo bei Amelie fährt runter
attr speechRecognizer_Amelie_Rollo_schliessen group WebviewControl
attr speechRecognizer_Amelie_Rollo_schliessen room Haus
define speechRecognizer_Amelie_Rollo_oeffnen notify .*voiceRecognitionLastResult.*Amelie.*(Rollo|rollo).*(öffnen|hoch|auf).* set  R_Amelie Auf ;; set @ ttsSay Das Rollo bei Amelie fährt hoch
attr speechRecognizer_Amelie_Rollo_oeffnen group WebviewControl
attr speechRecognizer_Amelie_Rollo_oeffnen room Haus
define speechRecognizer_Amelie_Temp notify .*voiceRecognitionLastResult.*temperatur.*amelie {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("HZ_Amelie","temperature","Fehler"))." Grad") }
attr speechRecognizer_Amelie_Temp group WebviewControl
attr speechRecognizer_Amelie_Temp room Haus
define speechRecognizer_Badezimmer_Rollo_schliessen notify .*voiceRecognitionLastResult.*Badezimmer.*(Rollo|rollo).*(schließen|runter|zu).* set  R_BAD Zu ;; set @ ttsSay Das Rollo im Badezimmer fährt runter
attr speechRecognizer_Badezimmer_Rollo_schliessen group WebviewControl
attr speechRecognizer_Badezimmer_Rollo_schliessen room Haus
define speechRecognizer_Badezimmer_Rollo_oeffnen notify .*voiceRecognitionLastResult.*Badezimmer.*(Rollo|rollo).*(öffnen|hoch|auf).* set  R_BAD Auf ;; set @ ttsSay Das Rollo im Spielzimmer fährt hoch
attr speechRecognizer_Badezimmer_Rollo_oeffnen group WebviewControl
attr speechRecognizer_Badezimmer_Rollo_oeffnen room Haus
define speechRecognizer_Badezimmer_Temp notify .*voiceRecognitionLastResult.*temperatur.*Badezimmer {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("HZ_BAD","temperature","Fehler"))." Grad") }
attr speechRecognizer_Badezimmer_Temp group WebviewControl
attr speechRecognizer_Badezimmer_Temp room Haus
define speechRecognizer_GWC_Rollo_schliessen notify .*voiceRecognitionLastResult.*Gäste.*(Gäste|WC).*(Rollo|rollo).*(schließen|runter|zu).* set  R_GWC Zu ;; set @ ttsSay Das Rollo im Gäste WC fährt runter
attr speechRecognizer_GWC_Rollo_schliessen group WebviewControl
attr speechRecognizer_GWC_Rollo_schliessen room Haus
define speechRecognizer_GWC_Rollo_oeffnen notify .*voiceRecognitionLastResult.*Gäste.*(Gäste|WC).*(Rollo|rollo).*(öffnen|hoch).* set  R_GWC Auf ;; set @ ttsSay Das Rollo im Gäste WC fährt hoch
attr speechRecognizer_GWC_Rollo_oeffnen group WebviewControl
attr speechRecognizer_GWC_Rollo_oeffnen room Haus
define speechRecognizer_GWC_Rollo_65 notify .*voiceRecognitionLastResult.*Gäste.*(Gäste|WC).*(Rollo|rollo).*(beschatten|Schatten|schatten|65).* set  R_GWC 65 ;; set @ ttsSay Das Rollo im Gäste WC beschattet
attr speechRecognizer_GWC_Rollo_65 group WebviewControl
attr speechRecognizer_GWC_Rollo_65 room Haus
define speechRecognizer_GWC_Temp notify .*voiceRecognitionLastResult.*temperatur.*Gäste.*(Gäste|WC) {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("HZ_GWC","temperature","Fehler"))." Grad") }
attr speechRecognizer_GWC_Temp group WebviewControl
attr speechRecognizer_GWC_Temp room Haus
define speechRecognizer_Schlafzimmer_Temp notify .*voiceRecognitionLastResult.*Temperatur.*Schlafzimmer {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("HZ_Schlaf","temperature","Fehler"))." Grad") }
attr speechRecognizer_Schlafzimmer_Temp group WebviewControl
attr speechRecognizer_Schlafzimmer_Temp room Haus
define speechRecognizer_Spielzimmer_Rollo_schliessen notify .*voiceRecognitionLastResult.*Spielzimmer.*(Rollo|rollo).*(schließen|runter|zu).* set  R_Spielzimmer Zu ;; set @ ttsSay Das Rollo im Spielzimmer fährt runter
attr speechRecognizer_Spielzimmer_Rollo_schliessen group WebviewControl
attr speechRecognizer_Spielzimmer_Rollo_schliessen room Haus
define speechRecognizer_Spielzimmer_Rollo_oeffnen notify .*voiceRecognitionLastResult.*Spielzimmer.*(Rollo|rollo).*(öffnen|hoch|auf).* set  R_Spielzimmer Auf ;; set @ ttsSay Das Rollo im Spielzimmer fährt hoch
attr speechRecognizer_Spielzimmer_Rollo_oeffnen group WebviewControl
attr speechRecognizer_Spielzimmer_Rollo_oeffnen room Haus
define speechRecognizer_Spielzimmer_Temp notify .*voiceRecognitionLastResult.*temperatur.*spielzimmer {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("HZ_Spielzimmer","temperature","Fehler"))." Grad") }
attr speechRecognizer_Spielzimmer_Temp group WebviewControl
attr speechRecognizer_Spielzimmer_Temp room Haus
define speechRecognizer_Zoe_Rollo_schliessen notify .*voiceRecognitionLastResult.*Zoe.*(Rollo|rollo).*(schließen|runter|zu).* set  R_Zoe Zu ;; set @ ttsSay Das Rollo bei Zoe fährt runter
attr speechRecognizer_Zoe_Rollo_schliessen group WebviewControl
attr speechRecognizer_Zoe_Rollo_schliessen room Haus
define speechRecognizer_Zoe_Rollo_oeffnen notify .*voiceRecognitionLastResult.*Zoe.*(Rollo|rollo).*(öffnen|hoch|auf).* set  R_Zoe Auf ;; set @ ttsSay Das Rollo bei Zoe fährt hoch
attr speechRecognizer_Zoe_Rollo_oeffnen group WebviewControl
attr speechRecognizer_Zoe_Rollo_oeffnen room Haus
define speechRecognizer_Zoe_Temp notify .*voiceRecognitionLastResult.*temperatur.*zoe {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("HZ_Zoe","temperature","Fehler"))." Grad") }
attr speechRecognizer_Zoe_Temp group WebviewControl
attr speechRecognizer_Zoe_Temp room Haus
define speechRecognizer_Kueche_Rollo_Re_schliessen notify .*voiceRecognitionLastResult.*Küche.*(Rollo|rollo).*rechts.*(schließen|runter|zu).* set  R_KUECHE_RE Zu ;; set @ ttsSay Das Rollo in der Kueche rechts fährt runter
attr speechRecognizer_Kueche_Rollo_Re_schliessen group WebviewControl
attr speechRecognizer_Kueche_Rollo_Re_schliessen room Haus
define speechRecognizer_Kueche_Rollo_Re_oeffnen notify .*voiceRecognitionLastResult.*Küche.*(Rollo|rollo).*rechts.*(öffnen|hoch|auf).* set  R_KUECHE_RE Auf ;; set @ ttsSay Das Rollo in der Kueche rechts fährt hoch
attr speechRecognizer_Kueche_Rollo_Re_oeffnen group WebviewControl
attr speechRecognizer_Kueche_Rollo_Re_oeffnen room Haus
define speechRecognizer_Kueche_Rollo_Re_65 notify .*voiceRecognitionLastResult.*Küche.*(Rollo|rollo).*rechts.*(beschatten|Schatten|schatten|65).* set  R_KUECHE_RE 65 ;; set @ ttsSay Das Rollo in der Kueche rechts beschattet
attr speechRecognizer_Kueche_Rollo_Re_65 group WebviewControl
attr speechRecognizer_Kueche_Rollo_Re_65 room Haus
define speechRecognizer_Kueche_Rollo_LI_schliessen notify .*voiceRecognitionLastResult.*Küche.*(Rollo|rollo).*links.*(schließen|runter|zu).* set  R_KUECHE_LI Zu ;; set @ ttsSay Das Rollo in der Kueche links fährt runter
attr speechRecognizer_Kueche_Rollo_LI_schliessen group WebviewControl
attr speechRecognizer_Kueche_Rollo_LI_schliessen room Haus
define speechRecognizer_Kueche_Rollo_LI_oeffnen notify .*voiceRecognitionLastResult.*Küche.*(Rollo|rollo).*links.*(öffnen|hoch|auf).* set  R_KUECHE_LI Auf ;; set @ ttsSay Das Rollo in der Kueche links fährt hoch
attr speechRecognizer_Kueche_Rollo_LI_oeffnen group WebviewControl
attr speechRecognizer_Kueche_Rollo_LI_oeffnen room Haus
define speechRecognizer_Kueche_Rollo_LI_65 notify .*voiceRecognitionLastResult.*Küche.*(Rollo|rollo).*links.*(beschatten|Schatten|schatten|65).* set  R_KUECHE_LI 65 ;; set @ ttsSay Das Rollo in der Kueche links beschattet
attr speechRecognizer_Kueche_Rollo_LI_65 group WebviewControl
attr speechRecognizer_Kueche_Rollo_LI_65 room Haus


Ja, die ersten Sachen waren Spielerei ;), aber jeder fängt ja mal an.
Und ich kann den kleinen Jungen in mir nicht immer einsperren. :)

Viel Spass damit und danke an die Mitglieder im Forum die dies alles ermöglicht haben!

Gruß
Ralf
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

C1500

Servus pnewmen,
hab gerade viel bei dir abgeschaut und eine neue Idee.
Ich würde mir gerne die Uhrzeit ansagen lassen.

Aber irgendwie finde ich keine Variabel mit der das klappt.

Ich habe es jetzt so probiert:
define speechRecognizer_Fun_Zeit notify .*voiceRecognitionLastResult.*(wie|wieviel).*(spät|Spät|Uhr) {say ("Es ist jetzt " . str_replace('\:',' Uhr ',ReadingsVal("$now")).) }


Das führt aber zu folgende Fehlermeldung:
ZitatGlobal symbol "$now" requires explicit package name at (eval 95) line 1.
Not enough arguments for main::ReadingsVal at (eval 95) line 1, near ""$now")"
syntax error at (eval 95) line 1, near ".) "
Bin in Perl recht unbedarft. Ist $now nicht global verwendbar?

Hast du ne Idee wie das klappen könnte?

Gruß Peer

Puschel74

Wenn man sich den Syntax von ReadingsVal ansiehst erkennt man das damit ein Reading eines Devices abgefragt werden kann.
Beispiel:
ReadingsVal("OG_Zimmer_Heizung","window",undef);
Hier wird aus dem Devcie OG_Zimmer_Heizung das Reading window abgefragt oder undef zurückgegeben sollte das Reading nicht existieren.

$now so abzufragen macht logischerweise keinen Sinn.

Ich meine im Forum aber schon gesehen zu haben das jemand deine Anforderung, vorlesen der Uhrzeit, umgesetzt hat.
Da aber die Beitragstitel nicht gerade berauschend gewählt werden artet die Suche danach zur Sysiphusarbeit aus.

Edith: Ich meine das es unter Codeschnipsel oder Automatisierung zu finden sein dürfte.
In der Suche kann man dann auf diese 2 Unterforen einschränken.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.