Samlung von Sprachkomandos. Was habt ihr bereits Realisiert?

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

Vorheriges Thema - Nächstes Thema

Markus

Viele von uns steuern FHEM bereits über die Sprache und viele wollen das auch noch Realisieren :-)
Ich hab mir gedacht warum sollen wir alle das Rad nochmals neu erfinden?
es wäre doch Toll wenn es eine Sammlung von Befehlen gäbe die man nur kopieren und anpassen bräuchte.
Ich Poste also hier mal meine .cfg und hoffe das es mir viele nachmachen und wir gemeinsam einen riesigen Wortschatz
für unser geliebtes FHEM zusammenbekommen ;-D



##################### Licht

define speech_Licht_Wohnzimmer_ein1 notify .*voiceRecognitionLastResult.*icht.*ohnzimmer.*(ein|an|1).* \
set Licht_Wohnzimmer on;; set @ ttsSay Ich habe das Licht im Wohnzimmer eingeschaltet

define speech_Licht_Wohnzimmer_ein2 notify .*voiceRecognitionLastResult.*ohnzimmer.*icht.*(ein|an|1).* \
set Licht_Wohnzimmer on;; set @ ttsSay Ich habe das Licht im Wohnzimmer eingeschaltet

define speech_Licht_Wohnzimmer_aus1 notify .*voiceRecognitionLastResult.*icht.*ohnzimmer.*aus.* \
set Licht_Wohnzimmer off;; set @ ttsSay Ich habe das Licht im Wohnzimmer ausgeschaltet

define speech_Licht_Wohnzimmer_aus2 notify .*voiceRecognitionLastResult.*ohnzimmer.*icht.*aus.* \
set Licht_Wohnzimmer off;; set @ ttsSay Ich habe das Licht im Wohnzimmer ausgeschaltet

#####################
define speech_Licht_Kuche_ein1 notify .*voiceRecognitionLastResult.*üche.*icht.*(ein|an|1).* \
set Licht_Kuche on;; set @ ttsSay Ich habe das Licht in der Küche eingeschaltet

define speech_Licht_Kuche_ein2 notify .*voiceRecognitionLastResult.*üche.*icht.*(ein|an|1).* \
set Licht_Kuche on;; set @ ttsSay Ich habe das Licht in der Küche eingeschaltet

define speech_Licht_Kuche_aus1 notify .*voiceRecognitionLastResult.*icht.*üche.*aus*.* \
set Licht_Kuche off;; set @ ttsSay Ich habe das Licht in der Küche ausgeschaltet

define speech_Licht_Kuche_aus2 notify .*voiceRecognitionLastResult.*icht.*üche.*aus*.* \
set Licht_Kuche off;; set @ ttsSay Ich habe das Licht in der Küche ausgeschaltet

#####################
define speech_Licht_Bad_ein1 notify .*voiceRecognitionLastResult.*(Bad|bad).*icht.*(ein|an|1).* \
set Licht_Bad on;; set @ ttsSay Ich habe das Licht im Bad eingeschaltet

define speech_Licht_Bad_ein2 notify .*voiceRecognitionLastResult.*icht.*(Bad|bad).*(ein|an|1).* \
set Licht_Bad on;; set @ ttsSay Ich habe das Licht im Bad eingeschaltet

define speech_Licht_Bad_aus1 notify .*voiceRecognitionLastResult.*(Bad|bad).*icht.*aus*.* \
set Licht_Bad off;; set @ ttsSay Ich habe das Licht im Bad ausgeschaltet

define speech_Licht_Bad_aus2 notify .*voiceRecognitionLastResult.*icht.*(Bad|bad).*aus*.* \
set Licht_Bad off;; set @ ttsSay Ich habe das Licht im Bad ausgeschaltet

#####################
define speech_Licht_Schlafzimmer_ein1 notify .*voiceRecognitionLastResult.*chlafzimmer.*icht.*(ein|an|1).* \
set Licht_Schlafzimmer on;; set @ ttsSay Ich habe das Licht im Schlafzimmer eingeschaltet

define speech_Licht_Schlafzimmer_ein2 notify .*voiceRecognitionLastResult.*icht.*chlafzimmer.*(ein|an|1).* \
set Licht_Schlafzimmer on;; set @ ttsSay Ich habe das Licht im Schlafzimmer eingeschaltet

define speech_Licht_Schlafzimmer_aus1 notify .*voiceRecognitionLastResult.*chlafzimmer.*icht.*aus.* \
set Licht_Schlafzimmer off;; set @ ttsSay Ich habe das Licht im Schlafzimmer ausgeschaltet

define speech_Licht_Schlafzimmer_aus2 notify .*voiceRecognitionLastResult.*icht.*chlafzimmer.*aus.* \
set Licht_Schlafzimmer off;; set @ ttsSay Ich habe das Licht im Schlafzimmer ausgeschaltet

################## Fernsehen

define speech_Fernsehen_Ein notify .*voiceRecognitionLastResult.*(möchte|will).*Fernsehen.* \
set Fernsehen on;; set @ ttsSay welchen Sender möchtest du Sehen?

define speech_Fernsehen_Aus notify .*voiceRecognitionLastResult.*(möchte|will).*nicht.*Fernsehen.* \
set Fernsehen off;; set @ ttsSay OK Dann Schalte ich ihn aus.

define speech_Pro7 notify .*voiceRecognitionLastResult.*Pro7.* \
set TV channel 1

define speech_RTL notify .*voiceRecognitionLastResult.*RTL.* \
set TV channel 2

define speech_RTL2 notify .*voiceRecognitionLastResult.*RTL2.* \
set TV channel 3

define speech_RTL_2 notify .*voiceRecognitionLastResult.*RTL 2.* \
set TV channel 3

define speech_SAT1 notify .*voiceRecognitionLastResult.*(Sat1|Sat|SAT1|SAT).*(eins|1|ein).* \
set TV channel 4

define speech_VOX notify .*voiceRecognitionLastResult.*VOX.* \
set TV channel 5

define speech_ORF1 notify .*voiceRecognitionLastResult.*(ORF|ORF1).*(eins|1|ein).* \
set TV channel 6

define speech_ORF2 notify .*voiceRecognitionLastResult.*(ORF|ORF2|orrf|Orf).*(zwei|2|Zwei).* \
set TV channel 7

define speech_ORF3 notify .*voiceRecognitionLastResult.*(ORF|ORF3|orrf|Orf).*(drei|3|Drei).* \
set TV channel 8

define speech_Kabel1 notify .*voiceRecognitionLastResult.*(Kabel|KABEL|kabel|Kabel1).*(eins|1|Eins).* \
set TV channel 9

define speech_Das_Vierte notify .*voiceRecognitionLastResult.*(Das|das|DAS).*(Vierte|Vierte|vierte).* \
set TV channel 10

define speech_Tele5 notify .*voiceRecognitionLastResult.*(Tele5|Tele).*(5|Fünf).* \
set TV channel 11

####################### Kochen #########################
define speech_Herd_ein notify .*voiceRecognitionLastResult.*chalt.*(Herd|Ofen|herd|ofen).*(ein|an|1).* \
set Dunstabzug,E_Herd on ;; set @ ttsSay Du hast die erlaubnis die Küche zu Benutzen

####################### Begrüsung ######################

define Markus_Kommt_Heim1 notify Tur_Eingang:open {if (Value("Begrussung") eq "Hallo" & Value("Markus") eq "present") \
{fhem "set androidTablet ttsSay Hallo Markus ;; set Begrussung erledigt"} \
}
define Markus_Kommt_Heim2 notify Markus:present {if (Value("Begrussung") eq "Hallo") \
{fhem "set androidTablet ttsSay Hallo Markus ;; set Begrussung erledigt"} \
}
######
define Markus_Kommt_vom_Urlaub1 notify Tur_Eingang:open {if (Value("Begrussung") eq "Urlaub" & Value("Markus") eq "present") \
{fhem "set androidTablet ttsSay Hallo Markus, wie war dein Urlaub? ;; set Begrussung erledigt"} \
}
define Markus_Kommt_vom_Urlaub2 notify Markus:present {if (Value("Begrussung") eq "Urlaub") \
{fhem "set androidTablet ttsSay Hallo Markus, wie war dein Urlaub? ;; set Begrussung erledigt"} \
}
######
define Markus_Kommt_Alarm_war1 notify Tur_Eingang:open {if (Value("Begrussung") eq "Alarm" & Value("Markus") eq "present") \
{fhem "set androidTablet ttsSay Hallo Markus, wärend deiner Abwesenheit wurde der Alarm Ausgelöst! ;; \
set Begrussung erledigt"} \
}
define Markus_Kommt_Alarm_war2 notify Markus:present {if (Value("Begrussung") eq "Alarm") \
{fhem "set androidTablet ttsSay Hallo Markus, wärend deiner Abwesenheit wurde der Alarm Ausgelöst! ;; \
set Begrussung erledigt"} \
}

####################### Hausturglocke

define Leuten dummy

define Klingel1 notify Klingel {\
if (Value("whg_HomeStat1") eq "on" & Value("Leuten") ne "nein") \
{fhem ("set androidTablet ttsSay Es hat Geleutet, Bitte die Haustüre Öffnen!;; \
set Leuten nein ;; delete Leuten_Entprellen ;; define Leuten_Entprelllen at +00:00:05 set Leuten ja");; \
}\
if (Value("whg_HomeStat1") eq "off" & Value("Leuten") ne "nein") \
{NMA_send("Hausture","Es hat an der Hausture Geleutet!",0,"Markus")} \
{fhem "set Leuten nein ;; delete Leuten_Entprellen ;; define Leuten_Entprelllen at +00:02:00 set Leuten ja"} }





################ Temperatur abfragen

define speechRecognizer_bad_Temp notify .*voiceRecognitionLastResult.*Temperatur.*(Bad|bad).* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("ThermostatBad","measured-temp","Fehler"))." Grad") }
define speechRecognizer_schlaf_Temp notify .*voiceRecognitionLastResult.*Temperatur.*chlafzimmer.* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("ThermostatSchlaf","measured-temp","Fehler"))." Grad") }
define speechRecognizer_kuche_Temp notify .*voiceRecognitionLastResult.*Temperatur.*üche.* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("Thermostat_Kuche","measured-temp","Fehler"))." Grad") }
define speechRecognizer_wohn_Temp notify .*voiceRecognitionLastResult.*Temperatur.*ohnzimmer.* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("Thermostat_Wohnzimmer","measured-temp","Fehler"))." Grad") }

#Lang Markus 30 10 2013

###################### Waschmaschine Fertig ###################

define Waschen dummy
attr Waschen devStateIcon pause:scene_washing_machine@green eins:scene_washing_machine@wheit zwei:scene_washing_machine@green benachrichtigt:scene_washing_machine@red drei:scene_washing_machine@green
attr Waschen fp_Grundriss 155,895,0,



define Waschmaschine_Fertig notify Waschmaschine {\
if (Value("Waschen") eq "eins" && Value("Bewohner") eq "present") \
{fhem "set androidTablet volume 10 ;;sleep 5;;\
set androidTablet ttsSay Die Waschmaschine ist jetzt Fertig ;; \
delete Waschten_Neustart ;; define Waschen_Neustart at +00:05:00 set Waschen eins ;;\
set Waschen pause ;; delete Waschen_Entprellen ;; define Waschen_Entprelllen at +00:02:00 set Waschen zwei" \
} \
if (Value("Waschen") eq "zwei" && Value("Bewohner") eq "present") \
{fhem "set androidTablet ttsSay Die Waschmaschine ist Fertig, Bitte die Wäsche zum Trocknen aufhängen;; \
delete Waschten_Neustart ;; define Waschen_Neustart at +00:05:00 set Waschen eins ;;\
set Waschen pause ;; delete Waschen_Entprellen ;; define Waschen_Entprelllen at +00:02:00 set Waschen drei" \
} \
if (Value("Waschen") eq "drei" && Value("Bewohner") eq "present") \
{fhem "set androidTablet volume 15 ;;\
set androidTablet ttsSay Ich hab gesagt die Waschmaschine ist Fertig! kannst du jetzt die Wäsche Aufhängen! ;; \
set androidTablet volume 10 ;;sleep 5;;\
delete Waschten_Neustart ;; define Waschen_Neustart at +00:05:00 set Waschen eins ;;\
set Waschen pause ;; delete Waschten_Entprellen ;; define Waschen_Entprelllen at +00:05:00 set Waschen eins" \
} \
if (Value("Waschen") eq "eins" && Value("Bewohner") ne "present") \
{NMA_send("Waschmaschine","Die Waschmaschine ist jetzt Fertig!",0,"Markus")} \
{fhem "delete Waschten_Neustart ;; define Waschen_Neustart at +01:00:00 set Waschen eins ;;\
set Waschen benachrichtigt;;set Begrussung Waschen_Fertig" \
} \
}

define Tablet_Laut at *08:05:00 set androidTablet volume 10
define Tablet_Leise at *21:00:00 set androidTablet volume 5



Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Invers

Mann, du hast ja schon alles konfiguriert, was irgendwie geht. :-)
Was bleibt da noch offen?

Welchen TV hast du denn? Mein dummer Samsung ES8090 kann solche Befehle nicht. Mein nächster TV kommt garantiert nicht mehr von Samsung. Alles, was die mal versprochen hatten, geht einfach nicht oder ging lange nicht.

Man könnte noch eine Fenster-offen-Warnung realisieren.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

Ich habe mal deine Temperaturansage probiert. Leider sagt die bei mir keinen Ton.

Folgenden Code habe ich benutzt:
.*voiceRecognitionLastResult.*Temperatur.*ohnzimmer.* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("FHT_4955","measured-temp","Fehler"))." Grad") }

Da kommt der Fehler:
2014.02.09 17:54:42 3: speechRecognizer_wohn_Temp return value: Undefined subroutine &main::str_replace called at (eval 314647) line 1.

Hast du ne Idee, woran das liegen kann?
Bei dir läuft es doch auch. Ich habe doch nur den Namen der Heizung ausgetauscht.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Steffen

Hallo!

Ist es auch Möglich, das Webview immer zu Hört und vielleicht auf Schlüssel-Wörter reagiert?

Hatte ja es schon mit Voicecommand auf Pi versucht, komme aber da mit meiner Hardware nicht weiter, deshalb würde mich das hier sehr Interssieren, hätte hier 2 Android Tabs die ich dafür nutzen könnte.

Fhem läuft jetzt schon seit ca.2 Jahren beim mir im Haushalt und bin sehr zu frieden, doch was dem "WAF" noch fehlt wäre eine Autarke Sprachsteuerung!

Mfg Steffen

Rince

#4
Kuzl ist an sowas grade dran:
http://forum.fhem.de/index.php/topic,17409.0.html

Mangels vernünftigem Internet kann ich es leider nicht testen :(


@invers
Doch, bestimmte Kanäle und das Ausschalten kann dein TV. Nur Einschalten und eine best. Lautstärke einstellen geht nicht.

@Markus
Sehr beeindruckend. Auch wenn ich einen universelleren Weg für einfacher fände. Aber das ist nur meine Meinung.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

Ich hab eine Panasonic TV leider kann ich ihn nur mit der Fernbedienung einschalten über fhem geht das nicht aber bei meinem altem Gerät ging das aber ganz gut.

Das mit einem Schlüsselwort wäre ja so richtig genial!

Ein universeller weg würde mir auch besser gefallen aber es ist ein Anfang ;-)

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Invers

Markus, kannst du mal weiter oben nach meinem Fehler gucken?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Markus

define speechRecognizer_bad_Temp notify .*voiceRecognitionLastResult.*Temperatur.*(Bad|bad).* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("ThermostatBad","measured-temp","Fehler"))." Grad") }


ThermostatBad   ist der Name meines hm Thermostat
measured-temp   ist der Name der im logfile vor der gemessenen Temperatur steht

Auszug aus dem log
2014-01-23_00:11:49 ThermostatBad T: 22.6 H: 74
2014-01-23_00:11:49 ThermostatBad measured-temp: 22.6
2014-01-23_00:11:49 ThermostatBad humidity: 74



Ich hoffe das hilft dir weiter

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

dieda

Klasse, die ProRetina (Blinden) Community ist immer auf der Suche nach Dingen, die das Leben erleichtern. Vom Radio, TV (da gibt es Sendungen mit Audiodiskription), Waschmaschine, Trockner, Rollläden.

Einziger Haken, es muss out-of-the-Box gehen und per iPhone mit Voice-over, wenn die Sprachsteuerung  mal nicht geht.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

Invers

Sieht bei mir genau so aus und geht aber trotzdem nicht. Ich bekomme halt nur eine Fehlermeldung und weiss nicht, warum.
Funktioniert es denn bei jemandem? Bitte mal melden, falls ja, oder falls nein.

Hier nochmal die Codes:

define speechRecognizer_wohn_Temp notify .*voiceRecognitionLastResult.*emperatur.*ohnzimmer.* {say ("Aktuelle Temperatur " . str_replace('\.',' komma ',ReadingsVal("FHT_4955","measured-temp","Fehler"))." Grad") }


Fehlermeldung:
2014.02.11 09:21:09 3: speechRecognizer_wohn_Temp return value: Undefined subroutine &main::str_replace called at (eval 1231112) line 1.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Rince

Logisch.
str_replace ist kein Perl Befehl. Deshalb mußt ihn ja auch extra definieren.

Schau mal da:
http://forum.fhem.de/index.php/topic,10628.msg104507.html#msg104507

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

danke Rince das hatte ich Total vergessen...
damit solltet ihr es hinkriegen schließlich hab ich es auch geschaft  ;D

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Invers

#12
OK, jetzt geht das scheinbar an der Stelle mit
sub str_replace($$$)
{
  my ($find,$replace,$string) = @_;
  $string =~ s/$find/$replace/g;
  return $string;
}


aber dafür bekomme ich nun einen anderen Fehler.

2014.02.11 15:17:48 3: speechRecognizer_wohn_Temp return value: Undefined subroutine &main::say called at (eval 27748) line 1.

Die Zahl hinter eval ist jeweils verschieden.

Zitatdanke Rince das hatte ich Total vergessen...
damit solltet ihr es hinkriegen schließlich hab ich es auch geschaft

Ja klar, aber damit dürfte der von dir angestrebte Sinn dieser Sammlung passé sein.
Ich hoffe, dass ich nun nicht in myUtils noch einen Fehler habe. Ich habe schon gesucht, wie ein Tier, aber ich finde nicht die Lösung.

@Rince
Danke für den Link.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Rince

Ich hatte dir ja ne PN geschickt mit nem Lösungsansatz :)
Vielleicht schaust ja mal rein.

Also:
Dein fhem kennt das say nicht.

Wenn ich nicht irre (kann aber sein!) ist das say der Vorschlag von Dirk gewesen bei der WebViewControl App die Sprachausgabe auf einem Tablet anzustoßen.

Da gibt es mehr Möglichkeiten.

Die Frage ist, wie nennt sich deine Sprachausgabe denn?
Oder anders:
Auf welchem Gerät soll die Sprachausgabe denn erfolgen?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Invers

Entschuldige bitte, aber ich habe die PN leider übersehen. Nun habe ich sie gelesen und beantwortet. PNs müssten sich im Forum optisch mehr aufdrängen. Wer rechnet schon damit.

Ich benutze Ivona, weil bei meinem Tab aus irgendwelchemGrund die Sprachgeschichte von Google nicht funktioniert.
Auf dem Handy geht aber google, die Sprachausgabe der Temperatur, also say, geht aber auch da nicht.

Benutzen möchte ich beide Geräte.

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2