[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul

Begonnen von Phill, 12 Dezember 2017, 12:24:09

Vorheriges Thema - Nächstes Thema

Phill

#345
Hier die neuste beta...
Wäre schön wenn ihr nochmal bezüglich der Zeiten ein bisschen testen könntet ob jetzt soweit alles passt. Ich komme gerade nicht zum testen und muss mich erst mal für eine Woche verabschieden. Werde zwar noch mitlesen aber zu fixen werde ich nicht kommen.

Zitat von: obi am 14 Februar 2019, 17:20:46
Im Modul ist ein kleiner Schreibfehler.

Zeile 1666:
T2FL($myname,5,"Functionmod '$$fc' $rp");
muss geändert werden in:T2FL($myname,5,"Functionmod '$fc' $rp");

das hat ja komplett fhem gekillt. Nicht schön. Danke für die Info.

Zitat von: ahlermi am 15 Februar 2019, 09:36:56
Wäre gut wenn du die $DATE Variable bei Zeit in Vergangenheit auch mit "jetzt" oder so überschreibst. :-)
ist drin

Zitat von: obi am 13 Februar 2019, 16:41:32
Das wäre auch ein Feature Request von mir. Dann könnte ich auch die "Heizung auf Nacht" stellen :)
ich habe auch mal "auf" auf die Blacklist gesetzt. Immer noch weniger Aufwand als alle möglichen Beiwörter zu testen.

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

Das ist ein größeres Problem, da bei den "wieder" Kommandos noch nicht wirklich Float zahlen berücksichtigt sind. Muss ich mir in Ruhe anschauen...
War doch nicht so das Problem, war nur ein kleiner Fehler. Ist gefixt.

Gruß
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

ahlermi

#346
Hi,

jetzt kommt zwar schön lesbar:

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


aber ich meinte eigentlich "ich schalte folgende Geräte jetzt ein: Pool im Draußen"

Zeile 1223:
} 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
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

Phill

Du hast Recht, das war nicht ganz zu ende gedacht...
Jetzt muss ich aber wirklich Schluss machen.

Hier die für mindestens 1 Woche geltende Beta... :)
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

obi

#348
Hallo Phill,
ich habe noch ma ein Problem :)

Es scheint wohl so zu sein, dass wenn ein Wort aus dem Input Text in einer Keywordlist vorhanden ist dieses Wort dann ignoriert wird bei der Evaluate search wenn das wort auch in einem anderen Regex vorhanden ist. Was bei mir auch der Fall ist, dass ich in mehreren KeyWodlisten die gleichen Wörter haben kann, dies führt auch zu Problemen. Aktuell habe ich folgendes Beispiel:

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:


Er findet das Wort "kälter" einfach nicht obwohl dies eindeutig im Regex vorhanden ist. Wenn ich "wärmer" verwende funktioniert es. Wenn ich alle anderen Keywortlisten lösche und die Regex so lasse, dann funktioniert es. Es scheint wohl in irgendeiner Keywordliste "kälter" irgendwie gefunden zu werden obwohl das so genau nicht vorhanden ist.

Kannst du hierzu was sagen ?

Phill

Ja das ist so gewollt, er löscht nach jedem && den gefundenen Text aus dem Input. So kann man besser mit dem umliegenden Text arbeiten. Ich hatte auch Mal überlegt mit z.B. einem  "-" vor der regex das reduzieren zu blockieren.

Könnte bei dir das Problem nicht behoben werden wenn du die regex einfach an den Anfang stellst, somit wird es gleich am Anfang getestet wenn der Text noch vorhanden ist.

Gruß
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

obi

Dank Phill,

genau das hat das Problem gelöst. Wäre selbst nicht auf die Idee gekommen, den Regex nach vorne zu setzen.

ahlermi

Hey Phill,

ich habe wieder eins:

spiele musik schlager von heute


spiele musik schlager von =~ /?(bitte) && ?(@types_heos) && ?(@rooms) && ?(@places) && (@heos_commands)/i
2019.04.02 19:11:35 5: talk Evaluate search:


::)
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

ahlermi

Hey Phill,

ich habe ein Problem mit einem leeren empty:


#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}"')


Talk2Fhem hat da leider immer den else Fall gezogen, ich habe zig Sachen probiert, bsp. eine Funktion die nichts zurück gibt {getNix();} das hat teilweise funktioniert, aber auch nach Stunden der Arbeit nicht zu einem brauchbaren Ergebnis geführt  >:(

Ich habe nicht ganz verstanden wieso du den Wert des else nimmst wenn im empty nix drin steht, ich habe jetzt eine Anpassung im Modul gemacht und damit vermeintlich alle Probleme gelöst:


# my $e = ($$hash{empty}{val} || $$hash{else}{val});
my $e = $$hash{empty}{val};


Gruß Michael
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

Phill

Hi, ich dachte mir dabei, das wenn ein Wert nicht genannt wird, ist es ja auch ein "else" wenn "empty" nicht existiert.
Umgekehrt ist "else" nicht wirksam wenn "empty" definiert wurde.
Jetzt nur mal so ein ungetesteter Schnellschuss!?

Sollte das nicht gehen?
cmd=>'$3{empty=>"{};", else=>set T2F_types_switch=.*Denon.*:FILTER=T2F_rooms=.*($3@).*:FILTER=T2F_places=.*$4@.* input OnlineMusic; } [... ]
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

ahlermi

#354
ja, den Teil habe ich zum laufen bekommen, aber was ist mit:


   answer=>'"Ich spiele $DATE Musik von $5 $3{empty=>, else=>im $3}"'


ich habe alles probiert:


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\");}}'


alles ohne Erfolg da er gnadenlos "-Zeichen löscht kommt das dann bei der Auflösung zu getRoom(wohnzimmer), was ohne die "-Zeichen natürlich knallt.    :'(
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

ahlermi

Ich finde es ist ein großer Unterschied ob eine Variable nicht definiert ist, oder leer ist :-)
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

Despe

#356
Ich versuche gerade Talk2Fhem in Betrieb zu nehmen, scheitere aber schon bei den ersten Beispielen aus dem Wiki(https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Beispiel). Ich habe die Attribute eins zu eins kopiert (nur leicht gekürzt bzw. ergänzt, weil die keywordlist / modwordlist unvollständig sind bzw. nicht zueinander passen). Ich erhalte aber trotzdem Fehler.
Ich kann es mir nicht erklären und langsam vermute ich es ist ein Bug im Modul (oder es wurde verändert und das Wiki nicht angepasst). Ich hab das Modul überflogen, auf die Schnelle allerdings keinen Fehler finden können (bin allerdings auch kein Perl Experte, komme eher von C / Ruby).


Konkret geht es um das Beispiel "Rolladen fahren" -> "3. nach Benutzerdefinierten Räumen". Das hier sind meine T2F Attribute:

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+=


Und die Definition:
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"}

Das Origin nutze ich für die Anbindung an Signal, die konkrete Nummer habe ich aus den Logs entfernt.

Das Beispiel "Rollos rauf" geht noch. Es führt zu folgendem Command:
0:+XXX= 1:os 2: 3: 4: 5:rauf -> set rollos_alle on

Das Beispiel "Rollo im Wohnzimmer hoch" geht dann nicht mehr. Der Fehler "No match: 'Rollo im Wohnzimmer im Wohnzimmer im Wohnzimmer hoch'" wird gesetzt und im FHEM Log sehe ich das hier:

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


Wie man sehen kann hat er im letzten Part ($5) fälschlicherweise das Wort "im" eingefangen, anstatt "hoch". Dadurch kann er die letzte Ersetzung nicht ausführen.

Ersetze ich in der Definition "{0,2}" durch ein "*" dann funktioniert es. Eigentlich sollte das ja aber keinen Unterschied machen.



Außerdem habe ich mit der letzten Lösung(nach dem "*" Fix) probiert einen Befehl mit mehreren Räumen auszuführen ("Rollo im Wohnzimmer und im Esszimmer hoch"). Das funktioniert leider auch nicht:
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



Wie man sehen kann, hat er die Ausdrücke prinzipiell richtig erkannt und die Commands korrekt gebaut. Ich erhalte aber trotzdem eine Fehlermeldung zu einem "No Match" und im cmds Reading steht nur " ; ".



Ich bin langsam mit meinem Latein am Ende  :'(. Kann jemand dieses Verhalten erklären?

Phill

Sehr eigenartig das "im Wohnzimmer" hier 3x erzeugt wird. Habe ich so noch nicht gesehen.
Mach mal bitte das Und "&" vor &rooms weg, damit hierfür der Verundungsalgorithmus ausgeschlossen werden kann.

Und nimm mal bitte die aktuelle Beta. link

Eine Logausgabe mit Loglevel 5 wäre auch interessant.
Ansonsten muss ich mir das mal in Ruhe anschauen.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Despe

#358
Hallo Phill,

danke für die schnelle Antwort. Ich hab es mir heute auch noch mal angesehen. Dabei hat sich herausgestellt, dass ich in der keywordlist noch eine zweite Liste habe, die mit der ersten in Konflikt kommt (ich hatte sie der Übersicht halber weggelassen, heute bei Tests aber festgestellt, dass sie einen Einfluss hat).

Hier ist die Liste, mit der ich das Problem nachstellen kann:


&rooms = haus|überall|wohnung , wohnzimmer , esszimmer , küche , bad\\S* , toilette|wc , büro
&test = Wohnzimmer|Esszimmer


Wenn ich das '&' vor test wegnehme, geht es. Das gleiche gilt für das '&' bei rooms. Damit geht dann auch der Ausdruck mit zwei Räumen. Meinem Verständnis nach ist das Verhalten aber trotzdem nicht korrekt, oder?

Hier sind noch Level 5 Logs für "rollo im wohnzimmer runter":

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


Und hier der Log für "rollo im wohnzimmer und im esszimmer 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



Die Beta habe ich jetzt noch nicht ausprobiert. Kann ich aber noch bei Zeiten mahen, wenn das einen Mehrwert bringt.

Despe

Habs jetzt doch noch mit der Beta probiert. Leider das gleiche Problem:


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