Texteingang: | Modul Telegram oder GoogleHome per IFTT/MQTT |
Befehle: | FHEM Kommando Perl |
Textausgabe: | Textnachricht Telegram Fehlerbericht TTS Antwort / Fehleransage Unbekanntes Kommando TEERKO/Babble |
Zitatmach die Garage auf und in 5 Minuten wieder zu
die sonne blendet in der Küche
ich gehe um halb 7 duschen (dann soll das bad warm sein)
gib mir bescheid wenn mein Kind nach hause kommt
ZitatBeschatte das Wohnzimmer, Esszimmer und die KücheAnstatt wie vorher eigenständige Kommandos zu formulieren.
Schalte den Fernseher und die Soundbar an
Zitatupdate 39_Talk2Fhem
shutdown restart
define talk Talk2Fhem
attr talk disable 1
Zitat von: Esjay am 13 Dezember 2017, 10:49:04hört sich nach einer Art Lob an. ;D Von daher kann ich das sehr gut...
Ps: Du bist Schuld daran, dass ich mir trotz 5 Alexa Büchsen gestern ein Google Home Mini gekauft habe. Ich hoffe du kannst damit leben ;)
Zitat von: Phill am 13 Dezember 2017, 14:47:36
Ich habe mit Alexa noch gar nichts gemacht. Kann man den gesprochenen Text von Alexa abgreifen wie bei Google?
Zitat von: Phill am 13 Dezember 2017, 14:47:36
@pah das kann ich aber nicht selbst verschieben oder ???
Global symbol "$EVT" requires explicit package name at (eval 18356) line 3.
Global symbol "$EVT" requires explicit package name at (eval 18356) line 4.
Zitat von: Phill am 14 Dezember 2017, 00:58:19
Ich habe mal ein paar Beispiele und die Konfiguration ergänzt... Läuft eigentlich schon erstaunlich rund... 8)
ZitatKonfiguration:
Momentan muss das Script leider noch direkt in der Moduldatei konfiguriert werden. Wird auf jeden Fall ausgelagert die Frage ist nur wo die Reise eigentlich hingeht. Vorschläge dazu werden gerne angenommen.
ZitatStumpf gesagt, wo ist denn überhaupt die Verbindung zwischen Google Home und Fhem. Oder auch wo kommt der Text der den Dummy befüllt überhaupt her? Verstehst du was ich sagen will?Absolut. Wichtiger Hinweis. Das muss alles diskutiert werden.
ZitatZu dem Punkt wäre wichtig zu wissen, ob du auch schon Vorstellung hast. Redet man hier evtl. über eine Art Device (siehe Alexa/Siri Device) in dem man alles konfiguriert. Über Attribute in denen man den jeweiligen Regex angeben kann, oder ebenfalls eine Config vornehmen kann? Zum Beispiel GoogleName GoogleRaum GoogleRegexDevice.das sollte diskutiert werden. Ich bin hier noch relativ offen. Ich wollte kein komplett neues Süppchen kochen sondern eher an was bestehen orientieren, da würde ich vorschlagen begrüßen. Muss halt Sinn machen.
2017.12.14 11:39:56 1: Licht im Wohnzimmer an
2017.12.14 11:39:56 1: ERROR evaluating my $NAME='d_assistent';my $EVENT='Licht im Wohnzimmer an';my $EVTPART3='an';my $EVTPART0='Licht';my $TYPE='dummy';my $EVTPART2='Wohnzimmer';my $SELF='n_assistent';my $EVTPART1='im';{
Log 1, $EVENT;
my %r = assi($EVENT);
if ($r{answer}) { # Wenn eine Antwort enthalten gib die aus z.b. telegram oder google home mini oder amazon dot
foreach (@{$r{answer}}) {
fhem("set telbot _msg \@user $_");
fhem("set googlehome speak '$_'");
}
}
if ($r{err}) { # Wenn das Kommando nicht verstanden wurde sende den Fehler an einen Telegramuser und sage etwas am google home mini
my $err = encode("utf8", join("\n", @{$r{err}}));
fhem("set telbot _msg \@user $err");
fhem("set googlehome speak 'Das hat leider nicht geklappt!'");
} else { # falls kein Fehler vorliegt führe die Kommandos aus.
foreach(@{$r{cmds}}) {
#fhem($_);
}
}
}
: Undefined subroutine &main::assi called at (eval 46226) line 4.
2017.12.14 23:11:56 1: schalte licht im Wohnzimmer an
2017.12.14 23:11:56 1: Text wird interpretiert: schalte licht im Wohnzimmer an
2017.12.14 23:11:56 1: Kommando: schalte licht im wohnzimmer an
2017.12.14 23:11:56 1: Restkommando: 'schalte licht im wohnzimmer an'
2017.12.14 23:11:56 1: Hit: 'schalte licht im wohnzimmer an' =~ qr/^licht (im|in der) (\S*) (\S*)$/
2017.12.14 23:11:56 1: Erweitertes Hashkommando verarbeiten. 2 ["","","Wohnzimmer","rollo_sz","","","","","","","","","","rollo_gar"]
2017.12.14 23:11:56 1: Direction: wohnzimmer
2017.12.14 23:11:56 1: ARRAY auswertung: ARRAY(0x44f1e10) wohnzimmer
2017.12.14 23:11:56 1: Befehl: set Licht_Wohnzimmer on
2017.12.14 23:11:56 1: 'cmds'
[
' set Licht_Wohnzimmer on'
]
Zitat#fhem($_);Musst die Auskommentierung entfernen. "#"
ZitatNix geCloud. Alles selbst gemacht...Das heißt, wenn ich mir jetzt ein google Home Mini hole, funkioniert es auch wenn ich offline bin? :)
ZitatLeider nein. Die Spracherkennung läuft immer noch über die CloudHm... schade. Dann muss ich mir das nochmal überlegen oder schauen ob ich das mit AutoVoice zum laufen bekomme. Das Script klingt nämlich äußerst cool. :)
reload 39_fhemtalk.pm
sollte es auf jedenfall funktionieren. Muss man auch bei einem Neustart beachten.Zitat von: Kuzl am 15 Dezember 2017, 11:28:39Ja das sehe ich auch so. Müsste wahrscheinlich nur einmal definiert werden. Oder sieht einer einen Grund für verschiedene Definitionen?
Das ist ja sehr cool und flexibel :)
Ich denke der erste Schritt könnte sein, dass das ganze ein Device wird, das gesetzt werden kann ( so wie jetzt der Dummy, der benötigt wird).
Zitat von: Kuzl am 15 Dezember 2017, 11:28:39Meinst du dabei eine kommaseparierte Liste in ein Attribut?
über Ein Array von Attributen
Zitat von: Kuzl am 15 Dezember 2017, 11:28:39Ganz verstehe ich das nicht, weil die Antwort ist ja schon das was passieren soll. Also eine FHEM Kommando, das natürlich auch intern ausgeführt werden kann.
Ein (weiteres) Attribut könnte dann sein, was mit der Antwort passieren soll.
, '(\S*) heizung auf (\S*) grad' => 'set $1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""]_Clima desired_temp $2'
# 0 1 2 3 4 5 6
my @rooms = ("haus|..?berall","wohnung","wohnzimmer","bad(ezimmer)?","schlafzimmer","garten","terrasse");
#folgende suchen werden durch ein Leerzeichen ersetzt
my @erase = ('(^|\s)bitte(\s|$)', '(^|\s)auch(\s|$)', '(^|\s)schalte(\s|$)', '(^|\s)mache(\s|$)', '(^|\s)mach(\s|$)', '(^|\s)f.?rben(\s|$)', '(^|\s)du(\s|$)', '(^|\s)das(\s|$)', 'machen$', 'schalten$', 'fahren$');
my %phrase = (
'gute nacht' => 'set HomeStatus Schlafen'
, 'guten morgen' => 'set HomeStatus Zuhause'
, 'alle roll(os?|..?den) (\S*)' => 'set Rollladen_Wohnzimmer,Rollladen_Badezimmer $2{true=>"on", false=>"off"}'
, 'roll(os?|..?den) (im|in der|auf der)? ?(\S*) (\S*)' => 'set Rollladen_$3[@roll] $4{true=>"on", false=>"off"}'
, '(\S*) roll(os?|..?den) (\S*)' => 'set Rollladen_$1["","","Wohnzimmer","Badezimmer","","",""] $3{true=>"on", false=>"off"}'
, '(\S*) (sonos|musik|player) (\S*)' => 'set Sonos_$1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""] $3{true=>"PLAY", false=>"PAUSE"}'
, '(\S*) sonos leiser' => 'set Sonos_$1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""] VolumeD'
, '(\S*) sonos lauter' => 'set Sonos_$1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""] VolumeU'
, 'wohnzimmer leiser' => 'set Hub_Wohnzimmer command 40635676 VolumeDown ; set Hub_Wohnzimmer command 40635676 VolumeDown ; set Hub_Wohnzimmer command 40635676 VolumeDown ; set Hub_Wohnzimmer command 40635676 VolumeDown ; set Hub_Wohnzimmer command 40635676 VolumeDown ; set Hub_Wohnzimmer command 40635676 VolumeDown'
, 'wohnzimmer lauter' => 'set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp'
, 'schlafzimmer leiser' => 'set Hub_Schlafzimmer command 46652327 VolumeDown ; set Hub_Schlafzimmer command 46652327 VolumeDown ; set Hub_Schlafzimmer command 46652327 VolumeDown'
, 'schlafzimmer lauter' => 'set Hub_Schlafzimmer command 46652327 VolumeUp ; set Hub_Schlafzimmer command 46652327 VolumeUp ; set Hub_Schlafzimmer command 46652327 VolumeUp'
, '(\S*) auf fernsehen' => 'set Hub_$1["","","Wohnzimmer","","Schlafzimmer","",""] activity Fernsehen'
, '(\S*) auf firetv' => 'set Hub_$1["","","Wohnzimmer","","Schlafzimmer","",""] activity Fire.TV'
, '(\S*) auf laptop' => 'set Hub_$1["","","Wohnzimmer","","Schlafzimmer","",""] activity Laptop'
, '(\S*) auf playstation' => 'set Hub_$1["","","Wohnzimmer","","Schlafzimmer","",""] activity PS3'
, '(\S*) auf wii' => 'set Hub_$1["","","Wohnzimmer","","Schlafzimmer","",""] activity WII'
, '(\S*) auf (ard|erste)' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number1 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf (zdf|zweite)' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number2 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf rtl' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number3 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf sat 1' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number4 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf prosieben' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number5 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf kabel 1' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number6 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf rtl ii' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number7 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf vox' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number8 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, '(\S*) auf sixx' => 'set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Number9 ; set Fernseher_$1["","","Wohnzimmer","","Schlafzimmer","",""] command Select'
, 'gartenbeleuchtung (\S*)' => 'set Licht_Garten $1{true=>"on", false=>"off"} ; sleep 1 ; set Licht_Terrasse $1{true=>"on", false=>"off"} ; sleep 1 ; set Funksteckdose_Pergula $1{true=>"on", false=>"off"}'
, 'licht (im|in der|auf der) (\S*) (\S*)' => 'set Licht_$2["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] $3{true=>"on", false=>"off"}'
, '(\S*) licht (\S*)' => 'set Licht_$1["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] $2{true=>"on", false=>"off"}'
, '(\S*) licht blau' => 'set Licht_$1["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] hue 240'
, '(\S*) licht gelb' => 'set Licht_$1["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] hue 40'
, '(\S*) licht rot' => 'set Licht_$1["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] hue 360'
, '(\S*) licht magenta' => 'set Licht_$1["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] hue 320'
, '(\S*) licht gr.?n' => 'set Licht_$1["","","Wohnzimmer","","Schlafzimmer","Garten","Terrasse"] hue 120'
, '(\S*) heizung auf (\S*) grad' => 'set $1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""]_Clima desired_temp $2'
);
, '(\S*) heizung auf (\S*) grad' => 'set $1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""]_Clima desired_temp $2{integer=>"$2"}'
Zitat von: Phill am 12 Dezember 2017, 12:24:09
Konfiguration:
Momentan muss das Script leider noch direkt in der Moduldatei konfiguriert werden. Wird auf jeden Fall ausgelagert die Frage ist nur wo die Reise eigentlich hingeht. Vorschläge dazu werden gerne angenommen.
'licht (im|in der) (@rooms) (\S*)' => 'set li_$2["soheistderlichtschalterinfhem",raumb","raumxyz"] $3{true=>"on",false=>"off"}'
Zitat von: Phill am 17 Dezember 2017, 20:23:28Angenommen jedes Device hat ein attribut fhemtalkconf (oder wie auch immer)
Eigentlich gehe ich eher davon aus das alles über ein device konfiguriert wird.
Ich überlege gerade krampfhaft was besser ist. Aber jetzt mal nur die Situation wie kommt der Satz zu dem device.
hab ich eins mach ich das über ein set fhemtalk "hier der satz"
habe ich mehrere wäre das ziemlich aufwendig, und ich müsste dem device sagen auf welches Ereignis er triggern soll, dann würde aber in allen devices das gleiche "notify" konfiguriert werden müssen und wenn der text aus unterschiedlichen Quellen kommt würde es das auch erschweren.
Oder?
##############################################################################
#
# Spracherkennung
#
# Normalisierung
# 1.Wort wird für die Semantik ignoriert, wenn "james" => Ausgabe anders
#
# Prof. Dr. Peter A. Henning 2014
#
##############################################################################
sub voiceNormalize($){
my ($command) = @_;
$command = lc $command;
#-- semantics
my @vr_states = ("status","wert","wetter","zeit");
my @vr_writes = ("sagen","senden","hinzufügen","entfernen","ändern","löschen");
my @vr_times = ("heute","morgen","übermorgen","nacht");
my @vr_places = ("erdgeschoss","garderobe","gästebad","wohnzimmer","essgruppe","sitzgruppe","fernsehen","schlummern",
"aussen","terrasse","pavillon","rasen","garage","vorgarten","hecke",
"baum","eingang",
"keller","vorratskeller","werkstatt","kellerbad","zwischenkeller","heizungskeller",
"obergeschoss","schlafzimmer","badezimmer","bibliothek","flur","dominics_zimmer",
"dachgeschoss","arbeitszimmer","gästezimmer","party");
my %vr_verbs = ("schalte"=>"schalten",
"mach"=>"machen",
"machs"=>"machen",
"mache"=>"machen",
"setze"=>"setzen",
"stelle"=>"stellen",
"schließe"=>"schließen",
"öffne"=>"öffnen",
"sichern"=>"sichern",
"sichere"=>"sichern",
"hinzufügen"=>"hinzufügen",
"entfernen"=>"entfernen",
"löschen"=>"löschen",
"sage"=>"sagen",
"sagen"=>"sagen",
"ansagen"=>"sagen",
"zeige"=>"zeigen",
"zeigen"=>"zeigen",
"anzeigen"=>"zeigen",
"wecken"=>"wecken",
"senden"=>"senden",
"rufen"=>"rufen");
my @vr_verbs_prt = ("zu","auf","ent","wider","ein","an","aus","ab","um");
my @vr_prepo = ("von","vom","des","der","in","im","auf","bei","am");
my @vr_prono = ("wie","wo","wann");
my @vr_article = ("der","die","das","den","des","dem","zur");
my $re_states = "((".join(")|(",@vr_states)."))";
my $re_writes = "((".join(")|(",@vr_writes)."))";
my $re_times = "((".join(")|(",@vr_times)."))";
my $re_places = "((".join(")|(",@vr_places)."))";
my $re_verbs_inf = "((".join(")|(",(values %vr_verbs))."))";
my $re_verbs_1ps = "((".join(")|(",(keys %vr_verbs))."))";
my $re_verbs_prt = "((".join(")|(",@vr_verbs_prt)."))";
my $re_prepo = "((".join(")|(",@vr_prepo)."))";
my $re_prono = "((".join(")|(",@vr_prono)."))";
my $re_article = "((".join(")|(",@vr_article)."))";
my $cat = 0;
my $subcat = 0;
my $subsubcat = 0;
my ($device,$verb,$reading,$value,$article,$reserve,$place,$state,$prepo)=("","","","","","","","","","");
#-- normalize special phrases
my $commandn = $command;
$commandn =~ s/we((ck)|g) ?zeit/wecker/;
$commandn =~ s/wecken um/stelle den wecker auf/;
$commandn =~ s/beleuchtung/licht/;
$commandn =~ s/\szimmer/_zimmer/;
$commandn =~ s/(((zur?)|(von))\s)?(\w+)\sliste/$5_liste/;
$commandn =~ s/\ssichern/ zusichern/;
$commandn =~ s/unscharf\s?/aus/;
$commandn =~ s/scharf\s?/ein/;
$commandn =~ s/wider\s/wider/;
my @word = split(' ',$commandn,15);
my $len = int(@word);
############################# POS tagging ###################
#-- isolate place - take out (prepo) [arti] PLACE
# (verb) (prepo) [arti] PLACE [arti] (device)
# (verb) [arti] (device) (prepo) [arti] PLACE
# wie ist [arti] (device) (prepo) [arti] PLACE
# wie ist (prepo) [arti] PLACE [arti] (device)
for( my $i=3;$i<$len;$i++){
if( $word[$i] =~ /^$re_places/ ){
$place = $word[$i];
my $to = ( $word[$i-1] =~ /^$re_article/)?3:2;
$to = ( $word[$i+1-$to] =~ /^$re_prepo/)?$to:$to-1;
for( my $j=$i+1-$to;$j<$len;$j++){
$word[$j]=($word[$j+$to])?$word[$j+$to]:"";
}
last;
}
}
#-- backup for reserve
my @xord = @word;
shift(@xord);
#-- leer
if( int(@word) <= 1){
return ("","","","","","","");
#-- schalte das gerät an
# schalte gerät an
# sage den status von gerät
# sage status von gerät
# sage status gerät
# schalte den wecker aus ;
# schalte wecker aus
}elsif( ($word[1] =~ /^$re_verbs_1ps/) && ($word[2])){
$cat = 1;
$verb = $vr_verbs{$word[1]};
if( $word[2] =~ /^$re_article/){
$subcat = 1;
$article = $word[2];
$device = $word[3];
$reading = $word[4];
$reserve = $word[5];
}elsif( $word[2] =~ /^$re_prepo/){
$subcat = 2;
$article = $word[2];
$device = $word[3];
}else{
$subcat = 3;
$device = $word[2];
$reading = $word[3];
$reserve = $word[4];
}
#-- device=state => verb="sage" => reading
if( $device =~ /^$re_states/ ){
if( $reading =~ /^$re_prepo/ ){
$subsubcat = 1;
$reading = $device;
$device = $reserve;
}else{
$subsubcat = 2;
$reserve = $reading;
$reading = $device;
$device = $reserve;
}
#-- reading of device => target
}elsif( $subcat==2 ){
if( $word[4] =~ /^$re_article/ ){
$subsubcat = 3;
$reading = $word[5];
$reserve = $word[6];
}else{
$subsubcat = 4;
$reading = $word[4];
$reserve = $word[5];
}
}
#-- wie ist der wert von gerät
# wie ist wert von gerät
# wie ist der wert gerät
# wie ist wert gerät
# wie ist das wetter morgen
# wie ist wetter morgen
# wie ist morgen das wetter
# wie ist morgen wetter
# wie ist die weckzeit
# wie ist der status des weckers
}elsif( $word[1] =~ /^$re_prono/){
$cat = 2;
$verb = "sagen";
#-- take out article
if( $word[3] =~ /^$re_article/){
$subcat=1;
$article = $word[3];
$reading = $word[4];
#--take out preposition
if( $word[5] =~ /^$re_prepo/ ){
$subsubcat = 1;
$device = $word[6];
#-- no preposition
}else{
$subsubcat = 2;
$device = $word[5];
}
#-- no article
}else{
$subcat = 2;
$reading = $word[3];
#--take out preposition
if( $word[4] =~ /^$re_prepo/ ){
$subsubcat = 1;
$device = $word[5];
#-- no preposition
}else{
$subsubcat = 2;
$device = $word[4];
}
}
#-- exchange on temporal statement
if( $device =~ /^$re_times/ ){
$subsubcat = 3;
$reserve = $device;
$device = $reading;
$reading = $reserve;
}
if( $device =~ /^$re_article/){
$subsubcat = 4;
$device = $word[5];
}
if( $device eq ""){
$subsubcat = 5;
$device = $reading;
$reading = "status";
}
#-- das gerät anschalten
# gerät anschalten
# das wetter von morgen
# wetter von morgen
# das wetter morgen
# wetter morgen
# guten morgen
# gute nacht
# den wecker ausschalten
# wecker ausschalten
# wecker
# status
}else{
$cat = 3;
my $rex = $re_verbs_prt." ?".$re_verbs_inf;
#-- guten morgen / gute nacht
if( $word[1] =~ /^gut.*/){
$subcat = 1;
$device="zeit";
$reading=$word[2];
$reserve=$word[3]
if( $word[3] );
$verb="schalten";
#-- (arti) (device) something
}elsif( $word[1] =~ /^$re_article/){
$subcat = 2;
$article = $word[1];
$device = $word[2];
shift(@xord);
shift(@xord);
#--take out preposition
if( $word[3] =~ /^$re_prepo/ ){
$subsubcat = 1;
shift(@xord);
$reserve = join(" ",@xord);
}else{
$subsubcat = 2;
$reserve = join(" ",@xord);
}
#-- (arti) (device) [prepo] (time)
if( $reserve =~ /^$re_times/ ){
$subsubcat = 3;
$reading = $reserve;
$verb = "sagen";
#-- (arti) (device) [prepo] verb
}elsif( $reserve =~ s/^$re_verbs_inf\s?// ){
$subsubcat = 4;
$verb = $1;
$reading = $reserve;
#-- (arti) (device) [prepo] (reading) (verb) (value)
}else{
$subsubcat = 5;
$reserve =~ /^$rex/;
$verb = $11; #No verb_prt +2
$reading = $1;
}
#-- status [prepo] (device)
}elsif( $word[1] =~ /^status/){
$subcat = 3;
#--take out preposition
if( $word[2] =~ /^$re_prepo/ ){
$subsubcat = 1;
$device = $word[3];
}else{
$subsubcat = 2;
$device = $word[2];
}
$verb = "sagen";
$reading = "status";
#-- (device) something
}elsif($word[2] ne ""){
$subcat = 4;
$device = $word[1];
shift(@xord);
#--take out preposition
if( $word[2] =~ /^$re_prepo/ ){
$subsubcat = 1;
shift(@xord);
$reserve = join(" ",@xord);
}else{
$subsubcat = 2;
$reserve = join(" ",@xord);
}
#-- (device) [prepo] (time)
if( $reserve =~ /^$re_times/ ){
$subsubcat = 3;
$reading = $reserve;
$verb = "sagen";
#-- (device) [prepo] status
}elsif( $reserve =~ /^status/ ){
$subsubcat = 4;
$reading = "status";
$verb = "sagen";
#-- (device) (write)
}elsif( $word[2] =~ /^$re_writes/ ){
$subsubcat = 5;
$verb = $word[2];
shift(@xord);
$reading = join(" ",@xord);
#-- (device) [prepo] öffnen
#}elsif( $reserve =~ /^öffne.*/ ){
# $subsubcat = 6;
# $reading = "";
# $verb = "öffnen";
#-- (arti) (device) [prepo] verb
}elsif( $reserve =~ s/^$re_verbs_inf\s// ){
$subsubcat = 6;
$verb = $1;
$reading = $reserve;
#-- (device) [prepo] (reading) (verb) (value)
}else{
$subsubcat = 7;
$reserve =~ /^$rex/;
$verb = $11; #No verb_prt +2
$reading = $1;
}
#-- (device)
}else{
$subcat = 5;
$device = $word[1];
$reading = "status";
$verb = "sagen";
}
}
#-- normalize devices
$device = "golf"
if( $device =~/golfplatz/);
$device = "haus"
if( $device =~/hauses/);
$device = "haustür"
if( $device =~/hauseingangstür/);
$device = "wecker"
if( $device =~/we((ck)|g).*/);
$device = "alarm"
if( $device =~/alarm.*/);
$place = "wohnzimmer"
if( ($device eq "licht") && ($place eq ""));
if( $device eq "außenlicht" ){
$place="aussen"
if( $place eq "" );
$device="licht";
}
#-- machen
$verb = "schalten"
if( $verb eq "machen");
#-- sichern
$reading = "zu"
if(( $verb eq "sichern") && ($reading eq ""));
#-- an
$reading = "status"
if( (($verb eq "sagen") || ($verb eq "zeigen")) && ($reading eq "an"));
$reading = "ein"
if( $reading eq "an");
#-- value
$value=substr($commandn,index($commandn,"auf")+4)
if( ($reading eq "auf") || ($reserve eq "auf") );
#--judgement day
my $ok=( ($device ne "") and ($verb =~ /^$re_verbs_inf/) )?0:0;
my $str="[voiceRecognition] Semantic analysis of sentence $command\n".
"category=$cat.$subcat.$subsubcat: \tdevice=$device, \tverb=$verb, \treading=$reading $value \t[place=$place]\n";
if( $word[0] eq "johann" ){
return ($ok)?"[voiceRecognition] OK":$str;
}else{
Log 1,$str
if(!$ok);
}
return ($device,$verb,$reading,$value,$article,$reserve,$place);
}
##############################################################################
#
# Spracherkennung
#
# Testroutine
#
# Prof. Dr. Peter A. Henning 2014
#
##############################################################################
sub TVR(){
my $str = "";
$str .= "\nA.1:".voiceNormalize("johann guten morgen");
$str .= "\nA.2:".voiceNormalize("johann gute nacht");
$str .= "\nA.3:".voiceNormalize("johann guten morgen jeannie");
$str .= "\nA.4:".voiceNormalize("johann gute nacht jeannie");
$str .= "\n";
$str .= "\nB.1:".voiceNormalize("johann schalte das gerät an");
$str .= "\nB.2:".voiceNormalize("johann schalte gerät an");
$str .= "\nB.3:".voiceNormalize("johann mach das gerät an");
$str .= "\nB.4:".voiceNormalize("johann das gerät ausschalten");
$str .= "\nB.5:".voiceNormalize("johann gerät ausschalten");
$str .= "\nB.6:".voiceNormalize("johann das gerät ausmachen");
$str .= "\nB.7:".voiceNormalize("johann gerät anmachen");
$str .= "\nB.8:".voiceNormalize("johann schalte beleuchtung an");
$str .= "\nB.9:".voiceNormalize("johann licht anschalten");
$str .= "\n";
$str .= "\nC.1:".voiceNormalize("johann wie ist der wert von gerät");
$str .= "\nC.2:".voiceNormalize("johann wie ist wert von gerät");
$str .= "\nC.3:".voiceNormalize("johann wie ist der wert gerät");
$str .= "\nC.4:".voiceNormalize("johann wie ist wert gerät");
$str .= "\nC.4:".voiceNormalize("johann sage den status von gerät");
$str .= "\nC.5:".voiceNormalize("johann sage status von gerät");
$str .= "\nC.6:".voiceNormalize("johann sage status gerät");
$str .= "\n";
$str .= "\nD.1:".voiceNormalize("johann wie ist das wetter von morgen");
$str .= "\nD.2:".voiceNormalize("johann wie ist wetter von morgen");
$str .= "\nD.3:".voiceNormalize("johann wie ist das wetter morgen");
$str .= "\nD.4:".voiceNormalize("johann wie ist wetter morgen");
$str .= "\nD.5:".voiceNormalize("johann wie ist morgen das wetter");
$str .= "\nD.6:".voiceNormalize("johann wie ist morgen wetter");
$str .= "\nD.7:".voiceNormalize("johann wetter von morgen");
$str .= "\nD.8:".voiceNormalize("johann wetter morgen");
$str .= "\n";
$str .= "\nF.1:".voiceNormalize("johann schalte den wecker aus");
$str .= "\nF.2:".voiceNormalize("johann schalte wecker aus");
$str .= "\nF.3:".voiceNormalize("johann den wecker ausschalten");
$str .= "\nF.4:".voiceNormalize("johann wecker ausschalten");
$str .= "\nF.5:".voiceNormalize("johann wie ist die weckzeit");
$str .= "\nF.6:".voiceNormalize("johann wie ist der status des weckers");
$str .= "\nF.7:".voiceNormalize("johann weckzeit ansagen");
$str .= "\nF.8:".voiceNormalize("johann weckzeit");
$str .= "\nF.9:".voiceNormalize("johann wecken um 4 uhr 3");
$str .= "\nF.10:".voiceNormalize("johann stelle den wecker auf 17:00");
$str .= "\nF.11:".voiceNormalize("johann wecken um 13:12 Uhr");
$str .= "\n";
$str .= "\nG.1:".voiceNormalize("johann das haus ansagen");
$str .= "\nG.2:".voiceNormalize("johann haus ansagen");
$str .= "\nG.3:".voiceNormalize("johann haus status");
$str .= "\nG.4:".voiceNormalize("johann wie ist der status des hauses");
$str .= "\nG.5:".voiceNormalize("johann wie ist der status vom haus");
$str .= "\nG.6:".voiceNormalize("johann das haus sichern");
$str .= "\nG.7:".voiceNormalize("johann sichere das haus");
$str .= "\nG.8:".voiceNormalize("johann haus sichern");
$str .= "\nG.9:".voiceNormalize("johann das haus entsichern");
$str .= "\nG.10:".voiceNormalize("johann haus entsichern");
$str .= "\nG.11:".voiceNormalize("johann haustür öffnen");
$str .= "\nG.12:".voiceNormalize("johann die haustür öffnen");
$str .= "\nG.13:".voiceNormalize("johann öffne die haustür");
$str .= "\nG.14:".voiceNormalize("johann schließe die haustür zu");
$str .= "\nG.15:".voiceNormalize("johann schließe die haustür auf");
$str .= "\n";
$str .= "\nH.1:".voiceNormalize("johann alarmanlage einschalten");
$str .= "\nH.1:".voiceNormalize("johann alarmanlage ein schalten");
$str .= "\nH.1:".voiceNormalize("johann die alarmanlage scharfschalten");
$str .= "\nH.2:".voiceNormalize("johann alarmanlage unscharf schalten");
$str .= "\nH.2:".voiceNormalize("johann die alarmanlage ausschalten");
$str .= "\nH.3:".voiceNormalize("johann schalte die alarmanlage scharf");
$str .= "\nH.4:".voiceNormalize("johann schalte den alarm an");
$str .= "\nH.5:".voiceNormalize("johann alarm wider rufen");
$str .= "\nH.6:".voiceNormalize("johann alarm widerrufen");
$str .= "\n";
$str .= "\nI.1:".voiceNormalize("johann schalte beleuchtung in sitzgruppe an");
$str .= "\nI.2:".voiceNormalize("johann schalte beleuchtung in der sitzgruppe an");
$str .= "\nI.3:".voiceNormalize("johann mach die außenbeleuchtung auf terrasse an");
$str .= "\nI.4:".voiceNormalize("johann mache die außenbeleuchtung aus");
$str .= "\nI.5:".voiceNormalize("johann wie ist die temperatur im badezimmer");
$str .= "\nI.6:".voiceNormalize("johann wie ist die feuchte in dominics zimmer");
$str .= "\nI.7:".voiceNormalize("johann wie ist die feuchte in dem schlafzimmer");
$str .= "\nI.8:".voiceNormalize("johann wie ist der status der tür im schlafzimmer");
$str .= "\nI.9:".voiceNormalize("johann status tür schlafzimmer");
$str .= "\nI.10:".voiceNormalize("johann status der tür schlafzimmer");
$str .= "\nI.11:".voiceNormalize("johann status tür im schlafzimmer");
$str .= "\nI.12:".voiceNormalize("johann status der tür im schlafzimmer");
$str .= "\n";
$str .= "\nJ.1:".voiceNormalize("johann stelle bei gerät den wert auf 8");
$str .= "\nJ.2:".voiceNormalize("johann stelle am gerät wert auf 9");
$str .= "\nJ.3:".voiceNormalize("johann stelle bei harmony den kanal auf 10");
$str .= "\nJ.4:".voiceNormalize("johann stelle am fernseher die lautstärke auf 11");
$str .= "\n";
$str .= "\nK.1:".voiceNormalize("johann zur einkaufsliste hinzufügen bratheringe");
$str .= "\nK.2:".voiceNormalize("johann zu peters liste hinzufügen ticket münchen besorgen");
$str .= "\nK.3:".voiceNormalize("johann von dominics liste entfernen schmieröl");
$str .= "\nK.4:".voiceNormalize("johann baumarktliste löschen");
$str .= "\nK.5:".voiceNormalize("johann einkaufsliste senden");
return $str;
}
##############################################################################
#
# Spracherkennung
#
# Verarbeitung
# Parameter: $name = Gerätename für die Ausgabe
# $command = Sprachstring, beginnt mit Jeannie, James oder Johann
# Wenn nicht, wird "Jeannie " für die semantische Analyse
# davor gesetzt. Wenn "James ", wird nur simuliert.
# Wenn "Johann", wird nur die Analyse durchgeführt.
#
# Prof. Dr. Peter A. Henning 2014
#
##############################################################################
sub voiceRecognition($$){
my ($name,$command) = @_;
my $commandn;
my $res = "";
my $simu = 0;
#-- voiceRecognitionLastResult => entfernen
$command =~ s/^voiceRecognitionLastResult: //;
#-- Blödes Google
$command =~ s/(([Jj]enny)|([Jj]immy)|([Gg]inny)|(Teenies)|(Tini))/Jeannie/;
#-- Jeannie/James/Johann als letztes Wort => setze nach vorne
$command =~ s/(.*) (([Jj]ea?n.*)|([Jj]ames)|([Jj]ohann))$/$2 $1/;
#-- Jeannie/James/Johann nicht als erstes Wort
if( ($command !~ /^[Jj]ea?n.*/) && ($command !~ /^[Jj]am.*/) && ($command !~ /^[Jj]oh.*/) ){
$commandn = "Jeannie ".$command;
}else{
$commandn = $command;
}
#-- Jeannie präsent => Person= Meister
my $person=( $command =~ /^[Jj]ea?n.*/ )?"Meister":"";
#-- nur Simulieren
$simu = 1
if( $command =~ /^[Jj]am.*/ );
my ($device,$verb,$reading,$value,$article,$reserve,$place) = voiceNormalize($commandn);
Log 1,"=================> ".join(" ",($device,$verb,$reading,$value,$article,$reserve,$place));
$res .= $device
if( $simu );
if ( ($device eq "zeit")&&($verb eq "schalten") ){
if( $reading eq "morgen" ){
return $res."\n============> 90 => set YYY time wakeup"
if( $simu );
fhem90Cmd("set YYY time wakeup");
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}elsif( $reading eq "nacht"){
return $res."\n============> 90 => set YYY time sleep"
if( $simu );
fhem90Cmd("set YYY time sleep");
}
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}elsif( $device eq "wecker" ){
my ($nt,$nc);
#-- ausschalten----------------------------------------
if( ($verb eq "schalten") && ($reading eq "aus") ){
return $res."\n============> 90 => {changeWakeTime('$name','ausschalten','off')}"
if( $simu );
fhem90Cmd("{changeWakeTime(\'$name\','ausschalten','off')}");
#-- ansagen -------------------------------------------
}elsif( (($verb eq "sagen") || ($verb eq "zeigen"))&&($reading eq "status") ){
return $res."\n============> 90 => {sayWakeTime('$name',undef)}"
if( $simu );
fhem90Cmd("{sayWakeTime(\'$name\',undef)}");
}elsif( $verb eq "stellen"){
#-- nicht volle Stunde---------------------------------
if( $value =~ /(\d+)([uhr\s]+)(\d+)/ ){
$nc="$1 Uhr $3";
$nt=sprintf("%02d:%02d:00",$1,$3);
#-- nicht volle Stunde----------------------------------
}elsif( $value =~ /(\d+):(\d+)([a-z\s]*)/ ){
$nc="$1 Uhr $2";
$nt=sprintf("%02d:%02d:00",$1,$2);
#-- volle Stunde----------------------------------------
}elsif( $value=~ /(\d+)([a-z\s]+)/ ){
$nc="$1 Uhr";
$nt=sprintf("%02d:00:00",$1);
#-- nichts----------------------------------------------
}
return $res."\n============> 90 => {changeWakeTime('$name','$nc','$nt')}"
if( $simu );
fhem90Cmd("{changeWakeTime(\'$name\',\'$nc\',\'$nt\')}");
}else{
speakHelp($name,("Weckzeit, Wecker oder Wecken um, gefolgt von","ausschalten, ansagen oder einer Uhrzeit"));
}
#++ Golf ++++++++++++++++++++++++++++++++++++++++++++++
}elsif( $device eq "golf" ){
...
Es sollte allen klar sein, dass hier gerade das Rad zum zweiten Mal erfunden wird.
Zitat von: Pitcher90 am 16 Dezember 2017, 10:57:23Bei deiner Konfig, die du uns netterweise zur Verfügung gestellt hast, können jetzt einige Zeilen entfallen, ich habe das mal Beispielhaft hier erstellt:
Abgesehen von dieser Frage hier mal meine bisherige Config für Leute die es interessiert:
(@rooms) auf (@sender) = set Fernseher_$1[@tvdev] command $2[@channel] ; set Fernseher_$1[@tvdev] command Select
(@rooms) licht (@colors) = set Licht_$1[@lightdev] hue $2[@huecolor]'
attr talk T2F_keywordlist
sender = ard|erste,zdf|zweite,rtl,sat 1,prosieben,kabel 1,rtl 2,vox,sixx
rooms = haus|..?berall,wohnung,wohnzimmer,bad(ezimmer)?,schlafzimmer,garten,terrasse
colors = blau,gelb,rot,magenta,gr..?n
attr talk T2F_modwordlist
channel = Number1,Number2,Number3,Number4,Number5,Number6,Number7,Number8
tvdev = ,,Wohnzimmer,,Schlafzimmer,,
lightdev = ,,Wohnzimmer,,Schlafzimmer,Garten,Terrasse
huecolor = 240,40,360,320
Zitat von: Phill am 20 Dezember 2017, 12:48:04
So der erste Beitrag ist aktualisiert.
Die Syntax hat sich aufgrund der FHEM-Konfigurierbarkeit etwas geändert.
Regexp und Kommando sollten nicht mehr in ' '
Trennzeichen ist nicht mehr => sondern einfach nur ein " = " mit mindestens einem Leerzeichen oder Tabulator
Bei deiner Konfig, die du uns netterweise zur Verfügung gestellt hast, können jetzt einige Zeilen entfallen, ich habe das mal Beispielhaft hier erstellt:
DEF:Code Auswählen(@rooms) auf (@sender) = set Fernseher_$1[@tvdev] command Number1 ; set Fernseher_$1[@tvdev] command Select
(@rooms) licht (@colors) = set Licht_$1[@lightdev] hue $2[@huecolor]'
Attribute:Code Auswählen
attr talk T2F_keywordlist
sender = ard|erste,zdf|zweite,rtl,sat 1,prosieben,kabel 1,rtl 2,vox,sixx
rooms = haus|..?berall,wohnung,wohnzimmer,bad(ezimmer)?,schlafzimmer,garten,terrasse
colors = blau,gelb,rot,magenta,gr..?n
attr talk T2F_modwordlist
tvdev = ,,Wohnzimmer,,Schlafzimmer,,
lightdev = ,,Wohnzimmer,,Schlafzimmer,Garten,Terrasse
huecolor = 240,40,360,320
Bin mal gespannt ob es auf Anhieb klappt. ::)
Viel Spaß.
Zitat von: kud am 20 Dezember 2017, 13:43:38Hi, also eigentlich nur irgendetwas womit du Text in Richtung FHEM bekommst.
Jetzt mal ne blöde Frage zwischendurch.
Habe jetzt ne ganze Weile nur mit Alexa (Smarthome) verbracht und bin nicht ganz auf dem Laufenden.
Was sind die Voraussetzungen für dieses Modul ? Ein Google Home? Eine Handy ? Ein funktionierter TelegramBot?
set talk zu interpretierender text
Internals:
NAME IFTTT
NR 274
STATE ???
TYPE dummy
READINGS:
2017-12-23 17:47:53 alarm Wohnzimmer Licht und Fernseher an
Attributes:
room Webhook
Internals:
CFGFN
DEF licht (\S+ ){0,2}(@rooms) (\S*) = set $2[@lights] $3{true=>"on", false=>"off"}
(@rooms) auf (@sender) = set Fernseher_$1[@tvdev] command $2[@channel] ; set Fernseher_$1[@tvdev] command Select
(@rooms) licht (@colors) = set Licht_$1[@lightdev] hue $2[@huecolor]'
NAME talk
NR 2569
NTFY_ORDER 50-talk
STATE Initialized
TYPE Talk2Fhem
Attributes:
T2F_keywordlist rooms = haus|..?berall,wohnung,wohnzimmer,esszimmer,bad\S*,toilette|wc,b..?ro,schlafzimmer,ankleide|garderobe,kinderzimmer,spielzimmer,flur|gang|diele,garage,garten,terrasse,balkon,eg|erdgescho\S*,og|obergescho\S* names = Mama,Papa,Sohn|Name,Tochter|Name
sender = ard|erste,zdf|zweite,rtl,sat 1,prosieben,kabel 1,rtl 2,vox,sixx
colors = blau,gelb,rot,magenta,gr..?n
T2F_modwordlist lights = lampen_alle,lampen_alle,lampen_wohnzimer,lampen_esszimmer,,,,lampen_schlafzimmer,[...]
channel = Number1,Number2,Number3,Number4,Number5,Number6,Number7,Number8
tvdev = ,,Wohnzimmer,,Schlafzimmer,,
lightdev = ,,Wohnzimmer,,Schlafzimmer,Garten,Terrasse
huecolor = 240,40,360,320
2017.12.23 20:52:20 1: Text wird interpretiert: licht im Wohnzimmer an
2017.12.23 20:52:20 1: Kommando: licht im wohnzimmer an
2017.12.23 20:52:20 1: Restkommando: 'licht im wohnzimmer an'
2017.12.23 20:52:20 1: Hit: 'licht im wohnzimmer an' =~ qr/\s*licht (\S+ ){0,2}(haus|..?berall|wohnung|wohnzimmer|esszimmer|bad\s*|toilette|wc|b..?ro|schlafzimmer|ankleide|garderobe|kinderzimmer|spielzimmer|flur|gang|diele|garage|garten|terrasse|balkon|eg|erdgescho\s*|og|obergescho\s* names = mama|papa|sohn|name|tochter|name) (\S*)\s*/i
2017.12.23 20:52:20 1: Erweitertes Hashkommando verarbeiten. 2 [@lights] set ### $3{true=>"on", false=>"off"}
2017.12.23 20:52:20 1: ["lampen_alle","lampen_alle","lampen_wohnzimer","lampen_esszimmer","","","","lampen_schlafzimmer","[...]"]
2017.12.23 20:52:20 1: Keyword: wohnzimmer
2017.12.23 20:52:20 1: ARRAY Auswertung: wohnzimmer / / = lampen_alle lampen_alle lampen_wohnzimer lampen_esszimmer lampen_schlafzimmer [...]
2017.12.23 20:52:20 1: ARRAY Suche in Liste: haus|..?berall wohnung wohnzimmer esszimmer bad\s* toilette|wc b..?ro schlafzimmer ankleide|garderobe kinderzimmer spielzimmer flur|gang|diele garage garten terrasse balkon eg|erdgescho\s* og|obergescho\s* names = mama papa sohn|name tochter|name
2017.12.23 20:52:20 1: Erweitertes Hashkommando verarbeiten. 3 {true=>"on", false=>"off"} set lampen_wohnzimer ###
2017.12.23 20:52:20 1: {true=>"on", false=>"off"}
2017.12.23 20:52:20 1: Keyword: an
2017.12.23 20:52:20 1: Wort gefunden 'an - true' ersetze durch 'on'
2017.12.23 20:52:20 1: Befehl: set lampen_wohnzimer on
2017.12.23 20:52:20 1: Ergebnis: 'cmds'
[
' set lampen_wohnzimer on'
]
ZitatVielleicht kann ich aber trotzdem einige Ansätze davon mit in meinen Code aufnehmen.
2017.12.23 23:58:43 1: Text wird interpretiert: Schalter auf Sat 1
2017.12.23 23:58:43 1: Kommando: schalter auf sat 1
2017.12.23 23:58:43 1: Restkommando: 'schalter auf sat 1'
2017.12.23 23:58:43 1: Hit: 'schalter auf sat 1' =~ qr/\s*auf (ard|erste|zdf|zweite|rtl|sat 1|prosieben|kabel 1|rtl 2|vox|sixx)\s*/i
2017.12.23 23:58:43 1: Erweitertes Hashkommando verarbeiten. 1 [@channel] set ReceiverAxBox4K channel ###
2017.12.23 23:58:43 1: ["number1","number2","number3","number4","number5","number6","number7","number8"]
2017.12.23 23:58:43 1: Keyword: sat 1
2017.12.23 23:58:43 1: ARRAY Auswertung: sat 1 / / = number1 number2 number3 number4 number5 number6 number7 number8
2017.12.23 23:58:43 1: ARRAY Suche in Liste: ard|erste zdf|zweite rtl sat 1 prosieben kabel 1 rtl 2 vox sixx
2017.12.23 23:58:43 1: Befehl: set ReceiverAxBox4K channel number4
2017.12.23 23:58:43 1: Ergebnis: 'cmds'
[
' set ReceiverAxBox4K channel number4'
]
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Initialize redefined at ./FHEM/39_Talk2Fhem.pm line 79.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Define redefined at ./FHEM/39_Talk2Fhem.pm line 97.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Loadphrase redefined at ./FHEM/39_Talk2Fhem.pm line 120.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Undef redefined at ./FHEM/39_Talk2Fhem.pm line 140.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Delete redefined at ./FHEM/39_Talk2Fhem.pm line 148.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Notify redefined at ./FHEM/39_Talk2Fhem.pm line 155.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Set redefined at ./FHEM/39_Talk2Fhem.pm line 171.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_Get redefined at ./FHEM/39_Talk2Fhem.pm line 209.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_parseParams redefined at ./FHEM/39_Talk2Fhem.pm line 243.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_parseArray redefined at ./FHEM/39_Talk2Fhem.pm line 257.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine filter redefined at ./FHEM/39_Talk2Fhem.pm line 359.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine get_time_by_phrase redefined at ./FHEM/39_Talk2Fhem.pm line 368.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine mkattime redefined at ./FHEM/39_Talk2Fhem.pm line 421.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine addevt redefined at ./FHEM/39_Talk2Fhem.pm line 433.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine err redefined at ./FHEM/39_Talk2Fhem.pm line 619.
2017.12.23 23:59:53 1: PERL WARNING: Subroutine Talk2Fhem_exec redefined at ./FHEM/39_Talk2Fhem.pm line 263.
2017.12.24 00:00:18 1: Text wird interpretiert: Schalter auf Sat 1
2017.12.24 00:00:18 1: Kommando: schalter auf sat 1
2017.12.24 00:00:18 1: Restkommando: 'schalter auf sat 1'
2017.12.24 00:00:18 1: Hit: 'schalter auf sat 1' =~ qr/\s*auf (ard|erste|zdf|zweite|rtl|sat 1|prosieben|kabel 1|rtl 2|vox|sixx)\s*/i
2017.12.24 00:00:18 1: Erweitertes Hashkommando verarbeiten. 1 [@channel] set ReceiverAxBox4K channel ###
2017.12.24 00:00:18 1: ["1","2","3","4","5","6","7","8"]
2017.12.24 00:00:18 1: Keyword: sat 1
2017.12.24 00:00:18 1: ARRAY Auswertung: sat 1 / / = 1 2 3 4 5 6 7 8
2017.12.24 00:00:18 1: ARRAY Suche in Liste: ard|erste zdf|zweite rtl sat 1 prosieben kabel 1 rtl 2 vox sixx
2017.12.24 00:00:18 1: Befehl: set ReceiverAxBox4K channel 4
2017.12.24 00:00:18 1: Ergebnis: 'cmds'
[
' set ReceiverAxBox4K channel 4'
]
2017.12.24 00:02:23 1: Text wird interpretiert: Schalter auf 12
2017.12.24 00:02:23 1: Kommando: schalter auf 12
2017.12.24 00:02:23 1: Restkommando: 'schalter auf 12'
Unmatched ) in regex; marked by <-- HERE in m/\s*) <-- HERE {0,2}(haus|..?berall|wohnung|wohnzimmer|esszimmer|bad\s*|toilette|wc|b..?ro|schlafzimmer|ankleide|garderobe|kinderzimmer|spielzimmer|flur|gang|diele|garage|garten|terrasse|balkon|eg|erdgescho\s*|og|obergescho\s* names = mama|papa|sohn|name|tochter|name) (\S*)\s*/ at ./FHEM/39_Talk2Fhem.pm line 452.
2017.12.24 00:04:46 1: Including fhem.cfg
2017.12.24 00:04:48 2: eventTypes: loaded 5752 events from ./log/eventTypes.txt
2017.12.24 00:04:55 2: Switched MaxCUL rfmode to MAX
2017.12.24 00:05:23 1: PERL WARNING: Unrecognized escape \s passed through at ./FHEM/39_Talk2Fhem.pm line 379, <$fh> line 1896.
2017.12.24 00:05:23 1: PERL WARNING: Variable "$myname" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 424, <$fh> line 1896.
2017.12.24 00:05:23 1: PERL WARNING: Variable "%keylist" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 441, <$fh> line 1896.
2017.12.24 00:05:23 1: PERL WARNING: Variable "%modlist" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 479, <$fh> line 1896.
2017.12.24 00:05:23 1: 'licht (\\S+ ){0,2}(@rooms) (\\S*)'
'set $2[@lights] $3{true=>"on", false=>"off"}'
'heizung (\\S*)$'
'set d_Heizung $1{true=>"on", false=>"off"}'
'auf (@sender)'
'set ReceiverAxBox4K channel $1[@channel]'
'(@rooms) licht (@colors)'
'set Licht_$1[@lightdev] hue $2[@huecolor]\''
zustand (\S+)+ (\S+) = (answer=>'my $s=Value((grep { $attr{$_}{alias} eq "$2" } (keys %attr))[0]);; "Der Status ist ".$s if $s')
bildschirm\S* (a|ei)n = set test_bildschirm on
bildschirm\S* aus = set test_bildschirm off
talk:.* {
# Sende die Antwort per Telegram und gebe es über das GoogleHome aus
if ($EVENT =~ s/^answers: //) {
fhem("set TelegramBot _msg \@xxxxxxx $EVENT");
}
# Schicke den Fehler per Telegram und sag am GoogleHome das es nicht geklappt hat.
if ($EVENT =~ s/^err: //) {
fhem("set TelegramBot _msg \@xxxxxx $EVENT");
}
# Schick mir alle ausgeführten Befehle als Telegram
if ($EVENT =~ s/^cmds: //) {
fhem("set TelegramBot _msg \@xxxxxx $EVENT");
}
}
Zitat von: Grml am 02 Januar 2018, 22:21:15Talk2Fhem ist erst mal ruhig. Das Konzept ist eher, wenn alles gut verlaufen ist dann sage nichts. Will man eine Antwort haben muss das definiert werden. Siehe https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Antworten (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Antworten)
Wenn ich eine Telegram-Nachricht schreibe mit dem Inhalt "schalte den bildschirm ein" schaltet der Dummy auf "on".
Lt. dem Screenshot im WIKI sollte ich dann (meinem Verständnis nach) ein "Ok" oder sowas zurückbekommen. Das passiert aber nicht. Das Answers-Reading gibt es auch (noch) nicht (vermutlich weil es leer ist und noch nie was enthalten hat in meinem Fall).
Zitat von: Grml am 02 Januar 2018, 22:21:15
DEF im talk-Device:Code Auswählenbildschirm\S* (a|ei)n = set test_bildschirm on
bildschirm\S* aus = set test_bildschirm off
Too many arguments for main::Talk2Fhem_Loadphrase at ./FHEM/39_Talk2Fhem.pm line 227, near ""@def")"
Too many arguments for main::Talk2Fhem_Loadphrase at ./FHEM/39_Talk2Fhem.pm line 299, near "}) "
2018.01.06 12:38:38 1: HASH Replacement Failed! set Wohnzimmer.TV.Steckdose ###
Internals:
CFGFN
DEF # Tests
Hallo = ( answer => '["Hallo auch!","Guten Tag!","Ahoi!"]->[rand(3)]' )
# Temperatur abfrage
wie.*(kalt|warm|grad|temperatur).*(@rooms) = ( answer => '"Die Temperatur beträgt ".ReadingsVal("$2[@sens]", "temperature", "unbekannt")." grad"' )
# GoogleCast Commandos
leise$ = set googlecastdevice volume 14
normale lautstärke = set googlecastdevice volume 20
laut$ = set googlecastdevice volume 30
(ein wenig|etwas|viel)? ?(lauter|leiser) = { fhem("set googlecastdevice volume ".(ReadingsVal("googlecastdevice","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
# Abfragen anhand des T2F_alias in den Geräten
(zustand|status) (\S+)* (\S+) = (answer=>'my $s=Value((grep { "$3" =~ /$attr{$_}{T2F_alias}/i } (keys %attr))[0]);; "Der Status ist ".$s if $s')
# Fernseher schalten
(fernseher|tv) (\S+) = set Wohnzimmer.TV.Steckdose $1{ true => on, false => off }
NAME talk
NR 375
NTFY_ORDER 50-talk
STATE Initialized
TYPE Talk2Fhem
READINGS:
2018-01-06 11:48:52 answers Ahoi!
2018-01-06 12:22:00 err Error on Command: 'ifttt2fhem: schalte den tv an'
2018-01-06 12:22:00 set ifttt2fhem: schalte den TV an
2018-01-06 12:22:00 status err
Attributes:
T2F_keywordlist rooms =
haus|überall|wohnung,wohnzimmer,bad\S*,toilette|wc,schlafzimmer,kinderzimmer|büro|arbeitszimmer,
flur|gang|diele,balkon,\S*auße\S*( haus)?|vor der tür,paul
T2F_language DE
T2F_modwordlist tempsens = ,Wohnzimmer.Temperatur,,,Schlafzimmer.Temperatur,Jennifer.Temperatur,,,,Paul.Temperatur
disable 0
READINGS:
2018-01-06 11:48:52 answers Ahoi!
2018-01-06 12:26:32 err Error on Command: 'schalte den tv an'
2018-01-06 12:26:32 set schalte den TV an
2018-01-06 12:26:32 status err
Zitat# Fernseher schaltenDer Befehl steht in der 2. Klammer. Also $2 nicht $1. Verbose auf 4 oder 5 gibt da mehr Auskunft.
(fernseher|tv) (\S+) = set Wohnzimmer.TV.Steckdose $2{ true => on, false => off }
ZitatUnd eventuell im Wiki Beitrag im bereich über die Google Home auf die MQTT version der anbindung ergänzen (zumindest Hinweiß).Gerne. Wenn du hierzu was schreiben würdest würde ich es ergänzen. Ich selbst mache gar nichts mit MQTT und kann es deswegen nicht referenzieren.
Zitat von: Phill am 06 Januar 2018, 13:03:32
Der Befehl steht in der 2. Klammer. Also $2. Verbose auf 4 oder 5 gibt da mehr Auskunft.
2018.01.06 13:28:52 3: Decoding Text: tv an
2018.01.06 13:28:52 5: Using lists:
$VAR1 = 'rooms';
$VAR2 = [
'haus|überall|wohnung',
'wohnzimmer',
'badS*',
'toilette|wc',
'schlafzimmer',
'kinderzimmer|büro|arbeitszimmer',
'flur|gang|diele',
'balkon',
'S*außeS*( haus)?|vor der tür',
'paul'
];
$VAR3 = 'tempsens';
$VAR4 = [
'',
'Wohnzimmer.Temperatur',
'',
'',
'Schlafzimmer.Temperatur',
'Jennifer.Temperatur',
'',
'',
'',
'Paul.Temperatur'
];
2018.01.06 13:28:52 4: Command part: 'tv an'
2018.01.06 13:28:52 5: get_time_by_phrase. Using eventtime: Sat Jan 6 13:28:52 2018 now: Sat Jan 6 13:28:52 2018 command: tv an
2018.01.06 13:28:52 5: get_time_by_phrase. Using eventtime: Sat Jan 6 13:28:52 2018 now: Sat Jan 6 13:28:52 2018 command: tv an
2018.01.06 13:28:52 5: Commandpart after datedecoding. 'tv an'
2018.01.06 13:28:52 4: Command left: 'tv an'
2018.01.06 13:28:52 5: talk Evaluate search:
tv an =~ /laut$/i
2018.01.06 13:28:52 5: talk Evaluate search:
tv an =~ /(ein wenig|etwas|viel)? ?(lauter|leiser)/i
2018.01.06 13:28:52 5: talk Evaluate search:
tv an =~ /(fernseher|tv) (\S+)/i
2018.01.06 13:28:52 4: Hit with phrase: qr/(fernseher|tv) (\S+)/i
2018.01.06 13:28:52 5: Handle reaction cmd: set Wohnzimmer.TV.Steckdose $1{ true => on, false => off }
2018.01.06 13:28:52 4: Advanced bracket replacement. $1 true => on, false => off = set Wohnzimmer.TV.Steckdose ###
2018.01.06 13:28:52 4: Keyword: 'tv'
2018.01.06 13:28:52 5: HASH evaluation:
$VAR1 = {
'true' => 'on',
'false' => 'off'
};
2018.01.06 13:28:52 1: HASH Replacement Failed! set Wohnzimmer.TV.Steckdose ###
2018.01.06 13:28:52 1: Error on Command: 'tv an'
2018.01.06 13:28:52 3: TelegramBot_SendIt TelegramBot: Failed with :FAILED peer not found :{id}:
2018.01.06 13:28:52 3: TelegramBot_Callback TelegramBot: resulted in NonBlockingGet: returned FAILED peer not found :{id}: from SendIt
2018.01.06 13:28:52 3: sentMsgIdByPeerId return value: rg_Gast_sentMsgId:
2018.01.06 13:28:52 3: set TelegramBot _msg @{id} Error on Command: 'tv an' : FAILED peer not found :{id}:
2018.01.06 13:28:52 3: set d_googlespeak Es gab leider einen Fehler : Please define d_googlespeak first
(schalte|setze|stelle).*Temperatur.*(@rooms).*(\d+).*Grad = set $2[@temp] desired-temp $3
schalte die Temperatur im Wohnzimmer auf 15 Grad
set WZHeizung_Clima desired-temp
2018.01.17 22:33:08 3: Decoding Text: schalte die Temperatur im Wohnzimmer auf 15 Grad
2018.01.17 22:33:08 5: Using lists:
$VAR1 = 'rooms';
$VAR2 = [
'haus|überall|wohnung',
'wohnzimmer',
'badS*',
'toilette|wc|gäste.wc',
'büro|arbeitszimmer|gästezimmer',
'schlafzimmer',
'kinderzimmer|spielzimmer|lennar(d|t)S*',
'flur|gang|diele',
'garten|draussen|terrasse',
'eg|erdgeschoS*',
'og|obergeschoS*'
];
$VAR3 = 'temp';
$VAR4 = [
'',
'WZHeizung_Clima',
'Bad_Heizung_Clima',
'',
'',
'',
'HZ_Lennard_Clima',
'',
'',
'',
''
];
2018.01.17 22:33:08 4: Command part: 'schalte die temperatur im wohnzimmer auf 15 grad'
2018.01.17 22:33:08 5: get_time_by_phrase. Using eventtime: Wed Jan 17 22:33:08 2018 now: Wed Jan 17 22:33:08 2018 command: schalte die temperatur im wohnzimmer auf 15 grad
2018.01.17 22:33:08 5: get_time_by_phrase. Using eventtime: Wed Jan 17 22:33:08 2018 now: Wed Jan 17 22:33:08 2018 command: schalte die temperatur im wohnzimmer auf 15 grad
2018.01.17 22:33:08 5: Commandpart after datedecoding. 'schalte die temperatur im wohnzimmer auf 15 grad'
2018.01.17 22:33:08 4: Command left: 'schalte die temperatur im wohnzimmer auf 15 grad'
2018.01.17 22:33:08 5: talk Evaluate search:
schalte die temperatur im wohnzimmer auf 15 grad =~ /wie.*(kalt|warm|grad|temperatur).*(haus|\S\S?berall|wohnung|wohnzimmer|badS*|toilette|wc|g\S\S?ste.wc|b\S\S?ro|arbeitszimmer|g\S\S?stezimmer|schlafzimmer|kinderzimmer|spielzimmer|lennar(d|t)S*|flur|gang|diele|garten|draussen|terrasse|eg|erdgeschoS*|og|obergeschoS*).*/i
2018.01.17 22:33:08 5: talk Evaluate search:
schalte die temperatur im wohnzimmer auf 15 grad =~ /(schalte|setze|stelle).*Temperatur.*(haus|\S\S?berall|wohnung|wohnzimmer|badS*|toilette|wc|g\S\S?ste.wc|b\S\S?ro|arbeitszimmer|g\S\S?stezimmer|schlafzimmer|kinderzimmer|spielzimmer|lennar(d|t)S*|flur|gang|diele|garten|draussen|terrasse|eg|erdgeschoS*|og|obergeschoS*).*(\d+).*Grad/i
2018.01.17 22:33:08 4: Hit with phrase: qr/(schalte|setze|stelle).*Temperatur.*(haus|\S\S?berall|wohnung|wohnzimmer|badS*|toilette|wc|g\S\S?ste.wc|b\S\S?ro|arbeitszimmer|g\S\S?stezimmer|schlafzimmer|kinderzimmer|spielzimmer|lennar(d|t)S*|flur|gang|diele|garten|draussen|terrasse|eg|erdgeschoS*|og|obergeschoS*).*(\d+).*Grad/i
2018.01.17 22:33:08 5: Handle reaction cmd: set $2[@temp] desired-temp $3
2018.01.17 22:33:08 5: Replaced bracket: set $2[@temp] desired-temp $3 -> set $2[@temp] desired-temp
2018.01.17 22:33:08 4: Advanced bracket replacement. $2@temp = set ### desired-temp
2018.01.17 22:33:08 5: Adding modlist: "","WZHeizung_Clima","Bad_Heizung_Clima","","","","HZ_Lennard_Clima","","","",""
2018.01.17 22:33:08 4: Keyword: 'wohnzimmer'
2018.01.17 22:33:08 5: ARRAY evaluation: else: empty:
array: WZHeizung_Clima Bad_Heizung_Clima HZ_Lennard_Clima
2018.01.17 22:33:08 4: Searching position of wohnzimmer in haus|\S\S?berall|wohnung wohnzimmer badS* toilette|wc|g\S\S?ste.wc b\S\S?ro|arbeitszimmer|g\S\S?stezimmer schlafzimmer kinderzimmer|spielzimmer|lennar(d|t)S* flur|gang|diele garten|draussen|terrasse eg|erdgeschoS* og|obergeschoS*
2018.01.17 22:33:08 3: Text converted to: set WZHeizung_Clima desired-temp
2018.01.17 22:33:08 3: set WZHeizung_Clima desired-temp : desired-temp requires parameter: [on|off|5.0..30.0]
(schalte|setze|stelle).*Temperatur.*(@rooms).*?(\d+).* = set $2[@temp] desired-temp $3
^^^
Zitatlennar(d|t)S*schreib das mal so
Zitatlennar\S*
oder
lennar[dt]\S*
attr global userattr T2F_places T2F_properties T2F_rooms T2F_types
sub fill_T2F_keywordlist($)
{
my ($name) = @_;
$name =~ s/T2F_//g;
if ($name eq 'userattr')
{
return;
}
my $currentAttr = AttrVal("talk","T2F_keywordlist","");
my @currentAttrParts = split(/$name = /, $currentAttr);
my $currentAttrBeg = @currentAttrParts[0];
$currentAttrBeg = substr($currentAttrBeg, 0, -1);
my @currentAttrEnd = split(/\n/, @currentAttrParts[1], 2);
my @array = devspec2array('a:T2F_'.$name.'=.+');
my @attributes = ();
if (@array > 0 and defined($defs{$array[0]}))
{
foreach (@array){
my $attrVal = AttrVal($_, 'T2F_'.$name, '');
$attrVal =~ s/ / /g;
$attrVal =~ s/, /,/g;
my @attr = split(/,/, $attrVal);
push(@attributes, @attr);
}
}
my %hash = map { $_ => 1 } @attributes;
my @unique = keys %hash;
my $result = $currentAttrBeg."\n".$name." = ".join(", ", @unique)."\n".@currentAttrEnd[1];
$result =~ s/\n\n/\n/g;
$result =~ s/ / /g;
$result =~ s/, /,/g;
fhem('attr talk T2F_keywordlist '.$result);
}
defmod talk.nf.fillAttr notify global:ATTR.*T2F_(places|rooms|types|properties).* {fill_T2F_keywordlist($EVTPART2)}
attr talk T2F_keywordlist rooms = esszimmer,obergeschoss,küche,haus\
places = tür,vorn,esstisch,vorne,decke,tisch\
types = licht,lampe\
article = im,in,der,die,das,den,dem,an,am,über,auf,unter,alle\
properties = gross\
endings = en,er,e,n
defmod talk Talk2Fhem (@article)?( )?(@article)?( )?(@properties)?(@endings)?( )?(@types)(@endings)?( )?(@article)?( )?(@article)?( )?(@rooms)?( )?(@article)?( )?(@article)?( )?(@places)?( )?(\S+) = (cmd=>'set T2F_types=.*$8.*:FILTER=T2F_rooms=.*$15.*:FILTER=T2F_properties=.*$5.*:FILTER=T2F_places=.*$21.* $23{true=>on, false=>off}', answer=>'"Gern, ich habe $1 $2 $3 $4 $5$6 $7 $8$9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $23{true=>eingeschaltet, false=>ausgeschaltet}"')
defmod OG.ez.LI.Allgemein HM485 00009679_16
attr OG.ez.LI.Allgemein T2F_places decke,vorn,vorne,tür
attr OG.ez.LI.Allgemein T2F_properties gross,groß
attr OG.ez.LI.Allgemein T2F_rooms esszimmer,haus,obergeschoss
attr OG.ez.LI.Allgemein T2F_types licht,lampe
set talk Schalte das Licht aus #schaltet alle Lichter aus
set talk Schalte das Licht im Haus aus #schaltet alle Lichter im Haus aus
set talk Schalte alle Lichter im Obergeschoss aus #schaltet alle Lichter im Obergeschoss aus
set talk Schalte das Licht im Esszimmer aus #schaltet alle Lichter im Esszimmer aus
set talk Schalte das große Licht im Esszimmer aus #schaltet konkret dieses Licht (kein anderes hat die property groß)
set talk Schalte das Licht im Esszimmer an der Decke aus #schaltet konkret dieses Licht (kein anderes hat den place Decke)
Gern, ich habe ...
attr global userattr T2F_places T2F_properties T2F_rooms T2F_types_heating T2F_types_switch
defmod talk Talk2Fhem (@article)?( )?(@properties)?(@endings)?( )?(@types_switch)(@endings)?( )?(@article)?( )?(@article)?( )?(@rooms)?( )?(@article)?( )?(@article)?( )?(@places)?( )?(\S+) = (cmd=>'set T2F_types_switch=.*$6.*:FILTER=T2F_rooms=.*$13.*:FILTER=T2F_properties=.*$3.*:FILTER=T2F_places=.*$19.* $21{true=>on, false=>off}', answer=>'"Gern, ich habe $1 $2 $3$4 $5 $6$7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $21{true=>eingeschaltet, false=>ausgeschaltet}"')\
\
(@article)?( )?(@types_heating)(@endings)?( )?(@article)?( )?(@article)?( )?(@rooms)?( )?(@article)?( )?(@article)?( )?(@places)?( )?(auf)?( )?(\d+) grad = (cmd=>'set T2F_types_heating=.*$3.*:FILTER=T2F_rooms=.*$10.*:FILTER=T2F_places=.*$16.* desired-temp $20', answer=>'"Gern, ich habe die Heizung $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 auf $20 Grad gestellt. Aktuell sind $6 $7 $8 $9 $10 ".averageTemp("$10")." Grad"')
attr talk T2F_keywordlist rooms = esszimmer,obergeschoss,kinderschlafzimmer,haus,küche\
places = vorne,vorn,steckdose,tür,tisch,esstisch,decke\
article = im,in,der,die,das,den,dem,an,am,über,auf,unter,alle\
properties = gross,hell,groß\
endings = en,er,e,\
types_switch = licht,nachtlicht,eule,lampe\
types_heating = heizung\
sub averageTemp($)
{
my ($room) = @_;
my @tempDevices = devspec2array('T2F_rooms=.*'.$room.'.*:FILTER=measured-temp=\d+.*');
my $count = 0;
my $measuredTemp = 0;
if (@tempDevices > 0 and defined($defs{$tempDevices[0]})){
foreach (@tempDevices){
$measuredTemp = $measuredTemp + ReadingsVal($_, "measured-temp", "");
$count = $count + 1;
}
return $measuredTemp / $count;
}
return 0;
}
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
defmod talk Talk2Fhem (@article)?( )?(@article)?( )?(@properties)?(@endings)?( )?(@types)(@endings)?( )?(@article)?( )?(@article)?( )?(@rooms)?( )?(@article)?( )?(@article)?( )?(@places)?( )?(\S+) =
(cmd => 'set T2F_types=.*$8.*
:FILTER=T2F_rooms=.*$15.*
:FILTER=T2F_properties=.*$5.*
:FILTER=T2F_places=.*$21.* $23{true=>on, false=>off}'
,answer => '"Gern, ich habe $1 $2 $3 $4 $5$6 $7 $8$9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $23{true=>eingeschaltet, false=>ausgeschaltet}"')
Zitat von: Phill am 19 Januar 2018, 23:28:43Das finde ich gut, das erleichtert die ganze Zählerei ;D
Ich wollte nur kurz auf deine definition von talk eingehen, da du diese etwas übersichtlicher schreiben kannst. Ab dem "=" kannst du nämlich Zeilenumbrüche einfügen. Nur zum Beispiel:Code Auswählen
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
defmod talk Talk2Fhem (@article)?( )?(@article)?( )?(@properties)?(@endings)?( )?(@types)(@endings)?( )?(@article)?( )?(@article)?( )?(@rooms)?( )?(@article)?( )?(@article)?( )?(@places)?( )?(\S+) =
Zitat von: Phill am 19 Januar 2018, 23:28:43Das Problem ist, dass bei "in der Küche" zwei Artikel und damit zwei Leerzeichen sind und bei "im Esszimmer" nur ein Artikel mit einem Leerzeichen. Wenn ich die Fragezeichen beim Leerzeichen weglasse, wären auch bei "im Esszimmer" zwei Leerezichen drin und der Satz wird nicht erkannt (zumindest nach meiner Erfahrung) und ich war mit nicht sicher, ob ich ein Leerzeichen und ein Fragezeichen ohne die Klammern schreiben kann. Am einfachsten wäre es natürlich, wenn alle doppelten Leerzeichen vor der Erkennung entfernt würden, dann könnte ich auf die Klammerung und die Fragezeichen verzichten...
Warum klammerst du die leerzeichen genau?
Zitat von: Phill am 19 Januar 2018, 23:28:43Ich freue mich auf zukünftige Erweiterungen :) und auf die Reaktion meines Vaters, falls ich es dank Talk2Fhem schaffe, alles so einzurichten, dass er seine Smartwatch nach dem Zustand der Haustür fragen kann ;D.
Ich bin gerade noch dabei eine Möglichkeit zu implementieren die Reihenfolge der RegExp's variable zu gestalten. Damit würde dann "schalte das licht im Haus aus" genauso funktionieren wie "schalte im haus das licht aus".
Das geht in der oben angehängten Datei schon folgendermaßen mit dem Operator &&:
<regexp> && <regexp> && <regexp> && ...
Allerdings werden momentan nur die Klammern des letzten <regexp> berücksichtigt. Da bin ich gerade noch dran.
(ein) && (schalte)\S* = $2 $1
Zitat von: RoBra81 am 19 Januar 2018, 22:24:08Mhhh, mit devspec2array bekommst du anhand des Filters alle Geräte in einen Array. Hilft das?
Folgende Punkte sollten beachtet werden bzw. sind noch nicht ganz ausgereift:
- ist der Detaillierungsgrad zu gering werden anders als bei z.B. Alexa ohne Rückfrage alle passenden Lampen geschaltet => evtl. möchte ich in der Antwort noch alle geschalteten Geräte auflisten
Zitat von: RoBra81 am 19 Januar 2018, 22:24:08Hierfür kannst du jetzt die Variable $AGAIN verwenden. Also so in der Art.
- die Antwort bei "schalte ein und in 5 Minuten wieder aus" ist suboptimal
answer => '"$AGAIN" ? "" : "Gern, ich schalte $DATE $1 $2 $3 $4 $5$6 $7 $8$9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $23{true=>ein, false=>aus}"'
Zitat von: RoBra81 am 19 Januar 2018, 22:24:08Ich habe mal die Zeile auskommentiert wo das Kommando in Kleinbuchstaben umgewandelt wird, müsste mal getestet werden ob das Probleme macht. Aber generell sind die Filter in FHEM immer Groß-Klein intolerant? Und die Vergleiche in Talk2Fhem immer Groß-Klein tolerant.
- die Werte in den T2F-Attributen müssen klein geschrieben werden, damit die Filter funktionieren
Zitat von: Phill am 21 Januar 2018, 14:11:10Wie muss ich mir das mit dem && vorstellen? Wie muss die Logik aussehen, wenn ich die Sätze
- Einführung des Operanden &&: <regexp> && <regexp> && ...
Hiermit werden die einzelnen <regexp> im Sprachkommando gesucht. Das hilft dabei wenn die Reihenfolge der Wörter nicht ganz bekannt ist.
Schalte das Licht im Esszimmer an der Decke aus
Schalte das Licht an der Decke im Esszimmer aus
Das grosse Licht im Esszimmer ausschalten
(@properties)? && (@types_switch) && (@rooms)? && (@places)? (\S+)(schalten)?
Zitat von: Phill am 21 Januar 2018, 14:11:10
Ich habe mal die Zeile auskommentiert wo das Kommando in Kleinbuchstaben umgewandelt wird, müsste mal getestet werden ob das Probleme macht. Aber generell sind die Filter in FHEM immer Groß-Klein intolerant? Und die Vergleiche in Talk2Fhem immer Groß-Klein tolerant.
2018.01.22 09:55:42.757 3: Decoding Text: Schalte das Licht im Esszimmer über dem Tisch an
2018.01.22 09:55:42.761 5: Using lists:
$VAR1 = 'ending';
$VAR2 = [
'en',
'er',
'e',
''
];
$VAR3 = 'places';
$VAR4 = [
'vorne',
'vorn',
'steckdose',
'tür',
'tisch',
'esstisch',
'decke'
];
$VAR5 = 'types_heating';
$VAR6 = [
'heizung'
];
$VAR7 = 'rooms';
$VAR8 = [
'esszimmer',
'obergeschoss',
'kinderschlafzimmer',
'haus',
'küche'
];
$VAR9 = 'article';
$VAR10 = [
'im',
'in',
'der',
'die',
'das',
'den',
'dem',
'an',
'am',
'über',
'auf',
'unter',
'alle'
];
$VAR11 = 'properties';
$VAR12 = [
'gross',
'hell',
'groß'
];
$VAR13 = 'types_switch';
$VAR14 = [
'licht',
'nachtlicht',
'eule',
'lampe'
];
0
2018.01.22 09:55:42.762 5: Using User Filter: 0
2018.01.22 09:55:42.762 4: Command part: 'Schalte das Licht im Esszimmer über dem Tisch an'
2018.01.22 09:55:42.764 5: get_time_by_phrase. Using eventtime: Mon Jan 22 09:55:42 2018 now: Mon Jan 22 09:55:42 2018 command: Schalte das Licht im Esszimmer über dem Tisch an
2018.01.22 09:55:42.769 5: get_time_by_phrase. Using eventtime: Mon Jan 22 09:55:42 2018 now: Mon Jan 22 09:55:42 2018 command: Schalte das Licht im Esszimmer über dem Tisch an
2018.01.22 09:55:42.773 4: Extracted Timephrase. ''
2018.01.22 09:55:42.774 5: Commandpart after datedecoding. 'Schalte das Licht im Esszimmer über dem Tisch an'
2018.01.22 09:55:42.777 5: Splited Phrase at (&&)!
$VAR1 = '(@properties)?';
$VAR2 = '(@types_switch)';
$VAR3 = '(@rooms)?';
$VAR4 = '(@places)? (\\S+)(schalten)?';
0
2018.01.22 09:55:42.779 5: Insert Lists
$VAR1 = '(gross|hell|gro\\S\\S?)?';
$VAR2 = '(licht|nachtlicht|eule|lampe)';
$VAR3 = '(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)?';
$VAR4 = '(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)? (\\S+)(schalten)?';
0
2018.01.22 09:55:42.780 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
0
2018.01.22 09:55:42.780 5: talk Evaluate search:
Schalte das Licht im Esszimmer über dem Tisch an =~ /(@properties)? && (@types_switch) && (@rooms)? && (@places)? (\S+)(schalten)?/i
2018.01.22 09:55:42.785 5: DIR
$VAR1 = undef;
$VAR2 = 'Licht';
$VAR3 = undef;
$VAR4 = undef;
$VAR5 = 'das';
$VAR6 = undef;
0
2018.01.22 09:55:42.785 5: Match: Licht das
2018.01.22 09:55:42.786 5: Unmatch: Schalte im über dem Tisch an
2018.01.22 09:55:42.786 4: Hit with phrase: qr/(@properties)? && (@types_switch) && (@rooms)? && (@places)? (\S+)(schalten)?/i
2018.01.22 09:55:42.786 5: Handle reaction cmd: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}
2018.01.22 09:55:42.787 5: Simple bracket selection (No. 2): 'Licht'
2018.01.22 09:55:42.788 5: Simple bracket selection (No. 3): ''
2018.01.22 09:55:42.789 5: Simple bracket selection (No. 1): ''
2018.01.22 09:55:42.790 5: Simple bracket selection (No. 4): ''
2018.01.22 09:55:42.791 4: Replaced bracket: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off} -> set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* $5{true=>on, false=>off}
2018.01.22 09:55:42.791 4: Advanced bracket replacement. $5true=>on, false=>off = set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* ###
2018.01.22 09:55:42.794 4: Keyword: 'das'
2018.01.22 09:55:42.795 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
0
2018.01.22 09:55:42.797 1: HASH Replacement Failed! set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* ###
2018.01.22 09:55:42.798 1: Error on Command: 'Schalte das Licht im Esszimmer über dem Tisch an'
(@properties)? && (@types_switch) && (@rooms)? && (@places)? (\S+)(schalten)?$
Zitat(@properties)? && (@types_switch) && (@rooms)? && (@places)? && (\S+)(schalten)?$
Zitat von: Phill am 22 Januar 2018, 10:34:21
Laut Konfiguration wird der Schaltzustand nach dem Raum erwartet. Man könnte definieren das der Schaltzustand immer am Schluss stehen müsste.Code Auswählen(@properties)? && (@types_switch) && (@rooms)? && (@places)? && (\S+)(schalten)?$
(@properties)? && (@types_switch) && (@rooms) && (@places) && (\S+)(schalten)?$ = (cmd=>'set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}', answer=>'"Antwort: $& - !$&"')
Schalte das helle Licht im Esszimmer über dem tisch an
set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*tisch.* on
Antwort: LichtEsszimmertischan - Schalte das e im über dem
2018.01.22 10:56:11.519 3: Decoding Text: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.22 10:56:11.522 5: Using lists:
$VAR1 = 'ending';
$VAR2 = [
'en',
'er',
'e',
''
];
$VAR3 = 'places';
$VAR4 = [
'vorne',
'vorn',
'steckdose',
'tür',
'tisch',
'esstisch',
'decke'
];
$VAR5 = 'types_heating';
$VAR6 = [
'heizung'
];
$VAR7 = 'rooms';
$VAR8 = [
'esszimmer',
'obergeschoss',
'kinderschlafzimmer',
'haus',
'küche'
];
$VAR9 = 'article';
$VAR10 = [
'im',
'in',
'der',
'die',
'das',
'den',
'dem',
'an',
'am',
'über',
'auf',
'unter',
'alle'
];
$VAR11 = 'properties';
$VAR12 = [
'gross',
'hell',
'groß'
];
$VAR13 = 'types_switch';
$VAR14 = [
'licht',
'nachtlicht',
'eule',
'lampe'
];
0
2018.01.22 10:56:11.522 5: Using User Filter: 0
2018.01.22 10:56:11.523 4: Command part: 'Schalte das helle Licht im Esszimmer über dem tisch an'
2018.01.22 10:56:11.524 5: get_time_by_phrase. Using eventtime: Mon Jan 22 10:56:11 2018 now: Mon Jan 22 10:56:11 2018 command: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.22 10:56:11.536 5: get_time_by_phrase. Using eventtime: Mon Jan 22 10:56:11 2018 now: Mon Jan 22 10:56:11 2018 command: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.22 10:56:11.548 4: Extracted Timephrase. ''
2018.01.22 10:56:11.548 5: Commandpart after datedecoding. 'Schalte das helle Licht im Esszimmer über dem tisch an'
2018.01.22 10:56:11.551 5: Splited Phrase at (&&)!
$VAR1 = '(@properties)?';
$VAR2 = '(@types_switch)';
$VAR3 = '(@rooms)';
$VAR4 = '(@places)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.22 10:56:11.553 5: Insert Lists
$VAR1 = '(gross|hell|gro\\S\\S?)?';
$VAR2 = '(licht|nachtlicht|eule|lampe)';
$VAR3 = '(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)';
$VAR4 = '(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.22 10:56:11.564 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
0
2018.01.22 10:56:11.565 5: talk Evaluate search:
Schalte das helle Licht im Esszimmer über dem tisch an =~ /(@properties)? && (@types_switch) && (@rooms) && (@places) && (\S+)(schalten)?$/i
2018.01.22 10:56:11.569 5: DIR
$VAR1 = undef;
$VAR2 = 'Licht';
$VAR3 = 'Esszimmer';
$VAR4 = 'tisch';
$VAR5 = 'an';
$VAR6 = undef;
0
2018.01.22 10:56:11.569 5: Match: LichtEsszimmertischan
2018.01.22 10:56:11.570 5: Unmatch: Schalte das e im über dem
2018.01.22 10:56:11.570 4: Hit with phrase: qr/(@properties)? && (@types_switch) && (@rooms) && (@places) && (\S+)(schalten)?$/i
2018.01.22 10:56:11.571 5: Handle reaction answer: "Antwort: $& - !$&"
2018.01.22 10:56:11.571 4: Replaced bracket: "Antwort: $& - !$&" -> "Antwort: LichtEsszimmertischan - Schalte das e im über dem"
2018.01.22 10:56:11.572 3: Answer eval: "Antwort: LichtEsszimmertischan - Schalte das e im über dem"
2018.01.22 10:56:11.572 3: Answer result: Antwort: LichtEsszimmertischan - Schalte das e im über dem
2018.01.22 10:56:11.573 5: Handle reaction cmd: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}
2018.01.22 10:56:11.573 5: Simple bracket selection (No. 2): 'Licht'
2018.01.22 10:56:11.574 5: Simple bracket selection (No. 3): 'Esszimmer'
2018.01.22 10:56:11.575 5: Simple bracket selection (No. 1): ''
2018.01.22 10:56:11.576 5: Simple bracket selection (No. 4): 'tisch'
2018.01.22 10:56:11.576 4: Replaced bracket: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off} -> set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*tisch.* $5{true=>on, false=>off}
2018.01.22 10:56:11.592 4: Advanced bracket replacement. $5true=>on, false=>off = set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*tisch.* ###
2018.01.22 10:56:11.597 4: Keyword: 'an'
2018.01.22 10:56:11.598 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
0
2018.01.22 10:56:11.599 5: Word found (true): 'an' replace with 'on'
2018.01.22 10:56:11.600 3: Text converted to: set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*tisch.* on
#!/usr/bin/perl -w
use Data::Dumper;
my $txt = "abc def ghi jkl mnop";
if (my @d = ($txt =~ /(abc)?/i)) {
print "Klappt ".Dumper(@d);
}
if (@d = ($txt =~ /(def)?/i)){
print "Klappt nicht ".Dumper(@d);
}
if (@d = ($txt =~ /\s(def)?/i)){
print "Klappt ".Dumper(@d);
}
\s(@properties)? && (@types_switch) && (@rooms) && (@places) && (\S+)(schalten)?$
/(was auch immer)?/
einfach nicht funktioniert, da es (ich nenne es jetzt mal einfach) zu optional ist.?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$
?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$ = (cmd=>'set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}', answer=>'"Antwort: $& - !$&"')
2018.01.23 07:17:37.797 3: Decoding Text: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.23 07:17:37.801 5: Using lists:
$VAR1 = 'places';
$VAR2 = [
'vorne',
'vorn',
'steckdose',
'tür',
'tisch',
'esstisch',
'decke'
];
$VAR3 = 'rooms';
$VAR4 = [
'esszimmer',
'obergeschoss',
'kinderschlafzimmer',
'haus',
'küche'
];
$VAR5 = 'ending';
$VAR6 = [
'en',
'er',
'e',
''
];
$VAR7 = 'types_heating';
$VAR8 = [
'heizung'
];
$VAR9 = 'types_switch';
$VAR10 = [
'licht',
'nachtlicht',
'eule',
'lampe'
];
$VAR11 = 'article';
$VAR12 = [
'im',
'in',
'der',
'die',
'das',
'den',
'dem',
'an',
'am',
'über',
'auf',
'unter',
'alle'
];
$VAR13 = 'properties';
$VAR14 = [
'gross',
'hell',
'groß'
];
0
2018.01.23 07:17:37.802 5: Using User Filter: 0
2018.01.23 07:17:37.802 4: Command part: 'Schalte das helle Licht im Esszimmer über dem tisch an'
2018.01.23 07:17:37.805 5: get_time_by_phrase. Using eventtime: Tue Jan 23 07:17:37 2018 now: Tue Jan 23 07:17:37 2018 command: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.23 07:17:37.810 5: get_time_by_phrase. Using eventtime: Tue Jan 23 07:17:37 2018 now: Tue Jan 23 07:17:37 2018 command: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.23 07:17:37.814 4: Extracted Timephrase. ''
2018.01.23 07:17:37.815 5: Commandpart after datedecoding. 'Schalte das helle Licht im Esszimmer über dem tisch an'
2018.01.23 07:17:37.818 5: Splited Phrase at (&&)!
$VAR1 = '?(@properties)';
$VAR2 = '(@types_switch)';
$VAR3 = '?(@rooms)';
$VAR4 = '?(@places)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.23 07:17:37.820 5: Insert Lists
$VAR1 = '?(gross|hell|gro\\S\\S?)';
$VAR2 = '(licht|nachtlicht|eule|lampe)';
$VAR3 = '?(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)';
$VAR4 = '?(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.23 07:17:37.821 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
0
2018.01.23 07:17:37.821 5: talk Evaluate search:
Schalte das helle Licht im Esszimmer über dem tisch an =~ /?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 07:17:37.822 1: TESTE: (gross|hell|gro\S\S?)
2018.01.23 07:17:37.823 1: ZEIGE: $VAR1 = 'hell';
0
2018.01.23 07:17:37.824 1: CMD: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.23 07:17:37.825 1: TESTE: (esszimmer|obergeschoss|kinderschlafzimmer|haus|k\S\S?che)
2018.01.23 07:17:37.826 1: ZEIGE: $VAR1 = 'Esszimmer';
0
2018.01.23 07:17:37.827 1: CMD: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.23 07:17:37.827 1: TESTE: (vorne|vorn|steckdose|t\S\S?r|tisch|esstisch|decke)
2018.01.23 07:17:37.829 1: ZEIGE: $VAR1 = 'tisch';
0
2018.01.23 07:17:37.829 1: CMD: Schalte das helle Licht im Esszimmer über dem tisch an
2018.01.23 07:17:37.830 5: DIR
$VAR1 = 'hell';
$VAR2 = 'Licht';
$VAR3 = 'Esszimmer';
$VAR4 = 'tisch';
$VAR5 = 'an';
$VAR6 = undef;
0
2018.01.23 07:17:37.831 5: Match: Lichtan
2018.01.23 07:17:37.831 5: Unmatch: Schalte das helle im Esszimmer über dem tisch
2018.01.23 07:17:37.831 4: Hit with phrase: qr/?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 07:17:37.832 5: Handle reaction answer: "Antwort: $& - !$&"
2018.01.23 07:17:37.833 4: Replaced bracket: "Antwort: $& - !$&" -> "Antwort: Lichtan - Schalte das helle im Esszimmer über dem tisch"
2018.01.23 07:17:37.833 3: Answer eval: "Antwort: Lichtan - Schalte das helle im Esszimmer über dem tisch"
2018.01.23 07:17:37.834 3: Answer result: Antwort: Lichtan - Schalte das helle im Esszimmer über dem tisch
2018.01.23 07:17:37.834 5: Handle reaction cmd: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}
2018.01.23 07:17:37.835 5: Simple bracket selection (No. 2): 'Licht'
2018.01.23 07:17:37.836 5: Simple bracket selection (No. 3): 'Esszimmer'
2018.01.23 07:17:37.836 5: Simple bracket selection (No. 1): 'hell'
2018.01.23 07:17:37.837 5: Simple bracket selection (No. 4): 'tisch'
2018.01.23 07:17:37.837 4: Replaced bracket: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off} -> set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*hell.*:FILTER=T2F_places=.*tisch.* $5{true=>on, false=>off}
2018.01.23 07:17:37.838 4: Advanced bracket replacement. $5true=>on, false=>off = set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*hell.*:FILTER=T2F_places=.*tisch.* ###
2018.01.23 07:17:37.841 4: Keyword: 'an'
2018.01.23 07:17:37.842 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
0
2018.01.23 07:17:37.844 5: Word found (true): 'an' replace with 'on'
2018.01.23 07:17:37.845 3: Text converted to: set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*hell.*:FILTER=T2F_places=.*tisch.* on
2018.01.23 07:20:19.300 3: Decoding Text: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 07:20:19.303 5: Using lists:
$VAR1 = 'places';
$VAR2 = [
'vorne',
'vorn',
'steckdose',
'tür',
'tisch',
'esstisch',
'decke'
];
$VAR3 = 'rooms';
$VAR4 = [
'esszimmer',
'obergeschoss',
'kinderschlafzimmer',
'haus',
'küche'
];
$VAR5 = 'ending';
$VAR6 = [
'en',
'er',
'e',
''
];
$VAR7 = 'types_heating';
$VAR8 = [
'heizung'
];
$VAR9 = 'types_switch';
$VAR10 = [
'licht',
'nachtlicht',
'eule',
'lampe'
];
$VAR11 = 'article';
$VAR12 = [
'im',
'in',
'der',
'die',
'das',
'den',
'dem',
'an',
'am',
'über',
'auf',
'unter',
'alle'
];
$VAR13 = 'properties';
$VAR14 = [
'gross',
'hell',
'groß'
];
0
2018.01.23 07:20:19.304 5: Using User Filter: 0
2018.01.23 07:20:19.304 4: Command part: 'Schalte das Licht im Esszimmer über dem tisch an'
2018.01.23 07:20:19.306 5: get_time_by_phrase. Using eventtime: Tue Jan 23 07:20:19 2018 now: Tue Jan 23 07:20:19 2018 command: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 07:20:19.320 5: get_time_by_phrase. Using eventtime: Tue Jan 23 07:20:19 2018 now: Tue Jan 23 07:20:19 2018 command: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 07:20:19.325 4: Extracted Timephrase. ''
2018.01.23 07:20:19.326 5: Commandpart after datedecoding. 'Schalte das Licht im Esszimmer über dem tisch an'
2018.01.23 07:20:19.330 5: Splited Phrase at (&&)!
$VAR1 = '?(@properties)';
$VAR2 = '(@types_switch)';
$VAR3 = '?(@rooms)';
$VAR4 = '?(@places)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.23 07:20:19.332 5: Insert Lists
$VAR1 = '?(gross|hell|gro\\S\\S?)';
$VAR2 = '(licht|nachtlicht|eule|lampe)';
$VAR3 = '?(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)';
$VAR4 = '?(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.23 07:20:19.333 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
0
2018.01.23 07:20:19.333 5: talk Evaluate search:
Schalte das Licht im Esszimmer über dem tisch an =~ /?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 07:20:19.334 1: TESTE: (gross|hell|gro\S\S?)
2018.01.23 07:20:19.335 1: ZEIGE:
2018.01.23 07:20:19.336 1: CMD: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 07:20:19.337 1: TESTE: (esszimmer|obergeschoss|kinderschlafzimmer|haus|k\S\S?che)
2018.01.23 07:20:19.339 1: ZEIGE: $VAR1 = 'Esszimmer';
0
2018.01.23 07:20:19.339 1: CMD: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 07:20:19.340 1: TESTE: (vorne|vorn|steckdose|t\S\S?r|tisch|esstisch|decke)
2018.01.23 07:20:19.341 1: ZEIGE: $VAR1 = 'tisch';
0
2018.01.23 07:20:19.342 1: CMD: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 07:20:19.343 5: DIR
$VAR1 = 'Licht';
$VAR2 = 'Esszimmer';
$VAR3 = 'tisch';
$VAR4 = 'an';
$VAR5 = undef;
0
2018.01.23 07:20:19.344 5: Match: Lichtan
2018.01.23 07:20:19.344 5: Unmatch: Schalte das im Esszimmer über dem tisch
2018.01.23 07:20:19.345 4: Hit with phrase: qr/?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 07:20:19.345 5: Handle reaction cmd: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}
2018.01.23 07:20:19.346 5: Simple bracket selection (No. 2): 'Esszimmer'
2018.01.23 07:20:19.347 5: Simple bracket selection (No. 3): 'tisch'
2018.01.23 07:20:19.347 5: Simple bracket selection (No. 1): 'Licht'
2018.01.23 07:20:19.348 5: Simple bracket selection (No. 4): 'an'
2018.01.23 07:20:19.349 4: Replaced bracket: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off} -> set T2F_types_switch=.*Esszimmer.*:FILTER=T2F_rooms=.*tisch.*:FILTER=T2F_properties=.*Licht.*:FILTER=T2F_places=.*an.* $5{true=>on, false=>off}
2018.01.23 07:20:19.349 4: Advanced bracket replacement. $5true=>on, false=>off = set T2F_types_switch=.*Esszimmer.*:FILTER=T2F_rooms=.*tisch.*:FILTER=T2F_properties=.*Licht.*:FILTER=T2F_places=.*an.* ###
2018.01.23 07:20:19.353 4: Keyword: ''
2018.01.23 07:20:19.355 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
0
2018.01.23 07:20:19.355 1: HASH Replacement Failed! set T2F_types_switch=.*Esszimmer.*:FILTER=T2F_rooms=.*tisch.*:FILTER=T2F_properties=.*Licht.*:FILTER=T2F_places=.*an.* ###
2018.01.23 07:20:19.356 1: Error on Command: 'Schalte das Licht im Esszimmer über dem tisch an'
ZitatEDIT: noch eine Anmerkung/Idee/Wunsch zur Groß- und Kleinschreibung: wäre es möglich, bei einer gefundenen Übereinstimmung mit einem Listeneintrag nicht das Wort aus dem Sprachbefehl sondern das aus der Liste für das Zusammenbauen des Kommandos zu nutzen? Bei der Liste bin ich mir sicher, dass die Schreibweise (groß/klein) mit meinen Attributen überein stimmt...Ja macht Sinn, ist aber nicht ganz so trivial, da die Liste ja eigentlich RegExp's enthält, und dann würde er auch diese nehmen... Müsste halt vorher testen ob es nur aus Buchstaben besteht, schau es mir mal an.
2018.01.23 10:06:12.475 5: Talk2Fhem Version: 0.2.1e
2018.01.23 10:06:12.476 3: Decoding Text: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 10:06:12.479 5: Using lists:
$VAR1 = 'places';
$VAR2 = [
'vorne',
'vorn',
'steckdose',
'tür',
'tisch',
'esstisch',
'decke'
];
$VAR3 = 'article';
$VAR4 = [
'im',
'in',
'der',
'die',
'das',
'den',
'dem',
'an',
'am',
'über',
'auf',
'unter',
'alle'
];
$VAR5 = 'ending';
$VAR6 = [
'en',
'er',
'e',
''
];
$VAR7 = 'properties';
$VAR8 = [
'gross',
'hell',
'groß'
];
$VAR9 = 'types_switch';
$VAR10 = [
'licht',
'nachtlicht',
'eule',
'lampe'
];
$VAR11 = 'rooms';
$VAR12 = [
'esszimmer',
'obergeschoss',
'kinderschlafzimmer',
'haus',
'küche'
];
$VAR13 = 'types_heating';
$VAR14 = [
'heizung'
];
0
2018.01.23 10:06:12.479 5: Using User Filter: 0
2018.01.23 10:06:12.480 4: Command part: 'Schalte das Licht im Esszimmer über dem tisch an'
2018.01.23 10:06:12.481 5: get_time_by_phrase. Using eventtime: Tue Jan 23 10:06:12 2018 now: Tue Jan 23 10:06:12 2018 command: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 10:06:12.488 5: get_time_by_phrase. Using eventtime: Tue Jan 23 10:06:12 2018 now: Tue Jan 23 10:06:12 2018 command: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 10:06:12.498 4: Extracted Timephrase. ''
2018.01.23 10:06:12.499 5: Commandpart after datedecoding. 'Schalte das Licht im Esszimmer über dem tisch an'
2018.01.23 10:06:12.502 5: talk Evaluate search:
Schalte das Licht im Esszimmer über dem tisch an =~ /?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 10:06:12.506 5: Command after Phrasecheck: Schalte das Licht im Esszimmer über dem tisch an
2018.01.23 10:06:12.507 5: Insert Lists
$VAR1 = '(gross|hell|gro\\S\\S?)';
$VAR2 = '(licht|nachtlicht|eule|lampe)';
$VAR3 = '(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)';
$VAR4 = '(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)';
$VAR5 = '(\\S+)(schalten)?$';
0
2018.01.23 10:06:12.508 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
0
2018.01.23 10:06:12.509 5: DIR
$VAR1 = 'Licht';
$VAR2 = 'Esszimmer';
$VAR3 = 'tisch';
$VAR4 = 'an';
$VAR5 = undef;
0
2018.01.23 10:06:12.510 5: Match: LichtEsszimmertischan
2018.01.23 10:06:12.510 5: Unmatch: Schalte das im über dem
2018.01.23 10:06:12.511 4: Hit with phrase: qr/?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 10:06:12.511 5: Handle reaction cmd: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off}
2018.01.23 10:06:12.512 5: Simple bracket selection (No. 2): 'Esszimmer'
2018.01.23 10:06:12.513 5: Simple bracket selection (No. 3): 'tisch'
2018.01.23 10:06:12.514 5: Simple bracket selection (No. 1): 'Licht'
2018.01.23 10:06:12.515 5: Simple bracket selection (No. 4): 'an'
2018.01.23 10:06:12.516 4: Replaced bracket: set T2F_types_switch=.*$2.*:FILTER=T2F_rooms=.*$3.*:FILTER=T2F_properties=.*$1.*:FILTER=T2F_places=.*$4.* $5{true=>on, false=>off} -> set T2F_types_switch=.*Esszimmer.*:FILTER=T2F_rooms=.*tisch.*:FILTER=T2F_properties=.*Licht.*:FILTER=T2F_places=.*an.* $5{true=>on, false=>off}
2018.01.23 10:06:12.516 4: Advanced bracket replacement. $5true=>on, false=>off = set T2F_types_switch=.*Esszimmer.*:FILTER=T2F_rooms=.*tisch.*:FILTER=T2F_properties=.*Licht.*:FILTER=T2F_places=.*an.* ###
2018.01.23 10:06:12.520 4: Keyword: ''
2018.01.23 10:06:12.522 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
0
2018.01.23 10:06:12.522 1: HASH Replacement Failed! set T2F_types_switch=.*Esszimmer.*:FILTER=T2F_rooms=.*tisch.*:FILTER=T2F_properties=.*Licht.*:FILTER=T2F_places=.*an.* ###
2018.01.23 10:06:12.523 1: Error on Command: 'Schalte das Licht im Esszimmer über dem tisch an'
Zitat von: Phill am 23 Januar 2018, 10:47:22
Ok aber jetzt auf jeden fall.
Hoffe ich. ;)
Zitat von: Phill am 21 Januar 2018, 14:11:10
Neues Attribut T2F_filter: enthält kommaseperierte Liste mit Wörtern (regexp) die immer ignoriert werden sollen. Standart sind so wörter wie bitte, auch, kann, soll usw.
Zitat von: Phill am 21 Januar 2018, 14:11:10
Ich habe mal die Zeile auskommentiert wo das Kommando in Kleinbuchstaben umgewandelt wird, müsste mal getestet werden ob das Probleme macht.
2018.01.23 12:36:28.430 5: Talk2Fhem Version: 0.2.1f
2018.01.23 12:36:28.430 3: Decoding Text: Schalte das Licht im Esszimmer ein und in 5 minuten wieder aus
2018.01.23 12:36:28.433 5: Using lists:
$VAR1 = 'properties';
$VAR2 = [
'gross',
'hell',
'groß'
];
$VAR3 = 'article';
$VAR4 = [
'im',
'in',
'der',
'die',
'das',
'den',
'dem',
'an',
'am',
'über',
'auf',
'unter',
'alle'
];
$VAR5 = 'rooms';
$VAR6 = [
'esszimmer',
'obergeschoss',
'kinderschlafzimmer',
'haus',
'küche'
];
$VAR7 = 'types_heating';
$VAR8 = [
'heizung'
];
$VAR9 = 'types_switch';
$VAR10 = [
'licht',
'nachtlicht',
'eule',
'lampe'
];
$VAR11 = 'ending';
$VAR12 = [
'en',
'er',
'e',
''
];
$VAR13 = 'places';
$VAR14 = [
'vorne',
'vorn',
'steckdose',
'tür',
'tisch',
'esstisch',
'decke'
];
2018.01.23 12:36:28.434 5: Using User Filter: \bauch\b,\bkann\b,\bsoll\b,\bnach\b,^msgtext:
2018.01.23 12:36:28.434 4: Command part: 'Schalte das Licht im Esszimmer ein'
2018.01.23 12:36:28.435 5: get_time_by_phrase. Using eventtime: Tue Jan 23 12:36:28 2018 now: Tue Jan 23 12:36:28 2018 command: Schalte das Licht im Esszimmer ein
2018.01.23 12:36:28.440 5: get_time_by_phrase. Using eventtime: Tue Jan 23 12:36:28 2018 now: Tue Jan 23 12:36:28 2018 command: Schalte das Licht im Esszimmer ein
2018.01.23 12:36:28.445 4: Extracted Timephrase. ''
2018.01.23 12:36:28.445 5: Commandpart after datedecoding. 'Schalte das Licht im Esszimmer ein'
2018.01.23 12:36:28.450 5: talk Evaluate search:
Schalte das Licht im Esszimmer ein =~ /?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 12:36:28.453 5: Command after Phrasecheck: Schalte das Licht im Esszimmer ein
2018.01.23 12:36:28.454 5: Insert Lists
$VAR1 = '(bitte)';
$VAR2 = '(gross|hell|gro\\S\\S?)';
$VAR3 = '(licht|nachtlicht|eule|lampe)';
$VAR4 = '(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)';
$VAR5 = '(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)';
$VAR6 = '(\\S+)(schalten)?$';
2018.01.23 12:36:28.455 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
2018.01.23 12:36:28.456 5: DIR
$VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'Licht';
$VAR4 = 'Esszimmer';
$VAR5 = undef;
$VAR6 = 'ein';
$VAR7 = undef;
2018.01.23 12:36:28.457 5: Match: LichtEsszimmerein
2018.01.23 12:36:28.457 5: Unmatch: Schalte das im
2018.01.23 12:36:28.457 4: Hit with phrase: qr/?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 12:36:28.458 5: Handle reaction answer: "$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.458 4: Replaced bracket: "$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}" -> "" ? "dann wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.459 4: Advanced bracket replacement. $6true=>ein, false=>aus = "" ? "dann wieder ###" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.461 4: Keyword: 'ein'
2018.01.23 12:36:28.462 5: HASH evaluation:
$VAR1 = {
'false' => 'aus',
'true' => 'ein'
};
2018.01.23 12:36:28.464 5: Word found (true): 'ein' replace with 'ein'
2018.01.23 12:36:28.465 4: Advanced bracket replacement. $1empty=>Das heißt Bitte, else=>Gern = "" ? "dann wieder ein" : "###, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.469 4: Keyword: ''
2018.01.23 12:36:28.470 5: HASH evaluation:
$VAR1 = {
'else' => 'Gern',
'empty' => 'Das heißt Bitte'
};
2018.01.23 12:36:28.471 5: Empty word replace with 'Das heißt Bitte'
2018.01.23 12:36:28.472 4: Advanced bracket replacement. $1empty=>trotzdem = "" ? "dann wieder ein" : "Das heißt Bitte, Ich schalte ### $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.475 4: Keyword: ''
2018.01.23 12:36:28.476 5: HASH evaluation:
$VAR1 = {
'empty' => 'trotzdem'
};
2018.01.23 12:36:28.477 5: Empty word replace with 'trotzdem'
2018.01.23 12:36:28.478 4: Advanced bracket replacement. $6true=>ein, false=>aus = "" ? "dann wieder ein" : "Das heißt Bitte, Ich schalte trotzdem ###"
2018.01.23 12:36:28.481 4: Keyword: 'ein'
2018.01.23 12:36:28.482 5: HASH evaluation:
$VAR1 = {
'false' => 'aus',
'true' => 'ein'
};
2018.01.23 12:36:28.483 5: Word found (true): 'ein' replace with 'ein'
2018.01.23 12:36:28.483 3: Answer eval: "" ? "dann wieder ein" : "Das heißt Bitte, Ich schalte trotzdem ein"
2018.01.23 12:36:28.484 3: Answer result: Das heißt Bitte, Ich schalte trotzdem ein
2018.01.23 12:36:28.485 5: Handle reaction cmd: set T2F_types_switch=.*$3.*:FILTER=T2F_rooms=.*$4.*:FILTER=T2F_properties=.*$2.*:FILTER=T2F_places=.*$5.* $6{true=>on, false=>off}
2018.01.23 12:36:28.485 5: Simple bracket selection (No. 3): 'Licht'
2018.01.23 12:36:28.486 5: Simple bracket selection (No. 4): 'Esszimmer'
2018.01.23 12:36:28.488 5: Simple bracket selection (No. 2): ''
2018.01.23 12:36:28.489 5: Simple bracket selection (No. 5): ''
2018.01.23 12:36:28.491 4: Replaced bracket: set T2F_types_switch=.*$3.*:FILTER=T2F_rooms=.*$4.*:FILTER=T2F_properties=.*$2.*:FILTER=T2F_places=.*$5.* $6{true=>on, false=>off} -> set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* $6{true=>on, false=>off}
2018.01.23 12:36:28.491 4: Advanced bracket replacement. $6true=>on, false=>off = set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* ###
2018.01.23 12:36:28.495 4: Keyword: 'ein'
2018.01.23 12:36:28.496 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
2018.01.23 12:36:28.498 5: Word found (true): 'ein' replace with 'on'
2018.01.23 12:36:28.499 3: Text converted to: set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on
2018.01.23 12:36:28.499 4: Command part: 'in 5 minuten wieder aus'
2018.01.23 12:36:28.500 5: get_time_by_phrase. Using eventtime: Tue Jan 23 12:36:28 2018 now: Tue Jan 23 12:36:28 2018 command: in 5 minuten wieder aus
2018.01.23 12:36:28.505 5: get_time_by_phrase. Using eventtime: Tue Jan 23 12:36:28 2018 now: Tue Jan 23 12:36:28 2018 command: in 5 minuten wieder aus
2018.01.23 12:36:28.510 4: Timephrase found: =~ s/\b(in|und|nach)? (\S+) minute.?\b/
2018.01.23 12:36:28.512 5: TIMEPHRASEDATA mod: 'min' raw: '"$2"' result: '5' opt: 'in 5'
2018.01.23 12:36:28.513 4: Extracted Timephrase. 'in 5 minuten '
2018.01.23 12:36:28.513 5: Commandpart after datedecoding. ' wieder aus'
2018.01.23 12:36:28.516 4: Eventtime found: Tue Jan 23 12:41:28 2018
2018.01.23 12:36:28.517 4: Word again with direction (aus) found. Using last command. ?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$
2018.01.23 12:36:28.520 5: talk Evaluate search:
Schalte das Licht im Esszimmer ein =~ /?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 12:36:28.523 5: Command after Phrasecheck: Schalte das Licht im Esszimmer ein
2018.01.23 12:36:28.525 5: Insert Lists
$VAR1 = '(bitte)';
$VAR2 = '(gross|hell|gro\\S\\S?)';
$VAR3 = '(licht|nachtlicht|eule|lampe)';
$VAR4 = '(esszimmer|obergeschoss|kinderschlafzimmer|haus|k\\S\\S?che)';
$VAR5 = '(vorne|vorn|steckdose|t\\S\\S?r|tisch|esstisch|decke)';
$VAR6 = '(\\S+)(schalten)?$';
2018.01.23 12:36:28.526 5: keylists
$VAR1 = undef;
$VAR2 = 'properties';
$VAR3 = 'types_switch';
$VAR4 = 'rooms';
$VAR5 = 'places';
2018.01.23 12:36:28.527 5: DIR
$VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'Licht';
$VAR4 = 'Esszimmer';
$VAR5 = undef;
$VAR6 = 'ein';
$VAR7 = undef;
2018.01.23 12:36:28.528 5: Match: LichtEsszimmerein
2018.01.23 12:36:28.528 5: Unmatch: Schalte das im
2018.01.23 12:36:28.529 4: Hit with phrase: qr/?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$/i
2018.01.23 12:36:28.529 5: Handle reaction cmd: set T2F_types_switch=.*$3.*:FILTER=T2F_rooms=.*$4.*:FILTER=T2F_properties=.*$2.*:FILTER=T2F_places=.*$5.* $6{true=>on, false=>off}
2018.01.23 12:36:28.530 5: Simple bracket selection (No. 3): 'Licht'
2018.01.23 12:36:28.531 5: Simple bracket selection (No. 4): 'Esszimmer'
2018.01.23 12:36:28.532 5: Simple bracket selection (No. 2): ''
2018.01.23 12:36:28.535 5: Simple bracket selection (No. 5): ''
2018.01.23 12:36:28.536 4: Replaced bracket: set T2F_types_switch=.*$3.*:FILTER=T2F_rooms=.*$4.*:FILTER=T2F_properties=.*$2.*:FILTER=T2F_places=.*$5.* $6{true=>on, false=>off} -> set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* $6{true=>on, false=>off}
2018.01.23 12:36:28.537 4: Advanced bracket replacement. $6true=>on, false=>off = set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* ###
2018.01.23 12:36:28.540 4: Keyword: 'ein'
2018.01.23 12:36:28.541 5: HASH evaluation:
$VAR1 = {
'false' => 'off',
'true' => 'on'
};
2018.01.23 12:36:28.542 5: Word found (false): 'aus' replace with 'off'
2018.01.23 12:36:28.543 3: Text converted to: set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* off
2018.01.23 12:36:28.543 5: Handle reaction answer: "$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.544 4: Replaced bracket: "$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}" -> "wieder" ? "dann in 5 minuten wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.544 4: Advanced bracket replacement. $6true=>ein, false=>aus = "wieder" ? "dann in 5 minuten wieder ###" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.547 4: Keyword: 'ein'
2018.01.23 12:36:28.548 5: HASH evaluation:
$VAR1 = {
'false' => 'aus',
'true' => 'ein'
};
2018.01.23 12:36:28.549 5: Word found (false): 'aus' replace with 'aus'
2018.01.23 12:36:28.550 4: Advanced bracket replacement. $1empty=>Das heißt Bitte, else=>Gern = "wieder" ? "dann in 5 minuten wieder aus" : "###, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.553 4: Keyword: ''
2018.01.23 12:36:28.554 5: HASH evaluation:
$VAR1 = {
'else' => 'Gern',
'empty' => 'Das heißt Bitte'
};
2018.01.23 12:36:28.554 5: Unkown word 'aus' replace with 'Gern'
2018.01.23 12:36:28.555 4: Advanced bracket replacement. $1empty=>trotzdem = "wieder" ? "dann in 5 minuten wieder aus" : "Gern, Ich schalte ### $6{true=>ein, false=>aus}"
2018.01.23 12:36:28.558 4: Keyword: ''
2018.01.23 12:36:28.559 5: HASH evaluation:
$VAR1 = {
'empty' => 'trotzdem'
};
2018.01.23 12:36:28.560 1: HASH Replacement Failed! "wieder" ? "dann in 5 minuten wieder aus" : "Gern, Ich schalte ### $6{true=>ein, false=>aus}"
?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$ = (cmd=>'set T2F_types_switch=.*$3.*:FILTER=T2F_rooms=.*$4.*:FILTER=T2F_properties=.*$2.*:FILTER=T2F_places=.*$5.* $6{true=>on, false=>off}',
answer=>'"$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{empty=>Das heißt Bitte, else=>Gern}, Ich schalte $1{empty=>trotzdem} $6{true=>ein, false=>aus}"')
$1{empty=>trotzdem}
answer=>'"$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{else=>Das heißt Bitte, /bitte/=>Gern}, Ich schalte $1{/bitte/=>trotzdem,else=>""} $6{true=>ein, false=>aus}"')
Zitatspiele musik wenn ich heim komme8)
wenn es klingelt mach die tür auf
mach die Heizung aus wenn die Temperatur über 40 Grad ist.
mach alles aus wenn ich ins bette gehe
wenn es klingelt = (if=>"[dev_klingel] eq 'pressed'")
wenn && klingel = (if=>"[dev_klingel] eq 'pressed'")
# wenn es klingelt, wenn geklingelt wird, wenn die klingel leutet
wenn die Temperatur (über|unter) (\d+) grad = (if=>'[eg:temperature] $1[>,<] $2')
Server started with 235 defined entities (fhem.pl:16017/2018-01-27 perl:5.020002 os:linux user:fhem pid:15422)
Can't use an undefined value as a HASH reference at ./FHEM/39_Talk2Fhem.pm line 305.
2018.01.31 10:05:10 3: Decoding Text: test
2018.01.31 10:05:10 4: Command part: 'test'
Can't use an undefined value as a HASH reference at ./FHEM/39_Talk2Fhem.pm line 1005.
2018.01.31 12:15:56 3: Decoding Text: Schlafzimmer Licht an
2018.01.31 12:15:56 4: Command part: 'Schlafzimmer Licht an'
2018.01.31 12:15:56 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 12:15:56 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 12:15:56 4: Keyword (1): ''Schlafzimmer'
'
2018.01.31 12:15:56 4: Searching position of Schlafzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 12:15:56 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Schlafzimmer ###
2018.01.31 12:15:56 4: Keyword (4): ''an'
'
2018.01.31 12:15:56 3: Result of cmd: {
'cmd' => 'set Licht_Schlafzimmer on'
}
2018.01.31 12:15:56 1: 'cmds'
[
{
'cmd' => 'set Licht_Schlafzimmer on'
}
]
2018.01.31 12:15:56 1: PERL WARNING: Argument "talk" isn't numeric in numeric gt (>) at fhem.pl line 900.
2018.01.31 12:15:56 talk: 'cmds'
[
{
'cmd' => 'set Licht_Schlafzimmer on'
}
]
2018.01.31 12:15:56 talk: Executing Command: set Licht_Schlafzimmer on
Can't use string ("Alexa") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.
2018.01.31 12:40:26 5: Talk2Fhem Version: 0.3.2e
2018.01.31 12:40:26 3: Decoding Text: Schlafzimmer Licht an
2018.01.31 12:40:26 4: Command part: 'Schlafzimmer Licht an'
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /alles aus/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /alles an/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /schlafzimmer Wecker aus/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) sonos leiser/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) sonos lauter/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) weiter/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) starte meine lieder/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /partymodus an/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /wohnzimmer leiser/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /wohnzimmer lauter/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /schlafzimmer leiser/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /schlafzimmer lauter/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf fernsehen/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(fernsehe.?) (im|in der|auf der) (@rooms)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf (firetv|fire tv)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf laptop/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /laptop (im|in der|auf der) (@rooms)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf playstation/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /playstation (im|in der|auf der) (@rooms)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf wii/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /wii (im|in der|auf der) (@rooms)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) fernseher (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /fernseher (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf (ard|erste)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf (zdf|zweite)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf rtl/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf (sat 1|sat eins)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf prosieben/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf (kabel 1|kabel eins)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf rtl ii/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf vox/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) auf sixx/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /gartenbeleuchtung (\S*)/i
2018.01.31 12:40:26 5: talk Evaluate search:
Schlafzimmer Licht an =~ /(@rooms) (licht|lampe) (\S*)/i
2018.01.31 12:40:26 5: Keylists: undef
'rooms'
2018.01.31 12:40:26 5: Filled lists: '(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
2018.01.31 12:40:26 5: Words: 'Schlafzimmer'
undef
'Licht'
'an'
2018.01.31 12:40:26 5: Match: Schlafzimmer Licht an
2018.01.31 12:40:26 5: Unmatch:
2018.01.31 12:40:26 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 12:40:26 5: Handle reaction cmd: set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 12:40:26 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 12:40:26 4: Keyword (1): ''Schlafzimmer'
'
2018.01.31 12:40:26 5: ARRAY evaluation: else: empty:
array: Wohnzimmer Schlafzimmer Schlafzimmer Garten Terrasse
2018.01.31 12:40:26 4: Searching position of Schlafzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 12:40:26 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Schlafzimmer ###
2018.01.31 12:40:26 4: Keyword (4): ''an'
'
2018.01.31 12:40:26 5: HASH evaluation:
{
'true' => 'on',
'false' => 'off'
}
2018.01.31 12:40:26 5: Word found (true): 'an' replace with 'on'
2018.01.31 12:40:26 3: Result of cmd: {
'cmd' => 'set Licht_Schlafzimmer on'
}
2018.01.31 12:40:26 1: 'cmds'
[
{
'cmd' => 'set Licht_Schlafzimmer on'
}
]
2018.01.31 12:40:26 1: PERL WARNING: Argument "talk" isn't numeric in numeric gt (>) at fhem.pl line 900.
2018.01.31 12:40:26 talk: 'cmds'
[
{
'cmd' => 'set Licht_Schlafzimmer on'
}
]
2018.01.31 12:40:26 talk: Executing Command: set Licht_Schlafzimmer on
Can't use string ("Alexa") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.
Can't use string ("Licht") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.
list talk
define talk Talk2Fhem alles aus = set HomeStatus Schlafen\
alles an = set HomeStatus Zuhause\
\
schlafzimmer fernseher sp.?ter aus = set Hub_Schlafzimmer sleeptimer 20\
schlafzimmer Wecker aus = set Sonos_Schlafzimmer PAUSE ;; set Licht_Schlafzimmer off\
\
\
roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*) = set Rollladen_$3[,,Wohnzimmer,Badezimmer,,,] $4{true=>on, false=>off}\
(@rooms) roll(os?|..?den) (\S*) = set Rollladen_$1[,,Wohnzimmer,Badezimmer,,,] $3{true=>on, false=>off}\
(@rooms) roll(os?|..?den) auf (\S*) % = set Rollladen_$1[,,Wohnzimmer,Badezimmer,,,] pos $3{integer=>$3}\
\
\
(@rooms) (sonos|musik|player) (\S*) = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] $4{true=>PLAY, false=>PAUSE}\
(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*) = set Sonos_$3[,,Wohnzimmer,Bad,Schlafzimmer,,] $5{true=>"PLAY", false=>"PAUSE"}\
(@rooms) sonos leiser = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] VolumeD\
(@rooms) sonos lauter = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] VolumeU\
(@rooms) n.?chste.? (lied|song|titel) = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] NEXT\
(@rooms) weiter = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] NEXT\
(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] StartFavourite Klassiker\
(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] StartFavourite Favoriten\
(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3) = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] StartRadio SWR3\
(@rooms) starte meine lieder = set Sonos_$1[,,Wohnzimmer,Bad,Schlafzimmer,,] StartFavourite Lieder\
partymodus an = set Sonos_Wohnzimmer StartFavourite Party ;; set set Licht_Wohnzimmer on ;; set Licht_Wohnzimmer discoModeUp\
\
\
wohnzimmer leiser = set Hub_Wohnzimmer command 40635676 VolumeDown ;; set Hub_Wohnzimmer command 40635676 VolumeDown ;; set Hub_Wohnzimmer command 40635676 VolumeDown ;; set Hub_Wohnzimmer command 40635676 VolumeDown ;; set Hub_Wohnzimmer command 40635676 VolumeDown ;; set Hub_Wohnzimmer command 40635676 VolumeDown\
wohnzimmer lauter = set Hub_Wohnzimmer command 40635676 VolumeUp ;; set Hub_Wohnzimmer command 40635676 VolumeUp ;; set Hub_Wohnzimmer command 40635676 VolumeUp ;; set Hub_Wohnzimmer command 40635676 VolumeUp ;; set Hub_Wohnzimmer command 40635676 VolumeUp ;; set Hub_Wohnzimmer command 40635676 VolumeUp\
\
schlafzimmer leiser = set Hub_Schlafzimmer command 46652327 VolumeDown ;; set Hub_Schlafzimmer command 46652327 VolumeDown ;; set Hub_Schlafzimmer command 46652327 VolumeDown\
schlafzimmer lauter = set Hub_Schlafzimmer command 46652327 VolumeUp ;; set Hub_Schlafzimmer command 46652327 VolumeUp ;; set Hub_Schlafzimmer command 46652327 VolumeUp\
\
\
(@rooms) auf fernsehen = set Hub_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity Fernsehen\
(fernsehe.?) (im|in der|auf der) (@rooms) = set Hub_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity Fernsehen\
(@rooms) auf (firetv|fire tv) = set Hub_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity Fire.TV\
(@rooms) auf laptop = set Hub_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity Laptop\
laptop (im|in der|auf der) (@rooms) = set Hub_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity Laptop\
(@rooms) auf playstation = set Hub_$1[,,Wohnzimmer,Wohnzimmer,Wohnzimmer,,] activity PS4\
playstation (im|in der|auf der) (@rooms) = set Hub_$3[,,Wohnzimmer,Wohnzimmer,Wohnzimmer,,] activity PS3\
(@rooms) auf wii = set Hub_$1[,,Wohnzimmer,Wohnzimmer,Wohnzimmer,,] activity WII\
wii (im|in der|auf der) (@rooms) = set Hub_$3[,,Wohnzimmer,Wohnzimmer,Wohnzimmer,,] activity WII\
(@rooms) fernseher (\S*) = set Hub_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity $2{true=>Fernsehen, false=>PowerOff}\
fernseher (im|in der|auf der) (@rooms) (\S*) = set Hub_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] activity $3{true=>Fernsehen, false=>PowerOff}\
\
\
(@rooms) auf (ard|erste) = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number1 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf (zdf|zweite) = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number2 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf rtl = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number3 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf (sat 1|sat eins) = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number4 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf prosieben = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number5 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf (kabel 1|kabel eins) = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number6 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf rtl ii = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number7 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf vox = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number8 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
(@rooms) auf sixx = set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Number9 ;; set Fernseher_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,,] command Select\
\
\
gartenbeleuchtung (\S*) = set Licht_Garten $1{true=>on, false=>off} ;; sleep 1 ;; set Licht_Terrasse $1{true=>on, false=>off} ;; sleep 1 ;; set Funksteckdose_Pergula $1{true=>on, false=>off}\
(@rooms) (licht|lampe) (\S*) = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}\
(licht|lampe) (im|in der|auf der) (@rooms) (\S*) = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $5{true=>"on", false=>"off"}\
(@rooms) (licht|lampe) blau = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 240\
(licht|lampe) (im|in der|auf der) (@rooms) blau = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 240\
(@rooms) (licht|lampe) gelb = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 40\
(licht|lampe) (im|in der|auf der) (@rooms) gelb = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 40\
(@rooms) (licht|lampe) rot = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 360\
(licht|lampe) (im|in der|auf der) (@rooms) rot = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 360\
(@rooms) (licht|lampe) magenta = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 320\
(licht|lampe) (im|in der|auf der) (@rooms) magenta = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 320\
(@rooms) (licht|lampe) gr.?n = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 120\
(licht|lampe) (im|in der|auf der) (@rooms) gr.?n = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] hue 120\
\
(licht|lampe) (im|in der|auf der) (@rooms) auf (\S*) % = set Licht_$3[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] brightness $5{integer=>$5}\
(@rooms) (licht|lampe) auf (\S*) % = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] brightness $4{integer=>$4}\
\
\
(@rooms) heizung auf (\S*) grad = set $1[,,Wohnzimmer,Badezimmer,Schlafzimmer,,]_Clima desired-temp $3{integer=>$3}\
heizung (im|in der|auf der) (@rooms) auf (\S*) grad = set $2[,,Wohnzimmer,Badezimmer,Schlafzimmer,,]_Clima desired-temp $4{integer=>$4}\
\
\
attr talk T2F_keywordlist rooms = haus|..?berall , wohnung , wohnzimmer , bad(ezimmer)? , schlafzimmer , garten , terrasse
attr talk T2F_language DE
attr talk room Google
attr talk verbose 5
{my $fhemcmd= "set Licht_Schlafzimmer on";; fhem($fhemcmd)}
Funktioniert der Code bei dir?Can't use string ("01%5fTest") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.
(@rooms) (licht|lampe) (\S*) = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 14:13:34 5: T2F Phrasehash:
[
{
'key' => '(@rooms) (licht|lampe) (\\S*)',
'hitnokeylist' => [
undef,
'rooms'
],
'regexps' => [
'(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
],
'val' => {
'cmd' => 'set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}'
}
}
]
2018.01.31 14:13:34 5: T2F IfHash:
undef
Error while parsing Definition.
Syntaxerror: {my $fhemcmd= "set Licht_Schlafzimmer on";; fhem($fhemcmd)}
2018.01.31 14:34:54 5: Talk2Fhem Version: 0.3.2g
2018.01.31 14:34:54 3: Decoding Text: Wohnzimmer lauter
2018.01.31 14:34:54 4: Command part: 'Wohnzimmer lauter'
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /alles aus/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /alles an/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /schlafzimmer Wecker aus/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) sonos leiser/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) sonos lauter/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) weiter/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /(@rooms) starte meine lieder/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /partymodus an/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /wohnzimmer leiser/i
2018.01.31 14:34:54 5: talk Evaluate search:
Wohnzimmer lauter =~ /wohnzimmer lauter/i
2018.01.31 14:34:54 5: Keylists:
2018.01.31 14:34:54 5: Filled lists: 'wohnzimmer lauter'
2018.01.31 14:34:54 5: Words:
2018.01.31 14:34:54 5: Match: Wohnzimmer lauter
2018.01.31 14:34:54 5: Unmatch:
2018.01.31 14:34:54 4: Hit with phrase: qr/wohnzimmer lauter/i
2018.01.31 14:34:54 5: Handle reaction cmd: set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp
2018.01.31 14:34:54 3: Result of cmd: {
'cmd' => 'set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp'
}
2018.01.31 14:34:54 talk: 'cmds'
[
{
'cmd' => 'set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp'
}
]
2018.01.31 14:34:54 talk: Executing Command: set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp
2018.01.31 14:34:55 talk: Pushed: set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp ; set Hub_Wohnzimmer command 40635676 VolumeUp
2018.01.31 14:35:11 5: Talk2Fhem Version: 0.3.2g
2018.01.31 14:35:11 3: Decoding Text: Wohnzimmer Licht aus
2018.01.31 14:35:11 4: Command part: 'Wohnzimmer Licht aus'
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /alles aus/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /alles an/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /schlafzimmer Wecker aus/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) sonos leiser/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) sonos lauter/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) weiter/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) starte meine lieder/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /partymodus an/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /wohnzimmer leiser/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /wohnzimmer lauter/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /schlafzimmer leiser/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /schlafzimmer lauter/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf fernsehen/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(fernsehe.?) (im|in der|auf der) (@rooms)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf (firetv|fire tv)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf laptop/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /laptop (im|in der|auf der) (@rooms)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf playstation/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /playstation (im|in der|auf der) (@rooms)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf wii/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /wii (im|in der|auf der) (@rooms)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) fernseher (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /fernseher (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf (ard|erste)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf (zdf|zweite)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf rtl/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf (sat 1|sat eins)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf prosieben/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf (kabel 1|kabel eins)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf rtl ii/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf vox/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) auf sixx/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /gartenbeleuchtung (\S*)/i
2018.01.31 14:35:11 5: talk Evaluate search:
Wohnzimmer Licht aus =~ /(@rooms) (licht|lampe) (\S*)/i
2018.01.31 14:35:11 5: Keylists: undef
'rooms'
2018.01.31 14:35:11 5: Filled lists: '(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
2018.01.31 14:35:11 5: Words: 'Wohnzimmer'
undef
'Licht'
'aus'
2018.01.31 14:35:11 5: Match: Wohnzimmer Licht aus
2018.01.31 14:35:11 5: Unmatch:
2018.01.31 14:35:11 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 14:35:11 5: Handle reaction cmd: set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 14:35:11 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 14:35:11 4: Keyword (1): ''Wohnzimmer'
'
2018.01.31 14:35:11 5: ARRAY evaluation: else: empty:
array: Wohnzimmer Schlafzimmer Schlafzimmer Garten Terrasse
2018.01.31 14:35:11 4: Searching position of Wohnzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 14:35:11 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Wohnzimmer ###
2018.01.31 14:35:11 4: Keyword (4): ''aus'
'
2018.01.31 14:35:11 5: HASH evaluation:
{
'true' => 'on',
'false' => 'off'
}
2018.01.31 14:35:11 5: Word found (false): 'aus' replace with 'off'
2018.01.31 14:35:11 3: Result of cmd: {
'cmd' => 'set Licht_Wohnzimmer off'
}
2018.01.31 14:35:11 talk: 'cmds'
[
{
'cmd' => 'set Licht_Wohnzimmer off'
}
]
2018.01.31 14:35:11 talk: Executing Command: set Licht_Wohnzimmer off
Can't use string ("01%5fTest") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.
2018.01.31 14:42:22 5: Talk2Fhem Version: 0.3.2g
2018.01.31 14:42:22 3: Decoding Text: Wohnzimmer Licht an
2018.01.31 14:42:22 4: Command part: 'Wohnzimmer Licht an'
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles aus/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles an/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer Wecker aus/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos leiser/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos lauter/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) weiter/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte meine lieder/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /partymodus an/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer leiser/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer lauter/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer leiser/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer lauter/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf fernsehen/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(fernsehe.?) (im|in der|auf der) (@rooms)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (firetv|fire tv)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf laptop/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /laptop (im|in der|auf der) (@rooms)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf playstation/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /playstation (im|in der|auf der) (@rooms)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf wii/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wii (im|in der|auf der) (@rooms)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) fernseher (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /fernseher (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (ard|erste)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (zdf|zweite)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (sat 1|sat eins)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf prosieben/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (kabel 1|kabel eins)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl ii/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf vox/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf sixx/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /gartenbeleuchtung (\S*)/i
2018.01.31 14:42:22 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (licht|lampe) (\S*)/i
2018.01.31 14:42:22 5: Keylists: undef
'rooms'
2018.01.31 14:42:22 5: Filled lists: '(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
2018.01.31 14:42:22 5: Words: 'Wohnzimmer'
undef
'Licht'
'an'
2018.01.31 14:42:22 5: Match: Wohnzimmer Licht an
2018.01.31 14:42:22 5: Unmatch:
2018.01.31 14:42:22 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 14:42:22 5: Handle reaction cmd: set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 14:42:22 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 14:42:22 4: Keyword (1): ''Wohnzimmer'
'
2018.01.31 14:42:22 5: ARRAY evaluation: else: empty:
array: Wohnzimmer Schlafzimmer Schlafzimmer Garten Terrasse
2018.01.31 14:42:22 4: Searching position of Wohnzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 14:42:22 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Wohnzimmer ###
2018.01.31 14:42:22 4: Keyword (4): ''an'
'
2018.01.31 14:42:22 5: HASH evaluation:
{
'true' => 'on',
'false' => 'off'
}
2018.01.31 14:42:22 5: Word found (true): 'an' replace with 'on'
2018.01.31 14:42:22 3: Result of cmd: {
'cmd' => 'set Licht_Wohnzimmer on'
}
2018.01.31 14:42:22 talk: 'cmds'
[
{
'cmd' => 'set Licht_Wohnzimmer on'
}
]
2018.01.31 14:42:22 talk: Executing Command: set Licht_Wohnzimmer on
2018.01.31 14:42:22 talk: Pushed: set Licht_Wohnzimmer on
set Licht_Wohnzimmer off
wenn du es direkt in FHEM eingibst? Irgendwie sind jetzt die Versionen durcheinandergekommen, hier nochmal. Was ist denn Lich_Wohnzimmer überhaupt. Schick mal ein List davon.
define Licht_Wohnzimmer MilightDevice RGBW MilightBridge 6
attr Licht_Wohnzimmer userattr light light_map structexclude
attr Licht_Wohnzimmer IODev MilightBridge
attr Licht_Wohnzimmer alexaName Dekolicht
attr Licht_Wohnzimmer alexaRoom Wohnzimmer
attr Licht_Wohnzimmer devStateIcon {(MilightDevice_devStateIcon($name),"toggle")}
attr Licht_Wohnzimmer event-on-change-reading state,transitionInProgress
attr Licht_Wohnzimmer lightSceneParamsToSave hsv
attr Licht_Wohnzimmer restoreAtStart 1
attr Licht_Wohnzimmer room 01_Test,06_Licht
attr Licht_Wohnzimmer webCmd on:off:dim:hue:night:rgb ffffff:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffff00
2018.01.31 14:56:46 talk: Executing Command: set Licht_Wohnzimmer on
Can't use string ("01%5fTest") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.
syntax error at ./FHEM/39_Talk2Fhem.pm line 516, near ") {"
Global symbol "$fhemres" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 520.
Global symbol "$fhemcmd" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 521.
Global symbol "$fhemres" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 522.
Global symbol "$fhemres" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 522.
Global symbol "$fhemcmd" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 523.
syntax error at ./FHEM/39_Talk2Fhem.pm line 552, near "} else"
Global symbol "$txt" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 554.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 560.
Global symbol "$name" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 561.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 562.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 563.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 567.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 568.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 568.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 568.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 570.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 570.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 570.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 571.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 571.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 571.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 572.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 572.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 572.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 573.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 573.
Global symbol "%res" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 573.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 574.
Global symbol "$hash" requires explicit package name at ./FHEM/39_Talk2Fhem.pm line 576.
syntax error at ./FHEM/39_Talk2Fhem.pm line 579, near "}"
./FHEM/39_Talk2Fhem.pm has too many errors.
2018.01.31 15:26:56 5: Talk2Fhem Version: 0.3.2k
2018.01.31 15:26:56 3: Decoding Text: Wohnzimmer Licht an
2018.01.31 15:26:56 4: Command part: 'Wohnzimmer Licht an'
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles aus/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles an/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer Wecker aus/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos leiser/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos lauter/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) weiter/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte meine lieder/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /partymodus an/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer leiser/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer lauter/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer leiser/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer lauter/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf fernsehen/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(fernsehe.?) (im|in der|auf der) (@rooms)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (firetv|fire tv)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf laptop/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /laptop (im|in der|auf der) (@rooms)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf playstation/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /playstation (im|in der|auf der) (@rooms)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf wii/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wii (im|in der|auf der) (@rooms)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) fernseher (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /fernseher (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (ard|erste)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (zdf|zweite)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (sat 1|sat eins)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf prosieben/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (kabel 1|kabel eins)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl ii/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf vox/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf sixx/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /gartenbeleuchtung (\S*)/i
2018.01.31 15:26:56 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (licht|lampe) (\S*)/i
2018.01.31 15:26:56 5: Keylists: undef
'rooms'
2018.01.31 15:26:56 5: Filled lists: '(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
2018.01.31 15:26:56 5: Words: 'Wohnzimmer'
undef
'Licht'
'an'
2018.01.31 15:26:56 5: Match: Wohnzimmer Licht an
2018.01.31 15:26:56 5: Unmatch:
2018.01.31 15:26:56 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 15:26:56 5: Handle reaction cmd: set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 15:26:56 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 15:26:56 4: Keyword (1): ''Wohnzimmer'
'
2018.01.31 15:26:56 5: ARRAY evaluation: else: empty:
array: Wohnzimmer Schlafzimmer Schlafzimmer Garten Terrasse
2018.01.31 15:26:56 4: Searching position of Wohnzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 15:26:56 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Wohnzimmer ###
2018.01.31 15:26:56 4: Keyword (4): ''an'
'
2018.01.31 15:26:56 5: HASH evaluation:
{
'false' => 'off',
'true' => 'on'
}
2018.01.31 15:26:56 5: Word found (true): 'an' replace with 'on'
2018.01.31 15:26:56 3: Result of cmd: {
'cmd' => 'set Licht_Wohnzimmer on'
}
2018.01.31 15:26:56 talk: 'cmds'
[
{
'cmd' => 'set Licht_Wohnzimmer on'
}
]
2018.01.31 15:26:56 talk: Executing Command: set Licht_Wohnzimmer on
2018.01.31 15:26:56 talk: Name
2018.01.31 15:26:56 talk: talk
2018.01.31 15:26:56 talk: Disabled
2018.01.31 15:26:56 talk: 0
2018.01.31 15:26:56 talk: if
2018.01.31 15:26:56 talk: cmd
2018.01.31 15:26:56 talk: undef
Can't use string ("06%5fLicht") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 521.
2018.01.31 15:37:17 5: Talk2Fhem Version: 0.3.2l
2018.01.31 15:37:17 3: Decoding Text: Wohnzimmer Licht an
2018.01.31 15:37:17 4: Command part: 'Wohnzimmer Licht an'
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles aus/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles an/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer Wecker aus/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos leiser/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos lauter/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) weiter/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte meine lieder/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /partymodus an/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer leiser/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer lauter/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer leiser/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer lauter/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf fernsehen/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(fernsehe.?) (im|in der|auf der) (@rooms)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (firetv|fire tv)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf laptop/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /laptop (im|in der|auf der) (@rooms)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf playstation/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /playstation (im|in der|auf der) (@rooms)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf wii/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wii (im|in der|auf der) (@rooms)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) fernseher (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /fernseher (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (ard|erste)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (zdf|zweite)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (sat 1|sat eins)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf prosieben/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (kabel 1|kabel eins)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl ii/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf vox/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf sixx/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /gartenbeleuchtung (\S*)/i
2018.01.31 15:37:17 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (licht|lampe) (\S*)/i
2018.01.31 15:37:17 5: Keylists: undef
'rooms'
2018.01.31 15:37:17 5: Filled lists: '(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
2018.01.31 15:37:17 5: Words: 'Wohnzimmer'
undef
'Licht'
'an'
2018.01.31 15:37:17 5: Match: Wohnzimmer Licht an
2018.01.31 15:37:17 5: Unmatch:
2018.01.31 15:37:17 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 15:37:17 5: Handle reaction cmd: set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 15:37:17 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 15:37:17 4: Keyword (1): ''Wohnzimmer'
'
2018.01.31 15:37:17 5: ARRAY evaluation: else: empty:
array: Wohnzimmer Schlafzimmer Schlafzimmer Garten Terrasse
2018.01.31 15:37:17 4: Searching position of Wohnzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 15:37:17 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Wohnzimmer ###
2018.01.31 15:37:17 4: Keyword (4): ''an'
'
2018.01.31 15:37:17 5: HASH evaluation:
{
'false' => 'off',
'true' => 'on'
}
2018.01.31 15:37:17 5: Word found (true): 'an' replace with 'on'
2018.01.31 15:37:17 3: Result of cmd: {
'cmd' => 'set Licht_Wohnzimmer on'
}
2018.01.31 15:37:17 talk: 'cmds'
[
{
'cmd' => 'set Licht_Wohnzimmer on'
}
]
2018.01.31 15:37:17 talk: Executing Command: set Licht_Wohnzimmer on
2018.01.31 15:37:17 talk: Name
2018.01.31 15:37:17 talk: talk
2018.01.31 15:37:17 talk: Disabled
2018.01.31 15:37:17 talk: 0
2018.01.31 15:37:17 talk: if
2018.01.31 15:37:17 talk: cmd
2018.01.31 15:37:18 talk: undef
2018.01.31 15:37:18 talk: '06%5fLicht'
2018.01.31 15:37:18 talk: Pushed: set Licht_Wohnzimmer on
Can't use string ("06%5fLicht") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 573.
2018.01.31 15:47:51 5: Talk2Fhem Version: 0.3.2m
2018.01.31 15:47:51 3: Decoding Text: Wohnzimmer Licht an
2018.01.31 15:47:51 4: Command part: 'Wohnzimmer Licht an'
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles aus/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /alles an/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer fernseher sp.?ter aus/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer Wecker aus/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /roll(os?|..?den) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) roll(os?|..?den) auf (\S*) %/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (sonos|musik|player) (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(sonos|musik|player) (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos leiser/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) sonos lauter/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) n.?chste.? (lied|song|titel)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) weiter/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) klassiker/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste) favoriten/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte (playliste|playlist|wiedergabeliste|radio) (swr3|swr 3)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) starte meine lieder/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /partymodus an/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer leiser/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wohnzimmer lauter/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer leiser/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /schlafzimmer lauter/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf fernsehen/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(fernsehe.?) (im|in der|auf der) (@rooms)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (firetv|fire tv)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf laptop/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /laptop (im|in der|auf der) (@rooms)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf playstation/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /playstation (im|in der|auf der) (@rooms)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf wii/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /wii (im|in der|auf der) (@rooms)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) fernseher (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /fernseher (im|in der|auf der) (@rooms) (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (ard|erste)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (zdf|zweite)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (sat 1|sat eins)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf prosieben/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf (kabel 1|kabel eins)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf rtl ii/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf vox/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) auf sixx/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /gartenbeleuchtung (\S*)/i
2018.01.31 15:47:51 5: talk Evaluate search:
Wohnzimmer Licht an =~ /(@rooms) (licht|lampe) (\S*)/i
2018.01.31 15:47:51 5: Keylists: undef
'rooms'
2018.01.31 15:47:51 5: Filled lists: '(haus|..?berall|wohnung|wohnzimmer|bad(ezimmer)?|schlafzimmer|garten|terrasse) (licht|lampe) (\\S*)'
2018.01.31 15:47:51 5: Words: 'Wohnzimmer'
undef
'Licht'
'an'
2018.01.31 15:47:51 5: Match: Wohnzimmer Licht an
2018.01.31 15:47:51 5: Unmatch:
2018.01.31 15:47:51 4: Hit with phrase: qr/(@rooms) (licht|lampe) (\S*)/i
2018.01.31 15:47:51 5: Handle reaction cmd: set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}
2018.01.31 15:47:51 4: Advanced bracket replacement. $1,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse = set Licht_### $4{true=>on, false=>off}
2018.01.31 15:47:51 4: Keyword (1): ''Wohnzimmer'
'
2018.01.31 15:47:51 5: ARRAY evaluation: else: empty:
array: Wohnzimmer Schlafzimmer Schlafzimmer Garten Terrasse
2018.01.31 15:47:51 4: Searching position of Wohnzimmer in haus|..?berall wohnung wohnzimmer bad(ezimmer)? schlafzimmer garten terrasse
2018.01.31 15:47:51 4: Advanced bracket replacement. $4true=>on, false=>off = set Licht_Wohnzimmer ###
2018.01.31 15:47:51 4: Keyword (4): ''an'
'
2018.01.31 15:47:51 5: HASH evaluation:
{
'true' => 'on',
'false' => 'off'
}
2018.01.31 15:47:51 5: Word found (true): 'an' replace with 'on'
2018.01.31 15:47:51 3: Result of cmd: {
'cmd' => 'set Licht_Wohnzimmer on'
}
2018.01.31 15:47:51 talk: 'cmds'
[
{
'cmd' => 'set Licht_Wohnzimmer on'
}
]
2018.01.31 15:47:51 talk: Executing Command: set Licht_Wohnzimmer on
2018.01.31 15:47:51 talk: Name
2018.01.31 15:47:51 talk: talk
2018.01.31 15:47:51 talk: Disabled
2018.01.31 15:47:51 talk: 0
2018.01.31 15:47:51 talk: if
2018.01.31 15:47:51 talk: cmd
2018.01.31 15:47:51 talk: 'fhemicon_dark.png'
2018.01.31 15:47:51 talk: undef
2018.01.31 15:47:51 talk: '06%5fLicht'
2018.01.31 15:47:51 talk: Pushed: set Licht_Wohnzimmer on
Zitat von: Phill am 04 Februar 2018, 21:16:57Nur zur Info:
Nein, das die Umlaute in einem ? (mit viereck) ankommen, ist bei jedem so. Deswegen habe ich auch die Umlaute in T2F speziell behandelt. T2F_umlautescaping.
Aber warum bei dir diese Zeichen einen Absturz verursachen kann ich jetzt auch nicht sagen. Liegt wahrscheinlich irgendwie an der Zeichensatzeinstellung deines Systems. Worauf läuft bei dir FHEM?
{use Data::Dumper;; Dumper $defs{talk}}
Zitat von: Abercrombie1892 am 18 Februar 2018, 21:28:06
hallo und einen schönen abend,
vielleicht kannst du mir kurz helfen. ich habe jetzt mal die räume mit keywordlist und die geräte in der modwordlist und möchte so entsprechend die lampen schalten, aber leider findet er keinen matchCode Auswählenlicht (\S+ ){0,2} (@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
licht im Wohnzimmer an.
^^
2018.02.19 12:30:07 5: Talk2Fhem Version: 0.4.1
2018.02.19 12:30:07 3: Decoding Text: , mache das Licht auf türkis
2018.02.19 12:30:07 4: Command part: ' mache das Licht auf ürkis'
2018.02.19 12:30:07 4: Command left: 'mache das Licht auf ürkis'
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /wie (kalt|warm|grad|temperatur) && (@rooms)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle) && Temperatur && (@rooms) (\d+).*/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle) && (@rooms) && temperatur (\d+).*/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache) && licht && (@colors)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache) && licht && aus/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache) && licht && an/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /licht && (dunkler|dim\S*)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /licht && (hell\S*)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache|dimme) && licht && auf (\d+).*/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(mache|schalte\S*) && (Fernseh\S*|TV) && (ein\S*|an)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(mache|schalte\S*) && (Smart.TV|Netflix|Maxdome) && (ein\S*|an)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|stelle) && (@sender)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(mache|schalte\S*) && (Fernseh\S*|TV) && (aus|ab)/i
2018.02.19 12:30:07 1: No match: ' mache das Licht auf ürkis'
2018.02.19 12:30:07 1: Nothing to do: , mache das Licht auf türkis
Zitat von: Tabu am 19 Februar 2018, 12:38:43
Ich komme bei den Umlauten nicht weiter. Habe schon gesucht, kann es mir aber nicht erklären:Code Auswählen2018.02.19 12:30:07 5: Talk2Fhem Version: 0.4.1
2018.02.19 12:30:07 3: Decoding Text: , mache das Licht auf türkis
2018.02.19 12:30:07 4: Command part: ' mache das Licht auf ürkis'
2018.02.19 12:30:07 4: Command left: 'mache das Licht auf ürkis'
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /wie (kalt|warm|grad|temperatur) && (@rooms)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle) && Temperatur && (@rooms) (\d+).*/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle) && (@rooms) && temperatur (\d+).*/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache) && licht && (@colors)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache) && licht && aus/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache) && licht && an/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /licht && (dunkler|dim\S*)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /licht && (hell\S*)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|setze|stelle|mache|dimme) && licht && auf (\d+).*/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(mache|schalte\S*) && (Fernseh\S*|TV) && (ein\S*|an)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(mache|schalte\S*) && (Smart.TV|Netflix|Maxdome) && (ein\S*|an)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(schalte|stelle) && (@sender)/i
2018.02.19 12:30:07 5: talk Evaluate search:
mache das Licht auf ürkis =~ /(mache|schalte\S*) && (Fernseh\S*|TV) && (aus|ab)/i
2018.02.19 12:30:07 1: No match: ' mache das Licht auf ürkis'
2018.02.19 12:30:07 1: Nothing to do: , mache das Licht auf türkis
Die Umlaute werden meines Erachtens sauber an T2F übergeben. Nutze ich z.B. Königsblau als Farbe, läuft alles durch, bei Grün das gleiche wie bei Türkis...
Habe schon versucht dass Attribut T2F_disableumlautescaping mit 0 und 1, bei beiden das gleiche Ergebnis.
Was kann das sein?
Zitat von: Tabu am 19 Februar 2018, 14:22:16
Bei IFTTT das TextField in spitzen Klammern gesetzt: <<<TextField>>>
wie.*(kalt|warm|grad|temperatur) =
( answer =>
' "Die Temperatur beträgt ".ReadingsVal("bell", "temperature", "Fehler") '
)
fhem("set SIRDDev speak $EVENT");
update 39_Talk2Fhem
reload 39_Talk2Fhem
beleuchtung && licht(\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off }
No match: 'schalte beleuchtung aus'
beleuchtung (\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off }
Zitat von: Steffen am 22 Februar 2018, 06:37:03Code Auswählen
beleuchtung && licht(\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off }Code AuswählenNo match: 'schalte beleuchtung aus'
(beleuchtung|licht)
licht && (@rooms) && (\S+)$
schalte das licht im esszimmer aus
schalte im esszimmer das licht aus
Zitat von: RoBra81 am 22 Februar 2018, 07:41:08
Nein, das && sorgt dafür, dass die entsprechenden Teile überall gesucht werden. Was du meinst ist eherCode Auswählen(beleuchtung|licht)
(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off } , false => off }
No match: 'schalte beleuchtung aus'
Zitat von: Steffen am 22 Februar 2018, 07:55:40
Also mit diesem Klappt aber leider auch nicht:Code Auswählen
(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off } , false => off }Code AuswählenNo match: 'schalte beleuchtung aus'
(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+)
(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+) = set $3[@beleuchtung, @lights] $4{ true => on, false => off }
update 39_Talk2Fhem
reload 39_Talk2Fhem
(beleuchtung|licht) (\S* ){0,2}(@rooms)? ?(\S+) =
set $3[@lights, empty, standartdevice] $4{ true => on, false => off }
wir wollen jetzt essen
geht leider nicht aberwir sind mit essen fertig
klapt mit diesem Code:(@name) && essen (\S*) = set TestT2F $2{ /fertig/ => off, /jetzt/ => on }
Zitat von: RoBra81 am 22 Februar 2018, 19:34:07
Weil nach dem essen noch mindestens ein Leerzeichen kommen muss. Mach das mal mit in die klammer...
Gesendet von meinem SM-G935F mit Tapatalk
(@name) && essen (\S*) = set TestT2F $2{ /fertig/ => off, empty, /jetzt/ => on }
(@name) && essen ?(\S*) = set TestT2F $2{ /fertig/ => off, empty => on }
(@name) && essen ?(\S*) = set TestT2F $2{ /fertig/ => off, else => on }
ich/wir möchten jetzt frühstücken
versucht habe ich es damit:(@name) && (@zeitraum) && frühstücken = set TestT2F $2{ /jetzt/ => on, /fertig/ => off}
frühstück && ?(fertig) = set TestT2F $1{ /fertig/ => off, else => on}
mach das Licht im Flur und in der Küche an
- Ergebnis ist, dass nichts passiert, weil "an" im ersten Teil fehlt. Warum der zweite Teil auch gar nicht ausgefüht wird, weiß ich nicht. küche an
allein bewirkt das Richtige CMD. Ich vermute, dass nach dem ersten Teil abgebrochen wird? mach das Licht im Flur an und schalte das licht in der küche ein
aber so spricht man ja nicht natürlich. Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (\san\S*|ein\S*|hell\S*|aus\S*|ganz.aus\S*|farbwechsel|rot\S*) =
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2[Weiß, Weiß, Hell, auto, aus, Farbwechsel, rot]
Zitat von: swsmily am 28 Februar 2018, 21:19:23Der Satz wird ja bei "und" aufgeteilt und dann werden zwei eigenständige Kommandos erwartet, die in diesem Fall nicht vorliegen und er abbricht weil etwas nicht verstanden wurde.
Was mir jedoch aufgefallen ist, schnell sagt man malCode Auswählenmach das Licht im Flur und in der Küche an
- Ergebnis ist, dass nichts passiert, weil "an" im ersten Teil fehlt. Warum der zweite Teil auch gar nicht ausgefüht wird, weiß ich nicht.Code Auswählenküche an
allein bewirkt das Richtige CMD. Ich vermute, dass nach dem ersten Teil abgebrochen wird?
Zitat von: swsmily am 28 Februar 2018, 21:19:23Ja. Am besten man überlegt sich für die notwendigen Ortkombinationen ein eigenes Wort (oder auch mehrere).
Gibt es einen Trick, wie man zwei Devices mit einem Befehl steuern kann?
Zitat von: swsmily am 28 Februar 2018, 21:19:23Habe ich nicht vorgesehen. Ist auch nicht gerade trivial. Stichwort "nested brackets".
Hier meine Abfrage:Code AuswählenBad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (\san\S*|ein\S*|hell\S*|aus\S*|ganz.aus\S*|farbwechsel|rot\S*) =
In der zweiten Klammer wird ja auf ein und an gesucht. Da diese in einzelnen Trennern sind, muss ich ja nach $2, jeweils den einzustellenden Status angeben. Schöner wäre es, wenn ich hier \san\S*|ein\S* durch \s(a|ei)n\S* ersetzen könnte.
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2[Weiß, Weiß, Hell, auto, aus, Farbwechsel, rot]
Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (@licht_cmds) =
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2[@licht_cmds]
attr talk T2F_keywordlist licht_cmds = \san\S*,ein\S*,hell\S*,aus\S*,ganz.aus\S*,farbwechsel,rot\S*
attr talk T2F_modwordlist licht_cmds = Weiß,Weiß,Hell,auto,aus,Farbwechsel,rot
Zitat von: swsmily am 28 Februar 2018, 21:19:23Das darf natürlich nicht sein schaue ich mir nochmal an.
Tue ich das stürzt aber FHEM ab.
Zitat von: swsmily am 28 Februar 2018, 21:19:23:)
Vielen Dank schonmal für eure Antworten und für das tolle Modul :)
ZitatDas wäre ja super, wenn das umgesetzt werden kann. Macht die natürliche Spracheingabe auf jeden Fall einfacher.
Das ist echt ein Problem und gar nicht so leicht zu realisieren, wenn nicht die ganze Satzsemantik analysiert wird. Ich hatte mir zwar schon mal Gedanken darüber gemacht aber noch nicht die Zeit gefunden hier weiter anzusetzen. Kommt vielleicht noch. Steht jedenfalls auf der TODO.
ZitatHmm... Das wenn man mehrere Devices im Wohnzimmer hat ja - das hab ich im Wiki auch so verstanden.
Ja. Am besten man überlegt sich für die notwendigen Ortkombinationen ein eigenes Wort (oder auch mehrere).
ZitatIch hab da leider keine Ahnung, wie groß der Programmieraufwand ist. Wäre sozusagen Nice-to-have - aber so wie ich es bis jetzt eingetragen haben funktioniert es - das ist die Hauptsache.
Stichwort "nested brackets".
Talk2Fhem Version: 0.4.4
Decoding Text: flurlicht um 9 uhr hell
Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
Command part: 'flurlicht um 9 uhr hell'
Timephrase found: =~ s/\bum (\d+|neun\S*|zehn\S*|elf\S*|(ein\S*|erste\S*)|fünf\S*|zwölf\S*|sieb\S*|(drei\S*|dritt\S*)|vier\S*|acht\S*|sechs\S*|zwei\S*) (uhr)?\b/
TIMEPHRASEDATA mod: 'time' raw: '"$1"' result: '9' opt: '9 uhr'
Extracted Timephrase. 'um 9 uhr '
Commandpart after datedecoding. 'flurlicht hell'
Time is in past: 1519856908 1519804800
Command left: 'flurlicht hell'
talk Evaluate search:
flurlicht hell =~ /(Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (\san\S*|ein\S*|hell\S*|aus\S*|ganz.aus\S*|farbwechsel|rot\S*)/i
Keylists: $VAR1 = undef;
Filled lists: $VAR1 = '(Bad\\S*|Flur\\S*|Schlafzimmer\\S*|K\\S\\S?che\\S*)';
$VAR2 = '(\\san\\S*|ein\\S*|hell\\S*|aus\\S*|ganz.aus\\S*|farbwechsel|rot\\S*)';
Words: $VAR1 = '';
$VAR2 = 'flurlicht';
$VAR3 = 'hell';
Match: flurlichthell
Unmatch:
Hit with phrase: qr/(Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (\san\S*|ein\S*|hell\S*|aus\S*|ganz.aus\S*|farbwechsel|rot\S*)/i
Handle reaction cmd: set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2[Weiß, Weiß, Hell, auto, aus, Farbwechsel, rot]
Advanced bracket replacement. $2Weiß, Weiß, Hell, auto, aus, Farbwechsel, rot = set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] ###
Keyword (2): '$VAR1 = 'hell';
'
ARRAY evaluation: else: empty:
array: Weiß Weiß Hell auto aus Farbwechsel rot
Clipnumber 2 is no array! Try to extract by seperator '|'
Searching position of hell in \san\S* ein\S* hell\S* aus\S* ganz.aus\S* farbwechsel rot\S*
Advanced bracket replacement. $1Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht = set ### Hell
Keyword (1): '$VAR1 = 'flurlicht';
'
ARRAY evaluation: else: empty:
array: Badlicht Flurlicht Schlafzimmerlicht Kuechenlicht
Clipnumber 1 is no array! Try to extract by seperator '|'
Searching position of flurlicht in Bad\S* Flur\S* Schlafzimmer\S* K\S\S?che\S*
Result of cmd: $VAR1 = {
'cmd' => 'set Flurlicht Hell'
};
Executing Command: set Flurlicht Hell
Pushed: set Flurlicht Hell
Zitat von: Phill am 28 Februar 2018, 20:50:26Code Auswählenfrühstück && ?(fertig) = set TestT2F $1{ /fertig/ => off, else => on}
Reicht das nicht aus für das was du machen willst?
Gruß
frühstück && ?(fertig) = set TV $1{ /fertig/ => "", else => off};; set RADIO $1{ /fertig/ => off, else => on}
frühstück && ?(fertig) = $1{ /fertig/ => "set was anderes", else => "set Radio on;; set TV off"}
tu was = ( cmd => "set tue es;; set tts speak Erledigt!" , answer => ("Mach ich") )
attr talk T2F_keywordlist rooms = wohnzimmer,küche,bad\S*
attr talk T2F_modwordlist RF = WZ,K,BAD,empty,WZ
?(@rooms) && laut\b = set Raumfeld_$1[@RF] volume 90
update 39_Talk2Fhem
reload 39_Talk2Fhem
Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (\san\S*|ein\S*|hell\S*|aus\S*|ganz.aus\S*|farbwechsel|rot\S*) =
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2[Weiß, Weiß, Hell, auto, aus, Farbwechsel, rot
(Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) (.*) && ?(rot|grün|blau) =
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2{
/hell/ => Hell,
/ganz.(aus|ab)/ => aus,
/farbwechsel/ => Farbwechsel,
/rot|grün|blau/ =>"$3",
true => Weiß, false => auto}
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
Musik && ?Wohnzimmer (\S+) = set play $1{true=>on, false=>off}
leise$ = set Raumfeld_WZ volume 50
normale lautstärke = set Raumfeld_WZ volume 65
laut$ = set Raumfeld_WZ volume 90
(ein wenig|etwas|viel)? ?(lauter|leiser) = { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
NAME talk
NR 180
NTFY_ORDER 50-talk
STATE Initialized
TYPE Talk2Fhem
READINGS:
2018-03-03 10:36:40 cmds set play on
2018-03-03 10:37:02 err No match: ' mach lauter'
2018-03-03 10:37:02 origin
2018-03-03 10:36:30 response no set value specified
2018-03-03 10:37:02 set . mach lauter
2018-03-03 10:37:02 status err
helper:
LOG Talk2Fhem Version: 0.4.5
Decoding Text: . mach lauter
Command part: ' mach lauter'
Command left: 'mach lauter'
talk Evaluate search:
mach lauter =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
mach lauter =~ /Musik && ?Wohnzimmer (\S+)/i
talk Evaluate search:
mach lauter =~ /leise$/i
talk Evaluate search:
mach lauter =~ /normale lautstärke/i
talk Evaluate search:
mach lauter =~ /?(@rooms) && laut\b/i
talk Evaluate search:
mach lauter =~ /(ein wenig|etwas|viel)? ?(lauter|leiser)/i
Keylists: $VAR1 = undef;
Filled lists: $VAR1 = '(ein wenig|etwas|viel)? ?(lauter|leiser)';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'lauter';
Match:
Unmatch: mach lauter
Hit with phrase: qr/(ein wenig|etwas|viel)? ?(lauter|leiser)/i
Handle reaction cmd: { fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
Advanced bracket replacement. $13,5,10,empty,7 = { fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$2[+,-]###)) }
Keyword (1): '$VAR1 = undef;
'
ARRAY evaluation: else: empty: 7
array: 3 5 10
Empty word replace with! 7
Advanced bracket replacement. $2+,- = { fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)###7)) }
Keyword (2): '$VAR1 = 'lauter';
'
ARRAY evaluation: else: empty:
array: + -
Clipnumber 2 is no array! Try to extract by seperator '|'
Searching position of lauter in mach lauter
Searching position of lauter in mach lauter
ARRAY Replacement Failed! { fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)###7)) }
Advanced bracket replacement. $1@RF = { fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_###","volume", 0)###7)) }
Adding modlist: "Raumfeld_WZ","Raumfeld_Badezimmer","Raumfeld_Kueche","empty","Raumfeld_WZ"
Keyword (1): '$VAR1 = undef;
'
ARRAY evaluation: else: empty: Raumfeld_WZ
array: Raumfeld_WZ Raumfeld_Badezimmer Raumfeld_Kueche
Empty word replace with! Raumfeld_WZ
ARRAY Replacement Failed! { fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_Raumfeld_WZ","volume", 0)###7)) }
Advanced bracket replacement. $1@RF = { fhem("set Raumfeld_### volume ".(ReadingsVal("Raumfeld_Raumfeld_WZ","volume", 0)###7)) }
Adding modlist: "Raumfeld_WZ","Raumfeld_Badezimmer","Raumfeld_Kueche","empty","Raumfeld_WZ"
Keyword (1): '$VAR1 = undef;
'
ARRAY evaluation: else: empty: Raumfeld_WZ
array: Raumfeld_WZ Raumfeld_Badezimmer Raumfeld_Kueche
Empty word replace with! Raumfeld_WZ
ARRAY Replacement Failed! { fhem("set Raumfeld_Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_Raumfeld_WZ","volume", 0)###7)) }
No hit on advanced bracket selection: { fhem("set Raumfeld_Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_Raumfeld_WZ","volume", 0)###7)) }
talk Evaluate search:
mach lauter =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
No match: ' mach lauter'
Nothing to do: . mach lauter
T2F Phrasehash:
$VAR1 = [
{
'regexps' => [
'Fernseher\\S* (\\S+)'
],
'val' => {
'cmd' => 'set Nvidia $1{true=>on, false=>off}'
},
'key' => 'Fernseher\\S* (\\S+)',
'hitnokeylist' => [
undef
]
},
{
'val' => {
'cmd' => 'set play $1{true=>on, false=>off}'
},
'regexps' => [
'Musik',
'?Wohnzimmer (\\S+)'
],
'hitnokeylist' => [
undef
],
'key' => 'Musik && ?Wohnzimmer (\\S+)'
},
{
'key' => 'leise$',
'hitnokeylist' => [
undef
],
'regexps' => [
'leise$'
],
'val' => {
'cmd' => 'set Raumfeld_WZ volume 50'
}
},
{
'regexps' => [
'normale lautst\\S\\S?rke'
],
'val' => {
'cmd' => 'set Raumfeld_WZ volume 65'
},
'key' => 'normale lautstärke',
'hitnokeylist' => [
undef
]
},
{
'regexps' => [
'?(wohnzimmer|badS*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight)',
'laut\\b'
],
'val' => {
'cmd' => 'set Raumfeld_$1[@RF] volume [@RFvol]'
},
'key' => '?(@rooms) && laut\\b',
'hitnokeylist' => [
undef,
'rooms'
]
},
{
'key' => '(ein wenig|etwas|viel)? ?(lauter|leiser)',
'hitnokeylist' => [
undef
],
'regexps' => [
'(ein wenig|etwas|viel)? ?(lauter|leiser)'
],
'val' => {
'cmd' => '{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }'
}
},
{
'key' => 'licht (\\S+ ){0,2}(@rooms) (\\S+)',
'hitnokeylist' => [
undef,
undef,
'rooms'
],
'regexps' => [
'licht (\\S+ ){0,2}(wohnzimmer|badS*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight) (\\S+)'
],
'val' => {
'cmd' => 'set $2[@lights] $3{ true => on, false => off }'
}
}
];
T2F Phrasehash:
$VAR1 = [
{
'regexps' => [
'Fernseher\\S* (\\S+)'
],
'val' => {
'cmd' => 'set Nvidia $1{true=>on, false=>off}'
},
'key' => 'Fernseher\\S* (\\S+)',
'hitnokeylist' => [
undef
]
},
{
'key' => 'Musik && ?Wohnzimmer (\\S+)',
'hitnokeylist' => [
undef
],
'regexps' => [
'Musik',
'?Wohnzimmer (\\S+)'
],
'val' => {
'cmd' => 'set play $1{true=>on, false=>off}'
}
},
{
'hitnokeylist' => [
undef
],
'key' => 'leise$',
'val' => {
'cmd' => 'set Raumfeld_WZ volume 50'
},
'regexps' => [
'leise$'
]
},
{
'val' => {
'cmd' => 'set Raumfeld_WZ volume 65'
},
'regexps' => [
'normale lautst\\S\\S?rke'
],
'hitnokeylist' => [
undef
],
'key' => 'normale lautstärke'
},
{
'regexps' => [
'laut$'
],
'val' => {
'cmd' => 'set Raumfeld_WZ volume 90'
},
'key' => 'laut$',
'hitnokeylist' => [
undef
]
},
{
'key' => '(ein wenig|etwas|viel)? ?(lauter|leiser)',
'hitnokeylist' => [
undef
],
'regexps' => [
'(ein wenig|etwas|viel)? ?(lauter|leiser)'
],
'val' => {
'cmd' => '{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }'
}
},
{
'hitnokeylist' => [
undef,
undef,
'rooms'
],
'key' => 'licht (\\S+ ){0,2}(@rooms) (\\S+)',
'val' => {
'cmd' => 'set $2[@lights] $3{ true => on, false => off }'
},
'regexps' => [
'licht (\\S+ ){0,2}(wohnzimmer|badS*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight) (\\S+)'
]
}
];
Attribute checking!
if
phrase
T2F_keywordlist:
rooms:
wohnzimmer
badS*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_modwordlist:
RF:
Raumfeld_WZ
Raumfeld_Badezimmer
Raumfeld_Kueche
empty
Raumfeld_WZ
RFvol:
90
45
45
else
90
RFvolB:
45
30
13
else
45
RFvolK:
45
30
13
else
45
RFvolWZ:
90
65
50
else
90
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
notifiers:
Attributes:
T2F_keywordlist rooms = wohnzimmer,bad\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = Raumfeld_WZ,Raumfeld_Badezimmer,Raumfeld_Kueche,empty,Raumfeld_WZ
RFvolWZ = 90,65,50,else,90
RFvolK = 45,30,13,else,45
RFvolB = 45,30,13,else,45
room Sprachsteuerung
userReadings 1
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,empty,50]
?(@rooms) && normale lautstärke = set Raumfeld_WZ volume $1[65,30,30,empty,65]
?(@rooms) && laut\b = set Raumfeld_$1[@RF] volume $1[90,45,45,empty,90]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
Zitatich möchte das er das ganze zb nur raum bezogen macht. also mach ganz leise im wohnzimmer,küche, badezimmer.Bin gerade dran.
und würde es auch gehen wenn ich zb sage mache ganz leise im wohnzimmer und in der küche?
Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) (.*) && ?(rot|grün|blau) =
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2{
/hell/ => Hell,
/ganz.(aus|ab)/ => aus,
/farbwechsel/ => Farbwechsel,
/rot|grün|blau/ =>"$3",
true => Weiß, false => auto}
(Deko\S*) && (an\S*|ein\S*|aus\S*) =
set Dekolicht $2[on, on, off]
(ins Bett\S*|schl[aä]\S*) && ^(?!.*\bWohnzimmer\b) = set SchlafenImSchlafzimmer on
(schl[aä]\S*) && (Wohnzimmer) && ^(?!.*\bBett\b) = ( cmd => set SchlafenImWohnzimmer on , answer => ("Schlafen im Wohnzimmer wurde aktiviert") )
2018.03.04 22:32:51.386 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_Talk2Fhem.pm line 1035.
2018.03.04 22:56:15.085 1: PERL WARNING: Variable "%Talk2Fhem" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 1417.
2018.03.04 22:56:15.095 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_Talk2Fhem.pm line 156.
(Bad\S*|Flur\S*) && (\san\S*|aus\S*) =
set $1[Badlicht, Flurlicht] $2[Weiß, auto]
2018.03.04 22:58:53.033 3: Decoding Text: mach bad an
2018.03.04 22:58:53.076 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_Talk2Fhem.pm line 1035.
2018.03.04 22:58:53.090 1: PERL WARNING: Use of uninitialized value $clip in substitution (s///) at ./FHEM/39_Talk2Fhem.pm line 1540.
2018.03.04 22:58:53.093 1: ARRAY Replacement Failed! set $1[Badlicht, Flurlicht] ###
2018.03.04 22:58:53.103 1: Clipnumber 1 includes no array or integer in '(Bad\S*|Flur\S*) && (\san\S*|aus\S*)!
2018.03.04 22:58:53.103 1: Clipnumber 1 includes no array or integer in '(Bad\S*|Flur\S*) && (\san\S*|aus\S*)!
2018.03.04 22:58:53.104 1: Nothing to do: mach bad an
2018.03.05 08:28:50.404 1: PERL WARNING: Variable "%Talk2Fhem" will not stay shared at ./FHEM/39_Talk2Fhem.pm line 1513, <$fh> line 4990.
2018.03.05 08:28:50.416 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_Talk2Fhem.pm line 167, <$fh> line 4990.
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b = set StandbyRF $1[@RFStandby]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,empty,50]
?(@rooms) && normale lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && laut\b = set Raumfeld_$1[@RF] volume $1[90,45,45,empty,90]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
?(@Multiroom) && Musik\b = set AddToZone $1[@AddToZone]
NAME talk
NR 167
NTFY_ORDER 50-talk
STATE Initialized
TYPE Talk2Fhem
READINGS:
2018-03-05 16:56:42 cmds { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)+7)) }
2018-03-05 16:56:30 err Not enough elements in modwordlist! Position 2 in (+ -) doesn't exist.
2018-03-05 16:56:42 origin
2018-03-05 16:55:59 response syntax error at (eval 12681) line 1, near ")7"
2018-03-05 16:56:42 set . mach ein wenig leiser
2018-03-05 16:56:42 status done
helper:
LOG Talk2Fhem Version: 0.4.5
Decoding Text: . mach ein wenig leiser
Command part: ' mach ein wenig leiser'
Command left: 'mach ein wenig leiser'
talk Evaluate search:
mach ein wenig leiser =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
mach ein wenig leiser =~ /?(@rooms) && Musik\b/i
talk Evaluate search:
mach ein wenig leiser =~ /?(@rooms) && leise\b/i
talk Evaluate search:
mach ein wenig leiser =~ /?(@rooms) && normale lautstärke/i
talk Evaluate search:
mach ein wenig leiser =~ /?(@rooms) && laut\b/i
talk Evaluate search:
mach ein wenig leiser =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
Keylists: $VAR1 = undef;
$VAR2 = 'rooms';
Filled lists: $VAR1 = '(wohnzimmer|badS*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight)';
$VAR2 = '(ein wenig|etwas|viel)? ?(lauter|leiser)';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'ein wenig';
$VAR4 = 'leiser';
Match:
Unmatch: mach ein wenig leiser
Hit with phrase: qr/?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
Handle reaction cmd: { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
Advanced bracket replacement. $13,5,10,empty,7 = { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]###)) }
Keyword (1): '$VAR1 = undef;
'
ARRAY evaluation: else: empty: 7
array: 3 5 10
Empty word replace with! 7
Advanced bracket replacement. $2+,- = { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)###7)) }
Keyword (2): '$VAR1 = 'ein wenig';
'
ARRAY evaluation: else: empty:
array: + -
Clipnumber 2 is no array! Try to extract by seperator '|'
Searching position of ein wenig in ein wenig etwas viel
Searching position of ein wenig in ein wenig etwas viel
Result of cmd: $VAR1 = {
'cmd' => '{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)+7)) }'
};
Executing Command: { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)+7)) }
Pushed: { fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)+7)) }
T2F_keywordlist:
Multiroom:
Zone1
Zone2
Zone3
rooms:
wohnzimmer
badS*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_modwordlist:
AddToZone:
cmd_1
cmd_2
cmd_3
RF:
WZ
Badezimmer
Kueche
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFStandby:
cmd_1
cmd_3
cmd_2
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
if:
notifiers:
phrase:
HASH(0x32e5778)
HASH(0x3305dc8)
HASH(0x32c3ea8)
HASH(0x33e8880)
HASH(0x2c8c178)
HASH(0x3315c30)
HASH(0x2efef60)
HASH(0x3314310)
Attributes:
T2F_keywordlist rooms = wohnzimmer,bad\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
Multiroom = Zone1,Zone2,Zone3
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2
AddToZone = cmd_1,cmd_2,cmd_3
room Sprachsteuerung
userReadings 1
musik in zone (\S+) =
([RF2:"on"] and $cmd=~"0|3") ({GetHttpFile ("192.168.178.21:8080","/raumserver/controller/addToZone?id=Wohnzimmer&zoneId=K%C3%BCche")}) DOELSEIF (["testo:.*"] and $cmd==1) ({GetHttpFile ("192.168.178.21:8080","/raumserver/controller/addToZone?id=K%C3%BCche&zoneId=Wohnzimmer")}) DOELSEIF (["testo:.*"] and $cmd==2) ({GetHttpFile ("192.168.178.21:8080","/raumserver/controller/addToZone?id=Badezimmer&zoneId=Wohnzimmer")})
(Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (.*) && ?(rot|grün|blau) =
set $1[Badlicht, Flurlicht, Schlafzimmerlicht, Kuechenlicht] $2{
/hell/ => Hell,
/ganz.(aus|ab)/ => aus,
/farbwechsel/ => Farbwechsel,
/rot|grün|blau/ =>"$3",
true => Weiß, false => auto}
/rot|grün|blau/ =>"$3"
raus klappt es so wie es soll. musik in zone (\S+) = set doifdef $1[,cmd_1,cmd_2,cmd_3]
musik in zone (\S+) = set doifdef cmd_$1{numeral=>"$1"}
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b = set StandbyRF $1[@RFStandby]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,empty,50]
?(@rooms) && normale lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && laut\b = set Raumfeld_$1[@RF] volume $1[90,45,45,empty,90]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
musik && zone (\S+) = set AddtoZone $1[,cmd_1,cmd_2,cmd_3]
weiter|vor$ = set RFweiter cmd_1
zurück|anfang$ = set RFweiter cmd_2
NAME talk
NR 167
NTFY_ORDER 50-talk
STATE Initialized
TYPE Talk2Fhem
READINGS:
2018-03-06 08:50:23 cmds set StandbyRF
2018-03-06 08:46:52 err No match: 'in zone'
2018-03-06 08:50:23 origin
2018-03-05 21:44:01 response Please define ({GetHttpFile first
2018-03-06 08:50:23 set musik in zone 1
2018-03-06 08:50:23 status disabled
helper:
LOG Talk2Fhem Version: 0.5.0
Decoding Text: musik in zone 1
After correction:
musik in zone 1
Command part: 'musik in zone 1'
talk Evaluate search:
musik in zone 1 =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
musik in zone 1 =~ /?(@rooms) && Musik\b/i
Keylists: $VAR1 = undef;
$VAR2 = 'rooms';
Filled lists: $VAR1 = '(wohnzimmer|badS*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight)';
$VAR2 = 'Musik\\b';
Words: $VAR1 = '';
$VAR2 = undef;
Match:
Unmatch: musik in zone 1
Hit with phrase: qr/?(@rooms) && Musik\b/i
Handle reaction cmd: set StandbyRF $1[@RFStandby]
Advanced bracket replacement. $1@RFStandby = set StandbyRF ###
Adding modlist: "cmd_1","cmd_3","cmd_2"
Keyword (1): '$VAR1 = undef;
'
ARRAY evaluation: else: empty:
array: cmd_1 cmd_3 cmd_2
Empty word replace with!
Result of cmd: $VAR1 = {
'cmd' => 'set StandbyRF '
};
Executing Command: set StandbyRF
Pushed: set StandbyRF
T2F_andwordlist:
T2F_keywordlist:
Multiroom:
Zone1
Zone2
Zone3
rooms:
wohnzimmer
badS*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_modwordlist:
AddToZone:
cmd_1
cmd_2
cmd_3
RF:
WZ
Badezimmer
Kueche
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFStandby:
cmd_1
cmd_3
cmd_2
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
if:
notifiers:
phrase:
HASH(0x33e4798)
HASH(0x3325240)
HASH(0x34cc4e8)
HASH(0x2c55570)
HASH(0x2e2de88)
HASH(0x34cca60)
HASH(0x2e27d08)
HASH(0x33e2c48)
HASH(0x3411980)
HASH(0x3655af8)
Attributes:
T2F_keywordlist rooms = wohnzimmer,bad\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
Multiroom = Zone1,Zone2,Zone3
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2
AddToZone = cmd_1,cmd_2,cmd_3
disable 1
room Sprachsteuerung
userReadings 1
&& !zone
hinzufügen oder die Zeile in der Reihenfolge dahinter einreihen. Aber unbedingt updaten heute...
ZitatMach den Rollladen im Wohnzimmer, im Esszimmer und in der Küche rauf
oder
Mach den Fernseher, die Soundbar und das licht an
oder sogar
mach das licht und die musik im wohnzimmer und die heizung im bad an
tu was = ( cmd => "set Device on" , answer => ("Erledigt") )
(Deko\S*) && (.*) =
set Dekolicht $2{
true => on, false => off}
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b = set StandbyRF $1[@RFStandby]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,empty,50]
?(@rooms) && normale lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && laut\b = set Raumfeld_$1[@RF] volume $1[90,45,45,empty,90]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
zone = set AddtoZone $1[,cmd_1,cmd_2,cmd_3]
weiter|vor$ = set RFweiter cmd_1
zurück|anfang$ = set RFweiter cmd_2
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-07 12:40:00 cmds set Lampen_Wohnzimmer off
2018-03-07 12:38:03 err Error in answer eval: "Ich schalte folgende Geräte auf Gr\S\S?n: ".T2F_answer("T2F_types_color=.*Lampe.*:FILTER=T2F_rooms=.*wohnzimmer.*:FILTER=T2F_places=.*Couch.*","T2F_types_color")
2018-03-07 12:40:00 origin
2018-03-07 10:30:50 response syntax error at (eval 15594) line 1, near ")7"
2018-03-07 12:40:00 set . schalte das Licht im Wohnzimmer aus
2018-03-07 12:40:00 status done
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: . schalte das Licht im Wohnzimmer aus
After correction:
schalte das Licht im Wohnzimmer aus
Command part: ' schalte das Licht im Wohnzimmer aus'
Command left: 'schalte das Licht im Wohnzimmer aus'
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /?(@rooms) && Musik\b/i
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /?(@rooms) && leise\b/i
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /?(@rooms) && normale lautstärke/i
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /?(@rooms) && laut\b/i
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
schalte das Licht im Wohnzimmer aus =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
Keylists: $VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'rooms';
Filled lists: $VAR1 = 'licht (\\S+ ){0,2}(wohnzimmer|badS*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight) (\\S+)';
Words: $VAR1 = '';
$VAR2 = 'im ';
$VAR3 = 'Wohnzimmer';
$VAR4 = 'aus';
Match: Licht im Wohnzimmer aus
Unmatch: schalte das
Hit with phrase: qr/licht (\S+ ){0,2}(@rooms) (\S+)/i
Handle reaction cmd: set $2[@lights] $3{ true => on, false => off }
Advanced bracket replacement. $3 true => on, false => off = set $2[@lights] ###
Keyword (3): 'aus'
HASH evaluation:
$VAR1 = {
'false' => {
'val' => 'off',
'order' => 1
},
'true' => {
'order' => 0,
'val' => 'on'
}
};
Word found (false): 'aus' replace with 'off'
Advanced bracket replacement. $2@lights = set ### off
Adding modlist: "Lampen_Wohnzimmer","Lampen_Badezimmer","Lampen_Kueche","Lampen_Wohnung","Lampen_G\S\S?stebad","Lampen_Schlafzimmer","Lampen_Kinderzimmer","Lampen_Babyzimmer","Flurschalter","Balkon_LED","Ambilight"
Keyword (2): 'Wohnzimmer'
ARRAY evaluation: else: empty:
array: Lampen_Wohnzimmer Lampen_Badezimmer Lampen_Kueche Lampen_Wohnung Lampen_GSS?stebad Lampen_Schlafzimmer Lampen_Kinderzimmer Lampen_Babyzimmer Flurschalter Balkon_LED Ambilight
Numeral word found. 'Wohnzimmer' converted to; Wohnzimmer
Searching position of 'Wohnzimmer' in 'wohnzimmer badS* k\S\S?che haus|\S\S?berall|wohnung toilette|wc schlafzimmer kinderzimmer babyzimmer flur balkon ambilight'
Found 'Wohnzimmer' at position 0
Result of cmd: $VAR1 = {
'cmd' => 'set Lampen_Wohnzimmer off'
};
Executing Command: set Lampen_Wohnzimmer off
Pushed: set Lampen_Wohnzimmer off
T2F_andwordlist:
&rooms:
wohnzimmer
badS*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
badS*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFStandby:
cmd_1
cmd_3
cmd_2
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x2f35b50)
HASH(0x4b5fe08)
HASH(0x4986be8)
HASH(0x4855df0)
HASH(0x4931b30)
HASH(0x4bd75e0)
HASH(0x4b54998)
HASH(0x498de90)
HASH(0x4a0f8f8)
HASH(0x4ae9b70)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau, Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau, Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß, Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß, Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb, Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute, dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot, Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot, Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun, Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme, Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot, Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett, Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett, Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau, Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau, Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau, Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau, Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone, Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis, Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun, Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün, Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun, Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
types_color = Lampe,Licht
places = Decke,Couch,Sofa
types_switch = Lampe,Licht
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE, 696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5, F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6, FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2, FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500, FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D, A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000, FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A, F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD, FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF, FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA, EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3, 9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970, 000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED, 1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF, B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4, 40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B, 008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A, 00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400, 6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
disable 0
room Sprachsteuerung
userReadings 1
(Deko\S*) && (.*) = (
cmd => "set Dekolicht $2{ true => on, false => off }",
answer => ("OK") )
(Deko\S*) && (.*) =
set Dekolicht $2{ true => on, false => off};
defmod atdekofb at +00:00:01 IF ([Dekolicht] eq "on") (set tts speak "Jo is an") ELSE (set tts speak "Ist aus.")
(Deko\S*) && (.*) =
set Dekolicht $2{ true => on, false => off};
defmod atdekofb at +00:00:01 { fhem('set tts speak "'.((Value($dev) ne "$2{ true => on, false => off}")?"Das hat nicht geklappt.":"OK").'"') }
Zitatnun ist aber fhem komplett verschoben und ich muss ewig hin und her scrolen.Was meinst du damit? Verschoben?
Zitat von: Phill am 07 März 2018, 13:01:39Ja da hast du recht, bei Licht schalten ist eine Rückmeldung überflüssig. Das mit Dekolicht, war auch nur ein Beispiel (weil das kürzeste). Weitere Teile haben eben mehrere Befehle, wollte hier nur ein kurzes Beispiel bringen.
@swsmilyAlso die Sinnhaftigkeit von einer Rückmeldung bezüglich des Lichtschaltens ist mir völligst unklar, immerhin sieht man ja ob das Licht an gegangen ist oder aus. Mich persönlich nerft sogar zu viel gerede. Ein OK ist absolut ausreichend.
ZitatAch ja, manchmal ist man der Lösung so nah und doch so fern. Mir haben nur die Anführungszeichen um den set Befehl gefehlt.... Danke!
Bezüglich der erweiterten Befehle gibt es keine Beschränkung.Code Auswählen(Deko\S*) && (.*) = (
cmd => "set Dekolicht $2{ true => on, false => off }",
answer => ("OK") )
Zitat
Bei Dingen die kein offensichtliches Feedback erzeugen oder wo sogar getoggelt wird, macht es sicherlich Sinn eine Zustandsabhängige Antwort zu geben.
Das würde ich dann so lösen.Code Auswählen(Deko\S*) && (.*) =
set Dekolicht $2{ true => on, false => off};
defmod atdekofb at +00:00:01 IF ([Dekolicht] eq "on") (set tts speak "Jo is an") ELSE (set tts speak "Ist aus.")
Zitat von: Phill am 07 März 2018, 13:06:30
Was meinst du damit? Verschoben?
2018.03.06 18:40:27.663 1: \b(([ai][nm]|beim?|auf|unter|hinter|über|vo[rnm]) )?((de[rmns]|die|das) )?()\b
2018.03.07 14:11:10.882 1: \b(([ai][nm]|beim?|auf|unter|hinter|über|vo[rnm]) )?((de[rmns]|die|das) )?(Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*)\b
2018.03.07 14:11:10.882 1: Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*
Zitat von: swsmily am 08 März 2018, 10:32:18
Das hatte ich bei mir auch. Ich hab in dem Attribut Bad\\S* gemacht und damit gehts wieder.
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,30,empty,50]
?(@rooms) && entspannte|normale lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
weiter|vor$ = set RFweiter cmd_1
zurück|anfang$ = set RFweiter cmd_2
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-08 11:46:22 cmds set Raumfeld_WG volume 30
2018-03-08 11:46:47 err Not enough elements in modwordlist! Position 3 in (65 30 30) doesn't exist.
2018-03-08 11:46:46 origin
2018-03-07 22:00:10 response Please define Raumfeld_standard first
2018-03-08 11:46:46 set . Mach entspannten out chic überall
2018-03-08 11:46:47 status err
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: . Mach entspannten out chic überall
After correction:
Mach entspannten out chic überall
Command part: ' Mach entspannten out chic überall'
Command left: 'Mach entspannten out chic überall'
talk Evaluate search:
Mach entspannten out chic überall =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
Mach entspannten out chic überall =~ /?(@rooms) && Musik\b/i
talk Evaluate search:
Mach entspannten out chic überall =~ /?(@rooms) && leise\b/i
talk Evaluate search:
Mach entspannten out chic überall =~ /?(@rooms) && entspannte|normale lautstärke/i
Keylists: $VAR1 = undef;
$VAR2 = 'rooms';
Filled lists: $VAR1 = '(wohnzimmer|bad\\S*|k\\S\\S?che|haus|\\S\\S?berall|wohnung|toilette|wc|schlafzimmer|kinderzimmer|babyzimmer|flur|balkon|ambilight)';
$VAR2 = 'entspannte|normale lautst\\S\\S?rke';
Words: $VAR1 = '';
$VAR2 = 'überall';
Match: überallentspannte
Unmatch: Mach n out chic
Hit with phrase: qr/?(@rooms) && entspannte|normale lautstärke/i
Handle reaction cmd: set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
Advanced bracket replacement. $165,30,30,empty,65 = set Raumfeld_$1[@RF] volume ###
Keyword (1): 'überall'
ARRAY evaluation: else: empty: 65
array: 65 30 30
Numeral word found. 'überall' converted to; überall
Searching position of 'überall' in 'wohnzimmer bad\S* k\S\S?che haus|\S\S?berall|wohnung toilette|wc schlafzimmer kinderzimmer babyzimmer flur balkon ambilight'
Not enough elements in modwordlist! Position 3 in (65 30 30) doesn't exist.
Not enough elements in modwordlist! Position 3 in (65 30 30) doesn't exist.
Nothing to do: . Mach entspannten out chic überall
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x3a3e0e8)
HASH(0x3d19948)
HASH(0x3a8dcb8)
HASH(0x3ce82e8)
HASH(0x3be04f8)
HASH(0x3d24eb8)
HASH(0x3cc8398)
HASH(0x3cc6050)
HASH(0x3a572d0)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
types_color = Lampe,Licht
places = Decke,Couch,Sofa
types_switch = Lampe,Licht
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
disable 0
room Sprachsteuerung
userReadings 1
?(@rooms) && entspannte|normale lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
Dir ist bewusst das entspannte allein stehen kann und nicht lautstärke benötigt? Wenn nicht schreibe es lieber so: (entspannte|normale) lautstärke?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
Zitat von: Abercrombie1892 am 08 März 2018, 11:57:56Du hast an dieser Stelle ein WG dring. Gibt es ein Raumfeld_WG? Und wenn ja was macht das.
wenn ich jetzt sage mache überall ganz laut zb. soll der mir dann entsprechend für meine 3 geräte
unterschiedliche lautstärken einstellen. hab ja nun in der keywordlist überall drin, wie kann ich dann zb in die modwordlist dort 3 unterschiedliche dinge auf das keyword überall eintragen?
Zitat von: Abercrombie1892 am 08 März 2018, 11:57:56Theoretisch kannst du doch das was du über ein DOIF auslöst auch über Talk2Fhem auslösen? Oder hab ich's nicht verstanden? Stichwort {GetHttpFile()} (https://wiki.fhem.de/wiki/HttpUtils)
2. wäre es evtl möglich das man direkt aus talk2fhem ein http request absetzen kann? im moment bastel ich mir immer doif´s zusammen über die ich dann über die cmd´s schalte.
Zitat von: Abercrombie1892 am 08 März 2018, 11:57:56Ist das eine Frage? Oder wolltest du nur den Request zeigen. ;)
• seek With this request you can seek within a track The value parameter is in milliseconds
192.168.178.xx/raumserver/controller/seek?id=Wohnzimmer&value=600
bei dem raumserver bzw raumfeld ist es leider ein wenig blöd gelöst mit dem vorspulen, man springt praktisch immer zu der zeit die man hinten einträgt, indem falle auf 1min.
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")}
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")}
vorspielen auf (@spulen) = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=$1[@RFSpulen]")}
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-08 16:18:22 cmds {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=120")}
2018-03-08 16:15:18 err No match: 'vorspielen auf 2'
2018-03-08 16:18:22 origin
2018-03-08 16:18:22 response {"requestUrl":"/raumserver/controller/seek?id=Wohnzimmer&value=120","action":"seek","error":false,"msg":"","data":{"udn":"uuid:06CEC705-639E-4789-9129-599267D40B43"}}
2018-03-08 16:18:22 set vorspielen auf 10
2018-03-08 16:18:22 status response
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: vorspielen auf 10
After correction:
vorspielen auf 10
Command part: 'vorspielen auf 10'
talk Evaluate search:
vorspielen auf 10 =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
vorspielen auf 10 =~ /?(@rooms) && Musik\b/i
talk Evaluate search:
vorspielen auf 10 =~ /?(@rooms) && leise\b/i
talk Evaluate search:
vorspielen auf 10 =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
vorspielen auf 10 =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
vorspielen auf 10 =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
vorspielen auf 10 =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
talk Evaluate search:
vorspielen auf 10 =~ /weiter|vor$/i
talk Evaluate search:
vorspielen auf 10 =~ /zurück|anfang$/i
talk Evaluate search:
vorspielen auf 10 =~ /vorspielen auf (@spulen)/i
Keylists: $VAR1 = undef;
$VAR2 = 'spulen';
Filled lists: $VAR1 = 'vorspielen auf (1|2|3|4|5|6|7|8|9|10|15|20|25|30)';
Words: $VAR1 = '';
$VAR2 = '1';
Match: vorspielen auf 1
Unmatch: 0
Hit with phrase: qr/vorspielen auf (@spulen)/i
Handle reaction cmd: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=$1[@RFSpulen]")}
Advanced bracket replacement. $1@RFSpulen = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=###")}
Adding modlist: "60","120","180","240","300","360","420","480","540","600","900","1200","1500","1800"
Keyword (1): '1'
ARRAY evaluation: else: empty:
array: 60 120 180 240 300 360 420 480 540 600 900 1200 1500 1800
Numeral word found. '1' converted to; 1
Integer (1) used for array selection! 120
Result of cmd: $VAR1 = {
'cmd' => '{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=120")}'
};
Executing Command: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=120")}
Pushed: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=120")}
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
spulen:
1
2
3
4
5
6
7
8
9
10
15
20
25
30
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFSpulen:
60
120
180
240
300
360
420
480
540
600
900
1200
1500
1800
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x3b30740)
HASH(0x3c6d598)
HASH(0x1445c78)
HASH(0x3c29490)
HASH(0x3a8c110)
HASH(0x3cfc940)
HASH(0x3cef3a8)
HASH(0x3c6bc28)
HASH(0x3c69938)
HASH(0x3b3bf78)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
types_color = Lampe,Licht
places = Decke,Couch,Sofa
types_switch = Lampe,Licht
spulen = 1,2,3,4,5,6,7,8,9,10,15,20,25,30
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
RFSpulen = 60,120,180,240,300,360,420,480,540,600,900,1200,1500,1800
disable 0
room Sprachsteuerung
userReadings 1
(minuten|sekunden) && vorspulen auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")}
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")}
(minuten|sekunden) && vorspulen auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-08 21:12:03 cmds set StandbyRF cmd_1
2018-03-08 21:24:00 err No match: '2 minuten vorspulen'
2018-03-08 21:24:00 origin
2018-03-08 16:18:22 response {"requestUrl":"/raumserver/controller/seek?id=Wohnzimmer&value=120","action":"seek","error":false,"msg":"","data":{"udn":"uuid:06CEC705-639E-4789-9129-599267D40B43"}}
2018-03-08 21:24:00 set 2 minuten vorspulen
2018-03-08 21:24:00 status disabled
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: 2 minuten vorspulen
After correction:
2 minuten vorspulen
Command part: '2 minuten vorspulen'
talk Evaluate search:
2 minuten vorspulen =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
2 minuten vorspulen =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
2 minuten vorspulen =~ /?(@rooms) && leise\b/i
talk Evaluate search:
2 minuten vorspulen =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
2 minuten vorspulen =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
2 minuten vorspulen =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
2 minuten vorspulen =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
talk Evaluate search:
2 minuten vorspulen =~ /weiter|vor$/i
talk Evaluate search:
2 minuten vorspulen =~ /zurück|anfang$/i
talk Evaluate search:
2 minuten vorspulen =~ /(minuten|sekunden) && vorspulen auf (\S+)/i
No match: '2 minuten vorspulen'
Nothing to do: 2 minuten vorspulen
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
spulen:
1
2
3
4
5
6
7
8
9
10
15
20
25
30
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFSpulen:
60
120
180
240
300
360
420
480
540
600
900
1200
1500
1800
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x3d631c0)
HASH(0x3a83930)
HASH(0x3e25e18)
HASH(0x3c6ecf0)
HASH(0x3c29490)
HASH(0x3d52250)
HASH(0x3ce09c8)
HASH(0x3c9ce50)
HASH(0x3da6e40)
HASH(0x3dcfbf0)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
types_color = Lampe,Licht
places = Decke,Couch,Sofa
types_switch = Lampe,Licht
spulen = 1,2,3,4,5,6,7,8,9,10,15,20,25,30
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
RFSpulen = 60,120,180,240,300,360,420,480,540,600,900,1200,1500,1800
disable 1
room Sprachsteuerung
userReadings 1
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")}
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")}
test (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-08 21:12:03 cmds set StandbyRF cmd_1
2018-03-08 21:26:26 err Field #3 doesn't exist in Array!
2018-03-08 21:26:26 origin
2018-03-08 16:18:22 response {"requestUrl":"/raumserver/controller/seek?id=Wohnzimmer&value=120","action":"seek","error":false,"msg":"","data":{"udn":"uuid:06CEC705-639E-4789-9129-599267D40B43"}}
2018-03-08 21:26:26 set test 3
2018-03-08 21:26:26 status disabled
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: test 3
After correction:
test 3
Command part: 'test 3'
talk Evaluate search:
test 3 =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
test 3 =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
test 3 =~ /?(@rooms) && leise\b/i
talk Evaluate search:
test 3 =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
test 3 =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
test 3 =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
test 3 =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
talk Evaluate search:
test 3 =~ /weiter|vor$/i
talk Evaluate search:
test 3 =~ /zurück|anfang$/i
talk Evaluate search:
test 3 =~ /test (\S+)/i
Keylists: $VAR1 = undef;
Filled lists: $VAR1 = 'test (\\S+)';
Words: $VAR1 = '';
$VAR2 = '3';
Match: test 3
Unmatch:
Hit with phrase: qr/test (\S+)/i
Handle reaction cmd: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
Replaced bracket: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))} -> {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>""}*$1[60,1,empty,60]))}
Advanced bracket replacement. $160,1,empty,60 = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>""}*###))}
Keyword (1): '3'
ARRAY evaluation: else: empty: 60
array: 60 1
Numeral word found. '3' converted to; 3
Field #3 doesn't exist in Array!
Field #3 doesn't exist in Array!
Nothing to do: test 3
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
spulen:
1
2
3
4
5
6
7
8
9
10
15
20
25
30
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFSpulen:
60
120
180
240
300
360
420
480
540
600
900
1200
1500
1800
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x3d55658)
HASH(0x3ce39b8)
HASH(0x3d2a308)
HASH(0x144f4e8)
HASH(0x3da3858)
HASH(0x14460f8)
HASH(0x3cc2710)
HASH(0x3e25a10)
HASH(0x3c84338)
HASH(0x3e2a9c8)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
types_color = Lampe,Licht
places = Decke,Couch,Sofa
types_switch = Lampe,Licht
spulen = 1,2,3,4,5,6,7,8,9,10,15,20,25,30
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
RFSpulen = 60,120,180,240,300,360,420,480,540,600,900,1200,1500,1800
disable 1
room Sprachsteuerung
userReadings 1
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")}
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")}
(vorspulen um) (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-08 21:43:04 cmds {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".(7*60))}
2018-03-08 21:42:40 err No match: 'vorspulen um 4'
2018-03-08 21:43:04 origin
2018-03-08 16:18:22 response {"requestUrl":"/raumserver/controller/seek?id=Wohnzimmer&value=120","action":"seek","error":false,"msg":"","data":{"udn":"uuid:06CEC705-639E-4789-9129-599267D40B43"}}
2018-03-08 21:43:04 set vorspulen um 7
2018-03-08 21:43:04 status disabled
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: vorspulen um 7
After correction:
vorspulen um 7
Command part: 'vorspulen um 7'
talk Evaluate search:
vorspulen um 7 =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
vorspulen um 7 =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
vorspulen um 7 =~ /?(@rooms) && leise\b/i
talk Evaluate search:
vorspulen um 7 =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
vorspulen um 7 =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
vorspulen um 7 =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
vorspulen um 7 =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
talk Evaluate search:
vorspulen um 7 =~ /weiter|vor$/i
talk Evaluate search:
vorspulen um 7 =~ /zurück|anfang$/i
talk Evaluate search:
vorspulen um 7 =~ /(vorspulen um) (\S+)/i
Keylists: $VAR1 = undef;
Filled lists: $VAR1 = '(vorspulen um) (\\S+)';
Words: $VAR1 = '';
$VAR2 = 'vorspulen um';
$VAR3 = '7';
Match: vorspulen um 7
Unmatch:
Hit with phrase: qr/(vorspulen um) (\S+)/i
Handle reaction cmd: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
Simple bracket selection (No. 2): '7'
Replaced bracket: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))} -> {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"7"}*$1[60,1,empty,60]))}
Advanced bracket replacement. $160,1,empty,60 = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"7"}*###))}
Keyword (1): 'vorspulen um'
ARRAY evaluation: else: empty: 60
array: 60 1
Numeral word found. 'vorspulen um' converted to; vorspulen um
Clipnumber 1 is no array! Try to extract by seperator '|'
Clipnumber 1 includes no array or integer in '(vorspulen um) (\S+)!
Searching position of 'vorspulen um' in 'vorspulen um'
Found 'vorspulen um' at position 0
Advanced bracket replacement. $2numeral=>"7" = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".(###*60))}
Keyword (2): '7'
HASH evaluation:
$VAR1 = {
'numeral' => {
'order' => 0,
'val' => '7'
}
};
Functionmod 'CODE(0x32efb28)' 7
Word found (numeral): '7' replace with '7'
Result of cmd: $VAR1 = {
'cmd' => '{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".(7*60))}'
};
Executing Command: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".(7*60))}
Pushed: {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".(7*60))}
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
spulen:
1
2
3
4
5
6
7
8
9
10
15
20
25
30
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
(minuten|sekunden) && vorspulen auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
überall leise\b = set Raumfeld_WZ volume 50; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 13
überall (entspannte|normale lautstärke) = set Raumfeld_WZ volume 65; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 30
überall laut\b = überall (entspannte|normale lautstärke) = set Raumfeld_WZ volume 95; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 95
Internals:
DEF Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[65,30,30,empty,65]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[95,55,55,empty,95]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")}
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")}
(minuten|sekunden) && vorspulen auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
NAME talk
NR 165
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-08 22:12:58 cmds {GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=(25*60")}
2018-03-09 15:23:11 err No match: 'vorspulen auf 3 minuten'
2018-03-09 15:23:11 origin
2018-03-08 16:18:22 response {"requestUrl":"/raumserver/controller/seek?id=Wohnzimmer&value=120","action":"seek","error":false,"msg":"","data":{"udn":"uuid:06CEC705-639E-4789-9129-599267D40B43"}}
2018-03-09 15:23:11 set vorspulen auf 3 minuten
2018-03-09 15:23:11 status err
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: vorspulen auf 3 minuten
After correction:
vorspulen auf 3 minuten
Command part: 'vorspulen auf 3 minuten'
Timephrase found: =~ s/\b(in|und|nach)? (\d+|sieb\S*|elf\S*|zehn\S*|acht\S*|zwei\S*|neun\S*|null|zwölf\S*|fünf\S*|(drei\S*|dritt\S*)|(ein\S*|erste\S*)|vier\S*|sechs\S*) minute.?\b/
TIMEPHRASEDATA mod: 'min' raw: '"$2"' result: '3' opt: ' 3 '
Extracted Timephrase. ' 3 minuten '
Commandpart after datedecoding. 'vorspulen auf '
Eventtime found: Fri Mar 9 15:26:11 2018
Command left: 'vorspulen auf'
talk Evaluate search:
vorspulen auf =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
vorspulen auf =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
vorspulen auf =~ /?(@rooms) && leise\b/i
talk Evaluate search:
vorspulen auf =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
vorspulen auf =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
vorspulen auf =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
vorspulen auf =~ /licht (\S+ ){0,2}(@rooms) (\S+)/i
talk Evaluate search:
vorspulen auf =~ /weiter|vor$/i
talk Evaluate search:
vorspulen auf =~ /zurück|anfang$/i
talk Evaluate search:
vorspulen auf =~ /(minuten|sekunden) && vorspulen auf (\S+)/i
No match: 'vorspulen auf 3 minuten'
Nothing to do: vorspulen auf 3 minuten
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
places:
Decke
Couch
Sofa
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
spulen:
1
2
3
4
5
6
7
8
9
10
15
20
25
30
types_color:
Lampe
Licht
types_switch:
Lampe
Licht
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFSpulen:
60
120
180
240
300
360
420
480
540
600
900
1200
1500
1800
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x3da69b8)
HASH(0x3dccf90)
HASH(0x3c60be8)
HASH(0x3d0f588)
HASH(0x3d549f0)
HASH(0x3dba4d8)
HASH(0x3d54a08)
HASH(0x3dbad50)
HASH(0x3b35280)
HASH(0x3a64138)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
types_color = Lampe,Licht
places = Decke,Couch,Sofa
types_switch = Lampe,Licht
spulen = 1,2,3,4,5,6,7,8,9,10,15,20,25,30
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
RFSpulen = 60,120,180,240,300,360,420,480,540,600,900,1200,1500,1800
disable 0
room Sprachsteuerung
userReadings 1
(@name) && (@verb) && (Romantisch|Fertig|Kinder|Entspannt|baden) && baden = set Baden $3{ /romantisch/ => romantisch, /fertig/ => ende, /kinder/ => kinder, /entspannt/ => entspannt, /baden/ => standart}
(romantisch|fertig|kinder|entspannt) && baden = set Baden $1[romantisch,fertig,kinder,entspannt ,else, standart]
Zitatbei vorspulen auf 3 minuten findet er leider trotzdem keinen match
Timephrase found: =~ s/\b(in|und|nach)? (\d+|sieb\S*|elf\S*|zehn\S*|acht\S*|zwei\S*|neun\S*|null|zwölf\S*|fünf\S*|(drei\S*|dritt\S*)|(ein\S*|erste\S*)|vier\S*|sechs\S*) minute.?\b/
TIMEPHRASEDATA mod: 'min' raw: '"$2"' result: '3' opt: ' 3 '
Extracted Timephrase. ' 3 minuten '
Zitat von: Phill am 13 März 2018, 12:06:04
Talk2Fhem interpretiert das als Zeitangabe, und entfernt den Text aus dem Kommando. Deswegen bleibt nur noch vorspulen auf übrig. In der Log steht das so:Code AuswählenTimephrase found: =~ s/\b(in|und|nach)? (\d+|sieb\S*|elf\S*|zehn\S*|acht\S*|zwei\S*|neun\S*|null|zwölf\S*|fünf\S*|(drei\S*|dritt\S*)|(ein\S*|erste\S*)|vier\S*|sechs\S*) minute.?\b/
TIMEPHRASEDATA mod: 'min' raw: '"$2"' result: '3' opt: ' 3 '
Extracted Timephrase. ' 3 minuten '
Da "in und nach" optional ist denkt er es ist eine Zeitangeb was es ja eigentlich nicht ist. Es ist wahrscheinlich besser wenn ich die drei Wörter zwingend mache für eine Zeiterkennung. Muss ich mir nochmal durch den Kopf gehen lassen.
Gruß
ZitatEinstellen der Farbe von Farbwechsellampen (Philips Hue, Wifilight, ...)
Für das Beispiel zum Einstellen der Lichtfarbe nehmen wir eine Farbwechsellampe LampeBunt an, welche den Befehl RGB unterstützt. Diese erhält folgende Attribute:
Internals:
DEF #Fernseher#
Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
#Musik Wohnzimmer,Küche und Badezimmer an#
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
überall an\b = {GetHttpFile("192.168.178.21
überall aus\b = {GetHttpFile("192.168.178.21
starte (@Playlist) = $1[@Musik]
#Lautstärkeregelung Raumfeld#
überall leise\b = set Raumfeld_WZ volume 50; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 13
überall (entspannte|normale lautstärke) = set Raumfeld_WZ volume 60; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 30
überall laut\b = set Raumfeld_WZ volume 80; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 45
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[60,30,30,empty,60]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[80,55,55,empty,80]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
#Titel vor/zurück und spulen#
weiter|vor$ = {GetHttpFile("192.168.178.21
zurück|anfang$ = {GetHttpFile("192.168.178.21
(minuten|sekunden) && vorspulen auf (\S+) =
{GetHttpFile("192.168.178.21
#Lichtsteuerung#
#licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
# 1 2 3 4 5 6
?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$ =
(cmd=>'set T2F_types_color=.*$2@.* RGB $5[@rgb]')
NAME talk
NR 163
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-14 09 cmds set T2F_types_color=.*Lampe.* RGB 6B8E23
2018-03-14 09 err No match: 'Bitte schalte die Lampe im Wohnzimmer an der Couch an'
2018-03-14 09 origin
2018-03-14 09 response Unknown argument RGB, choose one of off on toggle statusRequest pct bri rgb hue sat xy effect dimUp dimDown hueUp hueDown satUp satDown alert rename on-for-timer blink off-for-timer on-till-overnight off-till off-till-overnight on-till intervals
2018-03-14 09 set Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun
2018-03-14 09 status response
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun
After correction:
Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun
Command part: 'Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun'
Command left: 'schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun'
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall an\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall aus\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /starte (@Playlist)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall leise\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall (entspannte|normale lautstärke)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall laut\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && leise\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /weiter|vor$/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /zurück|anfang$/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /(minuten|sekunden) && vorspulen auf (\S+)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$/i
Keylists: $VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'T2F_types_color';
$VAR4 = 'T2F_rooms';
$VAR5 = 'T2F_places';
$VAR6 = 'colors';
Filled lists: $VAR1 = '(bitte)';
$VAR2 = '(Lampe|Licht)';
$VAR3 = '(Haus|Dachgeschoss|!Wohnzimmer)';
$VAR4 = '(Decke|Couch|Sofa)';
$VAR5 = 'auf (Aus|Schwarz|Dunkles Schiefergrau|Schiefergrau|Helles Schiefergrau|Helles Stahlblau|Mattes Grau|Grau|Dunkelgrau|Silber|Hellgrau|Gainsboro|Rauchiges Wei\\S\\S?|Geisterwei\\S\\S?|Wei\\S\\S?|Schneewei\\S\\S?|Elfenbein|Bl\\S\\S?tenwei\\S\\S?|Muschel|Altgold|Leinenfarbe|Antikes Wei\\S\\S?|Mandelwei\\S\\S?|Cremiges Papaya|Beige|Mais|Helles Goldrutengelb|Hellgelb|Chiffongelb|Blasse Goldrutenfarbe|Khaki|Gelb|Gold|Orange|Dunkles Orange|Goldrute|dunkle Goldrutenfarbe|Peru|Schokolade|Sattelbraun|Ocker|Braun|Dunkelrot|Kastanienbraun|Ziegelfarbe|Indischrot|Karmesinrot|Rot|Orangenrot|Tomatenrot|Koralle|Lachs|Helles Korallenrot|Dunkle Lachsfarbe|Helle Lachsfarbe|Sandbraun|Rosiges Braun|Gelbbraun|Grobes Braun|Weizen|Pfirsich|Navajowei\\S\\S?|Tomatencreme|Rosige Lavenderfarbe|Altrosa|Rosa|Hellrosa|Leuchtendes Rosa|Fuchsie|Magentarot|Tiefrosa|Mittleres Violettrot|Blasses Violettrot|Pflaume|Distel|Lavendelfarbe|Violett|Orchidee|Dunkles Magentarot|Violett|Indigo|Blauviolett|Dunkles Violett|Dunkle Orchideenfarbe|Mittleres Violett|Mittlere Orchideenfarbe|Mittleres Schieferblau|Schieferblau|Dunkles Schieferblau|Mitternachtsblau|Marineblau|Dunkelblau|Mittelblau|Blau|K\\S\\S?nigsblau|Stahlblau|Kornblumenblau|Dodger-Blau|Tiefes Himmelblau|Helles Himmelblau|Himmelblau|Hellblau|Zyanblau|Blaugr\\S\\S?n|Taubenblau|Helles Cyanblau|Aliceblau|Himmelblau|Cremig Pfefferminz|Honigmelone|Aquamarinblau|T\\S\\S?rkis|Blasses T\\S\\S?rkis|Mittleres T\\S\\S?rkis|Dunkles T\\S\\S?rkis|Mittleres Aquamarinblau|Helles Seegr\\S\\S?n|Dunkles Zyanblau|Entenbraun|Kadettblau|Mittleres Seegr\\S\\S?n|Dunkles Seegr\\S\\S?n|Hellgr\\S\\S?n|Blassgr\\S\\S?n|Mittleres Fr\\S\\S?hlingsgr\\S\\S?n|Fr\\S\\S?hlingsgr\\S\\S?n|Zitronengr\\S\\S?n|Gelbgr\\S\\S?n|Seegr\\S\\S?n|Waldgr\\S\\S?n|Gr\\S\\S?n|Dunkelgr\\S\\S?n|Olivfarbiges Graubraun|Dunkles Olivgr\\S\\S?n|Olivgr\\S\\S?n|Dunkles Khaki|Gelbgr\\S\\S?n|Hellgr\\S\\S?n|Gr\\S\\S?ngelb)( schalten| stellen)?$';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'Lampe';
$VAR4 = undef;
$VAR5 = 'Couch';
$VAR6 = 'Olivfarbiges Graubraun';
$VAR7 = undef;
Match: LampeCouchauf Olivfarbiges Graubraun
Unmatch: schalte die im Wohnzimmer an der
Hit with phrase: qr/?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$/i
Handle reaction cmd: set T2F_types_color=.*$2@.* RGB $5[@rgb]
Simple bracket selection (No. 2) with Keyword 0: 'Lampe'
Simple bracket selection (No. 3) with Keyword 3: ''
Simple bracket selection (No. 4) with Keyword 1: 'Couch'
Replaced bracket: set T2F_types_color=.*$2@.* RGB $5[@rgb] -> set T2F_types_color=.*Lampe.* RGB $5[@rgb]
Advanced bracket replacement. $5@rgb = set T2F_types_color=.*Lampe.* RGB ###
Adding modlist: "000000","000000","8FBC8F","708090","778899","B0C4DE","696969","808080","A9A9A9","C0C0C0","D3D3D3","DCDCDC","F5F5F5","F8F8FF","FFFFFF","FFFAFA","FFFFF0","FFFAF0","FFF5EE","FDF5E6","FAF0E6","FAEBD7","FFEBCD","FFEFD5","F5F5DC","FFF8DC","FAFAD2","FFFFE0","FFFACD","EEE8AA","F0E68C","FFFF00","FFD700","FFA500","FF8C00","DAA520","B8860B","CD853F","D2691E","8B4513","A0522D","A52A2A","8B0000","800000","B22222","CD5C5C","DC143C","FF0000","FF4500","FF6347","FF7F50","FA8072","F08080","E9967A","FFA07A","F4A460","BC8F8F","D2B48C","DEB887","F5DEB3","FFDAB9","FFDEAD","FFE4C4","FFF0F5","FFE4E1","FFC0CB","FFB6C1","FF69B4","FF00FF","FF00FF","FF1493","C71585","DB7093","DDA0DD","D8BFD8","E6E6FA","EE82EE","DA70D6","8B008B","800080","4B0082","8A2BE2","9400D3","9932CC","9370DB","BA55D3","7B68EE","6A5ACD","483D8B","191970","000080","00008B","0000CD","0000FF","4169E1","4682B4","6495ED","1E90FF","00BFFF","87CEFA","87CEEB","ADD8E6","00FFFF","00FFFF","B0E0E6","E0FFFF","A0CE00","F0FFFF","F5FFFA","F0FFF0","7FFFD4","40E0D0","AFEEEE","48D1CC","00CED1","66CDAA","20B2AA","008B8B","008080","5F9EA0","3CB371","8FBC8F","90EE90","98FB98","00FA9A","00FF7F","00FF00","32CD32","2E8B57","228B22","008000","006400","6B8E23","556B2F","808000","BDB76B","9ACD32","7FFF00","ADFF2F"
Keyword (5): 'Olivfarbiges Graubraun'
ARRAY evaluation: else: empty:
array: 000000 000000 8FBC8F 708090 778899 B0C4DE 696969 808080 A9A9A9 C0C0C0 D3D3D3 DCDCDC F5F5F5 F8F8FF FFFFFF FFFAFA FFFFF0 FFFAF0 FFF5EE FDF5E6 FAF0E6 FAEBD7 FFEBCD FFEFD5 F5F5DC FFF8DC FAFAD2 FFFFE0 FFFACD EEE8AA F0E68C FFFF00 FFD700 FFA500 FF8C00 DAA520 B8860B CD853F D2691E 8B4513 A0522D A52A2A 8B0000 800000 B22222 CD5C5C DC143C FF0000 FF4500 FF6347 FF7F50 FA8072 F08080 E9967A FFA07A F4A460 BC8F8F D2B48C DEB887 F5DEB3 FFDAB9 FFDEAD FFE4C4 FFF0F5 FFE4E1 FFC0CB FFB6C1 FF69B4 FF00FF FF00FF FF1493 C71585 DB7093 DDA0DD D8BFD8 E6E6FA EE82EE DA70D6 8B008B 800080 4B0082 8A2BE2 9400D3 9932CC 9370DB BA55D3 7B68EE 6A5ACD 483D8B 191970 000080 00008B 0000CD 0000FF 4169E1 4682B4 6495ED 1E90FF 00BFFF 87CEFA 87CEEB ADD8E6 00FFFF 00FFFF B0E0E6 E0FFFF A0CE00 F0FFFF F5FFFA F0FFF0 7FFFD4 40E0D0 AFEEEE 48D1CC 00CED1 66CDAA 20B2AA 008B8B 008080 5F9EA0 3CB371 8FBC8F 90EE90 98FB98 00FA9A 00FF7F 00FF00 32CD32 2E8B57 228B22 008000 006400 6B8E23 556B2F 808000 BDB76B 9ACD32 7FFF00 ADFF2F
Numeral word found. 'Olivfarbiges Graubraun' converted to; Olivfarbiges Graubraun
Searching position of 'Olivfarbiges Graubraun' in 'Aus Schwarz Dunkles Schiefergrau Schiefergrau Helles Schiefergrau Helles Stahlblau Mattes Grau Grau Dunkelgrau Silber Hellgrau Gainsboro Rauchiges Wei\S\S? Geisterwei\S\S? Wei\S\S? Schneewei\S\S? Elfenbein Bl\S\S?tenwei\S\S? Muschel Altgold Leinenfarbe Antikes Wei\S\S? Mandelwei\S\S? Cremiges Papaya Beige Mais Helles Goldrutengelb Hellgelb Chiffongelb Blasse Goldrutenfarbe Khaki Gelb Gold Orange Dunkles Orange Goldrute dunkle Goldrutenfarbe Peru Schokolade Sattelbraun Ocker Braun Dunkelrot Kastanienbraun Ziegelfarbe Indischrot Karmesinrot Rot Orangenrot Tomatenrot Koralle Lachs Helles Korallenrot Dunkle Lachsfarbe Helle Lachsfarbe Sandbraun Rosiges Braun Gelbbraun Grobes Braun Weizen Pfirsich Navajowei\S\S? Tomatencreme Rosige Lavenderfarbe Altrosa Rosa Hellrosa Leuchtendes Rosa Fuchsie Magentarot Tiefrosa Mittleres Violettrot Blasses Violettrot Pflaume Distel Lavendelfarbe Violett Orchidee Dunkles Magentarot Violett Indigo Blauviolett Dunkles Violett Dunkle Orchideenfarbe Mittleres Violett Mittlere Orchideenfarbe Mittleres Schieferblau Schieferblau Dunkles Schieferblau Mitternachtsblau Marineblau Dunkelblau Mittelblau Blau K\S\S?nigsblau Stahlblau Kornblumenblau Dodger-Blau Tiefes Himmelblau Helles Himmelblau Himmelblau Hellblau Zyanblau Blaugr\S\S?n Taubenblau Helles Cyanblau Aliceblau Himmelblau Cremig Pfefferminz Honigmelone Aquamarinblau T\S\S?rkis Blasses T\S\S?rkis Mittleres T\S\S?rkis Dunkles T\S\S?rkis Mittleres Aquamarinblau Helles Seegr\S\S?n Dunkles Zyanblau Entenbraun Kadettblau Mittleres Seegr\S\S?n Dunkles Seegr\S\S?n Hellgr\S\S?n Blassgr\S\S?n Mittleres Fr\S\S?hlingsgr\S\S?n Fr\S\S?hlingsgr\S\S?n Zitronengr\S\S?n Gelbgr\S\S?n Seegr\S\S?n Waldgr\S\S?n Gr\S\S?n Dunkelgr\S\S?n Olivfarbiges Graubraun Dunkles Olivgr\S\S?n Olivgr\S\S?n Dunkles Khaki Gelbgr\S\S?n Hellgr\S\S?n Gr\S\S?ngelb'
Found 'Olivfarbiges Graubraun' at position 132
Result of cmd: $VAR1 = {
'cmd' => 'set T2F_types_color=.*Lampe.* RGB 6B8E23'
};
Executing Command: set T2F_types_color=.*Lampe.* RGB 6B8E23
Pushed: set T2F_types_color=.*Lampe.* RGB 6B8E23
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
Playlist:
Radiosender
PureFM
Spreeradio
Oliver Koletzki
T2F_places:
Decke
Couch
Sofa
T2F_rooms:
Haus
Dachgeschoss
!Wohnzimmer
T2F_types_color:
Lampe
Licht
T2F_types_switch:
Lampe
Licht
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_modwordlist:
Musik:
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Radiosender)}
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Pure fm Berlin)}
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=105 5 Spreeradio)}
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Oliver koletzki)}
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x32478c8)
HASH(0x2c03ac0)
HASH(0x312c928)
HASH(0x30a07d0)
HASH(0x311ea90)
HASH(0x322af98)
HASH(0x3224638)
HASH(0x302ce60)
HASH(0x31149b8)
HASH(0x2bb1b20)
HASH(0x328e460)
HASH(0x2fde3f8)
HASH(0x31c84f8)
HASH(0x300b980)
HASH(0x325b9c0)
HASH(0x31d97d8)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
Playlist = Radiosender,PureFM,Spreeradio,Oliver Koletzki
T2F_places = Decke,Couch,Sofa
T2F_rooms = Haus,Dachgeschoss,!Wohnzimmer
T2F_types_color = Lampe,Licht
T2F_types_switch = Lampe,Licht
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
Musik = {GetHttpFile("192.168.178.21 fm Berlin")},{GetHttpFile("192.168.178.21 5 Spreeradio")},{GetHttpFile("192.168.178.21 koletzki")}
disable 0
room Sprachsteuerung
userReadings 1
2018-03-14 16:24:04 Talk2Fhem talk schalte auf fire TV
2018-03-14 16:24:13 Talk2Fhem talk set: schalte auf fire TV
2018-03-14 16:24:13 Talk2Fhem talk origin:
2018-03-14 16:24:14 harmony Hub_Wohnzimmer activity Fire.TV
2018-03-14 16:24:14 dummy Activity_Wohnzimmer Fire.TV
2018-03-14 16:24:14 dummy Google_Home Generell_Activity: Fire.TV
2018-03-14 16:24:14 Talk2Fhem talk cmds: setreading Google_Home Generell_Activity Fire.TV
2018-03-14 16:24:14 Talk2Fhem talk status: done
T2F_rooms = Haus,Dachgeschoss,!Wohnzimmer
Zitat von: Phill am 15 März 2018, 13:47:39Das habe ich verbrochen ;-)
@ambercrombie. Ja das verstehe ich auch so. Ich kann dir aber leider nicht viel weiterhelfen, da der Abschnitt nicht von mir stammt.
Zitat von: Phill am 15 März 2018, 13:47:39
Was mir nur beim durchschauen aufgefallen ist, das beiCode AuswählenT2F_rooms = Haus,Dachgeschoss,!Wohnzimmer
ich den Sinn des Ausrufezeichens nicht ganz verstehe, und sogar behaupten würde das ist falsch.
Zitat von: Abercrombie1892 am 14 März 2018, 09:24:02
ich hab mich mal mit den lampen beschäftigt. bin deiner anleitung für die farbwechsellampen gefolgt.
Einstellen der Farbe von Farbwechsellampen (Philips Hue, Wifilight, ...)
ich hab genau das gleiche genommen zum test wie aus dem wiki nur halt mit dekolampe statt lampe bunt. Lampen sind phillips Hue. ich versteh das doch richtig, wenn ich jeder Lampe jetzt die entsprechenden Attribute gebe, dann müsste T2F die Lampen ja erkennen. und entsprechend nach ihren Orten ( vorne, hinten, oben ) Wohnzimmer, Schlafzimmer ect. zuordnen?Code AuswählenInternals:
DEF #Fernseher#
Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
#Musik Wohnzimmer,Küche und Badezimmer an#
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
überall an\b = {GetHttpFile("192.168.178.21
überall aus\b = {GetHttpFile("192.168.178.21
starte (@Playlist) = $1[@Musik]
#Lautstärkeregelung Raumfeld#
überall leise\b = set Raumfeld_WZ volume 50; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 13
überall (entspannte|normale lautstärke) = set Raumfeld_WZ volume 60; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 30
überall laut\b = set Raumfeld_WZ volume 80; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 45
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[60,30,30,empty,60]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[80,55,55,empty,80]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
#Titel vor/zurück und spulen#
weiter|vor$ = {GetHttpFile("192.168.178.21
zurück|anfang$ = {GetHttpFile("192.168.178.21
(minuten|sekunden) && vorspulen auf (\S+) =
{GetHttpFile("192.168.178.21
#Lichtsteuerung#
#licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
# 1 2 3 4 5 6
?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$ =
(cmd=>'set T2F_types_color=.*$2@.* RGB $5[@rgb]')
NAME talk
NR 163
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-14 09 cmds set T2F_types_color=.*Lampe.* RGB 6B8E23
2018-03-14 09 err No match: 'Bitte schalte die Lampe im Wohnzimmer an der Couch an'
2018-03-14 09 origin
2018-03-14 09 response Unknown argument RGB, choose one of off on toggle statusRequest pct bri rgb hue sat xy effect dimUp dimDown hueUp hueDown satUp satDown alert rename on-for-timer blink off-for-timer on-till-overnight off-till off-till-overnight on-till intervals
2018-03-14 09 set Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun
2018-03-14 09 status response
helper:
LOG Talk2Fhem Version: 0.5.1
Decoding Text: Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun
After correction:
Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun
Command part: 'Bitte schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun'
Command left: 'schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun'
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall an\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall aus\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /starte (@Playlist)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall leise\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall (entspannte|normale lautstärke)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /überall laut\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && leise\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /weiter|vor$/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /zurück|anfang$/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /(minuten|sekunden) && vorspulen auf (\S+)/i
talk Evaluate search:
schalte die Lampe im Wohnzimmer an der Couch auf Olivfarbiges Graubraun =~ /?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$/i
Keylists: $VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'T2F_types_color';
$VAR4 = 'T2F_rooms';
$VAR5 = 'T2F_places';
$VAR6 = 'colors';
Filled lists: $VAR1 = '(bitte)';
$VAR2 = '(Lampe|Licht)';
$VAR3 = '(Haus|Dachgeschoss|!Wohnzimmer)';
$VAR4 = '(Decke|Couch|Sofa)';
$VAR5 = 'auf (Aus|Schwarz|Dunkles Schiefergrau|Schiefergrau|Helles Schiefergrau|Helles Stahlblau|Mattes Grau|Grau|Dunkelgrau|Silber|Hellgrau|Gainsboro|Rauchiges Wei\\S\\S?|Geisterwei\\S\\S?|Wei\\S\\S?|Schneewei\\S\\S?|Elfenbein|Bl\\S\\S?tenwei\\S\\S?|Muschel|Altgold|Leinenfarbe|Antikes Wei\\S\\S?|Mandelwei\\S\\S?|Cremiges Papaya|Beige|Mais|Helles Goldrutengelb|Hellgelb|Chiffongelb|Blasse Goldrutenfarbe|Khaki|Gelb|Gold|Orange|Dunkles Orange|Goldrute|dunkle Goldrutenfarbe|Peru|Schokolade|Sattelbraun|Ocker|Braun|Dunkelrot|Kastanienbraun|Ziegelfarbe|Indischrot|Karmesinrot|Rot|Orangenrot|Tomatenrot|Koralle|Lachs|Helles Korallenrot|Dunkle Lachsfarbe|Helle Lachsfarbe|Sandbraun|Rosiges Braun|Gelbbraun|Grobes Braun|Weizen|Pfirsich|Navajowei\\S\\S?|Tomatencreme|Rosige Lavenderfarbe|Altrosa|Rosa|Hellrosa|Leuchtendes Rosa|Fuchsie|Magentarot|Tiefrosa|Mittleres Violettrot|Blasses Violettrot|Pflaume|Distel|Lavendelfarbe|Violett|Orchidee|Dunkles Magentarot|Violett|Indigo|Blauviolett|Dunkles Violett|Dunkle Orchideenfarbe|Mittleres Violett|Mittlere Orchideenfarbe|Mittleres Schieferblau|Schieferblau|Dunkles Schieferblau|Mitternachtsblau|Marineblau|Dunkelblau|Mittelblau|Blau|K\\S\\S?nigsblau|Stahlblau|Kornblumenblau|Dodger-Blau|Tiefes Himmelblau|Helles Himmelblau|Himmelblau|Hellblau|Zyanblau|Blaugr\\S\\S?n|Taubenblau|Helles Cyanblau|Aliceblau|Himmelblau|Cremig Pfefferminz|Honigmelone|Aquamarinblau|T\\S\\S?rkis|Blasses T\\S\\S?rkis|Mittleres T\\S\\S?rkis|Dunkles T\\S\\S?rkis|Mittleres Aquamarinblau|Helles Seegr\\S\\S?n|Dunkles Zyanblau|Entenbraun|Kadettblau|Mittleres Seegr\\S\\S?n|Dunkles Seegr\\S\\S?n|Hellgr\\S\\S?n|Blassgr\\S\\S?n|Mittleres Fr\\S\\S?hlingsgr\\S\\S?n|Fr\\S\\S?hlingsgr\\S\\S?n|Zitronengr\\S\\S?n|Gelbgr\\S\\S?n|Seegr\\S\\S?n|Waldgr\\S\\S?n|Gr\\S\\S?n|Dunkelgr\\S\\S?n|Olivfarbiges Graubraun|Dunkles Olivgr\\S\\S?n|Olivgr\\S\\S?n|Dunkles Khaki|Gelbgr\\S\\S?n|Hellgr\\S\\S?n|Gr\\S\\S?ngelb)( schalten| stellen)?$';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'Lampe';
$VAR4 = undef;
$VAR5 = 'Couch';
$VAR6 = 'Olivfarbiges Graubraun';
$VAR7 = undef;
Match: LampeCouchauf Olivfarbiges Graubraun
Unmatch: schalte die im Wohnzimmer an der
Hit with phrase: qr/?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$/i
Handle reaction cmd: set T2F_types_color=.*$2@.* RGB $5[@rgb]
Simple bracket selection (No. 2) with Keyword 0: 'Lampe'
Simple bracket selection (No. 3) with Keyword 3: ''
Simple bracket selection (No. 4) with Keyword 1: 'Couch'
Replaced bracket: set T2F_types_color=.*$2@.* RGB $5[@rgb] -> set T2F_types_color=.*Lampe.* RGB $5[@rgb]
Advanced bracket replacement. $5@rgb = set T2F_types_color=.*Lampe.* RGB ###
Adding modlist: "000000","000000","8FBC8F","708090","778899","B0C4DE","696969","808080","A9A9A9","C0C0C0","D3D3D3","DCDCDC","F5F5F5","F8F8FF","FFFFFF","FFFAFA","FFFFF0","FFFAF0","FFF5EE","FDF5E6","FAF0E6","FAEBD7","FFEBCD","FFEFD5","F5F5DC","FFF8DC","FAFAD2","FFFFE0","FFFACD","EEE8AA","F0E68C","FFFF00","FFD700","FFA500","FF8C00","DAA520","B8860B","CD853F","D2691E","8B4513","A0522D","A52A2A","8B0000","800000","B22222","CD5C5C","DC143C","FF0000","FF4500","FF6347","FF7F50","FA8072","F08080","E9967A","FFA07A","F4A460","BC8F8F","D2B48C","DEB887","F5DEB3","FFDAB9","FFDEAD","FFE4C4","FFF0F5","FFE4E1","FFC0CB","FFB6C1","FF69B4","FF00FF","FF00FF","FF1493","C71585","DB7093","DDA0DD","D8BFD8","E6E6FA","EE82EE","DA70D6","8B008B","800080","4B0082","8A2BE2","9400D3","9932CC","9370DB","BA55D3","7B68EE","6A5ACD","483D8B","191970","000080","00008B","0000CD","0000FF","4169E1","4682B4","6495ED","1E90FF","00BFFF","87CEFA","87CEEB","ADD8E6","00FFFF","00FFFF","B0E0E6","E0FFFF","A0CE00","F0FFFF","F5FFFA","F0FFF0","7FFFD4","40E0D0","AFEEEE","48D1CC","00CED1","66CDAA","20B2AA","008B8B","008080","5F9EA0","3CB371","8FBC8F","90EE90","98FB98","00FA9A","00FF7F","00FF00","32CD32","2E8B57","228B22","008000","006400","6B8E23","556B2F","808000","BDB76B","9ACD32","7FFF00","ADFF2F"
Keyword (5): 'Olivfarbiges Graubraun'
ARRAY evaluation: else: empty:
array: 000000 000000 8FBC8F 708090 778899 B0C4DE 696969 808080 A9A9A9 C0C0C0 D3D3D3 DCDCDC F5F5F5 F8F8FF FFFFFF FFFAFA FFFFF0 FFFAF0 FFF5EE FDF5E6 FAF0E6 FAEBD7 FFEBCD FFEFD5 F5F5DC FFF8DC FAFAD2 FFFFE0 FFFACD EEE8AA F0E68C FFFF00 FFD700 FFA500 FF8C00 DAA520 B8860B CD853F D2691E 8B4513 A0522D A52A2A 8B0000 800000 B22222 CD5C5C DC143C FF0000 FF4500 FF6347 FF7F50 FA8072 F08080 E9967A FFA07A F4A460 BC8F8F D2B48C DEB887 F5DEB3 FFDAB9 FFDEAD FFE4C4 FFF0F5 FFE4E1 FFC0CB FFB6C1 FF69B4 FF00FF FF00FF FF1493 C71585 DB7093 DDA0DD D8BFD8 E6E6FA EE82EE DA70D6 8B008B 800080 4B0082 8A2BE2 9400D3 9932CC 9370DB BA55D3 7B68EE 6A5ACD 483D8B 191970 000080 00008B 0000CD 0000FF 4169E1 4682B4 6495ED 1E90FF 00BFFF 87CEFA 87CEEB ADD8E6 00FFFF 00FFFF B0E0E6 E0FFFF A0CE00 F0FFFF F5FFFA F0FFF0 7FFFD4 40E0D0 AFEEEE 48D1CC 00CED1 66CDAA 20B2AA 008B8B 008080 5F9EA0 3CB371 8FBC8F 90EE90 98FB98 00FA9A 00FF7F 00FF00 32CD32 2E8B57 228B22 008000 006400 6B8E23 556B2F 808000 BDB76B 9ACD32 7FFF00 ADFF2F
Numeral word found. 'Olivfarbiges Graubraun' converted to; Olivfarbiges Graubraun
Searching position of 'Olivfarbiges Graubraun' in 'Aus Schwarz Dunkles Schiefergrau Schiefergrau Helles Schiefergrau Helles Stahlblau Mattes Grau Grau Dunkelgrau Silber Hellgrau Gainsboro Rauchiges Wei\S\S? Geisterwei\S\S? Wei\S\S? Schneewei\S\S? Elfenbein Bl\S\S?tenwei\S\S? Muschel Altgold Leinenfarbe Antikes Wei\S\S? Mandelwei\S\S? Cremiges Papaya Beige Mais Helles Goldrutengelb Hellgelb Chiffongelb Blasse Goldrutenfarbe Khaki Gelb Gold Orange Dunkles Orange Goldrute dunkle Goldrutenfarbe Peru Schokolade Sattelbraun Ocker Braun Dunkelrot Kastanienbraun Ziegelfarbe Indischrot Karmesinrot Rot Orangenrot Tomatenrot Koralle Lachs Helles Korallenrot Dunkle Lachsfarbe Helle Lachsfarbe Sandbraun Rosiges Braun Gelbbraun Grobes Braun Weizen Pfirsich Navajowei\S\S? Tomatencreme Rosige Lavenderfarbe Altrosa Rosa Hellrosa Leuchtendes Rosa Fuchsie Magentarot Tiefrosa Mittleres Violettrot Blasses Violettrot Pflaume Distel Lavendelfarbe Violett Orchidee Dunkles Magentarot Violett Indigo Blauviolett Dunkles Violett Dunkle Orchideenfarbe Mittleres Violett Mittlere Orchideenfarbe Mittleres Schieferblau Schieferblau Dunkles Schieferblau Mitternachtsblau Marineblau Dunkelblau Mittelblau Blau K\S\S?nigsblau Stahlblau Kornblumenblau Dodger-Blau Tiefes Himmelblau Helles Himmelblau Himmelblau Hellblau Zyanblau Blaugr\S\S?n Taubenblau Helles Cyanblau Aliceblau Himmelblau Cremig Pfefferminz Honigmelone Aquamarinblau T\S\S?rkis Blasses T\S\S?rkis Mittleres T\S\S?rkis Dunkles T\S\S?rkis Mittleres Aquamarinblau Helles Seegr\S\S?n Dunkles Zyanblau Entenbraun Kadettblau Mittleres Seegr\S\S?n Dunkles Seegr\S\S?n Hellgr\S\S?n Blassgr\S\S?n Mittleres Fr\S\S?hlingsgr\S\S?n Fr\S\S?hlingsgr\S\S?n Zitronengr\S\S?n Gelbgr\S\S?n Seegr\S\S?n Waldgr\S\S?n Gr\S\S?n Dunkelgr\S\S?n Olivfarbiges Graubraun Dunkles Olivgr\S\S?n Olivgr\S\S?n Dunkles Khaki Gelbgr\S\S?n Hellgr\S\S?n Gr\S\S?ngelb'
Found 'Olivfarbiges Graubraun' at position 132
Result of cmd: $VAR1 = {
'cmd' => 'set T2F_types_color=.*Lampe.* RGB 6B8E23'
};
Executing Command: set T2F_types_color=.*Lampe.* RGB 6B8E23
Pushed: set T2F_types_color=.*Lampe.* RGB 6B8E23
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_keywordlist:
Playlist:
Radiosender
PureFM
Spreeradio
Oliver Koletzki
T2F_places:
Decke
Couch
Sofa
T2F_rooms:
Haus
Dachgeschoss
!Wohnzimmer
T2F_types_color:
Lampe
Licht
T2F_types_switch:
Lampe
Licht
colors:
Aus
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon
ambilight
T2F_modwordlist:
Musik:
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Radiosender)}
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Pure fm Berlin)}
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=105 5 Spreeradio)}
{GetHttpFile(192.168.178.21
/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Oliver koletzki)}
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
000000
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x32478c8)
HASH(0x2c03ac0)
HASH(0x312c928)
HASH(0x30a07d0)
HASH(0x311ea90)
HASH(0x322af98)
HASH(0x3224638)
HASH(0x302ce60)
HASH(0x31149b8)
HASH(0x2bb1b20)
HASH(0x328e460)
HASH(0x2fde3f8)
HASH(0x31c84f8)
HASH(0x300b980)
HASH(0x325b9c0)
HASH(0x31d97d8)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon,ambilight
colors = Aus, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
Playlist = Radiosender,PureFM,Spreeradio,Oliver Koletzki
T2F_places = Decke,Couch,Sofa
T2F_rooms = Haus,Dachgeschoss,!Wohnzimmer
T2F_types_color = Lampe,Licht
T2F_types_switch = Lampe,Licht
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, 000000, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
Musik = {GetHttpFile("192.168.178.21 fm Berlin")},{GetHttpFile("192.168.178.21 5 Spreeradio")},{GetHttpFile("192.168.178.21 koletzki")}
disable 0
room Sprachsteuerung
userReadings 1
Executing Command: set T2F_types_color=.*Lampe.* RGB 6B8E23
list T2F_types_color=.*Lampe.*
# Schalten === Rolladen:
rolll?(os?|\S\S?den) ?(\S+){0,2} (Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) && ?(links|rechts) ?(auf) ?(\S+) = set $3[ku, kz, sz, wz]_Rolladenaktor$4[_links, _rechts] pct $6{ true => off , false => on , integer => "$6" }
Readings
cmds set kz_Rolladenaktor pct
err No match: 'Rolladen im Kinderzimmer links ein'
origin
response no value specified
set Rolladen im Kinderzimmer links ein
status done
# Schalten === Rolladen:
?(link\S+ |recht\S+ ) && rolll?(os?|\S\S?den) ?(\S+ ){0,2}(Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) (\S+ )?(auf )?(\S+) =
set $4[ku, kz, sz, wz]_Rolladenaktor$1[_links, _rechts] pct $7{ true => off , false => on , integer => "$7" }
?(link\S+|recht\S+) && rolll?(os?|\S\S?den) ?(\S+ ){0,2}(Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) (\S+ )?(auf )?(\S+) =
set $4[ku_Rolladenaktor, kz_Rolladenaktor, sz_Rolladenaktor,
$1[wz_Rolladenaktor_links, wz_Rolladenaktor_rechts, empty, "'wz_Rolladenaktor_links,wz_Rolladenaktor_rechts'"]] pct $7{ true => off , false => on , integer => "$7" }
Zitat von: RoBra81 am 15 März 2018, 20:35:30
Das sollte eigentlich funtkionieren, zumindest steht in deinem AuszugCode AuswählenExecuting Command: set T2F_types_color=.*Lampe.* RGB 6B8E23
Kannst du mal bitte folgendes in der FHEM-Kommandozeile ausführen:Code Auswählenlist T2F_types_color=.*Lampe.*
Da sollte eigentlich mindestens deine Lampe gefunden werden...
Ronny
Internals:
CHANGED
DEF 22 IODev=HUEDevice
ID 22
INTERVAL
IODev HUEDevice
NAME Dekolampe_WZ
NR 138
STATE dim37%
TYPE HUEDevice
manufacturername Philips
modelid LST001
name Dekolampe
swversion 5.105.1.21778
type Color light
uniqueid 00:17:88:01:00:cb:2a:05-0b
READINGS:
2018-03-12 16:19:02 alert none
2018-03-18 18:05:13 bri 99
2018-03-12 22:36:31 colormode hs
2018-03-12 16:19:02 effect none
2018-03-14 17:22:50 hue 54321
2018-03-18 18:05:13 onoff 1
2018-03-18 18:05:13 pct 39
2018-03-12 16:19:02 reachable 1
2018-03-18 18:05:13 rgb 610963
2018-03-14 17:22:50 sat 232
2018-03-18 18:05:13 state dim37%
2018-03-14 17:24:00 xy 0.3675,0.1811
helper:
alert none
bri 99
colormode hs
ct -1
devtype
effect none
hue 54321
pct 39
reachable 1
rgb 610963
sat 232
update_timeout -1
xy 0.3675,0.1811
Attributes:
IODev HUEDevice
T2F_places Decke,Couch,Sofa
T2F_rooms Haus,Dachgeschoss,!Wohnzimmer
T2F_types_color Lampe,Licht
T2F_types_switch Lampe,Licht
alias Dekolampe
color-icons 2
devStateIcon {(HUEDevice_devStateIcon($name),"toggle")}
icon hue_filled_lightstrip
model LST001
room HUEDevice,Wohnzimmer
subType colordimmer
webCmd hue:rgb:rgb ff0000:rgb 98FF23:rgb 0000ff:toggle:on:off
Talk2Fhem Version: 0.5.1
Decoding Text: schalte die lampe auf grün
After correction:
schalte die lampe auf grün
Command part: 'schalte die lampe auf grün'
talk Evaluate search:
schalte die lampe auf grün =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
schalte die lampe auf grün =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
schalte die lampe auf grün =~ /überall an\b/i
talk Evaluate search:
schalte die lampe auf grün =~ /überall aus\b/i
talk Evaluate search:
schalte die lampe auf grün =~ /starte (@Playlist)/i
talk Evaluate search:
schalte die lampe auf grün =~ /überall leise\b/i
talk Evaluate search:
schalte die lampe auf grün =~ /überall (entspannte|normale lautstärke)/i
talk Evaluate search:
schalte die lampe auf grün =~ /überall laut\b/i
talk Evaluate search:
schalte die lampe auf grün =~ /?(@rooms) && leise\b/i
talk Evaluate search:
schalte die lampe auf grün =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
schalte die lampe auf grün =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
schalte die lampe auf grün =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
schalte die lampe auf grün =~ /weiter|vor$/i
talk Evaluate search:
schalte die lampe auf grün =~ /zurück|anfang$/i
talk Evaluate search:
schalte die lampe auf grün =~ /(minuten|sekunden) && vorspulen auf (\S+)/i
talk Evaluate search:
schalte die lampe auf grün =~ /?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$/i
Keylists: $VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'T2F_types_color';
$VAR4 = 'T2F_rooms';
$VAR5 = 'T2F_places';
$VAR6 = 'colors';
Filled lists: $VAR1 = '(bitte)';
$VAR2 = '(Lampe|Licht)';
$VAR3 = '(Haus|Dachgeschoss|!Wohnzimmer)';
$VAR4 = '(Decke|Couch|Sofa)';
$VAR5 = 'auf (Aus|Schwarz|Dunkles Schiefergrau|Schiefergrau|Helles Schiefergrau|Helles Stahlblau|Mattes Grau|Grau|Dunkelgrau|Silber|Hellgrau|Gainsboro|Rauchiges Wei\\S\\S?|Geisterwei\\S\\S?|Wei\\S\\S?|Schneewei\\S\\S?|Elfenbein|Bl\\S\\S?tenwei\\S\\S?|Muschel|Altgold|Leinenfarbe|Antikes Wei\\S\\S?|Mandelwei\\S\\S?|Cremiges Papaya|Beige|Mais|Helles Goldrutengelb|Hellgelb|Chiffongelb|Blasse Goldrutenfarbe|Khaki|Gelb|Gold|Orange|Dunkles Orange|Goldrute|dunkle Goldrutenfarbe|Peru|Schokolade|Sattelbraun|Ocker|Braun|Dunkelrot|Kastanienbraun|Ziegelfarbe|Indischrot|Karmesinrot|Rot|Orangenrot|Tomatenrot|Koralle|Lachs|Helles Korallenrot|Dunkle Lachsfarbe|Helle Lachsfarbe|Sandbraun|Rosiges Braun|Gelbbraun|Grobes Braun|Weizen|Pfirsich|Navajowei\\S\\S?|Tomatencreme|Rosige Lavenderfarbe|Altrosa|Rosa|Hellrosa|Leuchtendes Rosa|Fuchsie|Magentarot|Tiefrosa|Mittleres Violettrot|Blasses Violettrot|Pflaume|Distel|Lavendelfarbe|Violett|Orchidee|Dunkles Magentarot|Violett|Indigo|Blauviolett|Dunkles Violett|Dunkle Orchideenfarbe|Mittleres Violett|Mittlere Orchideenfarbe|Mittleres Schieferblau|Schieferblau|Dunkles Schieferblau|Mitternachtsblau|Marineblau|Dunkelblau|Mittelblau|Blau|K\\S\\S?nigsblau|Stahlblau|Kornblumenblau|Dodger-Blau|Tiefes Himmelblau|Helles Himmelblau|Himmelblau|Hellblau|Zyanblau|Blaugr\\S\\S?n|Taubenblau|Helles Cyanblau|Aliceblau|Himmelblau|Cremig Pfefferminz|Honigmelone|Aquamarinblau|T\\S\\S?rkis|Blasses T\\S\\S?rkis|Mittleres T\\S\\S?rkis|Dunkles T\\S\\S?rkis|Mittleres Aquamarinblau|Helles Seegr\\S\\S?n|Dunkles Zyanblau|Entenbraun|Kadettblau|Mittleres Seegr\\S\\S?n|Dunkles Seegr\\S\\S?n|Hellgr\\S\\S?n|Blassgr\\S\\S?n|Mittleres Fr\\S\\S?hlingsgr\\S\\S?n|Fr\\S\\S?hlingsgr\\S\\S?n|Zitronengr\\S\\S?n|Gelbgr\\S\\S?n|Seegr\\S\\S?n|Waldgr\\S\\S?n|Gr\\S\\S?n|Dunkelgr\\S\\S?n|Olivfarbiges Graubraun|Dunkles Olivgr\\S\\S?n|Olivgr\\S\\S?n|Dunkles Khaki|Gelbgr\\S\\S?n|Hellgr\\S\\S?n|Gr\\S\\S?ngelb)( schalten| stellen)?$';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'lampe';
$VAR4 = undef;
$VAR5 = undef;
$VAR6 = 'grün';
$VAR7 = undef;
Match: lampeauf grün
Unmatch: schalte die
Hit with phrase: qr/?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && auf (@colors)( schalten| stellen)?$/i
Handle reaction cmd: set T2F_types_color=.*$2@.*:FILTER=T2F_rooms=.*$3@.*:FILTER=T2F_places=.*$4@.* RGB $5[@rgb]
Simple bracket selection (No. 2) with Keyword 0: 'Lampe'
Simple bracket selection (No. 3) with Keyword 3: ''
Simple bracket selection (No. 4) with Keyword 3: ''
Replaced bracket: set T2F_types_color=.*$2@.*:FILTER=T2F_rooms=.*$3@.*:FILTER=T2F_places=.*$4@.* RGB $5[@rgb] -> set T2F_types_color=.*Lampe.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_places=.*.* RGB $5[@rgb]
Advanced bracket replacement. $5@rgb = set T2F_types_color=.*Lampe.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_places=.*.* RGB ###
Adding modlist: "000000","000000","8FBC8F","708090","778899","B0C4DE","696969","808080","A9A9A9","C0C0C0","D3D3D3","DCDCDC","F5F5F5","F8F8FF","FFFFFF","FFFAFA","FFFFF0","FFFAF0","FFF5EE","FDF5E6","FAF0E6","FAEBD7","FFEBCD","FFEFD5","F5F5DC","FFF8DC","FAFAD2","FFFFE0","FFFACD","EEE8AA","F0E68C","FFFF00","FFD700","FFA500","FF8C00","DAA520","B8860B","CD853F","D2691E","8B4513","A0522D","A52A2A","8B0000","800000","B22222","CD5C5C","DC143C","FF0000","FF4500","FF6347","FF7F50","FA8072","F08080","E9967A","FFA07A","F4A460","BC8F8F","D2B48C","DEB887","F5DEB3","FFDAB9","FFDEAD","FFE4C4","FFF0F5","FFE4E1","FFC0CB","FFB6C1","FF69B4","FF00FF","FF00FF","FF1493","C71585","DB7093","DDA0DD","D8BFD8","E6E6FA","EE82EE","DA70D6","8B008B","800080","4B0082","8A2BE2","9400D3","9932CC","9370DB","BA55D3","7B68EE","6A5ACD","483D8B","191970","000080","00008B","0000CD","0000FF","4169E1","4682B4","6495ED","1E90FF","00BFFF","87CEFA","87CEEB","ADD8E6","00FFFF","00FFFF","B0E0E6","E0FFFF","A0CE00","F0FFFF","F5FFFA","F0FFF0","7FFFD4","40E0D0","AFEEEE","48D1CC","00CED1","66CDAA","20B2AA","008B8B","008080","5F9EA0","3CB371","8FBC8F","90EE90","98FB98","00FA9A","00FF7F","00FF00","32CD32","2E8B57","228B22","008000","006400","6B8E23","556B2F","808000","BDB76B","9ACD32","7FFF00","ADFF2F"
Keyword (5): 'grün'
ARRAY evaluation: else: empty:
array: 000000 000000 8FBC8F 708090 778899 B0C4DE 696969 808080 A9A9A9 C0C0C0 D3D3D3 DCDCDC F5F5F5 F8F8FF FFFFFF FFFAFA FFFFF0 FFFAF0 FFF5EE FDF5E6 FAF0E6 FAEBD7 FFEBCD FFEFD5 F5F5DC FFF8DC FAFAD2 FFFFE0 FFFACD EEE8AA F0E68C FFFF00 FFD700 FFA500 FF8C00 DAA520 B8860B CD853F D2691E 8B4513 A0522D A52A2A 8B0000 800000 B22222 CD5C5C DC143C FF0000 FF4500 FF6347 FF7F50 FA8072 F08080 E9967A FFA07A F4A460 BC8F8F D2B48C DEB887 F5DEB3 FFDAB9 FFDEAD FFE4C4 FFF0F5 FFE4E1 FFC0CB FFB6C1 FF69B4 FF00FF FF00FF FF1493 C71585 DB7093 DDA0DD D8BFD8 E6E6FA EE82EE DA70D6 8B008B 800080 4B0082 8A2BE2 9400D3 9932CC 9370DB BA55D3 7B68EE 6A5ACD 483D8B 191970 000080 00008B 0000CD 0000FF 4169E1 4682B4 6495ED 1E90FF 00BFFF 87CEFA 87CEEB ADD8E6 00FFFF 00FFFF B0E0E6 E0FFFF A0CE00 F0FFFF F5FFFA F0FFF0 7FFFD4 40E0D0 AFEEEE 48D1CC 00CED1 66CDAA 20B2AA 008B8B 008080 5F9EA0 3CB371 8FBC8F 90EE90 98FB98 00FA9A 00FF7F 00FF00 32CD32 2E8B57 228B22 008000 006400 6B8E23 556B2F 808000 BDB76B 9ACD32 7FFF00 ADFF2F
Numeral word found. 'grün' converted to; grün
Searching position of 'grün' in 'Aus Schwarz Dunkles Schiefergrau Schiefergrau Helles Schiefergrau Helles Stahlblau Mattes Grau Grau Dunkelgrau Silber Hellgrau Gainsboro Rauchiges Wei\S\S? Geisterwei\S\S? Wei\S\S? Schneewei\S\S? Elfenbein Bl\S\S?tenwei\S\S? Muschel Altgold Leinenfarbe Antikes Wei\S\S? Mandelwei\S\S? Cremiges Papaya Beige Mais Helles Goldrutengelb Hellgelb Chiffongelb Blasse Goldrutenfarbe Khaki Gelb Gold Orange Dunkles Orange Goldrute dunkle Goldrutenfarbe Peru Schokolade Sattelbraun Ocker Braun Dunkelrot Kastanienbraun Ziegelfarbe Indischrot Karmesinrot Rot Orangenrot Tomatenrot Koralle Lachs Helles Korallenrot Dunkle Lachsfarbe Helle Lachsfarbe Sandbraun Rosiges Braun Gelbbraun Grobes Braun Weizen Pfirsich Navajowei\S\S? Tomatencreme Rosige Lavenderfarbe Altrosa Rosa Hellrosa Leuchtendes Rosa Fuchsie Magentarot Tiefrosa Mittleres Violettrot Blasses Violettrot Pflaume Distel Lavendelfarbe Violett Orchidee Dunkles Magentarot Violett Indigo Blauviolett Dunkles Violett Dunkle Orchideenfarbe Mittleres Violett Mittlere Orchideenfarbe Mittleres Schieferblau Schieferblau Dunkles Schieferblau Mitternachtsblau Marineblau Dunkelblau Mittelblau Blau K\S\S?nigsblau Stahlblau Kornblumenblau Dodger-Blau Tiefes Himmelblau Helles Himmelblau Himmelblau Hellblau Zyanblau Blaugr\S\S?n Taubenblau Helles Cyanblau Aliceblau Himmelblau Cremig Pfefferminz Honigmelone Aquamarinblau T\S\S?rkis Blasses T\S\S?rkis Mittleres T\S\S?rkis Dunkles T\S\S?rkis Mittleres Aquamarinblau Helles Seegr\S\S?n Dunkles Zyanblau Entenbraun Kadettblau Mittleres Seegr\S\S?n Dunkles Seegr\S\S?n Hellgr\S\S?n Blassgr\S\S?n Mittleres Fr\S\S?hlingsgr\S\S?n Fr\S\S?hlingsgr\S\S?n Zitronengr\S\S?n Gelbgr\S\S?n Seegr\S\S?n Waldgr\S\S?n Gr\S\S?n Dunkelgr\S\S?n Olivfarbiges Graubraun Dunkles Olivgr\S\S?n Olivgr\S\S?n Dunkles Khaki Gelbgr\S\S?n Hellgr\S\S?n Gr\S\S?ngelb'
Found 'grün' at position 130
Result of cmd: $VAR1 = {
'cmd' => 'set T2F_types_color=.*Lampe.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_places=.*.* RGB 008000'
};
Executing Command: set T2F_types_color=.*Lampe.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_places=.*.* RGB 008000
Pushed: set T2F_types_color=.*Lampe.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_places=.*.* RGB 008000
response
Unknown argument RGB, choose one of off:noArg on:noArg toggle:noArg statusRequest:noArg pct:colorpicker,BRI,0,1,100 bri:colorpicker,BRI,0,1,254 rgb:colorpicker,RGB hue:colorpicker,HUE,0,1,65535 sat:slider,0,1,254 xy effect:none,colorloop dimUp:noArg dimDown:noArg hueUp:noArg hueDown:noArg satUp:noArg satDown:noArg alert:none,select,lselect rename on-till-overnight off-for-timer off-till intervals on-till off-till-overnight blink on-for-timer
Zitat von: Abercrombie1892 am 18 März 2018, 18:14:49Code Auswählenresponse
Unknown argument RGB, choose one of off:noArg on:noArg toggle:noArg statusRequest:noArg pct:colorpicker,BRI,0,1,100 bri:colorpicker,BRI,0,1,254 rgb:colorpicker,RGB hue:colorpicker,HUE,0,1,65535 sat:slider,0,1,254 xy effect:none,colorloop dimUp:noArg dimDown:noArg hueUp:noArg hueDown:noArg satUp:noArg satDown:noArg alert:none,select,lselect rename on-till-overnight off-for-timer off-till intervals on-till off-till-overnight blink on-for-timer
Zitat von: RoBra81 am 18 März 2018, 20:36:06
Da steht es doch, die Lampe versteht RGB nicht ;) - probier es mal mit rgb...
Gesendet von meinem SM-G935F mit Tapatalk
Zitat von: Phill am 16 März 2018, 21:49:46[...]
Hier ist ein Beispiel wie du auch beide rollos sagen kannst, oder wenn kein links oder rechts angegeben ist werde auch beide gefahren.Code Auswählen?(link\S+|recht\S+) && rolll?(os?|\S\S?den) ?(\S+ ){0,2}(Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) (\S+ )?(auf )?(\S+) =
set $4[ku_Rolladenaktor, kz_Rolladenaktor, sz_Rolladenaktor,
$1[wz_Rolladenaktor_links, wz_Rolladenaktor_rechts, empty, "'wz_Rolladenaktor_links,wz_Rolladenaktor_rechts'"]] pct $7{ true => off , false => on , integer => "$7" }
Das Beispiel funktioniert nur weil die Auflösungen der $n variablen immer von rechts nach links erfolgen. Dadurch wird erst $1 aufgelöst und dann $4. Und je nach dem was in der ersten klammer steht beeinflusst das den Wohnzimmerteil von $4. Die doppelten Anführungszeichen sind notwendig weil das Komma zwei mal geschützt werden muss.
[...]
Zitat von: Phill am 16 März 2018, 21:49:46[...]Ne nicht ganz .... hab es jetzt folgendermaßen geändert und es funktioniert =)
Ist das eigentlich korrekt das bei hoch ein off gesetzt werden soll? Ansonsten musst du off und on tauschen.
true => 100 , false => 0 , integer => "$7"
# Schalten === Rolladen:
rolll?(os?|\S\S?den) ?(\S+){0,2} (Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) && ?(links|rechts) ?(auf) ?(\S+)
^^^
rolladen (auf)? (\S+)
rolladen (auf )?(\S+)
Zitat von: Abercrombie1892 am 21 März 2018, 21:10:03
aber da funktionieren ja die http befehle nicht, durch das komma nach dem port.
Zitat von: Phill am 22 März 2018, 07:27:01
Nur der Vollständigkeit halber:
Das Komma kannst geschützt werden. Siehe Attribute (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Attribute) im Wiki.
Gruß
Zitat von: Phill am 22 März 2018, 14:53:30
Bei der Minuten/Sekunden... Erkennung wird jetzt explicit ein in, und oder nach erwartet. Also:
in 3 minuten und 5 sekunden oder nach 3 minuten
Bedeutet: Ein "spule um 3 minuten vor" oder "spule auf 3 minuten" wird jetzt nicht mehr als Zeitphrase erkannt und kann selbst ausgewertet werden.
Zitat von: Phill am 22 März 2018, 15:31:09
Indem du die Zahlen per RegExp erfasst und in den Kommandoteil überführst. Du kannst ja dann mit der Zahl machen was du willst. Sprich "selbst auswerten".
?(link\S+|recht\S+) && rolll?(os?|\S\S?den) ?(\S+ ){0,2}(Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) (\S+ )?(auf )?(\S+)
#####################################################################################################################################################
?(link\S+|recht\S+) = optional, ob link... oder recht..., wobei "..." irgwendwelche Zeichen sein können, die keine Leerzeichen sind
rolll?(os?|\S\S?den) = l? => l ist optional, dann entweder Endung os oder ein oder zwei Zeichen, wobei ein Umlaut wie ä umgeschrieben wird
?(\S+ ){0,2} = 0 bis 2 Wörter => wäre auch das richtig: ?(\S+){0,2} ?????
< Wieso kommt nachfolgend kein Leerzeichen bzw. darf eins kommen ????? >
(Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) = Eins der Zimmer ...
(\S+ )? = irgendeine optionale Zeichenfolge (außer Leerzeichen) => wäre auch das richtig: ?(\S+) ??????
< Wieso kommt nachfolgend kein Leerzeichen bzw. darf eins kommen ????? >
(auf )? = auf ist optional
(\S+) = irgendeine Zeichenfolge (außer Leerzeichen)
(minuten|sekunden) && vorspulen|spule auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
Zitat von: Abercrombie1892 am 22 März 2018, 20:44:27Danke für die Blumen. Wie meinst du das nochmal mit dem wait?Code Auswählen(minuten|sekunden) && vorspulen|spule auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
funzt jetzt perfekt. danke für deine arbeit. geniales modul
mich würde trotzdem mal interessieren ob man hier ein wait einbauen könnte.? ::)
Zitat von: n4rrOx am 22 März 2018, 17:12:09Ich finde es klasse, dass ich durch mein Modul zum Verständnis von RegExp beitrage. :)
RegExp ist absolutes Neuland für mich ^^
Zitatrolll?(os?|\S\S?den) = l? => l ist optional, dann entweder Endung os oder ein oder zwei Zeichen, wobei ein Umlaut wie ä umgeschrieben wirdDamit hab ich folgende Wörter erfasst.
Zitat?(\S+ ){0,2} = 0 bis 2 Wörter => wäre auch das richtig: ?(\S+){0,2} ?????Damit werden die Präpositionen und Artikel erfasst.
'(([ai][nm]|beim?|auf|unter|hinter|über|vo[rnm]) )?((de[rmns]|die|das) )?'
Zitat< Wieso kommt nachfolgend kein Leerzeichen bzw. darf eins kommen ????? >Das ist ja in der Klammer schon drin. (\S+ ) bedeutet ja beliebig lange Zeichenkette mit anschließendem Leerzeichen.
Zitat(\S+ )? = irgendeine optionale Zeichenfolge (außer Leerzeichen) => wäre auch das richtig: ?(\S+) ??????Für den fall das hier rechts/links steht. Das kann mittlerweile weg, denn dein Problem hat mich dazu veranlasst in der aktuellen Version eine Änderung umzusetzen, womit die gefundenen RegExp-Teile (&&) aus der Zeichenkette entfernt werden.
Zitat< Wieso kommt nachfolgend kein Leerzeichen bzw. darf eins kommen ????? >Selbe wie oben
ZitatBzgl. der Sprach-Befehlszusammensetzung kann "links/rechts" irgendwo im Satz sein ... nach "roll..." kommen ggf. bis zu 2 Wörter dann MUSS ein Raum kommen, gefolgt von ggf. einem Wort, sowie ggf. "auf" sowie noch einer abschließenden Zeichenfolge, richtig?Ja.
ZitatAlso kann ich nicht sagen:
Fahre in der Küche den Rolladen auf 50 % ???
=> Wo müsste oder könnte ich noch weitere && setzen?
?(link\S+|recht\S+) && rolll?(os?|\S\S?den) && (Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) && ([^\s%]+)(%| %| prozent)?$ =
set $3[ku_Rolladenaktor, kz_Rolladenaktor, sz_Rolladenaktor,
$1[wz_Rolladenaktor_links, wz_Rolladenaktor_rechts, empty, "'wz_Rolladenaktor_links,wz_Rolladenaktor_rechts'"]] pct $4{ true => 100 , false => 0 , integer => "$4" }
Erklärung:ZitatWäre es nicht bei solchen Zeitangaben sinnvoll immer zu prüfen, ob das Gerät bereits den gegenteiligen Zustand hat (in diesem Fall Lampe bereits an) und wenn nicht diese anzuschalten und dann nach der vorgegebenen Zeit wieder zu deaktivieren? Weil mit diesem Befehl geht man ja davon aus, dass diese momentan an ist.Immer halte ich es für sehr riskant. Aus unterschiedlichen Gründen u.a. weil es ja nicht immer nur 2 Zustände gibt. Optional könnte ich es mir vorstellen. Das muss ich mir aber erst mal in Ruhe durch den Kopf gehen lassen.
Somit könnte der Sprachbefehl wie folgt verkürzt werden (Ausgangszustand: Lampe aus):
Schalte die Lampe an und in 5 min wieder aus. => Schalte die Lampe in 5 min aus.
Zitat von: Phill am 23 März 2018, 09:21:32
Danke für die Blumen. Wie meinst du das nochmal mit dem wait?
#Musik Wohnzimmer,Küche und Badezimmer an#
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
ZitatIch finde es klasse, dass ich durch mein Modul zum Verständnis von RegExp beitrage
#Fernseher#
Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
Test\S* (\S+) = (offset=>10, cmd=>'set Nvidia on')
#Musik Wohnzimmer,Küche und Badezimmer an#
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
überall && Musik an\b = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/leaveStandby")};'{GetHttpFile("192.168.178.21:8080","/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Livesets")}
überall aus\b = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/enterManualStandby")}
spiele && (@Playlist) = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=$1[@RFPlaylisttest]")}
#Lautstärkeregelung Raumfeld#
überall leise\b = set Raumfeld_WZ volume 50; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 13
überall (entspannte|normale lautstärke) = set Raumfeld_WZ volume 60; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 30
überall laut\b = set Raumfeld_WZ volume 80; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 45
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[60,30,30,empty,60]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[80,55,55,empty,80]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
#Titel vor/zurück und spulen#
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")};set EchoDot_WZ next
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")};set EchoDot_WZ previous
(minuten|sekunden) && vorspulen|spule auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
#Lichtsteuerung#
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
# 1 2 3 4 5 6
?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && (@colors)( schalten| stellen)?$ =
(cmd=>'set T2F_types_color=.*$2@.*:FILTER=T2F_rooms=.*$3@.*:FILTER=T2F_places=.*$4@.* rgb $5[@rgb]')
?(@rooms) && (ein wenig|etwas|viel)? ?(heller|dunkler) =
{ fhem("set Lampen_$1[@dimmen] pct ".(ReadingsVal("Lampen_$1[@dimmen]","pct", 0)$3[+,-]$2[10,15,30,empty,10])) }
#Spiegelschrank Badezimmer
Spiegelschrank\S* (\S+) = set Spiegelschrank_BZ $1{true=>on, false=>off}
#Deckenlampe (\S+ ){0,2}(@rooms) (\S+) = set Deckenlampe_$1[@deckenlampen] $2{ true => on, false => off }
2018.03.30 15:51:34 1: 192.168.178.40:23 reappeared (WZ.Pioneer)
2018.03.30 17:34:04 3: Decoding Text: MACH DAS LICHT IM WOHNZIMMER GRÜN
2018.03.30 17:34:04 3: Result of cmd: $VAR1 = {
'cmd' => 'set T2F_types_color=.*Licht.*:FILTER=T2F_rooms=.*.*:FILTER=T2F_places=.*.* rgb 006400'
};
2018.03.30 17:34:04 2: HUEDevice: http request failed: http://192.168.178.43/api/3ZoNBpdIjaWubmWzan856OuQjYbrByx5tErr0VaX/lights/2/state: empty answer received
Internals:
DEF #Fernseher#
Fernseher\S* (\S+) = set Nvidia $1{true=>on, false=>off}
Test\S* (\S+) = (offset=>10, cmd=>'set Nvidia on')
#Musik Wohnzimmer,Küche und Badezimmer an#
?(@rooms) && Musik\b (\S*) = set StandbyRF $1[@RFStandby] $1[cmd_1,cmd_3,cmd_2,cmd_5,empty,cmd_1]
überall && Musik an\b = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/leaveStandby")};'{GetHttpFile("192.168.178.21:8080","/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Livesets")}
überall aus\b = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/enterManualStandby")}
spiele && (@Playlist) = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=$1[@RFPlaylisttest]")}
#Lautstärkeregelung Raumfeld#
überall leise\b = set Raumfeld_WZ volume 50; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 13
überall (entspannte|normale lautstärke) = set Raumfeld_WZ volume 60; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 30
überall laut\b = set Raumfeld_WZ volume 80; set Raumfeld_Badezimmer,Raumfeld_Kueche volume 45
?(@rooms) && leise\b = set Raumfeld_$1[@RF] volume $1[50,13,13,(65,30,30),empty,50]
?(@rooms) && (entspannte|normale) lautstärke = set Raumfeld_$1[@RF] volume $1[60,30,30,empty,60]
?(@rooms) && alles|laut\b = set Raumfeld_$1[@RF] volume $1[80,55,55,empty,80]
?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser) =
{ fhem("set Raumfeld_$1[@RF] volume ".(ReadingsVal("Raumfeld_$1[@RF]","volume", 0)$3[+,-]$2[3,6,11,empty,7])) }
#Titel vor/zurück und spulen#
weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")};set EchoDot_WZ next
zurück|anfang$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/prev")};set EchoDot_WZ previous
(minuten|sekunden) && vorspulen|spule auf (\S+) =
{GetHttpFile("192.168.178.21:8080","/raumserver/controller/seek?id=Wohnzimmer&value=".($2{numeral=>"$2"}*$1[60,1,empty,60]))}
#Lichtsteuerung#
#licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }
# 1 2 3 4 5 6
?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && (@colors)( schalten| stellen)?$ =
(cmd=>'set T2F_types_color=.*$2@.*:FILTER=T2F_rooms=.*$3@.*:FILTER=T2F_places=.*$4@.* rgb $5[@rgb]')
?(@rooms) && (ein wenig|etwas|viel)? ?(heller|dunkler) =
{ fhem("set Lampen_$1[@dimmen] pct ".(ReadingsVal("Lampen_$1[@dimmen]","pct", 0)$3[+,-]$2[10,15,30,empty,10])) }
#Spiegelschrank Badezimmer
Spiegelschrank\S* (\S+) = set Spiegelschrank_BZ $1{true=>on, false=>off}
#Deckenlampe (\S+ ){0,2}(@rooms) (\S+) = set Deckenlampe_$1[@deckenlampen] $2{ true => on, false => off }
NAME talk
NR 163
NTFY_ORDER 50-talk
STATE Ready
TYPE Talk2Fhem
READINGS:
2018-03-30 19:12:45 cmds set StandbyRF cmd_5 cmd_5
2018-03-30 19:13:17 err No match: ' Spiele die neueste Musik'
2018-03-30 19:13:17 origin
2018-03-30 11:41:50 response {"requestUrl":"/raumserver/controller/seek?id=Wohnzimmer&value=2280","action":"seek","error":false,"msg":"","data":{"udn":"uuid:c090ca62-2696-494f-b9ee-9954dbd66781"}}
2018-03-30 19:13:17 set . Spiele die neueste Musik
2018-03-30 19:13:17 status err
helper:
LOG Talk2Fhem Version: 0.5.3
Decoding Text: . Spiele die neueste Musik
After correction:
Spiele die neueste Musik
Command part: ' Spiele die neueste Musik'
Command left: 'Spiele die neueste Musik'
talk Evaluate search:
Spiele die neueste Musik =~ /Fernseher\S* (\S+)/i
talk Evaluate search:
Spiele die neueste Musik =~ /Test\S* (\S+)/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(@rooms) && Musik\b (\S*)/i
talk Evaluate search:
Spiele die neueste Musik =~ /überall && Musik an\b/i
talk Evaluate search:
Spiele die neueste Musik =~ /überall aus\b/i
talk Evaluate search:
Spiele die neueste Musik =~ /spiele && (@Playlist)/i
talk Evaluate search:
Spiele die neueste Musik =~ /überall leise\b/i
talk Evaluate search:
Spiele die neueste Musik =~ /überall (entspannte|normale lautstärke)/i
talk Evaluate search:
Spiele die neueste Musik =~ /überall laut\b/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(@rooms) && leise\b/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(@rooms) && (entspannte|normale) lautstärke/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(@rooms) && alles|laut\b/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(lauter|leiser)/i
talk Evaluate search:
Spiele die neueste Musik =~ /weiter|vor$/i
talk Evaluate search:
Spiele die neueste Musik =~ /zurück|anfang$/i
talk Evaluate search:
Spiele die neueste Musik =~ /(minuten|sekunden) && vorspulen|spule auf (\S+)/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(bitte) && (@T2F_types_color) && ?(@T2F_rooms) && ?(@T2F_places) && (@colors)( schalten| stellen)?$/i
talk Evaluate search:
Spiele die neueste Musik =~ /?(@rooms) && (ein wenig|etwas|viel)? ?(heller|dunkler)/i
talk Evaluate search:
Spiele die neueste Musik =~ /Spiegelschrank\S* (\S+)/i
No match: ' Spiele die neueste Musik'
Nothing to do: . Spiele die neueste Musik
T2F_andwordlist:
&rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon|draussen
ambilight
T2F_keywordlist:
Playlist:
Radiosender
PureFM
Spreeradio
Nick Groove
aktuelle hits|aktuelle musik
elektronische tanzmusik|elektronische musik
T2F_places:
vorne
oben
unten
hinten
Lautsprecher
Heizung
Couch
Balkon
Lautsprechern
Box
Boxen
Sideboard
Toilette
Spiegelschrank
Palme
links
rechts
kleiner tisch
T2F_rooms:
Küche
Schlafzimmer
Badezimmer
Gästebad
Kinderzimmer
Babyzimmer
!Wohnzimmer
Deckenlampe
T2F_types_color:
Lampe
Licht
Deckenlampe
T2F_types_switch:
Lampe
Licht
Deckenlampe
colors:
Aus
An
Schwarz
Dunkles Schiefergrau
Schiefergrau
Helles Schiefergrau
Helles Stahlblau
Mattes Grau
Grau
Dunkelgrau
Silber
Hellgrau
Gainsboro
Rauchiges Weiß
Geisterweiß
Weiß
Schneeweiß
Elfenbein
Blütenweiß
Muschel
Altgold
Leinenfarbe
Antikes Weiß
Mandelweiß
Cremiges Papaya
Beige
Mais
Helles Goldrutengelb
Hellgelb
Chiffongelb
Blasse Goldrutenfarbe
Khaki
Gelb
Gold
Orange
Dunkles Orange
Goldrute
dunkle Goldrutenfarbe
Peru
Schokolade
Sattelbraun
Ocker
Braun
Dunkelrot
Kastanienbraun
Ziegelfarbe
Indischrot
Karmesinrot
Rot
Orangenrot
Tomatenrot
Koralle
Lachs
Helles Korallenrot
Dunkle Lachsfarbe
Helle Lachsfarbe
Sandbraun
Rosiges Braun
Gelbbraun
Grobes Braun
Weizen
Pfirsich
Navajoweiß
Tomatencreme
Rosige Lavenderfarbe
Altrosa
Rosa
Hellrosa
Leuchtendes Rosa
Fuchsie
Magentarot
Tiefrosa
Mittleres Violettrot
Blasses Violettrot
Pflaume
Distel
Lavendelfarbe
Violett
Orchidee
Dunkles Magentarot
Violett
Indigo
Blauviolett
Dunkles Violett
Dunkle Orchideenfarbe
Mittleres Violett
Mittlere Orchideenfarbe
Mittleres Schieferblau
Schieferblau
Dunkles Schieferblau
Mitternachtsblau
Marineblau
Dunkelblau
Mittelblau
Blau
Königsblau
Stahlblau
Kornblumenblau
Dodger-Blau
Tiefes Himmelblau
Helles Himmelblau
Himmelblau
Hellblau
Zyanblau
Blaugrün
Taubenblau
Helles Cyanblau
Aliceblau
Himmelblau
Cremig Pfefferminz
Honigmelone
Aquamarinblau
Türkis
Blasses Türkis
Mittleres Türkis
Dunkles Türkis
Mittleres Aquamarinblau
Helles Seegrün
Dunkles Zyanblau
Entenbraun
Kadettblau
Mittleres Seegrün
Dunkles Seegrün
Hellgrün
Blassgrün
Mittleres Frühlingsgrün
Frühlingsgrün
Zitronengrün
Gelbgrün
Seegrün
Waldgrün
Grün
Dunkelgrün
Olivfarbiges Graubraun
Dunkles Olivgrün
Olivgrün
Dunkles Khaki
Gelbgrün
Hellgrün
Grüngelb
rooms:
wohnzimmer
bad\S*
küche
haus|überall|wohnung
toilette|wc
schlafzimmer
kinderzimmer
babyzimmer
flur
balkon|draussen
ambilight
T2F_modwordlist:
RF:
WZ
Badezimmer
Kueche
WG
empty
WZ
RFPlaylist:
cmd_1
cmd_3
cmd_2
RFPlaylisttest:
Radiosender
purefm
Spreeradio
Dance%20Music
neue%20Musik
elektronische%20musik
RFStandby:
cmd_1
cmd_3
cmd_2
cmd_5
deckenlampen:
WZ
Bad
Kueche
dimmen:
Wohnzimmer
Badezimmer
Kueche
Wohnung
Gästebad
Schlafzimmer
Kinderzimmer
Babyzimmer
lights:
Lampen_Wohnzimmer
Lampen_Badezimmer
Lampen_Kueche
Lampen_Wohnung
Lampen_Gästebad
Lampen_Schlafzimmer
Lampen_Kinderzimmer
Lampen_Babyzimmer
Flurschalter
Balkon_LED
Ambilight
rgb:
000000
FF8608
8FBC8F
708090
778899
B0C4DE
696969
808080
A9A9A9
C0C0C0
D3D3D3
DCDCDC
F5F5F5
F8F8FF
FFFFFF
FFFAFA
FFFFF0
FFFAF0
FFF5EE
FDF5E6
FAF0E6
FAEBD7
FFEBCD
FFEFD5
F5F5DC
FFF8DC
FAFAD2
FFFFE0
FFFACD
EEE8AA
F0E68C
FFFF00
FFD700
FFA500
FF8C00
DAA520
B8860B
CD853F
D2691E
8B4513
A0522D
A52A2A
8B0000
800000
B22222
CD5C5C
DC143C
FF0000
FF4500
FF6347
FF7F50
FA8072
F08080
E9967A
FFA07A
F4A460
BC8F8F
D2B48C
DEB887
F5DEB3
FFDAB9
FFDEAD
FFE4C4
FFF0F5
FFE4E1
FFC0CB
FFB6C1
FF69B4
FF00FF
FF00FF
FF1493
C71585
DB7093
DDA0DD
D8BFD8
E6E6FA
EE82EE
DA70D6
8B008B
800080
4B0082
8A2BE2
9400D3
9932CC
9370DB
BA55D3
7B68EE
6A5ACD
483D8B
191970
000080
00008B
0000CD
0000FF
4169E1
4682B4
6495ED
1E90FF
00BFFF
87CEFA
87CEEB
ADD8E6
00FFFF
00FFFF
B0E0E6
E0FFFF
A0CE00
F0FFFF
F5FFFA
F0FFF0
7FFFD4
40E0D0
AFEEEE
48D1CC
00CED1
66CDAA
20B2AA
008B8B
008080
5F9EA0
3CB371
8FBC8F
90EE90
98FB98
00FA9A
00FF7F
00FF00
32CD32
2E8B57
228B22
008000
006400
6B8E23
556B2F
808000
BDB76B
9ACD32
7FFF00
ADFF2F
if:
notifiers:
phrase:
HASH(0x4e6d938)
HASH(0x4eb5b18)
HASH(0x4f10040)
HASH(0x40444b0)
HASH(0x4f280f0)
HASH(0x4f42480)
HASH(0x4daf8a0)
HASH(0x4e426a0)
HASH(0x4f21cd0)
HASH(0x4e86008)
HASH(0x4b4c0c8)
HASH(0x4eca558)
HASH(0x4eb4420)
HASH(0x4ec37e8)
HASH(0x4e75e38)
HASH(0x4da63b8)
HASH(0x4eb6cf0)
HASH(0x4df4190)
HASH(0x4f119e8)
Attributes:
T2F_keywordlist &rooms = wohnzimmer,bad\\S*,küche,haus|überall|wohnung,toilette|wc,schlafzimmer,kinderzimmer,babyzimmer,
flur,balkon|draussen,ambilight
colors = Aus, An, Schwarz, Dunkles Schiefergrau, Schiefergrau,
Helles Schiefergrau, Helles Stahlblau, Mattes Grau, Grau, Dunkelgrau,
Silber, Hellgrau, Gainsboro, Rauchiges Weiß, Geisterweiß, Weiß, Schneeweiß,
Elfenbein, Blütenweiß, Muschel, Altgold, Leinenfarbe, Antikes Weiß, Mandelweiß,
Cremiges Papaya, Beige, Mais, Helles Goldrutengelb, Hellgelb, Chiffongelb,
Blasse Goldrutenfarbe, Khaki, Gelb, Gold, Orange, Dunkles Orange, Goldrute,
dunkle Goldrutenfarbe, Peru, Schokolade, Sattelbraun, Ocker, Braun, Dunkelrot,
Kastanienbraun, Ziegelfarbe, Indischrot, Karmesinrot, Rot, Orangenrot, Tomatenrot,
Koralle, Lachs, Helles Korallenrot, Dunkle Lachsfarbe, Helle Lachsfarbe, Sandbraun,
Rosiges Braun, Gelbbraun, Grobes Braun, Weizen, Pfirsich, Navajoweiß, Tomatencreme,
Rosige Lavenderfarbe, Altrosa, Rosa, Hellrosa, Leuchtendes Rosa, Fuchsie, Magentarot,
Tiefrosa, Mittleres Violettrot, Blasses Violettrot, Pflaume, Distel, Lavendelfarbe, Violett,
Orchidee, Dunkles Magentarot, Violett, Indigo, Blauviolett, Dunkles Violett,
Dunkle Orchideenfarbe, Mittleres Violett, Mittlere Orchideenfarbe, Mittleres Schieferblau,
Schieferblau, Dunkles Schieferblau, Mitternachtsblau, Marineblau, Dunkelblau, Mittelblau,
Blau, Königsblau, Stahlblau, Kornblumenblau, Dodger-Blau, Tiefes Himmelblau,
Helles Himmelblau, Himmelblau, Hellblau, Zyanblau, Blaugrün, Taubenblau,
Helles Cyanblau, Aliceblau, Himmelblau, Cremig Pfefferminz, Honigmelone,
Aquamarinblau, Türkis, Blasses Türkis, Mittleres Türkis, Dunkles Türkis,
Mittleres Aquamarinblau, Helles Seegrün, Dunkles Zyanblau, Entenbraun,
Kadettblau, Mittleres Seegrün, Dunkles Seegrün, Hellgrün, Blassgrün, Mittleres Frühlingsgrün,
Frühlingsgrün, Zitronengrün, Gelbgrün, Seegrün, Waldgrün, Grün, Dunkelgrün, Olivfarbiges Graubraun,
Dunkles Olivgrün, Olivgrün, Dunkles Khaki, Gelbgrün, Hellgrün, Grüngelb
Playlist = Radiosender,PureFM,Spreeradio,Nick Groove,aktuelle hits|aktuelle musik,elektronische tanzmusik|elektronische musik
T2F_places = vorne,oben,unten,hinten,Lautsprecher,Heizung,Couch,Balkon,Lautsprechern,Box,Boxen,Sideboard,Toilette,Spiegelschrank,Palme,
links,rechts,kleiner tisch
T2F_rooms = Küche,Schlafzimmer,Badezimmer,Gästebad,Kinderzimmer,Babyzimmer,!Wohnzimmer,Deckenlampe
T2F_types_color = Lampe,Licht,Deckenlampe
T2F_types_switch = Lampe,Licht,Deckenlampe
T2F_language DE
T2F_modwordlist lights = Lampen_Wohnzimmer,Lampen_Badezimmer,Lampen_Kueche,Lampen_Wohnung,Lampen_Gästebad,
Lampen_Schlafzimmer,Lampen_Kinderzimmer,Lampen_Babyzimmer,Flurschalter,Balkon_LED,Ambilight
deckenlampen = WZ,Bad,Kueche
dimmen = Wohnzimmer,Badezimmer,Kueche,Wohnung,Gästebad,Schlafzimmer,Kinderzimmer,Babyzimmer
RF = WZ,Badezimmer,Kueche,WG,empty,WZ
RFPlaylist = cmd_1,cmd_3,cmd_2
RFPlaylisttest = Radiosender,purefm,Spreeradio,Dance%20Music,neue%20Musik,elektronische%20musik
RFStandby = cmd_1,cmd_3,cmd_2,cmd_5
rgb = 000000, FF8608, 8FBC8F, 708090, 778899, B0C4DE,
696969, 808080, A9A9A9, C0C0C0, D3D3D3, DCDCDC, F5F5F5,
F8F8FF, FFFFFF, FFFAFA, FFFFF0, FFFAF0, FFF5EE, FDF5E6,
FAF0E6, FAEBD7, FFEBCD, FFEFD5, F5F5DC, FFF8DC, FAFAD2,
FFFFE0, FFFACD, EEE8AA, F0E68C, FFFF00, FFD700, FFA500,
FF8C00, DAA520, B8860B, CD853F, D2691E, 8B4513, A0522D,
A52A2A, 8B0000, 800000, B22222, CD5C5C, DC143C, FF0000,
FF4500, FF6347, FF7F50, FA8072, F08080, E9967A, FFA07A,
F4A460, BC8F8F, D2B48C, DEB887, F5DEB3, FFDAB9, FFDEAD,
FFE4C4, FFF0F5, FFE4E1, FFC0CB, FFB6C1, FF69B4, FF00FF,
FF00FF, FF1493, C71585, DB7093, DDA0DD, D8BFD8, E6E6FA,
EE82EE, DA70D6, 8B008B, 800080, 4B0082, 8A2BE2, 9400D3,
9932CC, 9370DB, BA55D3, 7B68EE, 6A5ACD, 483D8B, 191970,
000080, 00008B, 0000CD, 0000FF, 4169E1, 4682B4, 6495ED,
1E90FF, 00BFFF, 87CEFA, 87CEEB, ADD8E6, 00FFFF, 00FFFF,
B0E0E6, E0FFFF, A0CE00, F0FFFF, F5FFFA, F0FFF0, 7FFFD4,
40E0D0, AFEEEE, 48D1CC, 00CED1, 66CDAA, 20B2AA, 008B8B,
008080, 5F9EA0, 3CB371, 8FBC8F, 90EE90, 98FB98, 00FA9A,
00FF7F, 00FF00, 32CD32, 2E8B57, 228B22, 008000, 006400,
6B8E23, 556B2F, 808000, BDB76B, 9ACD32, 7FFF00, ADFF2F
disable 0
room Sprachsteuerung
userReadings 1
phrase:
HASH(0x4e6d938)
HASH(0x4eb5b18)
HASH(0x4f10040)
HASH(0x40444b0)
HASH(0x4f280f0)
HASH(0x4f42480)
HASH(0x4daf8a0)
HASH(0x4e426a0)
HASH(0x4f21cd0)
HASH(0x4e86008)
HASH(0x4b4c0c8)
HASH(0x4eca558)
HASH(0x4eb4420)
HASH(0x4ec37e8)
HASH(0x4e75e38)
HASH(0x4da63b8)
HASH(0x4eb6cf0)
HASH(0x4df4190)
HASH(0x4f119e8)
Zitat von: RoBra81 am 31 März 2018, 00:08:52
Aus irgendeinem Grund ist das Ausrufezeichen mit in die T2F_rooms Liste geraten, sodass er das Wohnzimmer nicht findet - könntest du das mal bitte händisch entfernen?
Gesendet von meinem SM-G935F mit Tapatalk
Zitat von: RoBra81 am 31 März 2018, 11:11:52
Können den die HUE-Lampen prinzipiell mit rgb 000000 ausgeschaltet werden oder ist das ein Problem der Lampe? Ggf. könnte man für die Lampen den Befehl rgb 000000 mit einem cmdalias auf off umbiegen...
Gesendet von meinem SM-G935F mit Tapatalk
Licht|Lampe|Beleuchtung Wohnzimmer an|ein = set LEDController on
Licht|Lampe|Beleuchtung Wohnzimmer aus|ab = set LEDController off
Zitat von: ToM_ToM am 31 Juli 2018, 19:28:22
- Wie mache ich IF THEN ELSE
- Kann ich Kommentare einfügen?
- Wie escape ich Zeilenumbrüche?
beschattung (\S+) = # hier könnte ein Kommentar stehen
set d_beschattung $1{ # Zeilenumbrüche müssen nicht besonders behandelt werden
/auto.*/ => auto,
true => ja,
false => nein,
# und wenn weder auto.* noch ein positiver sowie negativer Ausdruck in $1 gefunden wurde mach was anderes
else => unkown
}
Zitat von: ToM_ToM am 31 Juli 2018, 19:28:22
- kann ich in einer Konfiguration einen weitere includen?
DOIF ([GoogleHome_WoZi] =~ "Schlafzimmer" or [Google_Home_WoZi] =~ "Kinderzimmer"....) ### alle anderen Räume filtern
(set Talk2FHEM [GoogleHome_WoZi:Spracheingabe] ### Spracherkennung eins-zu-eins an Talk2Fhem übergegeben
DOELSE (set Talk2FHEM [GoogleHome_WoZi:Spracheingabe] im Wohnzimmer) ### Spracherkenunng(ohne Raumangabe) mit Ursprungsraum an Talk2FHem übergeben
# <regex> = <command>
# Examples:
# timer (löschen|zurück) = set $NAME cleartimers
# ereignis\S* (löschen|zurück) = set $NAME cleartriggers
# Bei Google sagen: Ok Google schalte Flur Licht an/ein dann wird geschaltet
Flur Licht\S* (a|ei)n = set FL_Lampe on
Flur Licht\S* aus = set FL_Lampe off
Flur Licht (stufe )?(\d+) = set FL_Lampe $2[ off, 25 0 0, 50 0 0, 75 0 0 ]
Zitat von: Phill am 16 September 2018, 21:05:50
Hallo,
ich kann dir nur wärmstens empfehlen dich mal durch das WIKI (https://wiki.fhem.de/wiki/Modul_Talk2Fhem)zu arbeiten.
Im speziellen das Thema Temperaturabfrage (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Beispiel_Temperaturabfragen) und die Ausgabenreaktion (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Readings_.2F_Ausgabemethoden).
Für die Sprachausgabe kannst du das GOOGLCAST (https://fhem.de/commandref.html#GOOGLECAST)Modul verwenden dort kannst du über den Befehl "speak" eine Sprachausgabe veranlassen.
Für alles weitere helfe ich gerne weiter...
Gruß
@modlight = lightdev_flur,lightdev_bad
@modtemp = ,,tempdev_wohnzimmer,tempdev_aussen
Zitat von: Phill am 17 September 2018, 21:08:18Alles klar, Danke! Probiere ich morgen aus.
Einfach frei lassen.Code Auswählen@modlight = lightdev_flur,lightdev_bad
@modtemp = ,,tempdev_wohnzimmer,tempdev_aussen
oder jeweils eigene Keylisten für Lichträume und Temperaturräume. Geschmacksache.
Zitat von: Phill am 04 September 2018, 10:44:25
Ja mit IFTTT sehe ich auch keine andere Möglichkeit das über separate Accounts zu machen.
Dann könnte man einfach den Raum dem Satz voranstellen. Das sollte schon reichen.
Gruß
Zitat von: Phill am 16 September 2018, 21:05:50
...
Für die Sprachausgabe kannst du das GOOGLCAST (https://fhem.de/commandref.html#GOOGLECAST)Modul verwenden dort kannst du über den Befehl "speak" eine Sprachausgabe veranlassen.
Für alles weitere helfe ich gerne weiter...
Gruß
Zitat von: Abercrombie1892 am 18 September 2018, 21:13:04
wie muss ich das denn bei iffft abändern, das immer wohnzimmer usw fest übermittelt wird + dann den angesagten text? der text ist ja kein problem, aber bekomme nicht die räume übermittelt.
/fhem?cmd.talk=set talk Wohnzimmer <<<{{TextField}}>>>
Zitat von: Phill am 04 Oktober 2018, 10:18:06Als Entwickler kenn ich das selber. Danke für die positive Reaktion :-)
Als Entwickler fällt es manchmal etwas schwer eine Dokumentation allgemein verständlich zu formulieren.
global.DEFINED.at_talk_.* {
fhem("attr $EVTPART1 room talk");
}
defmod talk.DI.fillAttr DOIF ([global:"^ATTR.*T2F_.*"]) ({my $val = ReadingsVal("$SELF", "e_global_events", ""); $val =~ m/(\S*) (\S*) (\S*) (.*)/; if ($2 ne 'talk' && $2 ne 'global') { fill_T2F_keywordlist("$3", "talk");}})
attr talk.DI.fillAttr do always
Zitat von: MBHG am 24 November 2018, 09:01:50
Bei der Ausführung kommt bei mir
talk.DI.fillAttr DOIF: no right bracket: ({my $val = ReadingsVal("talk.DI.fillAttr", "e_global_events", "")
Unknown command $val, try help.
IF: no left bracket: { fill_T2F_keywordlist("$3", "talk")
Unknown command }}), try help.
defmod talk.DI.fillAttr DOIF ([global:"^ATTR.*T2F_.*"]) (({my $val = ReadingsVal("$SELF", "e_global_events", ""); $val =~ m/(\S*) (\S*) (\S*) (.*)/; if ($2 ne 'talk' && $2 ne 'global') { fill_T2F_keywordlist("$3", "talk");}}))
attr talk.DI.fillAttr do always
Zitat von: Phill am 24 November 2018, 15:40:54
Hi, Ich glaube das liegt an dem neuen DOIF Perlmode. Das DOIF denkt es soll den Perlmodus verwenden. Wenn ich erst das DOIF anlege und danach im DOIF den Ausführungsteil ändere bleibt das DOIF im "normalen" Modus und es kommt kein Fehler.
?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten|machen)?$ =
(cmd=>'set T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*$4@.*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.* $6{true=>on, false=>off}',
answer=>'"$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{/bitte/=>Gern, else=>Das heißt Bitte}, ich schalte $1{/bitte/=>, else=>trotzdem} folgende Geräte $6{true=>ein, false=>aus}: ".T2F_answer("T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*$4@.*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.*","T2F_types_switch")')
2018.11.25 22:07:34 msgText: bitte mach im Wohnzimmer das Licht aus
2018.11.25 22:07:34 4: Command part: 'msgText: bitte mach im Wohnzimmer das Licht aus'
2018.11.25 22:07:34 4: Command left: 'msgText: mach im Wohnzimmer das Licht aus'
Zitat von: MBHG am 26 November 2018, 08:54:48
Wg. dem "Bitte":
kann es sein, daß das versehentlich bei Talk2Fhem_realtrim oder Talk2Fhem_filter abgeschnitten wird?Code Auswählen
2018.11.25 22:07:34 msgText: bitte mach im Wohnzimmer das Licht aus
2018.11.25 22:07:34 4: Command part: 'msgText: bitte mach im Wohnzimmer das Licht aus'
2018.11.25 22:07:34 4: Command left: 'msgText: mach im Wohnzimmer das Licht aus'
Gruss Marc
Zitat von: mig2 am 25 November 2018, 16:55:56
Nun die Frage, ist das überhaupt möglich, dass ich mehrer Lampen miteinander einschalten kann? Oder muss ich über eine Perl Prozedure gehen, wo ich die einzelnen Lampen erkenne und dann einschalte?
lights = "ZW_BueroLicht,ZW_GangSpot,ZW_GangLichtDimmer,ZW_Kind2Licht,ZW_ElternLicht", ZW_BueroLicht,ZW_GangSpot, ZW_KuecheLicht, ZW_ElternLicht, ZW_Kind1Licht, ZW_Kind2Licht, ZW_EssenLicht, "ZW_Bad1_Neon,ZW_Bad1_Spot,ZW_Bad2_Neon,ZW_Bad2_Spot", "ZW_Bad1_Neon,ZW_Bad1_Spot", "ZW_Bad2_Neon,ZW_Bad2_Spot", ZW_EingangLicht, ZW_BalkonLicht, ZW_WzLichtDimmer
Zitat von: AET_FHEM am 26 November 2018, 09:30:07
Hey,
Danke für das Modul funktioniert super!
=> hab da mal ne frage --> ich schalte Fernsehprogramme mit Channels also das erste zdf usw...
jetzt musste ich aber für jeden Channel eine zeile anlegen zdf
(@rooms) ZDF = set KODI_$1 openchannelid 27
--> geht das nicht einfacher wenn ich einmal die Channels definiere hätte ich dafür nur noch eine Zeile ... => ähnlich wie mit den Farben der LED ... (damit habe ich mich aber noch nicht beschäftigt)
schalte && (@rooms) && (ARD|ZDF) = set KODI_$1 openchannelid $2[26,27]
schalte && (@rooms) && (@channels) = set KODI_$1 openchannelid $2[@channelnumbers]
Zitat von: Phill am 26 November 2018, 23:50:49
Ja genau so ist es. Man kann den Filter über T2F_filter beeinflussen. Siehe Commandref.
{phr=>'nachts?', dtmod=>{notime=>'"03:00"',pm=>0}},
in {phr=>'(?<!gute )nachts?', dtmod=>{notime=>'"03:00"',pm=>0}}
Zitatmache nachts das licht ausund die Wochentage oder genaue Datumsangaben.
Zitatmache Freitag Nacht das Licht aus
mache in einer Woche morgens das Licht an
Mache nachts das Licht aus
{Dumper @{$defs{te}{helper}{notifies}}}
Zitat von: ahlermi am 21 September 2018, 18:16:03
Problem Gefunden!
Problem im ModulCode Auswählen
my $disu =AttrVal($hash, "T2F_disableumlautescaping", 0);
hätte:Code Auswählen
my $disu =AttrVal($hash->{NAME}, "T2F_disableumlautescaping", 0);
sein sollen, sonnst wird das nie gelesen und bleibt 0
Talk2Fhem Version: 0.5.3
Decoding Text: Büro. schalte heizung auf 25,5 grad
Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
After correction:
schalte heizung auf 25 5 grad
Command part: 'schalte heizung auf 25 5 grad'
talk Evaluate search:
Hier stehen genauso wie in der Definition Klammermodifikatoren zur Verfügung.
wenn die temperatur (über|unter) ([\s\.,\d]+) grad = [sens:temp] $1[>,<] $2{float=>"$2"}
Ausgabe:
Spracheingabe FHEM Bedingung
wenn die temperatur über 22 grad steigt [sens:temp] > 22
wenn die temperatur unter 21, 5 grad fällt [sens:temp] < 21.5
Zitat von: ahlermi am 16 Januar 2019, 16:05:09
Was ich da noch besser fände wäre wenn Nacht ohne beiwort nicht erkannt würde.
"Mache Nacht das Licht an" -> sagt hoffendlich niemand
ich denke es ist immer ein
"Mache (in der|Heute|Morgen|...) Nacht das Licht an"
"Mache in der Nacht das Licht an"
"Mache heute Nacht das Licht an"
Gruß Michael
Zitat von: ahlermi am 11 Februar 2019, 15:45:41
Hattest du das schon mit drin im Update?
Zitat von: ahlermi am 10 Oktober 2018, 16:35:59
Wenn ich "19,5" oder "19.5" Grad sage wird daraus "19 5", das nur zur Info deshalb kommt das dann mit (\d+) auch nicht rüber.
Außerdem muss ich aus "," einen "." machen >:(
Jetzt habe ich die Logik verstanden, ich versuche das mal so zu lösen :) danke!
Zitat von: ahlermi am 11 Oktober 2018, 13:21:32
wen es interessiert, das ist meine LösungCode Auswählen
#Heizung
?(bitte) && (@types_heating) && ?(@rooms) && (auf (\d+)(?: )(\d+)){0,1} (grad|auto\S*)( stellen| setzen| einstellen| ein)?$ =
(cmd=>'set T2F_types_heating=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).* $7{/grad/=>desiredTemperature $5$6{integer=>.$6, word=>, else=>}, else=>desiredTemperature auto}',
answer=>'"$AGAIN" ? "dann $DATE wieder auf Automatik" : "Die Durchschnittstemperatur beträgt dort zur Zeit ".averageTemp("T2F_types_heating=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).*")." Grad\n$1{/bitte/=>Gern, else=>Das heißt Bitte}, ich stelle die Heizung in folgenden Räumen $DATE auf $7{/grad/=>$5$6{integer=> komma $6, word=>, else=>} Grad, else=>Automatik}: ".T2F_answer("T2F_types_heating=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).*","T2F_types_heating")')
T2FL($myname,5,"Functionmod '$$fc' $rp");
T2FL($myname,5,"Functionmod '$fc' $rp");
?(@properties) && (@types_heating) && ?(@rooms) && ?(@places) && (((\d+)(?: )?(\d+))( grad)?)( schalten| stellen| ein | umschalten| aktivieren| aktiviere)?$ =
(cmd=>'set T2F_types=.*heating.*:FILTER=T2F_names=.*$2@.*:FILTER=T2F_rooms=.*$3{empty=>$0, else=>$3@.}*:FILTER=T2F_properties=.*$1@.*:FILTER=T2F_places=.*$4@.* Temp $6{float=>$6}',
answer=>'"$AGAIN" ? "dann $DATE wieder auf $6{float=>$6} °C" : T2F_answer("T2F_types=.*heating.*:FILTER=T2F_names=.*$2@.*:FILTER=T2F_rooms=.*$3{empty=>$0, else=>$3@.}*:FILTER=T2F_properties=.*$1@.*:FILTER=T2F_places=.*$4@.*","$0","stelle","$IF $DATE auf $6{float=>$6} °C")')
Zitat von: Phill am 25 Januar 2019, 14:58:39
Hier die 0.6er beta u.a. mit den oberen Änderungen. Weiß noch nicht wann ich zu einem offiziellen Release komme.
#Schalter
?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten|machen)?$ =
(cmd=>'set T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*($4@).*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.* $6{true=>on, false=>off}',
answer=>'"$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{/bitte/=>Gern\,} ich schalte folgende Geräte $DATE $6{true=>ein, false=>aus}: ".T2F_answer("T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*($4@).*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.*","T2F_types_switch")')
2019-02-15_08:43:31 talk set: Michael_Ahlers=Stell die Tannenbaum heute um ein Uhr an
2019-02-15_08:43:31 talk origin: Michael_Ahlers=
2019-02-15_08:43:31 talk cmds: set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on
2019-02-15_08:43:31 talk answers: ich schalte folgende Geräte heute um ein Uhr ein: Pool im Draußen
2019-02-15_08:43:31 talk status: answers
2019.02.15 08:58:31 5: Talk2Fhem Version: 0.6.0a
2019.02.15 08:58:31 3: Decoding Text: Michael_Ahlers=Stell die Tannenbaum heute um ein Uhr an
2019.02.15 08:58:31 5: Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
2019.02.15 08:58:31 4: After correction:
Stell die Tannenbaum heute um ein Uhr an
2019.02.15 08:58:31 4: Command part: 'Stell die Tannenbaum heute um ein Uhr an'
2019.02.15 08:58:31 4: Timephrase found: =~ s/\bheute\b/
2019.02.15 08:58:31 5: TIMEPHRASEDATA mod: 'time' raw: '"00:00"' result: '00:00' opt: '1' pm: ''
2019.02.15 08:58:31 5: TIMEPHRASEDATA mod: 'notime' raw: '"12:00"' result: '12:00' opt: '1' pm: ''
2019.02.15 08:58:31 4: Timephrase found: =~ s/\bum (\d+|ein\S*|erste\S*|elf\S*|sieb\S*|f�nf\S*|zw�lf\S*|vier\S*|acht\S*|null|neun\S*|sechs\S*|drei\S*|dritt\S*|zehn\S*|zwei\S*) uhr\b/
2019.02.15 08:58:31 5: TIMEPHRASEDATA mod: 'time' raw: '"$1:00"' result: '1:00' opt: 'ein' pm: ''
2019.02.15 08:58:31 4: Extracted Timephrase. 'heute um ein Uhr '
2019.02.15 08:58:31 5: Commandpart after datedecoding. 'Stell die Tannenbaum an'
2019.02.15 08:58:31 3: Time is in past: 1550217511 1550188800
2019.02.15 08:58:31 5: talk Evaluate search:
Stell die Tannenbaum an =~ /?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten|machen)?$/i
2019.02.15 08:43:31 5: Command after Phrasecheck: Stell die
2019.02.15 08:43:31 5: Keylists: $VAR1 = '^\\w+=';
$VAR2 = undef;
$VAR3 = 'properties';
$VAR4 = 'types_switch';
$VAR5 = 'rooms';
$VAR6 = 'places';
2019.02.15 08:43:31 5: Filled lists: $VAR1 = '(bitte)';
$VAR2 = '(hell|dunkel|schwach|klein|groß|doof)';
$VAR3 = '(Steckdose|Waschmaschine|Stehlampe|Deckenlampe|Vitrine|Kino|Lampe|Licht|Leuchte|Rapsi|Denon|Anlage|Verstärker|Musik|Zone|Bluetooth|Leinwand|Radio|Wasserkocher|Tannenbaum|Pool|Schummerbeleuchtung|Eckbeleuchtung|Türbeleuchtung)';
$VAR4 = '(Haus|überall|Wohnung|Wohnzimmer|Wohnbereich|BadS*|Toilette|Wc|Büro|Arbeitszimmer|eg|ErdgeschoSS?|Draußen|Schlafzimmer|Esszimmer|Bastelzimmer|Keller|Alice|Flur|Waschküche|Terasse|Küche)';
$VAR5 = '(Tür|Steckdose|Tisch|Decke|Esstisch|Hauswand|Haustür|Eingang|Heizung|Draußen|Oben)';
$VAR6 = '(\\S+)(schalten|machen)?$';
2019.02.15 08:43:31 5: Words: $VAR1 = 'Michael_Ahlers=';
$VAR2 = undef;
$VAR3 = undef;
$VAR4 = 'Tannenbaum';
$VAR5 = undef;
$VAR6 = undef;
$VAR7 = 'an';
$VAR8 = undef;
2019.02.15 08:43:31 5: Match: Tannenbauman
2019.02.15 08:43:31 5: Unmatch: Stell die
2019.02.15 08:43:31 4: Hit with phrase: qr/?(bitte) && ?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten|machen)?$/i
2019.02.15 08:43:31 5: Handle reaction cmd: set T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*($4@).*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.* $6{true=>on, false=>off}
2019.02.15 08:43:31 5: Simple bracket selection (No. 3) with Keyword 19: 'Tannenbaum'
2019.02.15 08:43:31 5: Simple bracket selection (No. 4) with Keyword 16: ''
2019.02.15 08:43:31 5: Simple bracket selection (No. 2) with Keyword 6: ''
2019.02.15 08:43:31 5: Simple bracket selection (No. 5) with Keyword 11: ''
2019.02.15 08:43:31 4: Replaced bracket: set T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*($4@).*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.* $6{true=>on, false=>off} -> set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* $6{true=>on, false=>off}
2019.02.15 08:43:31 4: Advanced bracket replacement. $6true=>on, false=>off = set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* ###
2019.02.15 08:43:31 4: Keyword (6): 'an'
2019.02.15 08:43:31 5: HASH evaluation:
$VAR1 = {
'true' => {
'val' => 'on',
'order' => 0
},
'false' => {
'order' => 1,
'val' => 'off'
}
};
2019.02.15 08:43:31 5: Word found (true): 'an' replace with 'on'
2019.02.15 08:43:31 3: Result of cmd: $VAR1 = {
'cmd' => 'set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on'
};
2019.02.15 08:43:31 5: Handle reaction answer: "$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{/bitte/=>Gern\,} ich schalte folgende Geräte $DATE $6{true=>ein, false=>aus}: ".T2F_answer("T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*($4@).*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.*","T2F_types_switch")
2019.02.15 08:43:31 5: Simple bracket selection (No. 3) with Keyword 19: 'Tannenbaum'
2019.02.15 08:43:31 5: Simple bracket selection (No. 4) with Keyword 16: ''
2019.02.15 08:43:31 5: Simple bracket selection (No. 2) with Keyword 6: ''
2019.02.15 08:43:31 5: Simple bracket selection (No. 5) with Keyword 11: ''
2019.02.15 08:43:31 4: Replaced bracket: "$AGAIN" ? "dann $DATE wieder $6{true=>ein, false=>aus}" : "$1{/bitte/=>Gern\,} ich schalte folgende Geräte $DATE $6{true=>ein, false=>aus}: ".T2F_answer("T2F_types_switch=.*$3@.*:FILTER=T2F_rooms=.*($4@).*:FILTER=T2F_properties=.*$2@.*:FILTER=T2F_places=.*$5@.*","T2F_types_switch") -> "" ? "dann heute um ein Uhr wieder $6{true=>ein, false=>aus}" : "$1{/bitte/=>Gern\,} ich schalte folgende Geräte heute um ein Uhr $6{true=>ein, false=>aus}: ".T2F_answer("T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.*","T2F_types_switch")
2019.02.15 08:43:31 4: Advanced bracket replacement. $6true=>ein, false=>aus = "" ? "dann heute um ein Uhr wieder $6{true=>ein, false=>aus}" : "$1{/bitte/=>Gern\,} ich schalte folgende Geräte heute um ein Uhr ###: ".T2F_answer("T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.*","T2F_types_switch")
2019.02.15 08:43:31 4: Keyword (6): 'an'
2019.02.15 08:43:31 5: HASH evaluation:
$VAR1 = {
'false' => {
'order' => 1,
'val' => 'aus'
},
'true' => {
'order' => 0,
'val' => 'ein'
}
};
2019.02.15 08:43:31 5: Word found (true): 'an' replace with 'ein'
2019.02.15 08:43:31 4: Advanced bracket replacement. $1/bitte/=>Gern\, = "" ? "dann heute um ein Uhr wieder $6{true=>ein, false=>aus}" : "### ich schalte folgende Geräte heute um ein Uhr ein: ".T2F_answer("T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.*","T2F_types_switch")
2019.02.15 08:43:31 4: Keyword (1): ''
2019.02.15 08:43:31 5: HASH evaluation:
$VAR1 = {
'/bitte/' => {
'order' => 0,
'val' => 'Gern,'
}
};
2019.02.15 08:43:31 5: Empty word replace with ''
2019.02.15 08:43:31 4: Advanced bracket replacement. $6true=>ein, false=>aus = "" ? "dann heute um ein Uhr wieder ###" : " ich schalte folgende Geräte heute um ein Uhr ein: ".T2F_answer("T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.*","T2F_types_switch")
2019.02.15 08:43:31 4: Keyword (6): 'an'
2019.02.15 08:43:31 5: HASH evaluation:
$VAR1 = {
'true' => {
'val' => 'ein',
'order' => 0
},
'false' => {
'order' => 1,
'val' => 'aus'
}
};
2019.02.15 08:43:31 5: Word found (true): 'an' replace with 'ein'
2019.02.15 08:43:31 4: Answer eval: "" ? "dann heute um ein Uhr wieder ein" : " ich schalte folgende Geräte heute um ein Uhr ein: ".T2F_answer("T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.*","T2F_types_switch")
2019.02.15 08:43:31 3: T2F_answer Filter: T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.*Type: T2F_types_switch
2019.02.15 08:43:31 3: Result of answer: $VAR1 = ' ich schalte folgende Geräte heute um ein Uhr ein: Pool im Draußen ';
2019.02.15 08:43:31 5: Executing Command: set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on
2019.02.15 08:43:31 3: AHL2 IT_set: Steckdose7 on
2019.02.15 08:43:31 5: Pushed: set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on
2019.02.15 08:43:31 3: ich nicht gesetzt
Time is in past: 1550217511 1550188800
Zitat von: obi am 14 Februar 2019, 17:20:46
Im Modul ist ein kleiner Schreibfehler.
Zeile 1666:Code AuswählenT2FL($myname,5,"Functionmod '$$fc' $rp");
muss geändert werden in:Code AuswählenT2FL($myname,5,"Functionmod '$fc' $rp");
Zitat von: ahlermi am 15 Februar 2019, 09:36:56ist drin
Wäre gut wenn du die $DATE Variable bei Zeit in Vergangenheit auch mit "jetzt" oder so überschreibst. :-)
Zitat von: obi am 13 Februar 2019, 16:41:32ich habe auch mal "auf" auf die Blacklist gesetzt. Immer noch weniger Aufwand als alle möglichen Beiwörter zu testen.
Das wäre auch ein Feature Request von mir. Dann könnte ich auch die "Heizung auf Nacht" stellen :)
Zitat von: obi am 14 Februar 2019, 18:40:50
Folgendes ist OK: stelle die heizung auf 19,5 grad und in 5 minuten wieder auf 20 grad --> stelle Heizung auf 19.5 °C und dann in 5 minuten wieder auf 20 °C
Folgendes funktioniert nicht: stelle die heizung auf 19,5 grad und in 5 minuten wieder auf 20,5 grad --> stelle Heizung auf 19.5 °C und dann in 5 minuten wieder auf 5 °C
Time is in past: Fri Feb 15 13:49:36 2019 - Fri Feb 15 01:00:00 2019
2019-02-15_13:49:36 talk set: Michael_Ahlers=Stell die Tannenbaum heute um 1 Uhr an
2019-02-15_13:49:36 talk origin: Michael_Ahlers=
2019-02-15_13:49:36 talk cmds: set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on
2019-02-15_13:49:36 talk answers: ich schalte folgende Geräte heute um 1 Uhr ein: Pool im Draußen
2019-02-15_13:49:36 talk status: answers
} elsif ($time-10 > $evtime) {
T2FL($myname, 3, "Time is in past: ".localtime($time)." - ".localtime($evtime));
$$specials{timephrase} = "jetzt "; #<---
$lastevt=0;
} elsif ($lastevt) {$lastevt++}
2019-02-15_13:53:02 talk set: Michael_Ahlers=Stell die Tannenbaum heute um 1 Uhr an
2019-02-15_13:53:02 talk origin: Michael_Ahlers=
2019-02-15_13:53:02 talk cmds: set T2F_types_switch=.*Tannenbaum.*:FILTER=T2F_rooms=.*().*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*.* on
2019-02-15_13:53:02 talk answers: ich schalte folgende Geräte jetzt ein: Pool im Draußen
2019-02-15_13:53:02 talk status: answers
Talk2Fhem Version: 0.5.3
Decoding Text: stelle heizung kälter
Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
After correction:
stelle heizung kälter
Command part: 'stelle heizung kälter'
talk Evaluate search:
stelle heizung kälter =~ /?(@properties) && ?(@types_heating) && ?(@rooms) && ?(@places) && (ein wenig|etwas|viel)? ?(wärmer|kälter)$ && !(hilfe|helfen|hilf|hilfestellung|unterstützung|funktioniert|kennst du|steuere|steuern|bediene|bedienen|bedient) && !(welche|welcher|welches)/i
talk Evaluate search:
spiele musik schlager von =~ /?(bitte) && ?(@types_heos) && ?(@rooms) && ?(@places) && (@heos_commands)/i
2019.04.02 19:11:35 5: talk Evaluate search:
#HEOS Channel
?(bitte) && (@types_heos) && ?(@rooms) && ?(@places) && (@heos_channels) =
(cmd=>'$3{empty=>, else=>set T2F_types_switch=.*Denon.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_places=.*$4@.* input OnlineMusic; } set T2F_types_heos=.*$2@.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_places=.*$4@.* channel $5[@heos_channel]',
answer=>'"Ich spiele $DATE Musik von $5 $3{empty=>, else=>im $3}"')
# my $e = ($$hash{empty}{val} || $$hash{else}{val});
my $e = $$hash{empty}{val};
cmd=>'$3{empty=>"{};", else=>set T2F_types_switch=.*Denon.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_places=.*$4@.* input OnlineMusic; } [... ]
answer=>'"Ich spiele $DATE Musik von $5 $3{empty=>, else=>im $3}"'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>{};, else=>"im $3"}'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>"{};", else=>"im $3"}'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>\"{};\", else=>\"im $3\"}'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>getEmpty();, else=>getRoom($3);}'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>getEmpty();, else=>getRoom("$3");}'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>{getEmpty();}, else=>{getRoom("$3");}}'
answer=>'"Ich spiele $DATE Musik von $5 " . $3{empty=>{getEmpty();}, else=>{getRoom(\"$3\");}}'
T2F_keywordlist: &rooms = haus|überall|wohnung , wohnzimmer , esszimmer , küche , bad\\S* , toilette|wc , büro
T2F_language: DE
T2F_modwordlist: rollos = r_alle , r_wz , r_ez , , r_bad , r_wc , r_buero
T2F_origin: ^\S+=
rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+) = 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"}
0:+XXX= 1:os 2: 3: 4: 5:rauf -> set rollos_alle on
2019.07.28 23:20:44 3: Decoding Text: +XXX=Rollo im Wohnzimmer hoch
2019.07.28 23:20:44 1: HASH Replacement Failed! 0:+XXX= 1:o 2:im 3:Wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.28 23:20:44 1: ARRAY Replacement Failed! 0:+XXX= 1:o 2:im 3:Wohnzimmer 4: 5:im -> set r_wz ###
2019.07.28 23:20:44 1: No hit on advanced bracket selection: 0:+XXX= 1:o 2:im 3:Wohnzimmer 4: 5:im -> set r_wz ###
2019.07.28 23:20:44 1: No match: 'Rollo im Wohnzimmer im Wohnzimmer im Wohnzimmer hoch'
2019.07.28 23:20:44 1: Nothing to do: +XXX=Rollo im Wohnzimmer hoch
2019.07.28 23:27:33 3: Decoding Text: +XXX=Rollo im Wohnzimmer und im Esszimmer hoch
2019.07.28 23:27:33 3: Result of cmd: $VAR1 = {
'cmd' => '0:+XXX= 1:o 2:im 3:Wohnzimmer 4: 5:hoch -> set r_wz on'
};
2019.07.28 23:27:33 3: Result of cmd: $VAR1 = {
'cmd' => '0:+XXX= 1:o 2:im 3:Esszimmer 4: 5:hoch -> set r_ez on'
};
2019.07.28 23:27:33 1: No match: ' im Esszimmer hoch'
2019.07.28 23:27:33 1: Nothing to do: +XXX=Rollo im Wohnzimmer und im Esszimmer hoch
&rooms = haus|überall|wohnung , wohnzimmer , esszimmer , küche , bad\\S* , toilette|wc , büro
&test = Wohnzimmer|Esszimmer
2019.07.29 23:38:21 5: Talk2Fhem Version: 0.5.3
2019.07.29 23:38:21 3: Decoding Text: +XXX=rollo im wohnzimmer runter
2019.07.29 23:38:21 5: Starting notify loop for talk, 1 event(s), first is origin: +XXX=
2019.07.29 23:38:21 5: End notify loop for talk
2019.07.29 23:38:21 4: After correction:
rollo im wohnzimmer im wohnzimmer runter
2019.07.29 23:38:21 4: Command part: 'rollo im wohnzimmer im wohnzimmer runter'
2019.07.29 23:38:21 5: talk Evaluate search:
rollo im wohnzimmer im wohnzimmer runter =~ /rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.29 23:38:21 5: Command after Phrasecheck: wohnzimmer runter
2019.07.29 23:38:21 5: Keylists: $VAR1 = '^\\S+=';
$VAR2 = undef;
$VAR3 = undef;
$VAR4 = 'rooms';
2019.07.29 23:38:21 5: Filled lists: $VAR1 = 'rolll?(os?|\\S\\S?den) ?(\\S+ ){0,2}(haus|\\S\\S?berall|wohnung|wohnzimmer|esszimmer|k\\S\\S?che|bad\\S*|toilette|wc|b\\S\\S?ro)? (auf )?(\\S+)';
2019.07.29 23:38:21 5: Words: $VAR1 = '+XXX=';
$VAR2 = 'o';
$VAR3 = 'im ';
$VAR4 = 'wohnzimmer';
$VAR5 = undef;
$VAR6 = 'im';
2019.07.29 23:38:21 5: Match: rollo im wohnzimmer im
2019.07.29 23:38:21 5: Unmatch: wohnzimmer runter
2019.07.29 23:38:21 4: Hit with phrase: qr/rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.29 23:38:21 5: Handle reaction cmd: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"}
2019.07.29 23:38:21 5: Simple bracket selection (No. 0): '+XXX='
2019.07.29 23:38:21 5: Simple bracket selection (No. 1): 'o'
2019.07.29 23:38:21 5: Simple bracket selection (No. 2): 'im '
2019.07.29 23:38:21 5: Simple bracket selection (No. 3): 'wohnzimmer'
2019.07.29 23:38:21 5: Simple bracket selection (No. 5): 'im'
2019.07.29 23:38:21 5: Simple bracket selection (No. 5): 'im'
2019.07.29 23:38:21 4: Replaced bracket: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"} -> 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_im"}
2019.07.29 23:38:21 4: Advanced bracket replacement. $5true=>on, false=>off, integer=>"set_im" = 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.29 23:38:21 4: Keyword (5): 'im'
2019.07.29 23:38:21 5: HASH evaluation:
$VAR1 = {
'false' => {
'order' => 1,
'val' => 'off'
},
'integer' => {
'order' => 2,
'val' => 'set_im'
},
'true' => {
'order' => 0,
'val' => 'on'
}
};
2019.07.29 23:38:21 1: HASH Replacement Failed! 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.29 23:38:21 4: Advanced bracket replacement. $3@rollos, empty, rollos_alle = 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set ### ###
2019.07.29 23:38:21 5: Adding modlist: "r_alle","r_wz","r_ez","","r_bad","r_wc","r_buero", empty, rollos_alle
2019.07.29 23:38:21 4: Keyword (3): 'wohnzimmer'
2019.07.29 23:38:21 5: ARRAY evaluation: else: empty: rollos_alle
array: r_alle r_wz r_ez r_bad r_wc r_buero
2019.07.29 23:38:21 5: Numeral word found. 'wohnzimmer' converted to; wohnzimmer
2019.07.29 23:38:21 4: Searching position of 'wohnzimmer' in 'haus|\S\S?berall|wohnung wohnzimmer esszimmer k\S\S?che bad\S* toilette|wc b\S\S?ro'
2019.07.29 23:38:21 5: Found 'wohnzimmer' at position 1
2019.07.29 23:38:21 1: ARRAY Replacement Failed! 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set r_wz ###
2019.07.29 23:38:21 1: No hit on advanced bracket selection: 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set r_wz ###
2019.07.29 23:38:21 1: No match: 'rollo im wohnzimmer im wohnzimmer runter'
2019.07.29 23:38:21 1: Nothing to do: +XXX=rollo im wohnzimmer runter
2019.07.29 23:42:53 5: Talk2Fhem Version: 0.5.3
2019.07.29 23:42:53 3: Decoding Text: +XXX=rollo im wohnzimmer und im esszimmer runter
2019.07.29 23:42:53 5: Starting notify loop for talk, 1 event(s), first is origin: +XXX=
2019.07.29 23:42:53 5: End notify loop for talk
2019.07.29 23:42:53 4: After correction:
rollo im wohnzimmer im wohnzimmer runter
rollo im esszimmer im esszimmer runter
2019.07.29 23:42:53 4: Command part: 'rollo im wohnzimmer im wohnzimmer runter'
2019.07.29 23:42:53 5: talk Evaluate search:
rollo im wohnzimmer im wohnzimmer runter =~ /rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.29 23:42:53 5: Command after Phrasecheck: wohnzimmer runter
2019.07.29 23:42:53 5: Keylists: $VAR1 = '^\\S+=';
$VAR2 = undef;
$VAR3 = undef;
$VAR4 = 'rooms';
2019.07.29 23:42:53 5: Filled lists: $VAR1 = 'rolll?(os?|\\S\\S?den) ?(\\S+ ){0,2}(haus|\\S\\S?berall|wohnung|wohnzimmer|esszimmer|k\\S\\S?che|bad\\S*|toilette|wc|b\\S\\S?ro)? (auf )?(\\S+)';
2019.07.29 23:42:53 5: Words: $VAR1 = '+XXX=';
$VAR2 = 'o';
$VAR3 = 'im ';
$VAR4 = 'wohnzimmer';
$VAR5 = undef;
$VAR6 = 'im';
2019.07.29 23:42:53 5: Match: rollo im wohnzimmer im
2019.07.29 23:42:53 5: Unmatch: wohnzimmer runter
2019.07.29 23:42:53 4: Hit with phrase: qr/rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.29 23:42:53 5: Handle reaction cmd: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"}
2019.07.29 23:42:53 5: Simple bracket selection (No. 0): '+XXX='
2019.07.29 23:42:53 5: Simple bracket selection (No. 1): 'o'
2019.07.29 23:42:53 5: Simple bracket selection (No. 2): 'im '
2019.07.29 23:42:53 5: Simple bracket selection (No. 3): 'wohnzimmer'
2019.07.29 23:42:53 5: Simple bracket selection (No. 5): 'im'
2019.07.29 23:42:53 5: Simple bracket selection (No. 5): 'im'
2019.07.29 23:42:53 4: Replaced bracket: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"} -> 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_im"}
2019.07.29 23:42:53 4: Advanced bracket replacement. $5true=>on, false=>off, integer=>"set_im" = 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.29 23:42:53 4: Keyword (5): 'im'
2019.07.29 23:42:53 5: HASH evaluation:
$VAR1 = {
'false' => {
'order' => 1,
'val' => 'off'
},
'integer' => {
'order' => 2,
'val' => 'set_im'
},
'true' => {
'order' => 0,
'val' => 'on'
}
};
2019.07.29 23:42:53 1: HASH Replacement Failed! 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.29 23:42:53 4: Advanced bracket replacement. $3@rollos, empty, rollos_alle = 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set ### ###
2019.07.29 23:42:53 5: Adding modlist: "r_alle","r_wz","r_ez","","r_bad","r_wc","r_buero", empty, rollos_alle
2019.07.29 23:42:53 4: Keyword (3): 'wohnzimmer'
2019.07.29 23:42:53 5: ARRAY evaluation: else: empty: rollos_alle
array: r_alle r_wz r_ez r_bad r_wc r_buero
2019.07.29 23:42:53 5: Numeral word found. 'wohnzimmer' converted to; wohnzimmer
2019.07.29 23:42:53 4: Searching position of 'wohnzimmer' in 'haus|\S\S?berall|wohnung wohnzimmer esszimmer k\S\S?che bad\S* toilette|wc b\S\S?ro'
2019.07.29 23:42:53 5: Found 'wohnzimmer' at position 1
2019.07.29 23:42:53 1: ARRAY Replacement Failed! 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set r_wz ###
2019.07.29 23:42:53 1: No hit on advanced bracket selection: 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set r_wz ###
2019.07.29 23:42:53 1: No match: 'rollo im wohnzimmer im wohnzimmer runter'
2019.07.29 23:42:53 4: Command part: 'rollo im esszimmer im esszimmer runter'
2019.07.29 23:42:53 5: talk Evaluate search:
rollo im esszimmer im esszimmer runter =~ /rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.29 23:42:53 5: Command after Phrasecheck: esszimmer runter
2019.07.29 23:42:53 5: Keylists: $VAR1 = '^\\S+=';
$VAR2 = undef;
$VAR3 = undef;
$VAR4 = 'rooms';
2019.07.29 23:42:53 5: Filled lists: $VAR1 = 'rolll?(os?|\\S\\S?den) ?(\\S+ ){0,2}(haus|\\S\\S?berall|wohnung|wohnzimmer|esszimmer|k\\S\\S?che|bad\\S*|toilette|wc|b\\S\\S?ro)? (auf )?(\\S+)';
2019.07.29 23:42:53 5: Words: $VAR1 = '+XXX=';
$VAR2 = 'o';
$VAR3 = 'im ';
$VAR4 = 'esszimmer';
$VAR5 = undef;
$VAR6 = 'im';
2019.07.29 23:42:53 5: Match: rollo im esszimmer im
2019.07.29 23:42:53 5: Unmatch: esszimmer runter
2019.07.29 23:42:53 4: Hit with phrase: qr/rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.29 23:42:53 5: Handle reaction cmd: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"}
2019.07.29 23:42:53 5: Simple bracket selection (No. 0): '+XXX='
2019.07.29 23:42:53 5: Simple bracket selection (No. 1): 'o'
2019.07.29 23:42:53 5: Simple bracket selection (No. 2): 'im '
2019.07.29 23:42:53 5: Simple bracket selection (No. 3): 'esszimmer'
2019.07.29 23:42:53 5: Simple bracket selection (No. 5): 'im'
2019.07.29 23:42:53 5: Simple bracket selection (No. 5): 'im'
2019.07.29 23:42:53 4: Replaced bracket: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"} -> 0:+XXX= 1:o 2:im 3:esszimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_im"}
2019.07.29 23:42:53 4: Advanced bracket replacement. $5true=>on, false=>off, integer=>"set_im" = 0:+XXX= 1:o 2:im 3:esszimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.29 23:42:53 4: Keyword (5): 'im'
2019.07.29 23:42:53 5: HASH evaluation:
$VAR1 = {
'false' => {
'order' => 1,
'val' => 'off'
},
'integer' => {
'order' => 2,
'val' => 'set_im'
},
'true' => {
'order' => 0,
'val' => 'on'
}
};
2019.07.29 23:42:53 1: HASH Replacement Failed! 0:+XXX= 1:o 2:im 3:esszimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.29 23:42:53 4: Advanced bracket replacement. $3@rollos, empty, rollos_alle = 0:+XXX= 1:o 2:im 3:esszimmer 4: 5:im -> set ### ###
2019.07.29 23:42:53 5: Adding modlist: "r_alle","r_wz","r_ez","","r_bad","r_wc","r_buero", empty, rollos_alle
2019.07.29 23:42:53 4: Keyword (3): 'esszimmer'
2019.07.29 23:42:53 5: ARRAY evaluation: else: empty: rollos_alle
array: r_alle r_wz r_ez r_bad r_wc r_buero
2019.07.29 23:42:53 5: Numeral word found. 'esszimmer' converted to; esszimmer
2019.07.29 23:42:53 4: Searching position of 'esszimmer' in 'haus|\S\S?berall|wohnung wohnzimmer esszimmer k\S\S?che bad\S* toilette|wc b\S\S?ro'
2019.07.29 23:42:53 5: Found 'esszimmer' at position 2
2019.07.29 23:42:53 1: ARRAY Replacement Failed! 0:+XXX= 1:o 2:im 3:esszimmer 4: 5:im -> set r_ez ###
2019.07.29 23:42:53 1: No hit on advanced bracket selection: 0:+XXX= 1:o 2:im 3:esszimmer 4: 5:im -> set r_ez ###
2019.07.29 23:42:53 1: No match: 'rollo im esszimmer im esszimmer runter'
2019.07.29 23:42:53 1: Nothing to do: +XXX=rollo im wohnzimmer und im esszimmer runter
2019.07.30 00:14:59 5: Talk2Fhem Version: 0.6.0d
2019.07.30 00:14:59 3: Decoding Text: +XXX=rollo im wohnzimmer runter
2019.07.30 00:14:59 5: Starting notify loop for talk, 1 event(s), first is origin: +XXX=
2019.07.30 00:14:59 5: aktivitaet: not on any display, ignoring notify
2019.07.30 00:14:59 5: batterie_gruppe: not on any display, ignoring notify
2019.07.30 00:14:59 5: End notify loop for talk
2019.07.30 00:14:59 4: After correction:
rollo im wohnzimmer im wohnzimmer runter
2019.07.30 00:14:59 4: Command part: 'rollo im wohnzimmer im wohnzimmer runter'
2019.07.30 00:14:59 5: talk Evaluate search:
rollo im wohnzimmer im wohnzimmer runter =~ /rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.30 00:14:59 5: Command after Phrasecheck: wohnzimmer runter
2019.07.30 00:14:59 5: Keylists: $VAR1 = '^\\S+=';
$VAR2 = undef;
$VAR3 = undef;
$VAR4 = 'rooms';
2019.07.30 00:14:59 5: Filled lists: $VAR1 = 'rolll?(os?|\\S\\S?den) ?(\\S+ ){0,2}(haus|\\S\\S?berall|wohnung|wohnzimmer|esszimmer|k\\S\\S?che|bad\\S*|toilette|wc|b\\S\\S?ro)? (auf )?(\\S+)';
2019.07.30 00:14:59 5: Words: $VAR1 = '+XXX=';
$VAR2 = 'o';
$VAR3 = 'im ';
$VAR4 = 'wohnzimmer';
$VAR5 = undef;
$VAR6 = 'im';
2019.07.30 00:14:59 5: Match: rollo im wohnzimmer im
2019.07.30 00:14:59 5: Unmatch: wohnzimmer runter
2019.07.30 00:14:59 4: Hit with phrase: qr/rolll?(os?|\S\S?den) ?(\S+ ){0,2}(@rooms)? (auf )?(\S+)/i
2019.07.30 00:14:59 5: Handle reaction cmd: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"}
2019.07.30 00:14:59 5: Simple bracket selection (No. 0): '+XXX='
2019.07.30 00:14:59 5: Simple bracket selection (No. 1): 'o'
2019.07.30 00:14:59 5: Simple bracket selection (No. 2): 'im '
2019.07.30 00:14:59 5: Simple bracket selection (No. 3): 'wohnzimmer'
2019.07.30 00:14:59 5: Simple bracket selection (No. 5): 'im'
2019.07.30 00:14:59 5: Simple bracket selection (No. 5): 'im'
2019.07.30 00:14:59 4: Replaced bracket: 0:$0 1:$1 2:$2 3:$3 4:$4 5:$5 -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_$5"} -> 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] $5{true=>on, false=>off, integer=>"set_im"}
2019.07.30 00:14:59 4: Advanced bracket replacement. $5true=>on, false=>off, integer=>"set_im" = 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.30 00:14:59 4: Keyword (5): 'im'
2019.07.30 00:14:59 5: HASH evaluation:
$VAR1 = {
'false' => {
'order' => 1,
'val' => 'off'
},
'integer' => {
'order' => 2,
'val' => 'set_im'
},
'true' => {
'order' => 0,
'val' => 'on'
}
};
2019.07.30 00:14:59 1: HASH Replacement Failed! 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set $3[@rollos, empty, rollos_alle] ###
2019.07.30 00:14:59 4: Advanced bracket replacement. $3@rollos, empty, rollos_alle = 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set ### ###
2019.07.30 00:14:59 5: Adding modlist: "r_alle","r_wz","r_ez","","r_bad","r_wc","r_buero", empty, rollos_alle
2019.07.30 00:14:59 4: Keyword (3): 'wohnzimmer'
2019.07.30 00:14:59 5: ARRAY evaluation: else: empty: rollos_alle
array: r_alle r_wz r_ez r_bad r_wc r_buero
2019.07.30 00:14:59 5: Numeral word found. 'wohnzimmer' converted to; wohnzimmer
2019.07.30 00:14:59 4: Searching position of 'wohnzimmer' in 'haus|\S\S?berall|wohnung wohnzimmer esszimmer k\S\S?che bad\S* toilette|wc b\S\S?ro'
2019.07.30 00:14:59 5: Found 'wohnzimmer' at position 1
2019.07.30 00:14:59 1: ARRAY Replacement Failed! 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set r_wz ###
2019.07.30 00:14:59 1: No hit on advanced bracket selection: 0:+XXX= 1:o 2:im 3:wohnzimmer 4: 5:im -> set r_wz ###
2019.07.30 00:14:59 1: No match: 'rollo im wohnzimmer im wohnzimmer runter'
2019.07.30 00:14:59 1: Nothing to do: +XXX=rollo im wohnzimmer runter
#Rolladen verändern
?(bitte) && (@types_blind) && ?(@rooms) && ?(@properties) && ?(@places) && ((\d+)(?:[ ]){0,1}(?:prozent|%|db)|1 wenig|etwas|viel) ((höher|größer|weiter auf|weiter hoch|weiter öffnen|erhöhen|weiter rauf)|(niedriger|kleiner|weiter zu|weiter runter|weiter schließen|verringern|tiefer|runter)|(lauter)|(leiser)) =
(cmd=>{fhem("define at_talk_rollade_" . rand(600) . " at +00:00:02 set T2F_types_blind=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_properties=.*$4@.*:FILTER=T2F_places=.*$5@.* $8[up,down,volumeUp,volumeDown] $7{integer=>$7, empty=>$6[0,0,3,7,15,empty,7]}")},
answer=>'(( "$8[up,down,up,down]" eq "up") ? "$1{/bitte/=>Gern\,} ich fahre die $2 in folgenden Räumen $DATE $7{integer=>$7, empty=>$5[0,0,3,7,15,empty,7]} $2{/Lautstärke/=>Prozent, else=>Prozent} $2{/Lautstärke/=>lauter, else=>rauf}: " : "$1{/bitte/=>Gern\,} ich fahre die $2 in folgenden Räumen $DATE $7{integer=>$7, empty=>$6[0,0,3,7,15,empty,7]} $2{/Lautstärke/=>Prozent, else=>Prozent} $2{/Lautstärke/=>leiser, else=>runter}: ").T2F_answer("T2F_types_blind=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_properties=.*$4@.*:FILTER=T2F_places=.*$5@.*","T2F_types_blind")')
#Rolladen setzen
?(bitte) && (@types_blind) && ?(@rooms) && ?(@properties) && ?(@places) && (auf (\d+)(?:[ ]){0,1}(?:prozent|%|db)|(hoch|runter|rauf|zu|auf|leise|laut|stumm))( stellen| setzen| einstellen| ein)?$ =
(cmd=>{fhem("define at_talk_rollade_" . rand(600) . " at +00:00:02 set T2F_types_blind=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_properties=.*$4@.*:FILTER=T2F_places=.*$5@.* $7{integer=>$2{/Lautstärke/=>volume, /Lüfter/=>, else=>pct} $7, empty=>$8{true=>$2{/Lautstärke/=>volume 70,/Lüfter/=>250, else=>pct 100}, false=>$2{/Lautstärke/=>volume 0,/Lüfter/=>0, else=>pct 0} } }")},
answer=>'"$1{/bitte/=>Gern\,} ich fahre die $2 in folgenden Räumen $DATE $7{integer=>auf $7 Prozent, empty=>$8{true=>$2{/Lautstärke/=>laut, else=>hoch}, false=>$2{/Lautstärke/=>leise, else=>runter} } }: ".T2F_answer("T2F_types_blind=.*$2{empty=>.+, else=>$2@}.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_properties=.*$4@.*:FILTER=T2F_places=.*$5@.*","T2F_types_blind")')
types_blind = Rollade, Rolllade, Rolladen, Rollladen, Rollos, Lautstärke, Lüfter, Musik, Anlage
T2F_properties klein, Garten
T2F_rooms Wohnzimmer
T2F_types_blind !Rollade, Rolllade, Rollos
T2F_rooms !Wohnzimmer, Erdgeschoss, Wohnbereich, Haus
T2F_types_blind !Lautstärke, Musik, Anlage
T2F_types_switch !Denon, Anlage, Verstärker, Musik, Zone, alles
Talk2Fhem Version: 0.5.3
Decoding Text: Wohnung.schalte licht spüle küche morgen vormittags aus
Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
After correction:
schalte spüle morgen küche licht licht vormittags aus
Command part: 'schalte spüle morgen küche licht licht vormittags aus'
Timephrase found: =~ s/\bmorgen\b/
TIMEPHRASEDATA mod: 'days' raw: '1' result: '1' opt: '1' pm: ''
Timephrase found: =~ s/\bvormittags?\b/
TIMEPHRASEDATA mod: 'notime' raw: '"10:30"' result: '10:30' opt: '1' pm: '0'
Extracted Timephrase. 'morgen vormittags '
Commandpart after datedecoding. 'schalte spüle küche licht licht aus'
Eventtime found: Tue Sep 3 00:30:00 2019
Command left: 'schalte spüle küche licht licht aus'
} elsif ($datemod eq "notime") {
my @t = map { s/\s//gr } split(":", $tf{notime});
$evt = POSIX::mktime($t[2] || 0,$t[1] || 0,$t[0],$lt[3],$lt[4],$lt[5]) || 0;
$timeset = undef;
Talk2Fhem Version: 0.5.3
Decoding Text: wenn stehlampe an schalte hängelampe büro aus
Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
After correction:
wenn büro stehlampe stehlampe an schalte aus
wenn hängelampe hängelampe an schalte aus
Command part: 'wenn büro stehlampe stehlampe an schalte aus'
T2F Evaluate search:
wenn sonnenaufgang schalte hängelampe büro aus
Using User Filter: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
After correction:
wenn sonnenaufgang schalte büro hängelampe hängelampe aus
Command part: 'wenn sonnenaufgang schalte büro hängelampe hängelampe aus'
T2F Evaluate search:
wenn sonnenaufgang schalte büro hängelampe hängelampe aus =~ /wenn Sonnenaufgang/i
Command after Phrasecheck: schalte büro hängelampe hängelampe aus
(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(@colors|\S+|\d+)( schalten| stellen| dimmen)? = set $2[@lightName] $5{ true=>on, false=>off, integer => pct $5, else => rgb $5[@rgb] }
Licht Wohnzimmer auf 20 dimmen
Field #20 doesn't exist in Array!
Licht Wohnzimmer auf 8 dimmen
Zitat von: Haecksler am 23 November 2019, 19:51:30
Hallo,
ich schalte mit folgendem AusdruckCode Auswählen(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(@colors|\S+|\d+)( schalten| stellen| dimmen)? = set $2[@lightName] $5{ true=>on, false=>off, integer => pct $5, else => rgb $5[@rgb] }
Mein Licht.
Das funktioniert auch wunderbar, bis man versucht auf einen zweistelligen Wert zu dimmenCode AuswählenLicht Wohnzimmer auf 20 dimmen
er gibt folgende FehlermeldungCode AuswählenField #20 doesn't exist in Array!
wenn man jedoch auf Zahlen von 0-9 dimmen will z.B.Code AuswählenLicht Wohnzimmer auf 8 dimmen
funktioniert das ohne Probleme.
Ist das ein Bug oder habe ich irgendwo einen Fehler drin.
Gruß,
Stefan
Talk2Fhem Version: 0.5.3
Decoding Text: Licht Aula 20
After correction:
Licht Aula 20
Command part: 'Licht Aula 20'
talk Evaluate search:
Licht Aula 20 =~ /(im |in )?(@roomsJalousie) && Jalousie (im )?&&(\S+|\d+)/i
talk Evaluate search:
Licht Aula 20 =~ /(im )?(@etagen) && Jalousien && (auf )?(\S+|\d+)/i
talk Evaluate search:
Licht Aula 20 =~ /(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(@colors|\d+|\S+)( schalten| stellen)?/i
Command after Phrasecheck:
Keylists: $VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'rooms';
$VAR4 = undef;
$VAR5 = undef;
$VAR6 = 'colors';
Filled lists: $VAR1 = '(im |in )?(wohnzimmer|tv|fernseher|aula|allah|aura|treppe|schlafzimmer|garten|aussen|au\\S\\S?en|weg|Weihnachtsbeleuchtung innen|Weihnachtsbeleuchtung au\\S\\S?en)';
$VAR2 = '(liegt|nicht|Licht|Dimmer|Lampe)';
$VAR3 = '(auf )?(fernsehen|arbeiten|lesen|g\\S\\S?ste|rot|gr\\S\\S?n|blau|lila|fussball|\\d+|\\S+)( schalten| stellen)?';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'Aula';
$VAR4 = 'Licht';
$VAR5 = undef;
$VAR6 = '20';
$VAR7 = undef;
Match: AulaLicht20
Unmatch:
Hit with phrase: qr/(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(@colors|\d+|\S+)( schalten| stellen)?/i
Handle reaction cmd: set $2[@lightName] $5{ true=>on, false=>off, integer=>pct $5, else=>$5[@rgb] }
Simple bracket selection (No. 5): '20'
Replaced bracket: set $2[@lightName] $5{ true=>on, false=>off, integer=>pct $5, else=>$5[@rgb] } -> set $2[@lightName] $5{ true=>on, false=>off, integer=>pct 20, else=>$5[@rgb] }
Advanced bracket replacement. $5@rgb = set $2[@lightName] $5{ true=>on, false=>off, integer=>pct 20, else=>### }
Adding modlist: "rgb F19824","rgb ffdec3","rgb ffc494","rgb ed0000","rgb 38FF04","rgb 0000F9","rgb DE43C9","rgb 73FF57"
Keyword (5): '20'
ARRAY evaluation: else: empty:
array: rgb F19824 rgb ffdec3 rgb ffc494 rgb ed0000 rgb 38FF04 rgb 0000F9 rgb DE43C9 rgb 73FF57
Numeral word found. '20' converted to; 20
Field #20 doesn't exist in Array!
Field #20 doesn't exist in Array!
Nothing to do: Licht Aula 20
Numeral word found. 'Weihnachtsbeleuchtung innen' converted to; 8
Field #8 doesn't exist in Array!
Field #8 doesn't exist in Array
!Talk2Fhem Version: 0.5.3
Decoding Text: Weihnachtsbeleuchtung innen Licht aus
After correction:
Weihnachtsbeleuchtung innen Licht aus
Command part: ' Weihnachtsbeleuchtung innen Licht aus'
Command left: 'Weihnachtsbeleuchtung innen Licht aus'
talk Evaluate search:
Weihnachtsbeleuchtung innen Licht aus =~ /(im |in )?(@roomsJalousie) && Jalousie (im )?&&(\S+|\d+)/i
talk Evaluate search:
Weihnachtsbeleuchtung innen Licht aus =~ /(im )?(@etagen) && Jalousien && (auf )?(\S+|\d+)/i
talk Evaluate search:
Weihnachtsbeleuchtung innen Licht aus =~ /(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(\d+)( dimmen)?/i
talk Evaluate search:
Weihnachtsbeleuchtung innen Licht aus =~ /(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(@colors|\S+)( schalten| stellen)?/i
Command after Phrasecheck:
Keylists: $VAR1 = undef;
$VAR2 = undef;
$VAR3 = 'rooms';
$VAR4 = undef;
$VAR5 = undef;
$VAR6 = 'colors';
Filled lists: $VAR1 = '(im |in )?(wohnzimmer|tv|fernseher|aula|allah|aura|treppe|schlafzimmer|garten|aussen|au\\S\\S?en|weg|Weihnachtsbeleuchtung innen|Weihnachtsbeleuchtung au\\S\\S?en)';
$VAR2 = '(liegt|nicht|Licht|Dimmer|Lampe)';
$VAR3 = '(auf )?(fernsehen|arbeiten|lesen|g\\S\\S?ste|rot|gr\\S\\S?n|blau|lila|fussball|\\S+)( schalten| stellen)?';
Words: $VAR1 = '';
$VAR2 = undef;
$VAR3 = 'Weihnachtsbeleuchtung innen';
$VAR4 = 'Licht';
$VAR5 = undef;
$VAR6 = 'aus';
$VAR7 = undef;
Match: Weihnachtsbeleuchtung innenLichtaus
Unmatch:
Hit with phrase: qr/(im |in )?(@rooms) && (liegt|nicht|Licht|Dimmer|Lampe) && (auf )?(@colors|\S+)( schalten| stellen)?/i
Handle reaction cmd: set $2[@lightName] $5{ true=>on, false=>off, else=>$5[@rgb] }
Advanced bracket replacement. $5@rgb = set $2[@lightName] $5{ true=>on, false=>off, else=>### }
Adding modlist: "rgb F19824","rgb ffdec3","rgb ffc494","rgb ed0000","rgb 38FF04","rgb 0000F9","rgb DE43C9","rgb 73FF57"
Keyword (5): 'aus'
ARRAY evaluation: else: empty:
array: rgb F19824 rgb ffdec3 rgb ffc494 rgb ed0000 rgb 38FF04 rgb 0000F9 rgb DE43C9 rgb 73FF57
Numeral word found. 'aus' converted to; aus
Searching position of 'aus' in 'fernsehen arbeiten|lesen g\S\S?ste rot gr\S\S?n blau lila fussball'
ARRAY Replacement Failed! set $2[@lightName] $5{ true=>on, false=>off, else=>### }
Advanced bracket replacement. $5 true=>on, false=>off, else=>### = set $2[@lightName] ###
Keyword (5): 'aus'
HASH evaluation:
$VAR1 = {
'false' => {
'order' => 1,
'val' => 'off'
},
'else' => {
'order' => 2,
'val' => '###'
},
'true' => {
'val' => 'on',
'order' => 0
}
};
Word found (false): 'aus' replace with 'off'
Advanced bracket replacement. $2@lightName = set ### off
Adding modlist: "HUEDevice3","LichtAula","Dimmer_1","Schalter_Aussen_Sw_02","Schalter_PM1","Schalter_3"
Keyword (2): 'Weihnachtsbeleuchtung innen'
ARRAY evaluation: else: empty:
array: HUEDevice3 LichtAula Dimmer_1 Schalter_Aussen_Sw_02 Schalter_PM1 Schalter_3
Numeral word found. 'Weihnachtsbeleuchtung innen' converted to; 8
Field #8 doesn't exist in Array!
Field #8 doesn't exist in Array!
Nothing to do: Weihnachtsbeleuchtung innen Licht aus
sub clean_talk($){
my $input = "";
my $num = 0;
my @Words = ();
my @EVENTS = ();
my $word = "";
my $word_org = "";
my $word_conv = "";
my $word1 = false;
my $word1_char = "";
my $word1_num = 0;
my $word2 = false;
my $calc_num = 0;
$input = $_[0];
Log 3, "clean_talk: " . $input;
$input=~ s/prozent\shundert\s/prozent und in /ig;
$input=~ s/\sein\shundert\s/ 100 /ig;
@EVENTS = ( split / /, $input );
if (!defined($EVENTS[0])){
Log 3, "not defined";
push @EVENTS, $input;
}
foreach(@EVENTS) {
$word = "$_";
$word =~ s/sein/ein/g;
$word =~ s/rein/ein/g;
$word =~ s/raus/aus/g;
$word =~ s/\%/Prozent/g;
# $word_org = $word;
# while ($word_org =~ /(\dmin)/g) {
# my $word_org = $1;
# my $word_conv = $1;
# $word_conv =~ s/min/\ Minuten/g;
# $word =~ s/$word_org/$word_conv/g;
# print "Word is $word_org, conv $word_conv, result $word \n";
# }
$word =~ s/^(\d+)min$/'in '.$1.' Minuten'/e;
$word =~ s/^(\d+)h$/'in '.$1.' Stunden'/e;
$word_conv = $word;
$word_conv =~ s/ß/ss/g;
undef $num;
$num = Lingua::DEU::Word2Num::w2n($word_conv);
if ( $word_conv eq "fünfzig" ){
$num = 50;
}
if ( $word_conv eq "fünfzehn" ){
$num = 15;
}
if ( $word_conv eq "fünf" ){
$num = 5;
}
if ( $word_conv eq "zwölf" ){
$num = 12;
}
# Log 3, $word . " " . $num;
if ( $word eq "und" && $word1 == true ) {
$word2 = true;
}else{
if ( defined($num) ){
if ( $word1 == true ){
if ( $word2 == true ){
$calc_num = $word1_num + $num;
push @Words, $calc_num;
$word1 = false;
$word2 = false;
}else{
push @Words, $word1_num;
push @Words, $num;
$word1 = false;
}
}else{
$word1 = true;
$word1_num = $num;
$word1_char = $word;
}
}else{
if ( $word1 == true ){
if ( $word2 == true ){
push @Words, $word1_num;
push @Words, "und";
push @Words, $word;
$word1 = false;
$word2 = false;
}else{
push @Words, $word1_num;
push @Words, $word;
$word1 = false;
}
}else{
push @Words, $word;
$word1 = false;
$word2 = false;
}
}
}
}
if ( $word1 == true ){
push @Words, $word1_num;
}
return join(' ', @Words);
}
fhemIntents
#IntentName=<sample utterance>
{my_AlexaTalk("$ALLES")}={ALLES:wo+ist+robbi;gute+Nacht;Schlaf+Gut;Play;Pause;Stop;Next;Weiter;wir+gehen;ich+gehe}
{my_AlexaTalk("stell $ALLES")}=stell+{ALLES:AMAZON.SearchQuery}
{my_AlexaTalk("bescheid $ALLES")}=bescheid+{ALLES:AMAZON.SearchQuery}
{my_AlexaTalk("wie $ALLES")}=wie+{ALLES:AMAZON.SearchQuery}
#{my_AlexaTalk("$STARTWORT $ALLES")}={STARTWORT:spiel;spiele;dimme;mach;mache;fahr;fahre;schalte;stell;stelle;fahr} {ALLES:AMAZON.SearchQuery}
sub my_AlexaTalk($){
Log 3, "Alexa: " . $_[0];
return fhem("set talk alexa=" . clean_talk($_[0]));
}
#$return = $hash->{$status};
$return = ReadingsVal($name, $status, undef);
if ($status eq "done"){
$return = ["alles klar","wird gemacht","ich kümmere mich drum","ei ei sir"]->[rand(4)];
}
}
$hash->{STATE} = "Ready";
return($return);
{
"interactionModel": {
"languageModel": {
"invocationName": "haus",
"intents": [
{
"name": "FHEMperlCodeIntent",
"slots": [
{
"name": "FHEMperlCodeIntent_ALLES",
"type": "FHEMperlCodeIntent_ALLES_Value"
}
],
"samples": [
"{FHEMperlCodeIntent_ALLES}"
]
},
{
"name": "FHEMperlCodeIntentB",
"slots": [
{
"name": "FHEMperlCodeIntentB_ALLES",
"type": "AMAZON.SearchQuery"
}
],
"samples": [
"fahre {FHEMperlCodeIntentB_ALLES}",
"fahr {FHEMperlCodeIntentB_ALLES}",
"färbe {FHEMperlCodeIntentB_ALLES}",
"nach {FHEMperlCodeIntentB_ALLES}",
"spiel {FHEMperlCodeIntentB_ALLES}",
"spiele {FHEMperlCodeIntentB_ALLES}",
"wie {FHEMperlCodeIntentB_ALLES}",
"wo {FHEMperlCodeIntentB_ALLES}",
"stelle {FHEMperlCodeIntentB_ALLES}",
"stell {FHEMperlCodeIntentB_ALLES}",
"schalte {FHEMperlCodeIntentB_ALLES}",
"mach {FHEMperlCodeIntentB_ALLES}"
]
},
{
"name": "FHEMperlCodeIntentC",
"slots": [
{
"name": "FHEMperlCodeIntentC_ALLES",
"type": "AMAZON.SearchQuery"
}
],
"samples": [
"es soll mich informieren {FHEMperlCodeIntentC_ALLES}",
"es soll mir bescheid {FHEMperlCodeIntentC_ALLES}",
"sag {FHEMperlCodeIntentC_ALLES}",
"informiere {FHEMperlCodeIntentC_ALLES}"
]
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "FHEMperlCodeIntentD",
"slots": [
{
"name": "FHEMperlCodeIntentD_ALLES",
"type": "AMAZON.SearchQuery"
}
],
"samples": [
"gibt {FHEMperlCodeIntentD_ALLES}",
"kannst {FHEMperlCodeIntentD_ALLES}",
"kann {FHEMperlCodeIntentD_ALLES}",
"ist {FHEMperlCodeIntentD_ALLES}",
"was {FHEMperlCodeIntentD_ALLES}",
"warum {FHEMperlCodeIntentD_ALLES}",
"wie {FHEMperlCodeIntentD_ALLES}"
]
}
],
"types": [
{
"name": "FHEMperlCodeIntentB_STARTWORT_Value",
"values": [
{
"name": {
"value": "spiel"
}
},
{
"name": {
"value": "spiele"
}
},
{
"name": {
"value": "dimme"
}
},
{
"name": {
"value": "mach"
}
},
{
"name": {
"value": "mache"
}
},
{
"name": {
"value": "fahr"
}
},
{
"name": {
"value": "fahre"
}
},
{
"name": {
"value": "schalte"
}
},
{
"name": {
"value": "stell"
}
},
{
"name": {
"value": "stelle"
}
}
]
},
{
"name": "FHEMperlCodeIntent_ALLES_Value",
"values": [
{
"name": {
"value": "wo ist robbi"
}
},
{
"name": {
"value": "gute Nacht"
}
},
{
"name": {
"value": "Schlaf Gut"
}
},
{
"name": {
"value": "Play"
}
},
{
"name": {
"value": "Pause"
}
},
{
"name": {
"value": "Stop"
}
},
{
"name": {
"value": "Next"
}
},
{
"name": {
"value": "Weiter"
}
},
{
"name": {
"value": "wir gehen"
}
},
{
"name": {
"value": "ich gehe"
}
}
]
}
]
}
}
}