[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul

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

Vorheriges Thema - Nächstes Thema

Phill

#90
Das mir das gestern nicht aufgefallen ist, war wohl doch zu spät gestern!  ;D Danke fürs testen.

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.
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

RoBra81

Nein, leider noch immer nicht:

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'


EDIT PS: Wenn alle Optionen gesetzt sind, passen jetzt zumindest die Variablen $& und !$&. Bei fehlenden Optionen siehe oben...

Phill

#92
Ok aber jetzt auf jeden fall.
Hoffe ich.  ;)
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

RoBra81

Zitat von: Phill am 23 Januar 2018, 10:47:22
Ok aber jetzt auf jeden fall.
Hoffe ich.  ;)

Super, es funktioniert. Da kann ich jetzt weiter an meiner Logik arbeiten...

Ich habe noch eine andere Frage:

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.

Kann ich ihm auf einfache Art und Weise sagen, dass er "Bitte" nicht ignorieren soll? Ich würde gern darauf reagieren, ob bitte gesagt wurde oder nicht...

Ronny

Phill

Ja trage einfach mal irgendein wort ein, dann werden die Standartfilter plus dem neuen in das Attribut geschrieben. Dann kannst du bitte rauslöschen.
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

RoBra81

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.

Mach die lieber wieder rein, ich bin auf ein erstes Problem gestoßen: wenn ich "und in 5 Minuten wieder ein" schreibe, gibt es einen Fehler. Es funktioniert aber mit "und in 5 minuten wieder ein"...

Ronny

Phill

#96
Ich hatte sowieso vor die Zeile zu entfernen. Ich habe nur in der Zeitfunktion etwas vergessen anzupassen.
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

RoBra81

Ich habe mal wieder ein spezielles Problem: Bei folgendem Log-Auszug kann die Antwort unter Verwendung von AGAIN nicht korrekt zusammengebaut werden:

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}"


Es funktioniert allerdings, wenn ich in der DEF

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


das Stückchen

$1{empty=>trotzdem}

weglasse...

Ronny

PS: Sorry, dass ich immer mit solchen Spezialfällen komme  ;)

Phill

#98
Mal ein Schuß ins blaue.

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


Denn streng genommen ist ?(bitte) nicht "leer" sondern "nicht vorhanden" deswegen else. Nimm trotzdem mal die Neue Datei.
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

Phill

#99
So, ich bin mit RoBra fleißig am testen und erweitern, hier mal eine aktuelle Version, wer noch mithelfen will.

EDIT: 25.01.2018 Version 0.3.0
Neustart notwendig
EDIT: 15:08 Uhr  Version 0.3.1
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

Phill

#100
So, ihr könnt euch freuen. Es gibt eine neue Funktion die komplett neue Anwendungsgebiete ermöglicht.

Es ist jetzt möglich Befehle anhand Bedingungen ausführen zu lassen.
Beispiel:
Zitatspiele musik wenn ich heim komme
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
8)

So wird das ganze definiert:
wenn es klingelt = (if=>"[dev_klingel] eq 'pressed'")
Die Bedingung ist in der Syntax des "IF"-Befehls anzugeben. Der Teil vor dem "=" ist natürlich eine RegExp und kann auch wie gewohnt definiert werden.
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')


    Das ist dann kompatibel mit allen anderen Definitionen.

    WIKI muss noch ergänzt werden.
    Die weiteren neuen Funktionen nochmal kurz erklärt.


    • && Verundeung von RegExp
    Wenn die Reihenfolge der Wörter nicht bekannt sind kann der <regexp>-Teil aufgeteilt werden. <regexp> && <regexp> && ...
    • Indikatoren der RegExp's ? und !
    !<regexp> ist eine Verneinung. Sprich, nur wenn die <regexp> nicht vorkommt.
    ?<regexp> Optionale <regexp>
    • $include Exterene Konfigurationsdateien laden.
    $include = FHEM/t2f.cfg
    • Zugriff auf weitere Variablen

      • $& Enthält alle gefundenen Wörter
      • !$& Enthält den Rest der nicht von der RegExp eingeschlossen wurde
      • $DATE Enthält den Zeit und Datumstext des Sprachbefehls
      • $AGAIN Enthält das Wort wieder wenn es sich um ein wieder Kommando handelt.
    • $n@ für den Keylistenzugriff
    Wird $1@ anstatt $1 angegeben wird nicht das gefundene Wort genommen, sondern das Equivalent aus der zugehörigen Liste.
    • Zahlenwörter in Zeitphrase werden jetzt erkannt
    eins zwei zwölf
    • Wird set ohne Parameter angegeben wird der letzte Befehl erneut ausgeführt.
    Zum testen sehr praktisch.

Datei ist im ersten Beitrag. Viel Spaß
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

Phill

#101
Und die aktuelle Entwicklerversion. 0.3.2c
Muss mich wirklich mal als Entwickler anmelden damit ich das über SVN verteilen kann...

UPDATE: 28.01.2018 00:29 0.3.2d
Konnte es wieder nicht lassen.
Neuer HASH-Modifikator float
Das tolle daran, egal wie die Zahl angegeben wird. "2,1" "1.0" "2 , 3" "123, 424" "123"
Wird alles in eine korrekte gleitkommazahl konvertiert.

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

Abercrombie1892

Wahnsinns Arbeit von euch.. bin zwar erst ganz am anfang, aber freue mich schon auf das testen.

Pitcher90

Habe jetzt mal ein Update von der Version 0.2.1c auf die aktuellste gemacht. Jetzt stürzt mein FHEM jedes mal ab wenn ich bei DEF etwas ändere oder ein Befehl kommt. Folgender Fehler wird im Log angezeigt:
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.


Hat sich bei der neuen Version etwas Grundlegend an der DEF verändert?

RoBra81

Hast du shutdown restart gemacht?

Gesendet von meinem SM-G935F mit Tapatalk