[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul

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

Vorheriges Thema - Nächstes Thema

Phill

Bitte auf Version 4.3 updaten, waren doch noch zwei unschöne Fehler drin. Neustart ist nicht notwendig.
update 39_Talk2Fhem
reload 39_Talk2Fhem


macht ein Update eigentlich auch ein reload?
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

Tabu

Seit dem Update auf 4.3 bekomme ich immer den Fehler "No match...". Bisher lief es problemlos. Ich habe sonst nichts verändert. Auch bei Eingaben ohne Umlaute funktioniert es nicht ;)
Falls du Details benötigst, sag einfach noch einmal bescheid.

Phill

Ja hab auch schon festgestellt das was nicht stimmt. Aber komme erst heute Abend dazu. Speichere einfach Mal die def neu ab.
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

Tabu

Musste auch die Key- und Modwordlist neu speichern, da das DEF diese nicht mehr kannte. Nun läuft es wieder. Dankeschön

Steffen

Guten Morgen!

Ich habe jetzt auch mal angefangen mich mit diesem Modul zu beschäftigen, kann mir jemand sagen warum das hier nicht klappt
anfrage satz wäre: "schalten Beleuchtung oder Licht an oder aus"

beleuchtung && licht(\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off }


No match: 'schalte beleuchtung aus'

das hier klappt mit Beleuchtung:

beleuchtung (\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off }



mfg Steffen

RoBra81

Guten Morgen,
Zitat von: Steffen am 22 Februar 2018, 06:37:03

beleuchtung && licht(\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off }


No match: 'schalte beleuchtung aus'

In deiner Def wird das Wort "licht" erwartet, da kann "schalte beleuchtung aus" nicht funktionieren...

Ronny

Steffen

Hallo,

Ok ich dachte ich hätte im Wiki geleswn das man mit &&
die regexp zusammen führen kann, deswegen "beleuchtung && licht".

Muss ich jetzt extra eine dev dafür schreiben?

Mfg

RoBra81

Nein, das && sorgt dafür, dass die entsprechenden Teile überall gesucht werden. Was du meinst ist eher

(beleuchtung|licht)

Mit

licht && (@rooms) && (\S+)$

würden z.B. sowohl

schalte das licht im esszimmer aus

als auch

schalte im esszimmer das licht aus

funktionieren...

Steffen

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 eher

(beleuchtung|licht)

Also mit diesem Klappt aber leider auch nicht:

(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off } , false => off }


No match: 'schalte beleuchtung aus'

Mfg Steffen

RoBra81

Zitat von: Steffen am 22 Februar 2018, 07:55:40
Also mit diesem Klappt aber leider auch nicht:

(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+) = set $2[@beleuchtung, @lights] $3{ true => on, false => off } , false => off }


No match: 'schalte beleuchtung aus'

Da du in deinem Aufforderungssatz 'schalte beleuchtung aus' keinen Raum und dadurch auch keinen Artikel angegeben hast, werden diese beiden Teile im Code


(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+)


weggelassen, aber dadurch entstehen zwei Leerzeichen, die nicht matchen (können). Außerdem ist der Raum nicht optional - da du danach schalten willst, wäre das auch nicht sinnvoll. Und da mit '(beleuchtung|licht)' eine weitere Klammer hinzugekommen ist, musst du deine Zahlen anpassen. Probier mal


(beleuchtung|licht) (\S* ){0,2}(@rooms) (\S+) = set $3[@beleuchtung, @lights] $4{ true => on, false => off }


und gib im Sprachbefehl einen Raum an...

Phill

So, die Version von gestern war mal ein Satz mit X. Ist aber jetzt behoben.
update 39_Talk2Fhem
reload 39_Talk2Fhem


@Steffen. Was ist eigentlich der Unterschied zwischen Beleuchtung und Licht bei dir? Immerhin gibt es ja auch zwei Modwordlisten dafür. Da steig ich noch nicht so ganz durch. Vielleicht ist es in dem Fall doch besser zwei eigene Konfigurationen zu machen.
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

Steffen

Hallo!

Vielen dank erstmal für eure unterstützung.

Ich wollte die Sprachbefehle so flexible wie möglich gestalten, denn meine Frau würde sagen beleuchtung aber ich licht und so sollte das cmd ebend trotzdem ausgeführt werden.

Könnte man "rooms" dann vielleicht trotzdem auch als Option einfügen?

Mfg Steffen

Phill

Ja klar.
Ich gehe jetzt davon aus das deine beiden Modwordlisten @beleuchtung und @licht dann den gleichen Inhalt haben. Dann brauchst du eine der beiden nicht.


Folgende Zeile mal probieren.
(beleuchtung|licht) (\S* ){0,2}(@rooms)? ?(\S+) =
    set $3[@lights, empty, standartdevice] $4{ true => on, false => off }


Jetzt sollte man den Raum auch weglassen können ((@rooms)? ?), und dann wird ein von dir noch einzutragendes Standartdevice geschaltet.
Führe mal den Befehl get talk @rooms @lights aus. Dann siehst du ob die Zuordnung der Lichter zu den Räumen korrekt ist. Ansonsten musst du die dann noch korrigieren.

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

Steffen

Hallo!

Danke nochmal, dein letztes Beispiel hat sehr gut geklappt.

Jetzt wollte ich mich bei was anderem alleine durch, aber komme seit einer ganzen Weile einfach nicht weiter...

wir wollen jetzt essen geht leider nicht aber

wir sind mit essen fertig klapt mit diesem Code:

(@name) && essen (\S*) = set TestT2F $2{ /fertig/ => off, /jetzt/ => on }

Warum nimmt er "jetzt" nicht an?!

Mfg Steffen

RoBra81

Weil nach dem essen noch mindestens ein Leerzeichen kommen muss. Mach das mal mit in die klammer...

Gesendet von meinem SM-G935F mit Tapatalk