FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: Phill am 12 Dezember 2017, 12:24:09

Titel: [39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 12 Dezember 2017, 12:24:09
Talk2Fhem

Kurzbeschreibung:
Das Modul verarbeitet natürliche Sprache der in Textform vorliegen muss in Zeit- und Ereignisabhängige FHEM Befehle. Ziel ist es ein möglichst flexibles und unabhängiges Modul bereit zu stellen. Die Konfiguration erfolgt über die Weboberfläche anhand regulären Ausdrücken.
Der Sprachbefehl wird über den "set" Befehl an das Modul übergeben. Das Modul stellt eine Reihe von Readings bereit, die für Rückmeldungen an den User verwendet werden können.

Für weitere Informationen siehe wiki. https://wiki.fhem.de/wiki/Modul_Talk2Fhem (https://wiki.fhem.de/wiki/Modul_Talk2Fhem)

Beispiel:




Texteingang:
Modul Telegram oder GoogleHome per IFTT/MQTT
Befehle:FHEM Kommando
Perl
Textausgabe:Textnachricht Telegram Fehlerbericht
TTS Antwort / Fehleransage
Unbekanntes Kommando TEERKO/Babble
 

Es lassen sich mit relativ wenig Aufwand beispielsweise folgende Dinge konfigurieren:
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

UPDATE
Ab Version 0.5.0 ist es möglich Objekte in den Sätzen aufzuzählen und zu verunden. Damit lassen sich Sätze wie im Folgenden übergeben.
ZitatBeschatte das Wohnzimmer, Esszimmer und die Küche
Schalte den Fernseher und die Soundbar an
Anstatt wie vorher eigenständige Kommandos zu formulieren.

Die notwendige Konfiguration ist hier im Wiki (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#T2F_keywordlist) beschrieben.

Installation


Zitatupdate 39_Talk2Fhem
shutdown restart
define talk Talk2Fhem
attr talk disable 1


Für Kommentare des Autors zu wichtigen updates bitte die folgenden verlinkten Beiträge beachten.
EDIT 18.03.2017:
Update auf 0.5.3 (https://forum.fhem.de/index.php/topic,80960.msg782818.html#msg782818)

Update auf 0.5.1 (https://forum.fhem.de/index.php/topic,80960.msg777064.html#msg777064)

Update auf 0.4.5 (https://forum.fhem.de/index.php/topic,80960.msg775306.html#msg775306)

Update auf 0.4.0 (https://forum.fhem.de/index.php/topic,80960.msg764324.html#msg764324)


Update auf 0.3.2 (https://forum.fhem.de/index.php/topic,80960.msg756040.html#msg756040)

Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Esjay am 13 Dezember 2017, 10:49:04
Meine Neugier ist geweckt. Vielen Dank für deine Mühe.

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  ;)

Grüße
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: MadMax-FHEM am 13 Dezember 2017, 12:20:50
Ich häng mich auch mal dran...

Habe zwar auch eigentl. alles per Alexa laufen aber suche immer noch eine vernünftige Möglichkeit meinen Google Home einzubinden, um echt vergleichen zu können...

Gruß, Joachim
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: ToM_ToM am 13 Dezember 2017, 12:59:31
Das sieht ja interessant aus. Ähnlich wie TEERKO. Leider ist das ja irgendwie eingeschlafen. Ich hänge mich hier mal mit dran. Evtl. kann ich dann meine Eigenlösung rausschmeißen. :)
Ich hatte das mit der Unterscheidung via REGEX vorher alles mit Tasker und AutoVoice gelöst. Das Problem ist nur dass Eintippen der Befehle und REGEX auf der Tablet-Tastatur wenn dieses auch noch fest an der Wand verbaut ist.^^ Und ganz optimal fand ich das auch nicht.

Bin mal gespannt :)
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Prof. Dr. Peter Henning am 13 Dezember 2017, 13:25:24
Bitte in diesen Bereich hier verschieben: https://forum.fhem.de/index.php/board,93.0.html

LG

pah
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 13 Dezember 2017, 14:47:36
Zitat von: Esjay am 13 Dezember 2017, 10:49:04
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  ;)
hört sich nach einer Art Lob an.  ;D Von daher kann ich das sehr gut...

Ich habe mit Alexa noch gar nichts gemacht. Kann man den gesprochenen Text von Alexa abgreifen wie bei Google?
TEERKO schaue ich mir mal bezüglich Modularbeiten an. Danke.

Ich habe mal ein kleines Update gefahren und im ersten Beitrag ergänzt. Der Fehlerteufel wieder...  ::)

Müsst halt eure Änderungen momentan noch manuell einpflegen. Vorallem den Hash %phrase vermutlich . Ziel ist es aber auf jedenfall alles in eine Config auszulagern...
Ich schreibe heute Abend nochmal ein paar ergänzende Worte...


Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: MadMax-FHEM am 13 Dezember 2017, 14:57:25
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?

Nein, leider nicht.

Im alexa-fhem landen wohl nur die bereits "geparsten" Ergebnisse...
https://wiki.fhem.de/wiki/Alexa-Fhem

Es gibt (aber da ist grad "Stopp" bei der Entwicklung) ein echodevice/amazonecho Modul, da steht dann schon die letzte Ansage drin.
Ist aber ein Polling per Webabfrage (ähnlich wie in der Amazon Alexa-App wo man sich die "Historie" anschauen kann) also nichts für auswerten und reagieren.
https://forum.fhem.de/index.php/topic,77458.0.html

Zitat von: Phill am 13 Dezember 2017, 14:47:36
@pah das kann ich aber nicht selbst verschieben oder ???

Bin zwar nicht 'pah' aber trotzdem: das kannst du selbst!
(unten rechts oder links)

Gruß, Joachim
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 13 Dezember 2017, 16:10:44
Finde das Thema auch sehr interessant!
IFTTT ist so ansich ja schon ganz gut. Allerdings ist es schon ziemlich nervig, wenn man sich mal verspricht, oder der Fernseher in den Befehl reinquatscht, direkt der Befehl fehlschlägt.
Hab es jetzt mal soweit gemacht wie du beschrieben hast, bin aber bei dem notify hängen geblieben.
Und zwar erhalte ich folgenden Fehler:
Global symbol "$EVT" requires explicit package name at (eval 18356) line 3.
Global symbol "$EVT" requires explicit package name at (eval 18356) line 4.

Kann es sein, dass es $EVENT sein muss?

LG Stefan
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 13 Dezember 2017, 16:31:43
Ja natürlich. Hab's korrigiert oben.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag 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)
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Esjay am 14 Dezember 2017, 08:53:38
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)

Moin Phil

ich habe mich jetzt noch nicht voll umfänglich mit dem Thema beschäftigt, aber bei mir kommt das Gefühl hoch, dass dein Skript auf irgendetwas aufbaut, was aus diesem Theard nicht hervorgeht.Sozusagen der Punkt vor deiner Installation. Aus dem Bauch heraus würde ich jetzt sagen ich muss in dem Theard "Google Home ab 8 August......." recherchieren.

Stumpf 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?

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.

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

Grüße

Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 14 Dezember 2017, 11:12:58
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.

Dem Script ist es aber erst mal egal wo der Text her kommt. Bei mir ist das der Telegram Messenger und Google Home. Aber das kann alles sein. Ich denke, zu erklären wie man die verschiedenen Eingabemethoden mit dem Modul verbunden bekommt, wäre dann was für ein Wiki Betrag.
Das Script konvertiert erst Mal Stumpf "Text zu FHEM-Kommando".

Ich persönlich hole die Daten von Google Home über ein ifttt template. Per webhook.
Ich suche später mal den Link raus wo das mit dem webhook erklärt wird.

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.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 14 Dezember 2017, 11:43:43
Ich erhalte leider immer einen Fehler im Log:
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.


Hast du eine Idee woran das liegen könnte? Die Subroutine ist wie bei dir unter 39_fhemtalk.pm abgespeichert. Leider sind meine Perl-Kenntnisse nicht ausreichend um den Fehler zu finden.  :-\
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 14 Dezember 2017, 11:47:44
Fhem neu gestartet?
reload 39_fhemtalk.pm gemacht?
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 14 Dezember 2017, 12:12:05
Ja, wurde schon öfter neugestartet. Ich muss dazu sagen, dass ich die Config erstmal so gelassen wie bei dir. Weiß jetzt nicht ob das diesen Fehler zur Folge haben kann. Log sieht ja danach aus, dass er generell nicht auf die Subroutine zugreifen kann.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 14 Dezember 2017, 22:31:07
Mhhh komisch, läuft es eigentlich bei jemanden? Rechteproblem? Ich hatte die Funktion halt bei mir vorher in der 99_User.pm definiert, aber da habe ich Sie nicht mehr drin. Ansonsten fält mir nur noch ein das du den Anhang auch mal in deiner 99_User.pm aufnimmst.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 14 Dezember 2017, 22:46:49
Scheint tatsächlich zu klappen. Vielen Dank dafür! :)

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'
]


Allerdings wird der Befehl nicht ausgeführt. Hab ich noch etwas vergessen abzuändern?
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 15 Dezember 2017, 01:23:59
Zitat#fhem($_);
Musst die Auskommentierung entfernen. "#"
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: ToM_ToM am 15 Dezember 2017, 09:59:28
Hey, jetzt muss ich mal eine dumme Frage stellen... ::)

Wie funktioniert denn die Auswertung der Sprache? Läuft das alles über Google-Server oder kann das Gerät das lokal?
AutoVoice funktioniert ja auch offline und somit völlig ohne Cloud.

VG, Thomas
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 15 Dezember 2017, 10:50:46
Nix geCloud. Alles selbst gemacht...

Hier wird übrigens kurz erklärt wie man vom Google Assistent über IFTTT den Text in FHEM bekommt.
https://forum.fhem.de/index.php/topic,74371.msg682421.html#msg682421 (https://forum.fhem.de/index.php/topic,74371.msg682421.html#msg682421)
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: ToM_ToM am 15 Dezember 2017, 10:56:07
ZitatNix geCloud. Alles selbst gemacht...
Das heißt, wenn ich mir jetzt ein google Home Mini hole, funkioniert es auch wenn ich offline bin? :)
Dann muss ich wohl gleich mal eine Bestellung aufgeben.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 15 Dezember 2017, 10:58:56
Leider nein. Die Spracherkennung läuft immer noch über die Cloud, nur die Verarbeitung in Kommandos geht über das Skript von Phill.
Läuft bei mir mittlerweile wunderbar. Gute Arbeit Phill! :)
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: ToM_ToM am 15 Dezember 2017, 11:02:32
ZitatLeider nein. Die Spracherkennung läuft immer noch über die Cloud
Hm... 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. :)
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 15 Dezember 2017, 11:08:41
Ja ich denke auch nicht das ein GoogleHome ohne Internet funktioniert genauso wie Alexa und Co...
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 15 Dezember 2017, 11:24:25
Ich habe es nochmal auf einer anderen FHEM Instanz getestet, nach einem reload 39_fhemtalk.pm sollte es auf jedenfall funktionieren. Muss man auch bei einem Neustart beachten.
Ist natürlich noch kein Zustand so...
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Kuzl am 15 Dezember 2017, 11:28:39
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).

Die verschiedenen Regex könnten dann über Ein Array von Attributen eingetragen werden. Oder in der Definition, da ist es evtl später angenehmer zum bearbeiten.
Ein (weiteres) Attribut könnte dann sein, was mit der Antwort passieren soll.

Was hältst du und die Allgemeinheit davon?
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 15 Dezember 2017, 12:59:13
Zitat von: Kuzl am 15 Dezember 2017, 11:28:39
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).
Ja das sehe ich auch so. Müsste wahrscheinlich nur einmal definiert werden. Oder sieht einer einen Grund für verschiedene Definitionen?

Zitat von: Kuzl am 15 Dezember 2017, 11:28:39
über Ein Array von Attributen
Meinst du dabei eine kommaseparierte Liste in ein Attribut?
Warum lässt es sich in der Definition besser bearbeiten? Gibt doch die mehrzeiligen Textfelder bei Attributen oder?

Zitat von: Kuzl am 15 Dezember 2017, 11:28:39
Ein (weiteres) Attribut könnte dann sein, was mit der Antwort passieren soll.
Ganz 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.
Anders ist das bei der "err" und "answer" Ausgabe. Das sind einfach nur Texte. Diese könnten in Readings stehen auf die getriggert werden kann. Wenn es eine Art Attribut gibt was sagt was mit err und answer passieren soll, müsste es dann entweder FHEM Kommando oder Perlcode enthalten. Macht das sinn? Wenn man das nicht auch über ein Notify abfangen kann?
Man könnte halt zugriff auf Internals geben. Welche könnten das sein?
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 16 Dezember 2017, 10:57:23
Hey Phill, hast du eine Idee wie ich Zahlenwerte ohne "" übergeben kann?
,       '(\S*) heizung auf (\S*) grad'          => 'set $1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""]_Clima desired_temp $2'
Hier gibt er mir den Befehl folgendermaßen aus:
Befehl: set Schlafzimmer_Clima desired_temp "20"


Abgesehen von dieser Frage hier mal meine bisherige Config für Leute die es interessiert:
#                   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'


);


Ich arbeite mit insgesamt 4 IFTTT-Accounts. Jeweils einer für Jeden Raum mit Google Home und einer der alle verbindet.
In den"Raumkonten" sind die Verknüpfungen zu FHEM hinterlegt. So sendet jeder Google Home auch seine jeweilige Raum-ID mit.
Das ist sehr praktisch, denn wenn man etwas im gleichen Raum schalten will, kann man den Raumnamen weglassen.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 16 Dezember 2017, 12:42:04
Ja auf den Fehler bin ich gestern auch gestoßen. Wird dann in der nächsten Version behoben sein. Versuch es bis dahin mal so.
,       '(\S*) heizung auf (\S*) grad'          => 'set $1["","","Wohnzimmer","Badezimmer","Schlafzimmer","",""]_Clima desired_temp $2{integer=>"$2"}'


Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Pitcher90 am 16 Dezember 2017, 14:43:34
Hat leider nicht funktioniert. Aber ist nicht schlimm. Bin mit dem was es bist jetzt kann schon sehr zufrieden. :)


Edit: Nehme alles zurück! scheint jetzt doch zu gehen.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: klausw am 17 Dezember 2017, 16:45:19
Hallo Phill

muss hier mal mitlesen.  8)

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.

Bisher habe ich die Posts bisher nur mal überflogen...
Eine Konfigurationszeile ist immer für ein Device, oder?
In diesem Fall könntest du über userattr gehen.
Alle Devices bekommen ein neues Attribut in dem die Konfigurationszeilen für dieses Modul abgelegt werden.

Grüße
Klaus

Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 17 Dezember 2017, 20:23:28
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?

Ich muss jetzt auch für mich mal Auflisten was alles Konfiguriert werden muss.
1. Die Regex Kommandozuordnung. in der Definition sage ich jetzt mal
2. Die Schlüsselwörterlisten, wie Räume, Farben, Geräte, Personen usw... wohl ein userattr
    Momentan gibt es nur eine Liste, den Array @rooms. Das Wollte ich aber noch erweitern.
    Wobei eine Liste schon mal Grundsätzlich alle Räume in FHEM enthalten könnte.
3. Die Übersetzungsliste(n). Also welcher Text ein Schlüsselwort ersetzen soll.
    Wohnzimmer wird zu "wz" oder Farbe wird zu einer Zahl.
    Das lässt sich in (1.) konfigurieren. Also in dem Annonyme Array [ ] hinter "$n".
    Welche Schlüsselwortliste gerade aktiv ist könnte im Regex vorne definiert werden fällt mir gerade ein.
Bsp:
'licht (im|in der) (@rooms) (\S*)' => 'set li_$2["soheistderlichtschalterinfhem",raumb","raumxyz"] $3{true=>"on",false=>"off"}'
4. Optional die true,false listen erweiterbar machen. Ich habe gesehen das ich lauter leiser nicht drin habe. Und sowas könnte man dann zu der Liste hinzufügen.

Was meint Ihr?
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: klausw am 19 Dezember 2017, 23:41:03

Zitat von: Phill am 17 Dezember 2017, 20:23:28
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?
Angenommen jedes Device hat ein attribut fhemtalkconf (oder wie auch immer)

Dann kannst du mit list (list i:fhemtalkconf=.*) oder devspec2array (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#devspec2array)
alle Devices die einen Datensatz gespeichert haben und dann auch an die Inhalte.

Das macht natürlich nur Sinn wenn der Datensatz nur für dieses eine Device gilt.
Bei Mehrdeutigkeiten müsstest du das anders lösen.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Prof. Dr. Peter Henning am 20 Dezember 2017, 03:35:43
Es sollte allen klar sein, dass hier gerade das Rad zum zweiten Mal erfunden wird. Die Verfahren zur Spracherkennung sind seit Jahren bestens etabliert, und inzwischen schon sehr viel weiter fortgesschritten, als die hier diskutierten Programme. Das hat vor allem damit zu tun, dass Ihr hier zwei wesentlichen Schritte überspringt, nämlich das POS-Tagging und die semantische Analyse.

Den nachstehenden Code habe ich hier in diesem Forumsteil schon vor längerer Zeit zur Verfügung gestellt - er ist eine kurzes und leicht anzupassendes Beispiel mit mehreren Listen von Zeiten, Räumen, Verben etc.

##############################################################################
#
#  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);
}



Testen kann man das mit

##############################################################################
#
#  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;
 
}


Die tatsächliche Auswertung erfolgt dann nur noch auf Basis der normalisierten Sätze, hier für die ersten paar devices:

##############################################################################
#
#  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" ){

...



LG

pah



Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Phill am 20 Dezember 2017, 11:33:03
Es sollte allen klar sein, dass hier gerade das Rad zum zweiten Mal erfunden wird.
Ich glaube da haben sich schon wesentlich mehr als wir beide gedanken dazu gemacht.  ;)
Aber nein ich kannte dein Script noch nicht, danke dafür.
Den Satz zu analysieren ist natürlich die Paradedisziplin, aber ist es bei den paar Sätzen die man mit FHEM redet wirklich notwendig? Ich bin mir nicht sicher. Vielleicht kann ich aber trotzdem einige Ansätze davon mit in meinen Code aufnehmen.

Ich habe jetzt den Code soweit, dass ein richtiges Device angelegt und alles über FHEM Konfiguriert werden kann. Mal sehen ob's gefällt.
Ich aktualisiere mal den ersten Beitrag.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag 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

Zitat von: Pitcher90 am 16 Dezember 2017, 10:57:23
Abgesehen von dieser Frage hier mal meine bisherige Config für Leute die es interessiert:
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:(@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]'

Attribute:
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


Bin mal gespannt ob es auf Anhieb klappt.  ::)
Viel Spaß.
Titel: Antw:Flexibles Sprachanalysescript
Beitrag von: Esjay am 20 Dezember 2017, 12:55:52
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:(@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:
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ß.

Dann kann es ja bald richtig losgehen mit testen. Mein Mini wird heute kommen, vll kann ich bis heute Abend noch ein kleines Feedback geben. Was noch wünschenswert wäre, ist stumpf ein Dummy im Start-Pst, als Raw-Code. Dann hat man gleich etwas leichtes zum herumspielen, falls man den Wald vor lauter regex nicht sieht  ;).

Grüße
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: kud am 20 Dezember 2017, 13:43:38
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?


Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 20 Dezember 2017, 14:01:38
Zitat von: kud am 20 Dezember 2017, 13:43:38
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?
Hi, also eigentlich nur irgendetwas womit du Text in Richtung FHEM bekommst.
Das kann ein Messenger sein, irgendeine Speak-To-Text Engine wie ein GoogleHome oder einfach eine Konsole.
Schau mal hier, da ist auf eine ähnliche Frage eingegangen.
https://forum.fhem.de/index.php/topic,80960.msg731273.html#msg731273 (https://forum.fhem.de/index.php/topic,80960.msg731273.html#msg731273)
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Esjay am 21 Dezember 2017, 21:46:36
Nabend Phil,
was mir bisher aufgefallen ist:
Du hast meiner Meinung nach einen kleinen Fehler im Startpost. Im Beispiel Konfiguration nutzt du beim regexp --> attr talk T2F_keywordlist
Bei kommando ebenfalls.

Wenn ich es richtig verstanden habe, ist das Notify die Verbindung zum Device welches den Text liefert?

Für die Konfiguration ist es mir heute schon zu dunkel draußen. Da muss ich mich nochmal in Ruhe dran machen.

Grüße
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 22 Dezember 2017, 11:12:50
Ist korregiert, Danke.
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Esjay am 23 Dezember 2017, 17:04:18
Ich muss nochmal fragen, weil ich es einfach nicht sehe. Wo ist die Verbindung zwischen erkanntem Text und deinem Modul.
Ich checke es gerade nicht.

Wäre nett wenn du mir da nochmal auf die Sprünge hilfst.

Grüße
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Pitcher90 am 23 Dezember 2017, 19:19:56
Du musst über IFTTT einen Webhook anlegen, der von außen auf dein System zugreifen kann und den Text übermittelt. Weis jetzt nicht ob das deine Frage war ... etwas zweideutig.
https://haus-automatisierung.com/hardware/fhem/2017/01/04/fhem-tutorial-reihe-part-22-ifttt-integration-webservices-in-fhem-nutzen.html

Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 23 Dezember 2017, 19:21:28
Meinst duset talk zu interpretierender text
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Esjay am 23 Dezember 2017, 20:29:24
Den dummy welcher durch ifttt befüllt wird habe ich schon..Das klappt ohne probleme.
Ich habe keinen set befehl den ich auswählen kann.Die Auswahl ist leer..

Das ist der dummy
Internals:
   NAME       IFTTT
   NR         274
   STATE      ???
   TYPE       dummy
   READINGS:
     2017-12-23 17:47:53   alarm           Wohnzimmer Licht und Fernseher an
Attributes:
   room       Webhook


Das das Device

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


Grüße
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 23 Dezember 2017, 20:41:00
Genau genommen brauchst du den Dummy ja nicht, Talk2Fhem ersetzt den Dummy.

Wie meinst du das "Die Auswahl ist leer"? Ist doch genau so wie bei einem Dummy.
Was passiert denn wenn du in der Befehlszeile von fhem "set talk licht im Wohnzimmer an" eingibst.
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Esjay am 23 Dezember 2017, 21:05:41
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'
]


Achso, jetzt fällt der Groschen. Also speise ich den Gesprochenen Text als "set" direkt in das Modul ein.  ;D ;D

Sry für die Mißverständnisse.
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Prof. Dr. Peter Henning am 23 Dezember 2017, 21:23:58
@phill:
ZitatVielleicht kann ich aber trotzdem einige Ansätze davon mit in meinen Code aufnehmen.

Aber GNU GPL Lizenzbedingungen beachten.

LG

pah
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Esjay am 24 Dezember 2017, 00:22:41
Nabend Phill,
mir ist ebend aufgefallen, das ich den Inhalt von "attr T2F_modwordlist" geändert habe, und erst nachdem ich ein reload gemacht habe, die Werte auch wirklich in die Auswertung übernommen wurden.

Hier zu sehen..number1 etc. stand zu diesem Zeitpunkt schon nicht mehr im Attribut

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'
]


Ebenso hatte ich gerade nen Absturz von fhem.Leider nur verbose 1, aber vll hilft es ja trotzdem.

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


Nach dem Neustart hatte ich auch folgende Warnungen im log.

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]\''


Grüße und schöne Festtage!

Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Prof. Dr. Peter Henning am 30 Dezember 2017, 16:58:51
Konkurrenz belebt das Geschäft: Ich habe meinen semantischen Ansatz jetzt als Modul 95_Babble.pm umgeschrieben. Hier der passende Thread:

https://forum.fhem.de/index.php/topic,81737.msg738020.html#msg738020

Mal sehen, was sich so durchsetzt.

LG

pah
Titel: Update auf 0.2.0
Beitrag von: Phill am 31 Dezember 2017, 01:18:19
Hallo, na dann hau ich doch nochmal ein update raus...
Bitte unbedingt updaten, vorherige Version ist doch recht instabil was Syntaxfehler angeht, und ein Fehler mit der Zeitberechnung bei Wochentagsangaben war auch drin.

Ich habe einige Syntaxvereinfachungen eingebaut.
1. Es werden keine Anführungszeichen mehr benötigt bei Listen $n[] und dem hash $n{}
2. Kommentare können mit # eingefügt werden
3. Die Kommandos können zur Übersicht auf mehrere Zeilen ausgeweitet werden

Eine Sache ist beim Updaten zu beachten:
Ich musste eine kleine Syntaxänderung einbauen. Die Erweiterten Kommandos cmds=>..., answer=>... sind nicht mehr in geschweiften klammern anzugeben, sondern in einfachen ().
Das hatte Überschneidungen mit den Perlkommandos gegeben.

Sobald ich Zugang zum Wiki habe schreibe ich mal eine schönerer Anleitung.

Achja ist jetzt auch multilingual, also entweder das global Attribut language auf DE oder das lokale Attribut T2F_language auf DE.

Hier mal ein kleiner Vorgeschmack auf geniale Konfigs...  ;D

zustand (\S+)+ (\S+) = (answer=>'my $s=Value((grep { $attr{$_}{alias} eq "$2" } (keys %attr))[0]);; "Der Status ist ".$s if $s')
Gibt nach Angabe des Attributs Alias den Status des Gerätes aus.
Also, sag mit den Zustand von der Haustür. = Der Status ist zu/auf... Wenn das Entsprechende Device den Aliasnamen Haustür hat...


Was muss eigentlich noch erfüllt sein um offiziel als Modul Aufgenommen zu werden? Ich habe mal irgendwo gelesen Support und Englische Anleitung ist notwendig, weiß aber nicht mehr wo. Das ist mit dem Update beides gegeben...

Und nun, guten Rutsch...
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Grml am 02 Januar 2018, 22:21:15
Erstmal vielen, vielen Dank für das Modul. Ich habe die letzten Stunden damit etwas gespielt und bin bisher sehr begeistert!
Für den ersten Test habe ich mir einen einfachen Dummy namens "Bildschirm" gebaut, den ich ein- und ausschalten kann. Das funktioniert per Webinterface als auch per Telegram-Nachricht.

Allerdings habe ich momentan ein kleines Problem: Ich verstehe noch nicht, wie bzw. auf welcher Basis Antworten/Bestätigungen an meinen TelegramBot geschickt werden.
Das NOTIFY zum chatten habe ich wie im WIKI-Artikel beschrieben angelegt (BTW: Da ist ein kleiner Fehler im Artikel, es fehlt das "NOTIFY" nach "define n_telbot NOTIFY [...]" ;-))

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

DEF im talk-Device:
bildschirm\S* (a|ei)n = set test_bildschirm on
bildschirm\S* aus = set test_bildschirm off


DEF im n_talk Notify:
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");
}
}


(Die Google Home Ausgabe habe ich erstmal gelöscht, weil meine sämtlichen GOOGLECAST Devices nach einem FHEM Neustart nicht mehr online sind...)

Ich glaube ich stehe da gerade etwas auf dem Schlauch...
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 03 Januar 2018, 00:28:21
Zitat von: Grml am 02 Januar 2018, 22:21:15
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).
Talk2Fhem 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)

Zitat von: Grml am 02 Januar 2018, 22:21:15
DEF im talk-Device:
bildschirm\S* (a|ei)n = set test_bildschirm on
bildschirm\S* aus = set test_bildschirm off


Schau dir mal hierzu das Thema Klammermodifikation an, und dieses Beispiel.
https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Einfaches_schalten (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Einfaches_schalten)
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 03 Januar 2018, 01:20:14
Mir ist gerade eine Idee gekommen wie man einfach eine Standardantwort definiert bekommt. Beim nächsten Update gibt es zwei weitere Readings.
fhem -> enthält die Rückgabe von fhem
status -> wird immer gesetzt.
Somit lässt sich auf "status: done" triggern und eine Standart Rückantwort senden.
Werde morgen mal ein update fahren...
Gruß
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 03 Januar 2018, 18:16:15
Update gefahren siehe erster Beitrag.

Auch wenn die Aufmerksamkeit leider etwas abhanden gekommen ist, sehe ich in dem Modul doch einige Vorteile. Ich habe jetzt mit Hochdruck daran gearbeitet das das Modul soweit stabil läuft und maximal flexibel ist.

Ich würde mich über ein paar Reaktionen freuen. Wiki wird noch ein bisschen ergänzt werden.
Grüße
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Pitcher90 am 03 Januar 2018, 19:22:58
Leider verursacht etwas, was ich installiert habe, Probleme bei der Funktion des Moduls.
Bei einer frisch aufgesetzten Instanz gab es keine Probleme das Modul zu laden. Jetzt sind all meine Pakete installiert und Geräte eingebunden und er gibt mir beim Update des Moduls folgendes aus:
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 "}) "


Momentan hab ich auf der ursprünglichen Instanz noch deine Bastelllösung mit dem 99_User.pm laufen. Die funktioniert zum Glück ganz gut. :)
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 03 Januar 2018, 19:32:51
Bei der Fehlermeldung ist ein Neustart von FHEM notwendig.
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Pitcher90 am 03 Januar 2018, 19:40:31
Wow bin ich doof. Hatte bei einer älteren Version trotz neustart immer Probleme bei meiner Hauptinstanz. Jetzt bei der Version aber nur mit reload probiert...
Jetzt funktioniert es sogar auf der Hauptinstanz. Vielen Dank!
Titel: Antw:Flexibles Sprachanalysescript [39_Talk2Fhem.pm]
Beitrag von: Phill am 05 Januar 2018, 08:58:47
Ich bin momentan am überlegen wie ich per Sprachbefehl auf meine Musik Sammlung zugreifen kann.
Womit spielt ihr eure Musik ab? Gibt es eine Art Datenbank für Musik die man absprechen könnte? Oder nur noch Spotify und co?

EDIT: hier mal meine vorläufige QuiknDirty Variante. link (https://forum.fhem.de/index.php/topic,82207.msg742791.html#msg742791)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Flipper92 am 06 Januar 2018, 12:53:15
Hallo zusammen, ich hab es mir nun auch mal angeschaut.
bin aktuell an dem punkt, dass das Modul alle eingaben bekommt. (Ausgaben muss ich noch machen.)

Ich bekomme jedoch ein fehler in der umwandlung des befehls "TV an."
im log stet dann:
2018.01.06 12:38:38 1: HASH Replacement Failed! set Wohnzimmer.TV.Steckdose ###

was hab ich übersehen?
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


direkte eingabe ist das selbe Problem:
   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



Ps: Könntest du mir kurz dein d_googlespeak erklären?
Und eventuell im Wiki Beitrag im bereich über die Google Home auf die MQTT version der anbindung ergänzen (zumindest Hinweiß).
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 06 Januar 2018, 13:03:32
Zitat# Fernseher schalten
(fernseher|tv) (\S+) = set Wohnzimmer.TV.Steckdose $2{ true => on, false => off }
Der Befehl steht in der 2. Klammer. Also $2 nicht $1. Verbose auf 4 oder 5 gibt da mehr Auskunft.

Mein d_googlespeak ist ne eignebaulösung über einen nodejs server den ich laufen habe. Das ist nicht wirklich allgemeintauglich.
Schau dir mal das Modul GOOGLECAST an. Über Googletranslate Sprachausgabe kann man da ne Ausgabe erreichen.
siehe hier (https://forum.fhem.de/index.php/topic,45505.msg674111.html#msg674111)
Aber der Author will gerade ein speak set befehl einbauen. quelle (https://forum.fhem.de/index.php/topic,45505.msg743406.html#msg743406)

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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Flipper92 am 06 Januar 2018, 13:36:07
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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 06 Januar 2018, 13:49:31
 ;) ich hab dir doch die Lösung gesagt.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Tabu am 17 Januar 2018, 22:44:57
Hallo,

ich habe schon ein wenig Erfolge mit diesen tollen Modul gefeiert  ;D
vielen Dank dafür,
aber nun komme ich leider nicht weiter. Mein entsprechendes Def sieht so aus:
(schalte|setze|stelle).*Temperatur.*(@rooms).*(\d+).*Grad = set $2[@temp] desired-temp $3
Im Set steht:
schalte die Temperatur im Wohnzimmer auf 15 Grad
Im Cmd steht:
set WZHeizung_Clima desired-temp

Hier fehlt mir die Temperatur also $3

Im Log steht:
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]


Entweder ist es zu spät oder ich bin zu blöd...

Kann mir jemand auf die Sprünge helfen?

Vielen Dank
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 17 Januar 2018, 23:52:25
Komisch, bei einem Test wird bei mir "set WZHeizung_Clima desired-temp 5" ausgeführt. Das ist auch korrekt denn die RegExp wie ".*" finden immer den größt möglichen Treffer, außer es wird mit ".*?" auf den kleinst möglochen treffer umgeschalten.
(schalte|setze|stelle).*Temperatur.*(@rooms).*?(\d+).* = set $2[@temp] desired-temp $3
                                            ^^^


Das sollte funktionieren, aber trotzdem wundert mich das bei dir gar keine Zahl gefunden wird. Probier das mal, ich würde das grad auch komplett weg lassen.

EDIT: Jetzt habe ich das Problem entdeckt. Da hat sich noch eine Klammer eingeschlichen...  ;D
Zitatlennar(d|t)S*
schreib das mal so
Zitatlennar\S*
oder
lennar[dt]\S*
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Tabu am 18 Januar 2018, 09:25:03
Hallo Phill,

super, vielen Dank. Nun klappt es. Bin mit regulären Ausdrücken noch nicht so bewandert. Aber die zusätzliche Klammer hatte ich gar nicht auf dem Schirm. Aber logisch ist es ja...
Mit dem .*? muss ich mich noch einmal reinlesen, wo genau der Unterschied liegt.

;D
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 19 Januar 2018, 08:21:20
Hallo,

ich baue mir gerade eine Logik mit Talk2Fhem auf, die ich gern bei Gelegenheit vorstellen möchte. Dabei bin ich jedoch auf ein Problem (einen Fehler?) gestoßen, der mich gerade daran hindert, die bereits funktionierende Logik etwas hübscher zu machen: ich möchte im Antwortsatz das Ergebnis zurückgeben und benötige dafür viele $1..$n Variablen. Diese funktionieren aber leider nur bis $9, sobald ich z.B. $10 und $11 nutze, erhalte ich schalte0 und schalte1 (vermutlich wird hier $1 ausgewertet und der Rest hinten dran gehängt). Gibt es eine Möglichkeit, dies zu korrigieren?

Vielen Dank
Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 19 Januar 2018, 15:15:34
Ich mach die tage mal ein update, da fix ich das Problem.

[EDIT] Ok das war easy. Schau mal ob es mit der angehängten Datei klappt.



Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 19 Januar 2018, 15:53:17
War noch ein fehler drin. Hier versuch die.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 19 Januar 2018, 22:24:08
Viele Dank, es funktioniert!

Nun möchte ich, wie versprochen, meinen ersten Entwurf zur Diskussion vorstellen. Inspiriert hat mich die einfache Konfigurierbarkeit des Moduls TEERKO (https://forum.fhem.de/index.php/topic,72657.0.html), welches mir aber nicht mächtig genug war. Also zu meinem Entwurf:

Zunächst habe ich mir im global-Device zusätzlich UserAttribute für alle Devices definiert:

attr global userattr T2F_places T2F_properties T2F_rooms T2F_types

(Achtung: das ist nur ein Auszug, das global-Device enthält bei mir viele weitere UserAttribute)

Dann habe ich mir eine sub in der myUtils gebaut:

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);
}


(mein Perl-Code ist mit Sicherheit noch optimierbar ;-))

Diese sub wird über ein Notify bei Änderung eines T2F-Attributs aufgerufen:

defmod talk.nf.fillAttr notify global:ATTR.*T2F_(places|rooms|types|properties).* {fill_T2F_keywordlist($EVTPART2)}


Dadurch wird das Attribut T2F_keywordlist meines Talk2Fhem-Devices talk gefüllt. Das Ergebnis (die Listen articles und endings wurde händisch angelegt):

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


Nun noch meine Def zum ein- und ausschalten eines Gerätes:

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

Zum Testen habe ich eine Lampe im Esszimmer mit Attributen versorgt:

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


Diese kann ich nun mit folgenden Befehlen schalten:


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)


Entsprechend dem Sprachbefehl folgt dann auch die Antwort

Gern, ich habe ...

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
- die Antwort bei "schalte ein und in 5 Minuten wieder aus" ist suboptimal
- die Werte in den T2F-Attributen müssen klein geschrieben werden, damit die Filter funktionieren

Als nächstes möchte ich im gleichen Stil noch Befehle für folgende Geräte bauen:

- Heizung
- RGB-Lampen
- Radios (Lautstärke, Senderwahl)

Gern nehme ich Optimierungsvorschläge entgegen. Sollte Interesse bestehen, werde ich auch meine weiteren Ergebnisse hier posten.

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: MadMax-FHEM am 19 Januar 2018, 22:43:26
Hi Ronny,

liest sich ja grandios!

Aktuell teste ich auch noch TEERKO ;)

Für Alexa habe ich alexa-fhem (und ha-bridge auf einem weiteren System) im Einsatz und bzgl. der Einbindung von Google Home teste ich noch...

Talk2Fhem und Babble stehen noch auf der "ToTest-Liste"...

Mit der hier von dir beschriebenen "automatisierung" funktioniert es ja ähnlich wie bei alexa-fhem :)

Also: klar! Wenn du mehr hast, dann immer her damit!

Wenn ich mal für mich herausgefunden hab was ich nun für die Google Home Integration nehme, dann kann der "große Test" starten: Alexa gegen Google Home! ;)

Aktuell liegt Alexa vorne, sie versteht die Sätze bzgl. Hausautomations-Steuerung (noch) deutlich besser!

Gruß, Joachim
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 19 Januar 2018, 23:28:23
Hier nun der erste Entwurf der Heizung:

Zunächst eine kleine Anpassung der UserAttribute:

attr global userattr T2F_places T2F_properties T2F_rooms T2F_types_heating T2F_types_switch

Und hier die relevanten Teile des Talk2Fhem-Devices (inklusive kleiner Anpassung der Licht-Logik):

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\


Hinweis: bis auf die Listen article und endings werden diese automatisch erstellt.

Außerdem eine kleine sub in der MyUtils, welche die Durchschnittstemperatur für die Antwort ermittelt:

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


Wie gesagt, alles noch im Werden und Entstehen...

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 19 Januar 2018, 23:28:43
Das ist echt toll wie du das angehst. Komplett anders wie ich das mache. Das muss ich mir erst mal genauer anschauen.

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:

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


Warum klammerst du die leerzeichen genau?

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.
Nur zur Info dass du da nicht selbst was baust.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 19 Januar 2018, 23:39:48
Zitat von: Phill am 19 Januar 2018, 23:28:43
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:

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

Das finde ich gut, das erleichtert die ganze Zählerei  ;D

Zitat von: Phill am 19 Januar 2018, 23:28:43
Warum klammerst du die leerzeichen genau?
Das 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...

Zitat von: Phill am 19 Januar 2018, 23:28:43
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.
Ich 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.

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 19 Januar 2018, 23:58:47
Du brauchst die Klammer dafür nicht, da die Metacharacter hier "?" immer auf das zuvor angrenzende Zeichen wirken.
Das Fragezeichen muss aber sein, das ist richtig.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 21 Januar 2018, 14:11:10
Sooo, ich haue mal ein Update raus mit der Bitte um zu testen. Bevor ich es dann im WIKI ergänze und  die Datei im ersten Beitrag ersetze.

Folgende Änderungen und Features sind hinzugekommen:
(ein) && (schalte)\S* = $2 $1
Die Kommandos "schalte ein" und "einschalten" werden beide zu "schalte ein" konvertiert.[/li]

Bitte mal testen und Rückmeldung geben. Danke...

und @RoBra81
Zitat von: RoBra81 am 19 Januar 2018, 22:24:08
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
Mhhh, mit devspec2array bekommst du anhand des Filters alle Geräte in einen Array. Hilft das?
Zitat von: RoBra81 am 19 Januar 2018, 22:24:08
- die Antwort bei "schalte ein und in 5 Minuten wieder aus" ist suboptimal
Hierfür kannst du jetzt die Variable $AGAIN verwenden. Also so in der Art.
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}"'
Es könnte theoretisch über $DATE und $AGAIN eine richtige Antwort gebaut werden. Frage ist ob es notwnendig ist.
Zitat von: RoBra81 am 19 Januar 2018, 22:24:08
- die Werte in den T2F-Attributen müssen klein geschrieben werden, damit die Filter funktionieren
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.

So das reicht für heute Gruß...
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 08:56:17
Zitat von: Phill am 21 Januar 2018, 14:11:10
  • 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.
Wie muss ich mir das mit dem && vorstellen? Wie muss die Logik aussehen, wenn ich die Sätze

Schalte das Licht im Esszimmer an der Decke aus
Schalte das Licht an der Decke im Esszimmer aus
Das grosse Licht im Esszimmer ausschalten


gleichbedeutend interpretieren will?

Folgendes funktioniert nicht:

(@properties)?  && (@types_switch) && (@rooms)? && (@places)? (\S+)(schalten)?

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 09:18:16
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.

Ich denke, wenn Talk2Fhem alles in Kleinbuchstaben konvertiert, muss man eben die T2F-Attribute klein schreiben, schließt aber eine Fehlerquelle aus: wenn das System, welches Sprache erkennt nicht alles korrekt groß und klein schreibt, funktioniert die Erkennung, aber das Schalten scheitert...

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 22 Januar 2018, 09:39:50
Eigentlich sollte es genau so funktionieren. Schick Mal ein Log 5. Aber kommentieren vorher alle def Zeilen bis auf die eine aus.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 09:59:08
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'
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 10:34:06
Ich habe die Lösung gefunden: ich muss ihm mitteilen, dass der Schaltbefehl am Ende des Satzes steht, indem ich ein $ hinten dran hänge:

(@properties)?  && (@types_switch) && (@rooms)? && (@places)? (\S+)(schalten)?$

Jetzt muss ich nur sehen, wie ich mir in dem Fall die Antwort zusammenbaue...
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag 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.
Zitat(@properties)?  && (@types_switch) && (@rooms)? && (@places)? && (\S+)(schalten)?$
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 10:35:06
Da war ich 15 Sekunden schneller :-)

Danke :-)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 22 Januar 2018, 10:42:31
 ;) Würde aber trotzdem den Schaltzustand vom Raum unabhängig machen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 10:57:54
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.

(@properties)?  && (@types_switch) && (@rooms)? && (@places)? && (\S+)(schalten)?$

Ich habe weiter getestet, aber es funktioniert leider noch nicht 100%ig: wenn ich die Fragezeichen weglasse, funktioniert es, ich muss aber alle Optionen angeben (Eigenschaft, Raum und Ort). Wenn ich die Listen optional mache, erkennt er zwar den Text, aber im Kommando fehlen die optionalen Punkte:

Def:

(@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: $& - !$&"')

Sprachbefehl:

Schalte das helle Licht im Esszimmer über dem tisch an

Cmds:

set T2F_types_switch=.*Licht.*:FILTER=T2F_rooms=.*Esszimmer.*:FILTER=T2F_properties=.*.*:FILTER=T2F_places=.*tisch.* on

Das interessante ist, dass sowohl im $& als auch im !$& das "hell" fehlt:

Antwort:

Antwort: LichtEsszimmertischan - Schalte das e im über dem

Log:

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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 22 Januar 2018, 12:47:49
Da sind wir auf eine Perl Eigenheit gestoßen. Das bekomme ich auf die schnelle nicht gelöst. Muss ich mir in Ruhe mal anschauen.

Folgendes Script klappt nur wenn der gesuchte String am Anfang steht und wenn die RegExp nicht nur aus optionale Werten besteht. Ansonsten wird undef in den Array geschrieben. Man müsste es aber so formulieren das in @d alle Klammerinhalte geschrieben werden.
#!/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);
}


Wo sind die Perljunkies?  :)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 22 Januar 2018, 13:24:48
Ich habe zwar auch mittels Google-Suche nicht ganz ergründen können, was dein Code macht, aber wenn man die Fragezeichen weg lässt, klappen alle drei Abfragen?!
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 22 Januar 2018, 14:57:02
Auf diese Weise werden die Klammern extrahiert und in @d gespeichert. Das ist genau der Grund warum die optionalen Klammern nicht gefunden werden.
Wenn die Fragezeichen weggelassen werden, klappt es ja, nur sind die dann nicht mehr optional.
Statt "(def)?" steht bei dir "(gross|hell|gro\\S\\S?)?"
Probier Mal:
\s(@properties)? && (@types_switch) && (@rooms) && (@places) && (\S+)(schalten)?$
Aber eigentlich ist das nicht sinnvoll.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 22 Januar 2018, 21:18:38
Ok Problem ist, das die regexp/(was auch immer)?/ einfach nicht funktioniert, da es (ich nenne es jetzt mal einfach) zu optional ist.
Deswegen habe ich jetzt folgendes überlegt. Bei einer optionalen regexp wird diese beginnend mit einem ? deklariert. Das gibt es in Perl nicht, ist daher nicht schön aber gibt auch keine Kollision und ist die einfachste Lösung. Siehe Anhang.

?(@properties) && (@types_switch) && ?(@rooms) && ?(@places) && (\S+)(schalten)?$

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 23 Januar 2018, 07:27:30
Guten Morgen,

das funktioniert leider noch nicht. Ich habe meine Def wie folgt geändert:

?(@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: $& - !$&"')

Wenn ich nun ein Kommando mit allen Optionen sende, wird es korrekt ausgeführt, die Variablen $& und !$& sind jedoch noch falsch. Lasse ich eine Option weg, so wird das Kommando nicht als korrekt erkannt.

Das Log mit allen Optionen:

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


Log ohne Option property:

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'


Ronny

EDIT: 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...
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 23 Januar 2018, 09:35:18
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 23 Januar 2018, 10:11:33
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...
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 23 Januar 2018, 10:47:22
Ok aber jetzt auf jeden fall.
Hoffe ich.  ;)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 23 Januar 2018, 12:02:22
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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 23 Januar 2018, 12:06:07
Ja trage einfach mal irgendein wort ein, dann werden die Standartfilter plus dem neuen in das Attribut geschrieben. Dann kannst du bitte rauslöschen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 23 Januar 2018, 12:18:14
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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 23 Januar 2018, 12:34:32
Ich hatte sowieso vor die Zeile zu entfernen. Ich habe nur in der Zeitfunktion etwas vergessen anzupassen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 23 Januar 2018, 12:41:45
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  ;)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 23 Januar 2018, 14:07:45
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 24 Januar 2018, 17:17:22
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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 26 Januar 2018, 11:06:07
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')

Datei ist im ersten Beitrag. Viel Spaß
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 27 Januar 2018, 13:39:19
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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 29 Januar 2018, 08:55:25
Wahnsinns Arbeit von euch.. bin zwar erst ganz am anfang, aber freue mich schon auf das testen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 30 Januar 2018, 16:31:59
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?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 30 Januar 2018, 16:52:26
Hast du shutdown restart gemacht?

Gesendet von meinem SM-G935F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 30 Januar 2018, 16:54:39
Nein das ist es nicht, du hast wahrscheinlich auch auf die akutellste FHEM version geupdated oder?
Ist ein Fehlerhafter Patch, sollte bald behoben sein.
Du kannst aber folgenden Patch anwenden.
https://forum.fhem.de/index.php/topic,83541.msg758186.html#msg758186 (https://forum.fhem.de/index.php/topic,83541.msg758186.html#msg758186)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 30 Januar 2018, 16:58:21
Jop. Öfter versucht. Mir fehlen mittlerweile auch die Ideen woran es liegen könnte. Auf einer zweiten FHEM-Instanz übrigens das selbe Problem.

Edit: Fhem müsste aktuell sein.... Das würde natürlich einiges erklären :/
Dann liegt es nicht an deinem Modul :D
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 30 Januar 2018, 23:57:47
Ist mittllerweile gefixt.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 10:13:09
Hat das Problem leider nicht behoben.

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.


Danach stürzt Fhem wieder ab.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 12:01:08
Der Fehler ist jetzt mein verschulden. Probier mal diese Version bitte.

0.3.2e
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 12:18:55
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.


Ein kleiner Fehler muss noch drin sein. Er kommt schonmal viel weiter, aber am Ende schmiert er doch noch ab.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 12:24:53
mach mal verbose auf 5 bitte
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 12:42:40
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 12:53:57
Sehr mysteriös, wo kommt denn das Alexa her?
Ich werde aus der Meldung nicht schlau, ist zuffälligeweiße "fhemcmd"  eine globale funktion bei dir? Gib mal {fhemcmd} in der Kommandozeile ein.
Ansonsten probiers mal damit. Und mach einen Neustart von FHEM.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 13:17:27
Hmm. Alexa ist zum einen ein Raum und zum Andern mein Device um Alexa mit meinem Fhem zu verbinden. Ich hab es testweise mal gelöscht, aber das brachte (auch mit der neuen Version) keinen Erfolg.

Bei {fhemcmd} kommt: Bareword "fhemcmd" not allowed while "strict subs" in use at (eval 2768) line 1.
Woher fhemcmd kommt weiß ich allerdings nicht.


Edit: Auf einer leeren Fhem-Instanz funktioniert es. Es muss also irgendwo ein Konflikt bei einem Device bestehen :/
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 13:24:17
Dann schicke mal bitte ein list des Moduls. Geht denn die Version aus dem ersten Beitrag?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 13:33:25
Hat sich jetzt nochmal was geändert mit in der Logausgabe ich hatte noch eine Meldung dazu gemacht.
fhemcmd ist die Variable die in Zeile 512 verwendet wird.
Bringt  {$fhemcmd} irgendeine Ausgabe?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 13:41:07
Ich hab den Fehler gefunden. Es scheint an den Raumnamen zu liegen
Can't use string ("Licht") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.

Ich habe meine meine Struktuer in FHEM nach Devices. Also unter anderem auch einen Raum "Licht". Wenn ich so den Befehl gebe das Licht zu schalten, schmiert FHEM ab. Nachdem ich den Raum "Licht" bei jedem Device entfernt habe, funktioniert es wie vorgesehen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 31 Januar 2018, 13:42:08
Könntest du trotzdem bitte mal ein list posten?

Gesendet von meinem SM-G935F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 13:43:42
Mit allen verwendeten Modulen?
Oder wo genau finde ich das?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 31 Januar 2018, 13:44:55

list talk


Wenn talk dein Talk2Fhem Device ist.

Gesendet von meinem SM-G935F mit Tapatalk


Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 13:46:22
Ah ok.

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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: RoBra81 am 31 Januar 2018, 13:58:16
Also es scheint kein generelles FHEM-Problem zu sein: einen Dummy Licht_test im Raum Licht kann ich problemlos schalten...

PS: du könntest deine Konfig deutlich optimieren - sieh dir mal im Wiki den neuen &&-Operator und die Modwordlisten an (für beides gibt es auch Beispiele) - gern unterstütze ich auch bei Fragen...

Gesendet von meinem SM-G935F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:05:44
Also Talk2Fhem macht nichts anderes als.
{my $fhemcmd= "set Licht_Schlafzimmer on";; fhem($fhemcmd)}
Funktioniert der Code bei dir?
Wenn ja reduzier mal die Konfig auf nur diese eine Zeile und probier es dann nochmal! Aber eigentlich sehe ich keinen Fehler.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 14:07:53
Ja du hast recht. Hab an der DEF schon länger nichts mehr geändert :D

Also irgendwie mag mich das Modul nicht  :-[
Hab jetzt den Raum "Alexa" in "01_Test" und "Licht" in "06_Licht" geändert, aber das mag es trotzdem nicht.
Can't use string ("01%5fTest") as a HASH ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 512.

Wobei der Befehl jetzt sogar ausgeführt wir, aber danach stürzt FHEM ab.


Edit: Auch mit nur folgendem Code in der DEF das gleiche Problem:
(@rooms) (licht|lampe) (\S*) = set Licht_$1[,,Wohnzimmer,Schlafzimmer,Schlafzimmer,Garten,Terrasse] $4{true=>on, false=>off}

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:11:53
Ach da, fällt mir noch was ein, schicke mal den Logauszug wenn du auf modify talk klickst.
Und meinen vorherigen durchführen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:13:36
Und wenn du den Code oben eingibst stürzt fhem nicht ab?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 14:15:49
Ne, dann kommt nur: Syntaxerror: {my $fhemcmd= "set Licht_Schlafzimmer on";; fhem($fhemcmd)}

Bei meinem Code kommt:
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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:19:42
Wiebitte? Das kann kein Syntaxfehler sein...  :o
Was sagt denn diese Version?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 14:22:18
Error while parsing Definition.
Syntaxerror: {my $fhemcmd= "set Licht_Schlafzimmer on";; fhem($fhemcmd)}


:/
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:27:17
 ;) das musst du in der Kommandozeile von FHEM eingeben.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 14:30:21
Ah, Sorry. Da entsteht bei mir gar kein Log-Eintrag.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:35:48
Und das Licht schaltet?
Ich bräuchte nochmal die letzten paar Zeilen Log bei der aktuellen Version, wenn der FHEM crasht. Ansonsten, vermute ich fast das du dir irgendwas zerschossen hast. Aber ich versuche es weiter. Schick mal die Log.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 14:41:36
Ne passiert leider gar nichts bei dem Befehl.

Bei manchen Befehlen Funktioniert das Modul sogar.
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


Aber bei dem Licht:
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.


Dazu muss ich sage, dass das Device Licht sowohl im FHEM-Raum 01_Test als auch im Raum 06_Licht ist. Ich denke der Fehler muss irgendetwas damit zu tun haben.


Edit: Jetzt hab ich vom Device Licht_Wohnzimmer die Räume entfernt, jetzt funktioniert es!
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
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 14:51:09
Aber das Licht schaltet beiset Licht_Wohnzimmer offwenn 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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 14:58:38
Licht_Wohnzimmer ist ein MiLight-LED-Strip. Und ja, es schaltet bei on und off.

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


Und bei den Räumen hakt es dann.
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.


Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 15:17:23
Muss mich da irgendwie rantasten. Hier bitte nochmal die Log schicken.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 15:21:07
Kein Problem. Bin dir auch sehr Dankbar, dass du so viel Geduld mitbringst!

Die neue Version lässt sich leider garnicht laden.
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 15:25:36
 ::)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 15:28:36
Unverändert  :-X

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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 15:35:50
Ich glaube ich habs. Schick trotzdem mal die Log auch wenns klappt.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 15:38:44
Noch nicht ganz.
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 15:46:36
Sowas habe ich noch nie gehabt...
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 15:49:19
Ich glaub jetzt hast dus!  ;D

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


Kommando wird ausgeführt und System stürzt nicht ab!
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 31 Januar 2018, 16:00:45
Na dann bin ich ja froh das der Fehler weg ist. Irgendwas in deiner FHEM Koniguration hat mir da reingspuckt und meine Variable überschrieben. Hätte ich eigentlich früher drauf kommen können.

Aber warum nur in Räumen, ich peils nicht. Ich mach Pause!  :D

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 31 Januar 2018, 16:03:45
Ich hätte dir gerne gesagt woran es bei meiner Config scheitert, aber ich hab echt keine Ahnung. Hab die Config jetzt schon länger ohne Probleme laufen.

Aber auf jeden Fall vielen Dank für deine Mühen! :)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: ToM_ToM am 02 Februar 2018, 11:04:20
Hey, auch wenn das jetzt vielleicht eher allgemein ist... aber da die Meisten von euch das Modul ja mit Google Home nutzen..
Ist es möglich, Google Home auch offline zu verwenden so wie beim Smartphone? Also meine Google-Spracherkennung bzw. -verarbeitung auf meinem S7 funktioniert ja auch wenn ich offline bin.

VG, Thomas :)
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Pitcher90 am 02 Februar 2018, 13:28:21
Nein, ist leider nicht möglich. Die Anbindung an FHEM erfolgt bisher auch nur über IFTTT.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 03 Februar 2018, 18:14:46
habt ihr auch das problem das fhem bzw talk2fhem abstürzt, sobald umlaute in den wörtern vorkommen.
zb. vorwärts rückwärts zurück usw lässt fhem abstürzen
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 03 Februar 2018, 23:21:22
Nein eigentlich nicht. Liegt es an Talk2Fhem oder FHEM?
Benenne dein Talk2Fhem einfach mal um, und erstelle ein Dummy mit dem Namen wie Talk2Fhem hieß. Dann sollten die Sprachbefehle im Dummy landen.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 04 Februar 2018, 14:55:29
Fhem stürzt ab, sobald über iffft ein Wort mit Umlaut an talk2fhem sendet. Wenn ich zb bei talk2fhem direkt ein Wort mit Unlust eingebe habe ich keine Probleme. Dann steht auch der Umlaut bei der drin. Über iffft kommt nur ein Fragezeichen statt des Buchstaben.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 04 Februar 2018, 17:30:10
Das heißt wenn ifttt den Befehl an einen dummy schickt passiert nichts? Ansonsten wäre ein Log mit verbose 5 hilfreich.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 04 Februar 2018, 18:17:43
hab es jetzt mal wie von dir beschrieben mit dem dummy probiert. auch hier schmiert mir fhem ab aber verbindet sich sofort wieder. im log steht leider nix drin, was mich auf eine spur bringen würde.

4: dummy set talk soundcloud zur�ck

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 04 Februar 2018, 19:08:02
Nur so eine Vermutung. Hast du dblog aktiv? Selbst wenn nicht macht es vielleicht Probleme wenn er den Befehl loggen will?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 04 Februar 2018, 19:18:53
Dblog ist nicht aktiv bei mir. Bei dir kommen Umlaute von iffft ohne Probleme an?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 04 Februar 2018, 21:16:57
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?
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 04 Februar 2018, 22:11:59
Fhem läuft auf einem rpi3.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Ma_Bo am 05 Februar 2018, 01:31:30
Zitat von: Phill am 04 Februar 2018, 21:16:57
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?
Nur zur Info:
Nein nicht bei jedem, nur bei den Leuten, die über einen Webhook den Dummy befüllen, ich mache dies ja über MQTT und Adafruit, dort kommen Umlaute ohne Probleme rein und auch in meinem dummy sind diese Umlaute korrekt.

Grüße Marcel


Tapatalk iPhone, daher kurz gehalten.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 05 Februar 2018, 08:19:34
Du hast Recht, da war ich zu unspezifisch. Kann das mal jemand für's WIKI zusammenschreiben?

Gruß

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 05 Februar 2018, 21:01:35
mittlerweile bringt talk2fhem mein fhem komplett zum absturz, sobald ich bei DEF meinen befehl eingeben möchte zb.
Fernseher\S* (an|ein) = set Nvidia on

PERL WARNING: Unquoted string "fh" may clash with future reserved word at ./FHEM/39_Talk2Fhem.pm line 303, <$fh> line 775.
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 05 Februar 2018, 22:03:17
Hast du verbose Auf 5? Das ist nur eine Warnung und nicht der Grund für den Absturz. Schick Mal ein list deines t2f devices.

Gruß

Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 06 Februar 2018, 20:37:55
ja verbose ist auf 5 steht aber nix weiter drin.

Internals:
   DEF       
   NAME       talk
   NR         169
   NTFY_ORDER 50-talk
   STATE      Initialized
   TYPE       Talk2Fhem
   READINGS:
     2018-02-06 20:35:33   err             No match: 'huhu'
     2018-02-06 20:35:33   set             huhu
     2018-02-06 20:35:33   status          err
   helper:
     notifiers:
     phrase:
Attributes:
   T2F_language DE
   userReadings 1
   verbose    5

hab im moment nix definiert, weil talk2fhem sofort mit fhem abstürzt
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 07 Februar 2018, 14:56:43
Bin überfragt. Geb mal folgendes in der Titelleiste ein.
{use Data::Dumper;; Dumper $defs{talk}}
Wobei talk für dein Device steht.
Und schick mir mal die Ausgabe. Dann lösche mal das Device und lege es wieder an.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Abercrombie1892 am 07 Februar 2018, 22:35:02
$VAR1 = {
          'helper' => {
                        'notifiers' => [],
                        'phrase' => undef
                      },
          'TYPE' => 'Talk2Fhem',
          'DEF' => '',
          'NAME' => 'talk',
          '.userReadings' => [],
          'NTFY_ORDER' => '50-talk',
          'STATE' => 'Loading',
          'NR' => 169
        };

device gelöscht und neu angelegt. rpi rebootet und leider gleicher fehler
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 07 Februar 2018, 23:17:19
Geb dem Device mal nach dem löschen und anlegen einen anderen Namen. Nicht das da was beim rumkopieren schief gelaufen ist.
Installiere nochmal das Modul neu. Hier mal die aktuelle Version. Ich könnte mir noch vorstellen das es durch die Zeichensatzprobleme auch die Datei beim kopieren irgendwie Zeichenprobleme aufgetreten sind, innerhalb der Datei.
Global ist auch auf verbose 5?
Ansonsten fällt mir echt nichts mehr ein.
Titel: Neues main release
Beitrag von: Phill am 10 Februar 2018, 22:35:31
Habe mal wieder ein paar neue Features spendiert.
Datei siehe erster Beitrag.

Achtung! Wenn ihr schon if's verwendet, sollten diese in das neue Attribut T2F_if verschoben werden. Das "if=>" kann hier entfallen.

Kurze Beschreibung der neuen Features.
Neue set Befehle: cleartimers und cleartriggers löschen jeweils die wartenden Befehle
Neue get Befehle: standarfilter log und eine Möglichkeit um die Wortlisten besser zu vergleichen.
Neue Klammermodifikationstypen: float und numeral kann Zahlenwörter und Gleitkommazahlen in korrekte Zahlen modifizieren.
Neue Attribute: T2F_if und T2F_origin letzterer kann zur Benutzerbestimmung verwendet werden
Neue Umgebungsvariablen: $NAME, $IF, $0, $TIME

Siehe Commandref
Titel: Antw:[39_Talk2Fhem.pm] Flexibles Sprachanalysemodul
Beitrag von: Phill am 13 Februar 2018, 09:11:30
Ab sofort per update verfügbar. 
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 13 Februar 2018, 12:32:21
Hi,

Ähm nein.  :P
Das ist nicht die Aufgabe dieses "Moduls" sich um die Herkunft zu kümmern, denn dazu sind sie viel zu vielfältig. Das würde einen unnötigen und unbeherrschbaren Pflegeaufwand bedeuten.

Nach Einsicht in winconnect gibt es das Reading speechmessage. Könnte hierauf nicht eine notify angesetzt werden der dann den Sprachbefehl rüberschaufelt?

Grüße
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 18 Februar 2018, 10:17:22
talk2fhem läuft wieder einwandfrei nach einem update. das fhem sich nach umlauten über iffft kurz disconnected bleibt zwar bestehen, aber liegt ja nicht an deinem modul und negative auswirkungen hat es bisher auch nicht.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 19 Februar 2018, 09:19:49
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 match

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

Im WIKI war ein Fehler drin, ich hab's korrigiert. Müsste so aussehen:
licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{ true => on, false => off }

Das Problem laut RegExp hätten zwei Leerzeichen hintereinander stehen müssen. Das kann nie eintreten. Ist leider etwas auf das man achten muss. Habe auch keine Idee sowas codeseitig zu ignorieren
licht im  Wohnzimmer an.
        ^^


Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag 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:

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


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?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 19 Februar 2018, 13:11:08
Ein Fehler in Talk2Fhem. Ich kann Umlaute ab jetzt endgültig nicht mehr leiden...

Probier es bitte mal mit der angehängten Datei.

[EDIT] ab morgen per update verfügbar.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Tabu am 19 Februar 2018, 13:28:57
Perfekt, nun läuft es wie es soll.

Vielen Dank
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 19 Februar 2018, 13:38:50
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:

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


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?

Wie bekommst du die Umlaute sauber zu fhem? Über iffft kommt ja immer das Rautensymbol mit dem Fragezeichen.

Mit freundlichen Grüßen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Tabu am 19 Februar 2018, 14:22:16
Bei IFTTT das TextField in spitzen Klammern gesetzt: <<<TextField>>>
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 19 Februar 2018, 14:39:59
Zitat von: Tabu am 19 Februar 2018, 14:22:16
Bei IFTTT das TextField in spitzen Klammern gesetzt: <<<TextField>>>

Alter Schwede.. Danke  ;D
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: uwettl am 20 Februar 2018, 00:20:04
Hallo,
ich habe ein Problem mit der Abfrage von verschiedenen Temperatursensoren.
Ich habe aus dem Wiki nur das Beispiel kopiert:

wie.*(kalt|warm|grad|temperatur) =
( answer =>
       { "Die Temperatur beträgt ".ReadingsVal("tempdev", "temperature", "Fehler") }
)

und einen bei mir vorhanden Devicenamen eingesetzt. ("badtemp" statt "tempdev").

Leider kommt gibts immer einen Error in answer eval: { "Die Temperatur beträgt ".ReadingsVal("badtemp"
Die ReadingsVal() Abfrage funktioniert auf der Kommandozeile von Fhem n liefert ein Ergebnis. (21.0)

Ich habe schon alles mögliche mit Klammern und Anführungszeichen probiert. Die Antwort bricht immer am 1. Komma ab un die geschweiften Klammern und Anführungszeichen sollten auch nicht in answer zu sehen sein.

Übersehe ich was ?
Stimmt das Besipiel nicht mehr ?
Statusabfrage mit devspec2array funktioniert.

Gruß

U.



Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 20 Februar 2018, 08:32:53
Hallo, und Willkommen.  ;)
Ja das Beispiel stimmt leider nicht, hätte es wohl besser testen sollen anstatt einfach davon auszugehen das es geht.  :-[
Ich habe versucht die Syntax etwas flexibler zu gestalten, aber das klappt leider nicht wie ich gerade sehe. Also doch so wie vorher immer in einfachen Anführungszeichen setzen.
wie.*(kalt|warm|grad|temperatur) =
( answer =>
       ' "Die Temperatur beträgt ".ReadingsVal("bell", "temperature", "Fehler") '
)

Genau genommen ist das Komma (,) schuld. Denn ab diesem wird eine neue Option erwartet. Das lässt sich nur über 'einfache Anführungszeichen' vermeiden. Ansonsten können aber auch Klammern genommen werden.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: uwettl am 20 Februar 2018, 21:28:41
Prima, jetzt funktionierts, die Variante hatte ich noch nicht probiert. Beispiel im WIKI ist auch geändert. Hab gleich mal die raumbezogene Temperaturabfrage umgesetzt. Geht prima.
Danke

U.

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: uwettl am 20 Februar 2018, 21:42:18
Ausgabe per Notify funtioniert auch mit dem SIRD Modul mit dem passenden WLAN_Radio prima.
fhem("set SIRDDev speak $EVENT");

Gruß

U.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 21 Februar 2018, 08:31:37
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?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Tabu am 21 Februar 2018, 16:54:11
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 21 Februar 2018, 17:18:22
Ja hab auch schon festgestellt das was nicht stimmt. Aber komme erst heute Abend dazu. Speichere einfach Mal die def neu ab.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Tabu am 21 Februar 2018, 17:25:08
Musste auch die Key- und Modwordlist neu speichern, da das DEF diese nicht mehr kannte. Nun läuft es wieder. Dankeschön
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 22 Februar 2018, 06:37:03
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: RoBra81 am 22 Februar 2018, 07:13:58
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 22 Februar 2018, 07:33:05
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag 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)

Mit

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

würden z.B. sowohl

schalte das licht im esszimmer aus

als auch

schalte im esszimmer das licht aus

funktionieren...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 22 Februar 2018, 07:55:40
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: RoBra81 am 22 Februar 2018, 08:05:28
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...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 22 Februar 2018, 08:52:50
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 22 Februar 2018, 09:12:13
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 22 Februar 2018, 09:59:17
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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 22 Februar 2018, 19:30:45
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag 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

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 22 Februar 2018, 19:51:56
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 }


meintest du das mit "empty" in der Klammer, das geht leider nicht?!?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 22 Februar 2018, 20:01:22
Die Syntax ist bei der Typenmodifikation anders.
(@name) && essen ?(\S*) = set TestT2F $2{ /fertig/ => off, empty => on }

Wobei empty ist der wert selten, besser wäre:
(@name) && essen ?(\S*) = set TestT2F $2{ /fertig/ => off, else => on }


EDIT:
Aber das Beispiel von dir ist tricky. Denn "Das essen ist fertig" könnte ja heißen es wird mit dem essen begonnen. ;D
Sollte aber trotzdem funktionieren, da ja in $2 dann "ist" steht.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 28 Februar 2018, 20:28:26
Hallo!

Ich kämpfe mich immer wieder erneut durchs Wiki aber irgendwie verstehe ich wohl das Thema irgendwo noch falsch, ich wollte eigentlich wieder einen Satz auswerten:

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}

aber es reagiert bei "Fertig" aber nicht bei "jetzt"?

Kann mir jemand sagen und das hatte ich bis jetzt oft, warum nicht immer das erste also "jetzt" ausgewertet wird sonder "fertig"?!

Ich hoffe ihr habt noch ein wenig Geduld mit mir...

Mfg Steffen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 28 Februar 2018, 20:50:26
Hi, ich brauche sogar den Input von den Usern um das Programm weiter entwickelt zu können. Also bitte so viel Fragen wie geht...

"jetzt" kann nicht gefunden werden, da es sich um eine Zeitphrase handelt die automatisch entfernt wird.
Siehe: https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Zeitenerkennung (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Zeitenerkennung)
Über "get log" kannst du dir die Logausgabe anzeigen lassen, da sind die einzelnen Bearbeitungsschritte die Talk2Fhem mit dem Sprachbefehl anstellt angezeigt. Das würde dir eventuell auch helfen.

Zeiten werden ja von Haus aus erkannt, was genau hast du denn vor mit @zeitraum?

Vielleicht ist hier weniger mehr?
frühstück && ?(fertig) = set TestT2F $1{ /fertig/ => off, else => on}
Reicht das nicht aus für das was du machen willst?

"wir wollen jetzt frühstücken" oder "in einer stunde frühstücken wir" oder "ich bin mit dem frühstücken fertig"
Ist damit alles abgedeckt.

Gruß

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 28 Februar 2018, 21:19:23
Hi.
Ich hab seit einiger Zeit eine Möglichkeit gesucht relativ einfach und ohne viel Aufwand eine Sprachsteuerung zu realisieren.
Die bisherigen Lösungen waren mir beim Einrichten zu kompliziert (oder ich hab es einfach nicht verstanden) oder konnten nicht das umsetzen, was ich mir vorgestellt habe.
Bei dem Modul Talk2Fhem ist dies anders. Innerhalb von wenigen Minuten wurden die ersten Sprachbefehle erkannt und erfolgreich umgesetzt und das obwohl ich mich mit RegEx nur extrem wenig auskenne. Aber dank Wiki, Commandref, dem Thread und auch Google kam ich sehr schnell zu einfachen Lösungen.

Was mir jedoch aufgefallen ist, schnell sagt man mal 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?
Gibt es einen Trick, wie man zwei Devices mit einem Befehl steuern kann? Klar ich könnte sagen mach das Licht im Flur an und schalte das licht in der küche ein aber so spricht man ja nicht natürlich.


Weitere Frage, kann man RegExs in Klammern verschachteln?
Hier meine Abfrage:
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]

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. Tue ich das stürzt aber FHEM ab.
Mach ich hier was falsch, oder funktioniert es so einfach nicht?

Vielen Dank schonmal für eure Antworten und für das tolle Modul  :)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 28 Februar 2018, 22:26:21
Zitat von: swsmily am 28 Februar 2018, 21:19:23
Was mir jedoch aufgefallen ist, schnell sagt man mal 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?
Der 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.


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.

Zitat von: swsmily am 28 Februar 2018, 21:19:23
Gibt es einen Trick, wie man zwei Devices mit einem Befehl steuern kann?
Ja. Am besten man überlegt sich für die notwendigen Ortkombinationen ein eigenes Wort (oder auch mehrere).
wie z.b. "unten" oder "Erdgeschoß" und weißt dann diesem Wort mehrere Geräte zu. Wie das geht kann man hier sehen. https://wiki.fhem.de/wiki/Modul_Talk2Fhem#T2F_modwordlist (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#T2F_modwordlist) Funktioniert aber auch direkt im Kommandoteil ohne Modwordliste.


Zitat von: swsmily am 28 Februar 2018, 21:19:23
Hier meine Abfrage:
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]
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.
Habe ich nicht vorgesehen. Ist auch nicht gerade trivial. Stichwort "nested brackets".
Bei größeren Listen ist es besser du überführst es in die Keyword und Modwordlisten. Dort kannst du glaube ich Klammern. Versuche es einfach mal.
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

Die Zuordnung kannst du über get @licht_cmds @licht_cmds anzeigen lassen.

Zitat von: swsmily am 28 Februar 2018, 21:19:23
Tue ich das stürzt aber FHEM ab.
Das darf natürlich nicht sein schaue ich mir nochmal an.

Zitat von: swsmily am 28 Februar 2018, 21:19:23
Vielen Dank schonmal für eure Antworten und für das tolle Modul  :)
:)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 28 Februar 2018, 23:18:50
Wow. Danke für die schnelle Antwort!

Zitat
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.
Das wäre ja super, wenn das umgesetzt werden kann. Macht die natürliche Spracheingabe auf jeden Fall einfacher.

Zitat
Ja. Am besten man überlegt sich für die notwendigen Ortkombinationen ein eigenes Wort (oder auch mehrere).
Hmm... Das wenn man mehrere Devices im Wohnzimmer hat ja - das hab ich im Wiki auch so verstanden.
Mir ging es hier, eher um die Dynamik. Mir ist klar, mit UND getrennte Spracheingaben werden einzeln ausgewertet. Aber zumindest im natürlichen Sprachgebrauch macht man das ja eher weniger. Da sagt man eher "mach das Bad- und Flurlicht aus und Küche an.".
Daher ist mit Ortskombinationen nicht ganz so das flexible, dynamische gegegeben. (Außer ich sehe es falsch - ist nicht leicht alles aus dem Thread, Commandref und Wiki im Überblick zu behalten  ;))

Zitat
Stichwort "nested brackets".
Ich 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.
In Attribute Auslagern ist nicht so meins. Ich hab es lieber alles in einer "konfig", als an unterschiedlichen Stellen. Zumal die Werte je nach Raum auch variieren können.



Was mir nun bei weiteren Tests noch aufgefallen ist, die Uhrzeit im Befehl wird nicht wirklich angenommen. Um ... Uhr wird fast nie angenommen.
Egal ob "mach Flur um 9 hell" oder "mach Flur um 9 Uhr hell" (zahlen auch als Wörter geschrieben) bringt immer nur CMD: set Flurlicht Hell.
Mit "mach morgen um 9 den Flur hell" wird die Uhrzeit mit ins at übernommen.




Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 28 Februar 2018, 23:26:12
Wenn die Zeiten nicht erkannt werden schicke mir bitte die Log Ausgabe (get talk log).
Dann passe ich es im Modul an.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 28 Februar 2018, 23:29:55
Gerne  :)

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Steffen am 01 März 2018, 05:56:30
Zitat von: Phill am 28 Februar 2018, 20:50:26

frühstück && ?(fertig) = set TestT2F $1{ /fertig/ => off, else => on}
Reicht das nicht aus für das was du machen willst?

Gruß

Guten Morgen,

Ja genau so macht es was soll, doch kann man diesem Cmd noch ein zweites Cmd mitgeben an ein anderes Device?

Der Plan das erste Cmd wird den Tv ausschalten, ein zweites soll das Radio anschalten.

Mfg Steffen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 02 März 2018, 10:45:25
Ja das geht. Da kannst du alle Möglichkeiten von FHEM ausschöpfen. Für komplexe Schaltungen erstellt man vielleicht ein Dummy und reagiert darauf dann mit einem Notify oder erstellt ein DOIF und lässt das die multiplen Kommandos ausführen.

Aber bei nur 2 Geräten sollte es auch einfacher gehen. z.B.
frühstück && ?(fertig) = set TV $1{ /fertig/ => "", else => off};; set RADIO $1{ /fertig/ => off, else => on}
oder besser noch
frühstück && ?(fertig) = $1{ /fertig/ => "set was anderes", else => "set Radio on;; set TV off"}
Was soll den nach dem Frühstück passieren? Fernseher wieder an Radio wieder aus?

Die zwei Semikolon sind momentan noch wichtig, da es sonst nicht mit Zeiten richtig funktioniert.
[EDIT] ab version 0.4.5 wird das aber nicht mehr notwendig sein.  :)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 02 März 2018, 10:52:17
@ swsmily: Problem hier ist das die 9 Uhr in der Vergangenheit gelegen hat. Sprich du wolltest vermutlich morgen um 9 Uhr haben richtig?
Ich könnte eventuell mir vorstellen wenn die Zeit länger als eine Stunde in der Vergangenheit liegt einen Tag drauf zu zählen. Muss ich mir mal überlegen ob das mit allen anderen Möglichkeiten kompatibel ist.

Momentan funktioniert auch nicht die Erkennung von 8 Uhr wenn 20 Uhr  gemeint ist. Man muss immer die eindeutige Uhrzeit sagen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 02 März 2018, 12:13:19
ah okay. Dann lag das beim Testen wohl daran, dass die Zeit evtl wirklich schon in der Vergangenheit lag.

Ich hab mir nun zum testen einen Befehl rein gemacht
tu was = ( cmd => "set tue es" , answer => ("Erledigt") )

Sage ich nun "tu was um 12 uhr 15" (über spracherkennung kam set mit tu was um 12:15 uhr) wird es aber sofort ausgeführt (aktuelle Uhrzeit beim Testen war 12:10 Uhr)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 02 März 2018, 13:13:03
Ja das ist so gewollt. Ich habe mal einen Hinweis im Wiki ergänzt. Steht sonst nur eher beiläufig im Wiki.

Answer soll nur dafür verwendet werden eine direktes Feedback zu geben. Willst du eine Ausgabe zu der gewünschten Zeit haben musst du das mit in das FHEM Kommando packen.
tu was = ( cmd => "set tue es;; set tts speak Erledigt!" , answer => ("Mach ich") )

Ist vielleicht sogar ein besseres Beispiel für das Wiki!

gruß

EDIT: gleiche bei https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Ereignisbezogene_Meldungen (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Ereignisbezogene_Meldungen)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 02 März 2018, 18:24:19
hallo,

phill du hattest mir ja schon oft geholfen

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])) }


ich nutze jetzt die Lautstärke von dir wie beschrieben und bin mit der sache super zufrieden.

ich würde das ganze aber nun gerne etwas ändern.

ich möchte das er das ganze zb nur raum bezogen macht. also mach ganz leise im wohnzimmer,küche, badezimmer.
und würde es auch gehen wenn ich zb sage mache ganz leise im wohnzimmer und in der küche?

mfg.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 02 März 2018, 18:44:04
Also liegt es an dem answer, dass auch der Befehl sofort ausgeführt wurde?
Das komische ist nur die volle Stunde funktioniert, nur eben mit angegebenen Minuten wurde der Befehl sofort ausgeführt.

Kann leider erst Sonntag Abend wieder testen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 02 März 2018, 19:46:44
 @swsmily an answer sollte das eigentlich nicht gelegen haben. Sag mir nochmal bescheid wenn dir noch was auffällt.

@Abercrombie1892
Du legst eine Keywordlist in den Attributen mit den Räumen an, falls noch nicht geschehen.
attr talk T2F_keywordlist rooms = wohnzimmer,küche,bad\S*
Eine Modwordlist mit den Geräten, hinter empty schreibst du das Standardgerät
attr talk T2F_modwordlist RF = WZ,K,BAD,empty,WZ
Und dann änderst du das ganze so
?(@rooms) && laut\b = set Raumfeld_$1[@RF] volume 90
Achte auf das \b hinter laut, damit muss es nicht immer am ende stehen. Ignoriert aber trotzdem lauter.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 02 März 2018, 20:13:13
ok ich werde es mal versuchen. das gerät in der küche und im badezimmer hat aber andere lautstärkeeinstellungen,bei deinem beispiel würde ja dann bei ganz laut auch die küche und das badezimmer auf 90 hochgehen oder?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 02 März 2018, 20:41:00
Ich habe mal eine neue Version eingecheckt. Ab morgen verfügbar.
update 39_Talk2Fhem
reload 39_Talk2Fhem



@swsmily Du kannst jetzt deine Zeile:
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

auch in der Art formulieren. Das hat den Vorteil das in true und false wesentlich mehr Wörter erkannt werden.
(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}



@Abercrombie1892: Ja das stimmt. Wenn das der Fall ist muss das anders aufgebaut werden.
Wie sind denn dort die Einstellungen? Ich denke du solltest dann für jedes Gerät eine weitere Modwordliste anlegen in der die Lautsärken zugeordnet sind.
So in der Art: RFvol = 90,70,30,else,90
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 02 März 2018, 20:49:23
ich hab jetzt einfach mal 90,45,45,else,90 als weitere modwordlist angelegt. testen kann ich es leider erst morgen..

danke
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 02 März 2018, 21:20:29
Phill, wow. Ich bin begeistert. Das sieht ja auch viel übersichtlicher aus. Super. :)
Werde ich Sonntag sofort testen.

Danke für das tolle Modul und den super Support. So macht fhem richtig Spaß  :)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 03 März 2018, 10:45:29
phill ich hab jetzt mal die listen erweitert, aber wie schreibe ich das jetzt in die def?

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 03 März 2018, 20:49:31
Bitte bearbeite deinen Beitrag und pack das List in den code Tag. [ code ][ /code ] Das ist der Hash tag oben im editor. So kann mann das nicht lesen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 04 März 2018, 16:14:13
@Ambercrombie1892:
Ist doch einfacher das ohne Modwordlisten zu machen...

?(@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])) }


Wie sieht es eigentlich mit diesem Teil aus?
{ fhem("set Raumfeld_WZ volume ".(ReadingsVal("Raumfeld_WZ","volume", 0)$2[+,-]$1[3,5,10,empty,7])) }
Die Werte am Schluß geben ja die Änderung der Lautstärke an! Ist das generell nicht zu klein? Ich meine wenn die Lautstärke bis 90 geht ist eine Änderung von 10 doch kaum wahrnehmbar?!

Zitatich möchte das er das ganze zb nur raum bezogen macht. also mach ganz leise im wohnzimmer,küche, badezimmer.
und würde es auch gehen wenn ich zb sage mache ganz leise im wohnzimmer und in der küche?
Bin gerade dran.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 04 März 2018, 20:57:31
wow, das funktioniert wirklich einwandfrei mit der lautstärke. vielen vielen dank

das mit der lautstärke änderung passt wirklich sehr gut. im wohnzimmer hängt der raumfeld connector am receiver. den connector hab ich immer im bereich zwischen 50 und 90.

die raumfeld OneS im badezimmer und küche sind schon bei lautstärke 45 recht laut. ich bin super zufrieden, so wie es jetzt mit deinem modul läuft.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 04 März 2018, 22:49:04
Ich hab nun ein FHEM-Update gemacht, seit dem geht irgendwie gar nichts mehr (Hinweis: attr Disabled gesetzt, damit beim Programmieren und testen nicht ständig alles geschaltet wird)
Ich hatte mir eine Sicherung meiner DEF gemacht (in Notepad++) um dann deine Schreibweise zu testen.
Hab dann einfach alles von mir erstmal rausgeschmissen und nur
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}

eingefügt.

Da hat es nur noch Badlicht geschaltet, nicht anderes mehr.
Daher dachte ich, ich mach es Rückgängig und hab meine DEF wieder eingefügt.

Gebe ich ich nun "Schalte Badlicht an" oder "Schalte Flurlicht an" ein, bekomme ich nur noch Errror: Clipnumber 1 includes no array or integer in '(Bad\S*|Flur\S*|Schlafzimmer\S*|Küche\S*) && (\san\S*|ein\S*|hell\S*|aus\S*|auto\S*|ganz.aus\S*|farbwechsel|rot\S*)!

Gebe ich als Text ein: "mach das Dekolicht an", kommt nur No Match: "mach das Dekolicht an", obwohl ich folgende Zeile drin hab:
(Deko\S*) && (an\S*|ein\S*|aus\S*) =
set Dekolicht $2[on, on, off]


Das kuriose ist, ich glaube nach dem FHEM Update, bevor ich was an der DEF von Talk2FHEM geändert hab, lief es noch. Erst seit Ändern der DEF geht kaum noch was. - Korrektur: Restore von FHEM, alte DEF eingespielt, alles geht - Alte DEF + Update von FHEM und die Fehler sind da...

Was noch läuft ist diese hier (Texteingabe: ich geh ins bett - oder: ich geh schlafen:
(ins Bett\S*|schl[aä]\S*) && ^(?!.*\bWohnzimmer\b) = set SchlafenImSchlafzimmer on
oder auch (Text: es schläft jemand im Wohnzimmer)
(schl[aä]\S*) && (Wohnzimmer) && ^(?!.*\bBett\b) = ( cmd => set SchlafenImWohnzimmer on , answer => ("Schlafen im Wohnzimmer wurde aktiviert") )

FHEM hab ich schon mehrfach neu gestartet.

Ab und zu tauchen auch Zeilen wie diese im Logfile auf, mit unterschiedlichen Zeilennummern:
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 04 März 2018, 23:02:54
Hab nun das Device talk komplett gelöscht, gespeichert, FHEM neu gestartet.
Danach mit define talk Talk2Fhem das Modul wieder angelegt. Bereits hier kam im Logfile folgende Fehler:
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.


Ins DEF hab ich dann eingetragen:
(Bad\S*|Flur\S*) && (\san\S*|aus\S*) =
set $1[Badlicht, Flurlicht] $2[Weiß, auto]


und danach mit "mach bad an" getestet. Dabei kamen folgende Einträge ins Logfile von FHEM:
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



EDIT: Restore von FHEM auf vor Update gemacht und gesicherte DEF von Talk2FHem wieder eingespielt und damit läuft Talk2Fhem erstmal wieder
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 04 März 2018, 23:37:23
Das deine vorherigen Konfigs nicht funktionierten konnte ich nachvollziehen und habs gefixt. Aber die neuen funktionieren bei mir.

Probier es nochmal mit der neuen Version... Wird aber erst morgen eingecheckt.

Du kannst mit # die Zeilen auskommentieren, damit kannst du einfach zwischen den Konfigurationen wechseln.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 05 März 2018, 12:25:59
Danke!
Ich hab nun das Update gemacht und die alte Konfig von mir funktionierte weiter.
Nun hab ich umgebaut auf dein Beispiel, welches deutlich übersichtlicher ist und dieses funktioniert nun auch.

Nach Update und shutdown restart kam heute morgen aber dennoch folgende Fehlermeldung im LOG:
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 05 März 2018, 17:02:35
bin mal wieder ein wenig am basteln. ich wollte mir jetzt das multiroom einrichten damit ich sagen kann hey google, spiel musik in zone 1, 2 , 3. hab mir dazu extra wieder modword und keywordlisten angefertigt. komme aber leider nicht so wirklich auf einen nenner.

und bei der steuerung der lautstärke ist auch irgendwas verdreht.

viel leiser zb hat keine reaktion, mach ein wenig leiser spring 7% nach oben, mach lauter keine reaktion.

grüsse

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 05 März 2018, 18:32:31
Tja, wo gehobelt wird fallen Späne.  :) Durch die Umbauten ist einiges zu Bruch gegangen, aber die Version die ich heute einchecken werde ist ausführlich getestet.

Um dir bei deinen Zonen helfen zu können müsste ich wissen wie deine fhem Befehle aussehen.
Ist aber echt einfach umzusetzen. Hier ein Beispiel aus dem Wiki.https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Beispiel_nach_Position (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Beispiel_nach_Position)
Und die RegExp müsste so aussehen.
musik in zone (\S+) =
Aber man muss sich vorher klar werden was man alles sagen können möchet...
Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 05 März 2018, 19:24:33
([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")})


ich schalte praktisch mit cmd_1,cmd_2 und cmd_3 durch die zonen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: swsmily am 05 März 2018, 22:52:11
Hey.

Ich hab bei mir ja alles so umgestellt, wie in deinem Beispiel:
(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}

Das funktioniert auch wirklich sehr gut.

Was mir nun aber aufgefallen ist, "wieder" klappt da nicht so richtig.
Beispielsatz: "Mach das Badlicht hell und in 5 Minuten wieder aus" bewirkt, dass das Badlicht auf hell gestellt wird, das generierte AT aber auch "Badlicht hell" beinhaltet und nicht das angegebene aus. Das heißt, der Wieder-Befehl wird nicht richtig ausgewertet.

Nehme ich die Zeile /rot|grün|blau/ =>"$3" raus klappt es so wie es soll.

Habe bei mir nun alles so umgebaut, dass kein =>"$3" mehr enthalten ist.


Aber ich kann nur nochmal sagen, ich bin echt begeistert wie einfach man mit diesem Modul normale Sätze in Befehle umwandeln kann.

Muss mich nun nur mal damit beschäftigen, wie ich es hinbekomme, dass dauerhaft ein Wandtablet zuhört, aber erst nach einem Triggerwort den Satz zu Google schickt. Möchte nicht, dass Google alle Gespräche mitbekommt.
Bis jetzt teste ich über die Texteingabe im Modul oder über ein Tasker-Widget auf dem Handy, um die Spracheingabe zu aktivieren. Aber selbst das manuelle aktivieren der Spracherkennung auf dem Handy ist ein großer Komfortgewinn. "mach in 5 minuten den fernseher aus und in 10 minuten das wohnzimmerlicht aus" - das bekommt man so einfach, schnell und flexibel sonst gar nicht mit FHEM hin  :D
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 06 März 2018, 00:12:57
@Ambercrombie1892
musik in zone (\S+) = set doifdef $1[,cmd_1,cmd_2,cmd_3]
oder
musik in zone (\S+) = set doifdef cmd_$1{numeral=>"$1"}


@swsmily
Danke für die Rückmeldungen und die netten Worte. Da hast du mich an was erinnert. Die "wieder"-Analyse geht davon aus, dass die höchste verwendete Klammer die des Zustandes darstellt. Bedeutet wenn du die Farben-Klammer an den Anfang stellt funktioniert es.  Das hatte ich so gemacht weil es eigentlich immer die letzte Klammer war (bevor es && gab) die den Zustand beschreibt. Dadurch wollte ich vermeiden jede Konfigzeile seperat die Zustandsklammer zu deklarieren. Das sollte unbedingt besser kommuniziert werden.

Gruß...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Abercrombie1892 am 06 März 2018, 08:54:27
wenn ich deine def so eingebe für die zonensteuerung, dann schaltet er aber immer die musiksteuerung bei mir.

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 06 März 2018, 09:29:14
Du könntest der Zeile ein&& !zone hinzufügen oder die Zeile in der Reihenfolge dahinter einreihen. Aber unbedingt updaten heute...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung
Beitrag von: Phill am 06 März 2018, 13:30:10
So, meine Tests der neuen Version sind abgeschlossen und das Wiki ist bezüglich der neuen Funktionalität der Objektverundung aktualisiert.
Das bedeutet ihr könnt jetzt Räume, Gegenstände oder was auch immer in den Sätzen aufzählen. Dazu muss im Attribut der Keywords der Liste ein "&" vorangestellt werden dessen Wörter man verunden können möchte. Wenn man noch keine Keywordlisten angelegt hat nimmt man einfach die aus dem Wiki (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Keywordlist). Damit wird dem Modul mitgeteilt welche Wörter es bei der Verundungsinterpretation beachten soll. 
Mehr ist nicht zu tun um Objektverundung zu erhalten.
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

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 07 März 2018, 10:07:33
ich bin einfach nur begeistert. die objektverundung läuft wirklich richtig gut und ist dabei so easy  ;D

hatte meine zoneneinstellung daraufhin nun komplett abgeändert und kann das ganze nun ganz einfach über spiele musik in wohnzimmer und küche zb. starten.

jetzt werd ich mich mal stück für stück an die lampen herantasten
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: swsmily am 07 März 2018, 11:40:33
Hallo!

ich bin gerade dabei mal ein paar Antworten mit rein zu bringen.
Bei fest eingestellten Befehlen wie
tu was = ( cmd => "set Device on" , answer => ("Erledigt") )
kein Problem.

Aber wie bekomme ich es bei den "dynamischen" Steuerungen hin. Am besten wäre bei on die Antwort "ok, habs angeschaltet", bei off "ok, ist aus". Reichen würde auch nur ein "OK".
Ist es bei dem Code möglich, Answer mit anzugeben, oder klappt das da nicht? Alternative wäre das Reading cmds mit einem DOIF zu überwachen und daraus dann die Antwort generieren zu lassen.


(Deko\S*) && (.*) =
set Dekolicht $2{
true => on, false => off}
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 07 März 2018, 12:55:34
ich hab jetzt mal kurz getestet mit den farben verstellen, aber so wirklich seh ich da noch nicht durch  :-\

T2F_types_color Lampe,Licht
T2F_types_switch Lampe,Licht wird in die keywordlist geschrieben?

einzelne lampen schalten will ich garnicht, mir reicht es wenn ich die räume schalten, dimmen und farben ändern kann. lampen sind die philips hue.
spezielle farbkombinationen kann ich ja über Lightszene setzen.

hab jetzt bei modewordlist die rgb zugefügt, nun ist aber fhem komplett verschoben und ich muss ewig hin und her scrolen. weiss jetzt nicht ob das was mit fhem2talk zutun hat oder ein generelles problem bei fhem?

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 07 März 2018, 13:01:39
@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.

Bezüglich der erweiterten Befehle gibt es keine Beschränkung.

(Deko\S*) && (.*) = (
  cmd  => "set Dekolicht $2{ true => on, false => off }",
  answer =>  ("OK") )


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.
(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.")


Oder soll die Antwort abhängig vom Erfolg des Befehls sein? Aber wenn der Befehl nicht ausgeführt wird stimmt eigentlich irgendwas anderes nicht und man sollte sich darum kümmern das es schaltet wenn es soll. Egal könnte so aussehen.  ;D
(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").'"')  }

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 07 März 2018, 13:06:30
Zitatnun ist aber fhem komplett verschoben und ich muss ewig hin und her scrolen.
Was meinst du damit? Verschoben?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: swsmily am 07 März 2018, 13:35:24
Zitat von: Phill am 07 März 2018, 13:01:39
@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.
Ja 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.
Zitat
Bezüglich der erweiterten Befehle gibt es keine Beschränkung.

(Deko\S*) && (.*) = (
  cmd  => "set Dekolicht $2{ true => on, false => off }",
  answer =>  ("OK") )

Ach 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!

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.
(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.")


Ok, mit at - das ist eine Möglichkeit - werde ich mal testen. Danke!
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 07 März 2018, 14:08:14
Zitat von: Phill am 07 März 2018, 13:06:30
Was meinst du damit? Verschoben?

ich hoffe du weisst was ich jetzt meine? die übersicht ist halt nicht mehr schön kompakt.

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: swsmily am 07 März 2018, 14:16:24
Mir ist gerade aufgefallen, seit dem Update gestern hab ich obwohl Verbose auf 0 immer wieder solche Einträge im Logfile:
2018.03.06 18:40:27.663 1: \b(([ai][nm]|beim?|auf|unter|hinter|über|vo[rnm]) )?((de[rmns]|die|das) )?()\b

oder auch:
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*


Diese kommen jedesmal sobald Talk2Fhem genutzt wird - selbst wenn keines der angegeben Räume gerade angesprochen wird. Also selbst der Befehl "tu was", der nur "set test on" schaltet, bewirkt, dass diese Zeilen im Log auftauchen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 08 März 2018, 07:39:45
@Abercrombie1892: Du kannst in die Keywordlisten auch Zeilenumbrüche reinmachen. Sogar mitten im Wort das ist egal. Dann wird die Liste nicht so breit.

@swsmily: Sind ein paar Debugmeldungen die ich vergessen habe. Mach ich raus...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 08 März 2018, 09:44:10
kleiner fehler bei mir in der verundung.

bad\S* wenn ich ganz normal die lautstärke ändere nimmt er ohne probleme bad oder badezimmer, sobald die verundung kommt nimmt er nur noch bad an und der befehl reagiert bei badezimmer nicht mehr.

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 08 März 2018, 11:46:03
Ich habe die drei Beispiel bezüglich der Rückmeldungen nochmal etwas verbessert und vereinfacht ins Wiki aufgenommen. Bei interesse...
LINK (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Einfache_Standardantwort)
Generell lohnt sich immer mal wieder ein Blick ins WIKI.  ;)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 08 März 2018, 11:57:56
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.

danke klappt bestens  :)

hab mal wieder die nächste frage ( peinlich ) 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?

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.

•   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,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




Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 08 März 2018, 12:27:15
?(@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]
Alles? Das musst du mir mal erklären!

So nun zu deinen Fragen...
Zitat von: Abercrombie1892 am 08 März 2018, 11:57:56
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?
Du hast an dieser Stelle ein WG dring. Gibt es ein Raumfeld_WG? Und wenn ja was macht das.
Das würde die Konfig glaube ich ganz schön aufblähen, besonders wenn man das dann für mach über lauter weiter denkt...
Evtl. macht es mehr Sinn das über eine kleine Funktion in der 99_MyUtils.pm auszulagern.

Zitat von: Abercrombie1892 am 08 März 2018, 11:57:56
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.
Theoretisch 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)

Zitat von: Abercrombie1892 am 08 März 2018, 11:57:56
•   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.
Ist das eine Frage? Oder wolltest du nur den Request zeigen.  ;)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 08 März 2018, 15:08:58
das mit alles war nur ein test mit hey google gib alles und dann wird halt laut aktiviert.

raumfeld_wg gibt es. das ist ein dlna device wo alle räume drin sind. über viel leiser usw geht es ja schon sehr gut.

ich hab das mit dem http schon probiert, aber er schickt ihn nicht raus, deswegen hatte ich ja gefragt. (response
   
Please define {GetHttpFile first). ich wollte dir mit dem bsp. nur zeigen wie solch ein request ausschaut.

mfg.

jetzt hab ich es hinbekommen. zb.   weiter|vor$ = {GetHttpFile("192.168.178.21:8080","/raumserver/controller/next")}, ich hatte immer ein set vor dem http befehl..
bei mir ist es wirklich try and error.. :)

hab jetzt mal probiert das mit dem vorspulen hinzubekommen, das ist aber wirklich sehr tricky. manche zahlen kommen vom home als wort, manche als zahl rein. keywordlist und modwordlist entsprechend eingerichtet, aber er schaltet genau immer einen weiter. ab 10 min springt er immer zurück zum anfang.

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 08 März 2018, 21:13:18
Das mit den 3 Geräten muss ich nochmal genauer überlegen, aber bei den Minuten kann ich dir einen Tipp geben.

(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]))}

Habs nicht getestet aber kurz zur erklärung: numeral wandelt auch zahlenworte in zahlen um, und bei minuten wird mit 60 multipliziert.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 08 März 2018, 21:27:30
danke danke.. leider findet er keinen match


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


hier hab ich das wort mal auf test geändert

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


und hier schaltet er den befehl, aber der richtige wert wird nach value nicht ausgeben.

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

 
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 09 März 2018, 07:51:27
Du musst schon drauf achten das deine Sätze zu den RegExp passen.

Bei (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]))}

Musst du natürlich auch "vorspulen auf 3 minuten" sagen.
Bei den anderen Beispielen haben die Klammern nicht zu der Auswertung gepasst. Weil entweder die Minuten Klammer gefehlt hatte oder die Zuordnung ($n) nicht korrekt war. Die Klammer (\S+) ist ja dafür gedacht die Zahl oder das Zahlenwort zu bekommen.

Bei dem Problem mit laut/leise und den drei Kommandos fällt mir nur ein das du die Kommandos vorher mit überall seperat definierst.
ü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


Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 09 März 2018, 15:24:22
bei vorspulen auf 3 minuten findet er leider trotzdem keinen match  :-\

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


ich bin hier echt langsam am ausflippen. ich versuche mich hier gerade an dem befehl mach die musik überall aus bzw. mach überall die musik aus.
überall musik an hab ich schon über cmd_5 bei dem StandbyRF.
hab jetzt schon alles mögliche durchgekaut zb. überall Musik\b aus = schaltet immer cmd_5,also an. Lass ich das aus weg, nimmt er den befehl und würde ein set senden. Am liebsten würde ich das ganze eigenständig laufen über den http Befehl für Musik überall an/aus und das cmd_5 wieder rausnehmen.

http://192.168.178.21:8080/raumserver/controller/leaveStandby
http://192.168.178.21:8080/raumserver/controller/enterManualStandby

btw. die lautstärkeregelung läuft nun absolut perfekt. vielen dank für die hilfe. ;D
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Steffen am 10 März 2018, 08:09:56
Guten Morgen!

Wenn ich sage "ich möchte baden" "ich möchte ...." klappt der Befehl, wenn ich aber sage "ich bin fertig mit baden" erkennt er "fertig" nicht und führt nicht aus?!

(@name) && (@verb) && (Romantisch|Fertig|Kinder|Entspannt|baden) && baden = set Baden $3{ /romantisch/ => romantisch, /fertig/ => ende, /kinder/ => kinder, /entspannt/ => entspannt, /baden/ => standart}


Wo könnte hier der Fehler liegen???

Mfg Steffen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 10 März 2018, 09:00:05
Habe keine Log, deswegen muss ich raten.
Bin steht nicht in @verb? Oder Baden Stand im Satz vor fertig. Frage wofür überhaupt @verb. Reicht nicht.
(romantisch|fertig|kinder|entspannt) && baden = set Baden $1[romantisch,fertig,kinder,entspannt ,else, standart]

Und Baden sollte aus der Klammer raus, den wenn Baden vor dem Wort kommt sucht er denke ich nicht weiter. Habe es nicht ausprobiert.

@ambercrombie schaue ich mir in Ruhe an...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 13 März 2018, 12:06:04
Zitatbei vorspulen auf 3 minuten findet er leider trotzdem keinen match 

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: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 '


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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 14 März 2018, 09:24:02
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: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 '


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ß

ok danke. mach ganz in ruhe.

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

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:

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?

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Pitcher90 am 15 März 2018, 01:18:07
Hallo Phill,
das Projekt hat sich schon wirklich prächtig entwickelt. Dafür vielen Dank.
Mir ist aufgefallen, dass das Modul nach einem shutdown restart erst wieder "geweckt" werden muss.
Zumindest ist es bei mir so, dass der erste Befehl den ich tätige ins leere geht. Der zweite funktioniert dann einwandfrei.

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 15 März 2018, 13:47:39
@ambercrombie. Ja das verstehe ich auch so. Ich kann dir aber leider nicht viel weiterhelfen, da der Abschnitt nicht von mir stammt.
Was mir nur beim durchschauen aufgefallen ist, das bei
T2F_rooms = Haus,Dachgeschoss,!Wohnzimmer
ich den Sinn des Ausrufezeichens nicht ganz verstehe, und sogar behaupten würde das ist falsch. Versuche es mal ohne das Ausrufezeichen, wenn da das Problem ist. Weil so wie es aussieht schaltet er bei Wohnzimmer alle Lampen.

@Pitcher90. Kann ich reproduzieren werde ich fixen. Danke.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: RoBra81 am 15 März 2018, 14:10:08
Zitat von: Phill am 15 März 2018, 13:47:39
@ambercrombie. Ja das verstehe ich auch so. Ich kann dir aber leider nicht viel weiterhelfen, da der Abschnitt nicht von mir stammt.
Das habe ich verbrochen ;-)

Zitat von: Phill am 15 März 2018, 13:47:39
Was mir nur beim durchschauen aufgefallen ist, das bei
T2F_rooms = Haus,Dachgeschoss,!Wohnzimmer
ich den Sinn des Ausrufezeichens nicht ganz verstehe, und sogar behaupten würde das ist falsch.

Nein, das Ausrufezeichen passt da und sorgt im Prinzip dafür, dass das Anwortskript in diesem Fall den Begriff Wohnzimmer für die Antwort auswählt. Momentan habe ich keine Zeit, mir das genauer anzusehen, ich werde sehen, dass ich mich dessen heute Abend mal annehme. Was @ambercrombie auf jeden Fall schonmal prüfen kann, ist, ob alle im Wiki für dieses Vorgehen beschriebenen Funktionen in die myUtils übernommen wurden (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Grundlagen_.2F_Voraussetzungen).

Ansonsten sehe ich mir das wie gesagt heute Abend gern mal an...

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: RoBra81 am 15 März 2018, 20:35:30
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?

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


Das sollte eigentlich funtkionieren, zumindest steht in deinem Auszug

Executing Command: set T2F_types_color=.*Lampe.* RGB 6B8E23

Kannst du mal bitte folgendes in der FHEM-Kommandozeile ausführen:

list T2F_types_color=.*Lampe.*

Da sollte eigentlich mindestens deine Lampe gefunden werden...

Ronny
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 15 März 2018, 21:34:52
Ich kann es leider erst am Sonntag testen. Muss ich die myutils selber bearbeiten?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: n4rrOx am 16 März 2018, 16:59:55
Hi,

hab eine Frage:
Wollte meine Rolladen einbinden...
Benennung beginnt immer mit dem Raumkürzel + Rolladenaktor + ggf. _links/_rechts (eig. nur im WZ).
Reading ist "pct" und der Wert kann von 0-100 oder on/off sein.

Das ist die Formel:
# 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" }


=> Leider wird die Anfrage nicht richtig verarbeitet.
Beispiel:
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


Wo ist mein Fehler?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 16 März 2018, 21:49:46
Hi, da sind einige Leerzeichen unterschlagen worden.

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

Ich schreibe optionale werte gerne in der klammer mit einem Leerzeichen im Anschluss dann spart man sich ein Fragezeichen.

Hier ist ein Beispiel wie du auch beide rollos sagen kannst, oder wenn kein links oder rechts angegeben ist werde auch beide gefahren.
?(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.
Somit geht:
mach die rollos im wohnzimmer hoch
mach den rechten rollo im wohnzimmer hoch
mach beide/alle/jeden rollo/s im wohnzimmer hoch
mach den rollo im wohnzimmer rechts hoch

Ist das eigentlich korrekt das bei hoch ein off gesetzt werden soll? Ansonsten musst du off und on tauschen.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 18 März 2018, 09:00:03
Kurzes Statement zur neuen Version 0.5.3.

1. Es sind einige neue Zeitphrasen möglich. Damit kann die Zeit noch etwas natürlicher angegeben werden.
Unter anderem geht jetzt:

2. Zeilenumbrüche und Tabulatoren werden ab jetzt in der Konfig in eine Leerzeichen korregiert. Vorher wurden sie nur entfernt. Damit lässt sich die Konfig besser anordnen und gliedern.

3. Wenn man über && die RegExp aufteilt, werden die einzelnen Treffer aus dem Kommando entfernt und stehen bei den folgenden RegExp nicht mehr zur Verfügung. Kann zwar problematisch sein wenn einzelne Wortteile übrig bleiben, aber die Vorteile überwiegen meiner Meinung nach. Wenn jemand Probleme hier sieht bitte melden. Ich könnte mir auch vorstellen das optional abzustellen.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 18 März 2018, 18:14:49
Zitat von: RoBra81 am 15 März 2018, 20:35:30
Das sollte eigentlich funtkionieren, zumindest steht in deinem Auszug

Executing Command: set T2F_types_color=.*Lampe.* RGB 6B8E23

Kannst du mal bitte folgendes in der FHEM-Kommandozeile ausführen:

list T2F_types_color=.*Lampe.*

Da sollte eigentlich mindestens deine Lampe gefunden werden...

Ronny

Dekolampe wird gefunden, aber er schaltet sie leider nicht.

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: RoBra81 am 18 März 2018, 20:36:06


Zitat von: Abercrombie1892 am 18 März 2018, 18:14:49


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


Da steht es doch, die Lampe versteht RGB nicht ;) - probier es mal mit rgb...

Gesendet von meinem SM-G935F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 18 März 2018, 20:59:43
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

ich fress nen besen..immer diese kleinigkeiten  ::) funzt  ;D
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: n4rrOx am 19 März 2018, 09:04:05
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.
?(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.
[...]

Hi Phill,
Super Hinweis! Funktioniert perfekt  :)

Das einzige, was ich nicht ganz verstehe ist deine Aussage mit den Leerzeichen.
In der Wiki habe ich gelesen, dass mindestens 1 Leerzeichen vor dem "=" benötigt wird .... ansonsten?
Ich möchte einfach in der Zukunft nicht immer erneut nachfragen müssen, sondern die Syntax verstehen ^^
Deswegen noch die Frage, kannst du mir kurz erklären warum du im oben zitierten Befehlssatz einmal Leerzeichen hinzugefügt hast und manchmal gelöscht hast?
Besten Dank vorab!

Zitat von: Phill am 16 März 2018, 21:49:46[...]
Ist das eigentlich korrekt das bei hoch ein off gesetzt werden soll? Ansonsten musst du off und on tauschen.
Ne nicht ganz .... hab es jetzt folgendermaßen geändert und es funktioniert =)
true => 100 , false => 0 , integer => "$7"

Gruß
Mathias
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 19 März 2018, 12:35:34
Bei dir war eigentlich das Problem, dass (auf) überhaupt nicht optional war.
# Schalten === Rolladen:
rolll?(os?|\S\S?den) ?(\S+){0,2} (Küche|Kinderzimmer|Schlafzimmer|Wohnzimmer) && ?(links|rechts) ?(auf) ?(\S+)
                                                                                                   ^^^

In der Perl-RegExp muss das "?" hinter den Ausdruck. Das bedeutet bei dir waren die Leerzeichen vor und nach (auf) optional. Nicht aber (auf) selbst, welches gebraucht wird wenn man sagt mach den Rollladen auf 50 %. Lässt man (auf) weg würde er das als den komplett Auffahrbefehl annehmen. Mach den Rolladen auf.

Das Fragezeichen am Anfang eines RegExp-Teils (bei Verwendung von &&) ist eine Talk2Fhem Eigenschaft um den kompletten RegExp-Teil optional zu machen. Ist in deinem Fall auch nicht Sinnvoll gewesen.

Man muss darauf Achten das die Leerzeichen sich nicht verdoppeln oder ganz weg sind.
Schreibt man nämlich
rolladen (auf)? (\S+)
und man sagt nur "rolladen hoch" trifft die RegExp nicht zu, weil zwei Leerzeichen erforderlich sind. "Rolladen  hoch" würde erfolgreich sein.
                                           ^                                                                                                                                 ^^
Deswegen so.
rolladen (auf )?(\S+)
Hoffe ich habe mich nicht zu kompliziert ausgedrückt, denn eigentlich ist es das nicht.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 21 März 2018, 21:10:03
brauch mal wieder etwas hilfe   ::)

ich wollte jetzt über einen sprachbefehl playlisten abspielen lassen und mache das ja über einen http befehl {GetHttpFile("192.168.178.21:8080","/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=Rock")}

ich habe das jetzt schon mit keywordlist und modwordlist probiert, aber da funktionieren ja die http befehle nicht, durch das komma nach dem port.
ich müsste nur hinten das wort nach value= austauschen gegen die playlistnamen.

danke

edit: habs selber hinbekommen, so langsam seh ich durch hier  :D
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 22 März 2018, 07:27:01
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.

Nur der Vollständigkeit halber:
Das Komma kannst geschützt werden. Siehe Attribute (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Attribute) im Wiki.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 22 März 2018, 08:19:09
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ß

Wieder was dazu gelernt. Danke
Hattest du dir das mit den vorspulen nochmal genauer angeschaut?

Ich weiß nicht ob es möglich wäre oder ob es möglich ist, einen Befehl zeitverzögert abzusenden aus t2f ohne jetzt über ein doif oder notify zugehen?

Mit freundlichen Grüßen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 22 März 2018, 15:18:01
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.

Was meinst du mit selbst ausgewertet werden?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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".



Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 22 März 2018, 15:46:57
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".

Ich probiere heut Abend mal mein Glück. Ich musste ja die Zahl noch umrechnen auf Sekunden

Mit freundlichen Grüßen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: n4rrOx am 22 März 2018, 17:12:09
Hallo Phill,

habe mir deine Erläuterungen nochmals in Ruhe angeschaut und versucht meine Erkenntnisse mit einigen weiteren Fragezeichen mal rauszuschreiben.
RegExp ist absolutes Neuland für mich ^^

?(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)


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

Also kann ich nicht sagen:
Fahre in der Küche den Rolladen auf 50 % ???

=> Wo müsste oder könnte ich noch weitere && setzen?
___________
Hätte noch einen Vorschlag, abseits meiner RegEx-Fragen:
Es ist ja möglich zu sagen, dass z. B. das Licht in 5 min ausgeschaltet werden soll.
Anschließend wird ein Timer generiert, welcher die Lampe in 5 min ausschaltet.
Wenn jetzt die Lampe aber gar nicht an war, wird einfach nach 5 min trotzdem ein off Befehl gesendet.

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

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.


Gruß
Mathias
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 22 März 2018, 20:44:27
(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.? ::)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 23 März 2018, 09:21:32
Zitat von: Abercrombie1892 am 22 März 2018, 20:44:27
(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.? ::)
Danke für die Blumen. Wie meinst du das nochmal mit dem wait? 


Zitat von: n4rrOx am 22 März 2018, 17:12:09
RegExp ist absolutes Neuland für mich ^^
Ich finde es klasse, dass ich durch mein Modul zum Verständnis von RegExp beitrage. :)

Zitatrolll?(os?|\S\S?den)   =   l? => l ist optional, dann entweder Endung os oder ein oder zwei Zeichen, wobei ein Umlaut wie ä umgeschrieben wird
Damit hab ich folgende Wörter erfasst.
Rollladen, rollläden, rollo, rollos. Vielleicht würde auch ein roll\S+ genügen, wenn man sonst kein Wort mehr beginnend mit roll verwendet. 

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.
Im, in der, auf der, in, usw...
Zur Frage: Nein. Weil ich nach mindestens 2 Wörtern suche. Und diese werden nun mal in der Regel mit einem Leerzeichen getrennt.  ;)
Ich benutze innerhalb von T2F auch das dafür. Ist etwas expliziter wenn es interssiert.
'(([ai][nm]|beim?|auf|unter|hinter|über|vo[rnm]) )?((de[rmns]|die|das) )?'
Ich sehe gerade das "?" am Anfang ist überflüssig wenn nicht sogar schädlich.

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.
Wenn du "_?(\S+)_" meinst, Jein. Geht aber würde ich nicht machen, da dann eventuell gar kein Leerzeichen mehr übrig bleibt.
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?

Wenn "alles" an unbekannten Stellen steht. Entsteht das Problem das man die Richtung des Rolladen von hinten Suchen muss. Man könnte auch zwei Konfigs erstellen in dem Raum und Rollo gedreht sind. Oder man sucht das Adejktiv wie gesagt von hinten. 
?(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:
\S ist das selbe wie [^\s]. Mit [^\s%] schließe ich ebenso das % aus, weil ich das nicht benötige.
(%| %| prozent)?$ bedeutet Satzende mit optionalem Prozent in verschiedenen Schreibweisen.

Teste das mal bitte mit allen möglichen Satzkonstellationen. Gefällt mir fast besser und könnte dann ins wiki.
-------------------------------------------------------------------------------------------------------------------------------
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.
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.
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 23 März 2018, 10:44:27
Zitat von: Phill am 23 März 2018, 09:21:32
Danke für die Blumen. Wie meinst du das nochmal mit dem wait?

Ich meinte damit einen Befehl zeitverzögert abzusenden direkt aus t2f, ähnlich wie bei einem doif.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 23 März 2018, 11:25:23
Hast du mal offset=300 versucht? Zeitenmodifikation (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Zeitenmodifikation)
Ich in Bezug auf Verzögerung ehrlich gesagt noch nicht.  ;) Kann also sein das vorher explizit eine Zeit angegeben werden muss. Probiers mal bitte. Ansonsten wirds gefixt.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 23 März 2018, 13:58:19
Bisher hab ich noch nix weiter getestet. Werd es heut Abend mal probieren ob ich das ganze umsetzen kann.

edit: ich weiss jetzt nicht ob ich das so richtig gemacht habe, aber er schaltet sofort an und wartet nicht mit dem befehl 10 sekunden

Test\S* (\S+) = (offset=>10, cmd=>'set Nvidia on')


ich schalte ja hiermit die raumfeld geräte ein

#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]

ich hätte nun gerne auch das er mir die geräte abschaltet. im moment schaltet er ja die geräte auch ein wenn ich sage mach musik im wohnzimmer aus. ::)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: swsmily am 23 März 2018, 18:57:43
ZitatIch finde es klasse, dass ich durch mein Modul zum Verständnis von RegExp beitrage

Dafür kann ich mich auch nur bedanken. RegEx ist zwar für mich immernoch sehr verworren, aber schon die Ansätze, durch dieses Modul haben mir sogar beruflich schon geholfen  ;D
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 30 März 2018, 12:11:25
hallo,

hab ein kleines problem bei der lampensteuerung aus dem wiki für bunte lampen.

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



alle lampen haben jetzt ihre attribute bekommen. nur hab ich immer das problem wenn ich zb sage mach das licht im wohnzimmer blau, reagieren immer 2 lampen garnicht ( immer 2 andere ) und es gehen auch in den anderen räumen die lampen an.

den fehler hab ich im log

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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: RoBra81 am 30 März 2018, 21:53:38
Kannst du bitte mal noch die Attribute vom talk-Device posten?

Gesendet von meinem SM-G935F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 30 März 2018, 22:18:44

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


kann mir mal einer erklären was das hier ist?

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)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 31 März 2018, 11:08:22
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

das hat erstmal super funktioniert. alle lampen schalten nun auf befehl und auch das problem das immer 2 nicht geschaltet haben ist nun weg. hab aber ein anderes phänomen.

wenn ich die lampen ausschalte also rgb 000000 schalten alle lampen aus, bis auf die hue go lampen, diese glimmen noch mit 1% vor sich hin.

müsste dann nicht rein theoretisch bei jeder lampe rgb 000000 stehen?

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 31 März 2018, 11:18:07
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

können wohl alle bis auf die hue go´s. werd´s mal versuchen umzubiegen
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: justme1968 am 31 März 2018, 11:49:23
zum ausschalten gibt es das off kommando.

bei hue ist die geringste helligkeit explizit nicht aus.

bei manchen lampen kann es zwar funktionieren, das ist aber zufall und hängt von modell und hersteller ab.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: ToM_ToM am 29 Juli 2018, 09:42:23
Hallo,

ich habe es jetzt auch endlich mal geschafft, mich mal etwas näher mit diesem Modul auseinanderzusetzen. Gibt es irgendwo eine Erklärung wie die Include-Dateien aufgebaut werden müssen?
Wenn ich folgendes in meine Include-Datei schreibe, funktioniert nur der erste Befehel, nicht aber der zweite.

Licht|Lampe|Beleuchtung Wohnzimmer an|ein = set LEDController on
Licht|Lampe|Beleuchtung Wohnzimmer aus|ab = set LEDController off


Schreibe ich das hingegen direkt in die DEF, funktionieren beide. Wie trennt man in der Include-Datei 2 Befehle? Konnte hierzu leider im Forum und Wiki nichts finden.

VG, Thomas
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 29 Juli 2018, 16:23:47
Hi,
die externen Konfigurationdateien werden aktuell noch nicht auf Änderung überprüft. Das bedeutet wenn diese geändert werden muss einmal ein reload des Moduls oder die Definition einmal ein modify ausgeführt werden. Nicht schön aber ist noch ein TODO.
Könnte das das Problem sein? Ansonsten sollten deine Konfiguration eigentlich funktionieren.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: ToM_ToM am 29 Juli 2018, 19:21:05
Hallo Phill,

ja genau das war es. Danke. Du könntest vielleicht ein set DEVICE reloadIncludeFiles oder so ähnlich mit einbauen.

Wenn ich es aber weiß, kann ich es ja in der DEF entwickeln und erst dann in ein Include File auslagern wenn es läuft.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: ToM_ToM am 31 Juli 2018, 19:28:22
Hi Phill,

wäre es auch möglich, mal so eine Beispielkonfigurations-Datei zur Verfügung zu stellen? Damit würden sich sicher ein paar der folgenden Fragen beantworten:

- Wie mache ich IF THEN ELSE
- Kann ich Kommentare einfügen?
- Wie escape ich Zeilenumbrüche?
- kann ich in einer Konfiguration einen weitere includen?

VG, Thomas
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 31 Juli 2018, 21:14:40
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
}


Für nähere Infos hier (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Variante_1:_nach_Typ)

Zitat von: ToM_ToM am 31 Juli 2018, 19:28:22
- kann ich in einer Konfiguration einen weitere includen?

Bin mir sicher das es geht.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: ToM_ToM am 31 Juli 2018, 21:21:09
Okay super. :)

Habe jetzt eben bemerkt, nur ein reload 39_Talk2Fhem.pm reicht leider nicht nach Änderung der Config-Datei. Ich muss jedes Mal shutdown restart ausführen.
Daher wäre es doch cool wenn du es irgendwie im Modul integrieren könntest.

VG, Thomas
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 31 August 2018, 11:15:18
Da die Google home's ja jetzt erkennen in welchem Raum sie stehen, gibt es da irgendwie die Möglichkeit das man das in t2f nutzen kann? Wäre schon cool, wenn man nicht mehr den raumnamen zwangsweise sagen muss.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: swsmily am 02 September 2018, 23:51:53
Da ich keinen Google Home habe, hab ich zwar keine Ahnung, wie Google Home erkannte Spracheingaben und Ort an FHEM übergibt. Aber (theoretisch, wenn man weiß, von welchem Gerät die Eingabe kam ist es egal ob Google Home den eigenen Raum kennt).

Meine Idee wäre ein DOIF, welches pro Raum (Google Home) den Sprachbefehl an Talk anpasst und übergibt:

(Achtung Pseudocode)
im Wohnzimmer sagen:  "mach das Licht an" - DOIF macht daraus "set Talk2FHEM [GoogleHome_WoZi:Spracheingabe] im Wohnzimmer "
im Schlafzimmer sagen: "mach das Licht an" - DOIF macht daraus "set Talk2FHEM [GoogleHome_SchlaZi:Spracheingabe] im Schlafzimmer"

Dies wäre mein erster Ansatz um im jeweiligen Raum nicht mehr den Raumnamen selbst nennen zu müssen.


Ich würde aber das DOIF noch weiter anpassen um aus dem Wohnzimmer z.b.  Schlafzimmer oder Kinderzimmer zu steuern.
Ganz grob beschrieben (Achtung Pseudocode):
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




Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 03 September 2018, 09:16:55
Also bleibt im Moment immer noch die einzigste Lösung, jeden Google Home einen eigenen Account bei iffft einzurichten und das ganze dann in fhem auszuwerten.

Danke für deine Beispiele
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Torsten_MG am 16 September 2018, 12:28:28
Hallo beschäftige mich seit heute wieder nach längerer Zeit mit talk2fhem. Habe mich anfang des Jahres mal angeschaut und dann nicht weiter mit beschäftigt.

Da ich mir die 21Seiten nicht unbedingt antuen möchte und ein Teil ja noch so funktioniert wie ich es damals ausprobiert habe, frage ich jetzt mit der anderen Sache jetzt mal so in den Raum.

Ich habe damals in der DEF folgendes eingetragen:

# <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 ]


Mit dem Google assistenten und ifttt klappt das auch wunderbar.

Nun würde ich aber gerne die Raumtemperatur abfragen, weiß aber nicht wie!

Das abzufragende Device heißt WZ_Temp und das Reading für Temperatur heißt temperature

Was muß ich wie und wo eintragen, damit ich das abfragen kann und auch eine Antwort über google bekomme.

Danke schonmal für eventuelle hilfe!
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag 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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Torsten_MG am 16 September 2018, 21:08:18
Ok, werde es mir morgen mal anschauen. Bin jetzt auf der Arbeit. Nachtschicht!

Gesendet von meinem SM-J730F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Torsten_MG am 17 September 2018, 18:38:28
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ß

Hab es mir jetzt  mal durchgelesen. Viel Input wo ich manches noch nicht ganz verstanden habe. Aber das kommt mit der Zeit. Das mit Googlecast muß ich mir noch genauer angucken, mit dem Modul habe ich mich bisher noch gar nicht beschädigt.

Einige Fragen habe ich noch zu den Keywords und Modwords.

Zum Beispiel habe ich in @rooms = Flur, Bad, Wohnzimmer, Draussen

Als Modwords möchte ich Licht und Temperatur nehmen.

Licht habe ich in Flur und Bad
Temperatur im Wohnzimmer und Draussen.

Wie genau muß ich das jetzt die Modwords eintragen, da blicke ich noch nicht ganz durch
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 17 September 2018, 21:08:18
Einfach frei lassen.

@modlight = lightdev_flur,lightdev_bad
@modtemp = ,,tempdev_wohnzimmer,tempdev_aussen


oder jeweils eigene Keylisten für Lichträume und Temperaturräume. Geschmacksache.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Torsten_MG am 17 September 2018, 21:37:35
Zitat von: Phill am 17 September 2018, 21:08:18
Einfach frei lassen.

@modlight = lightdev_flur,lightdev_bad
@modtemp = ,,tempdev_wohnzimmer,tempdev_aussen


oder jeweils eigene Keylisten für Lichträume und Temperaturräume. Geschmacksache.
Alles klar, Danke! Probiere ich morgen aus.

Gesendet von meinem SM-J730F mit Tapatalk

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Abercrombie1892 am 18 September 2018, 21:13:04
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ß

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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Torsten_MG am 19 September 2018, 15:34:54
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ß

Habe es jetzt soweit laufen. Nur die Richtung Fhem -> Google klappt leider nicht. Bekomme das Modul Googlecast nicht zum laufen und der Support vom Modul ist leider eingeschlafen. Gibt es noch eine andere Möglichkeit dass Fhem mit Google spricht?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: Phill am 19 September 2018, 21:50:58
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}}>>>

@Torsten_MG: Ja gibt es, die eine Methode die ich verwendete basierte aber ebenfalls auf Pythonlibraries und der Aufwand war größer als mit dem FHEM Modul. Wundert mich das das Modul nicht mehr Supportet wird, vielleicht ist nur Sommerpause bei dem Kollegen.  :D

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerung [NEU] mit Objektverundung!
Beitrag von: bmaehr am 03 Oktober 2018, 15:50:08
Hallo,

Ich versuche gerade einen Überblick über die Möglichkeiten zur Verbindung von fhem mit dem google assistant zu bekommen. Leider sind die Informationen dazu ziemlich Kraut und Rüben (nicht aktuell, irgendwo auf Seite 18 eines Threads, ...). In diesem Thread ist der erste Post ja zumindest ziemlich übersichtlich, auch wenn er schon etwas älter ist.

Verbesserungsvorschläge für diesen Thread/Modul-Beschreibung:
- Link auf https://wiki.fhem.de/wiki/Modul_Talk2Fhem vor Updates und Installationsanleitung (ich hatte soweit erst gar nicht gelesen, den Link erst bei der Überprüfung für diesen Post gesehen)
- Hauptfunktion noch einfacher und klarer beschreiben (Vorschlag sofern ich die Funktionsweise richtig verstanden habe): Das Modul ist in der Lage aus von anderen Modulen empfangenem natürlichem Text fhem Befehle mit Parametern zu erkennen, diese Befehle auszuführen und Befehlsergebnisse oder Informationen aus fhem als natürlichen Text an andere Module zurückzugeben.
- Liste der Eingangs und Ausgangmodule vervollständigen/aktualisieren:  Laut erstem Post sollte Telegram sowie IFTT/MQTT möglich sein. Ich vermute mal, dass über IFTT keine parametrisierten Antworten möglich sind. Interessant fände ich das modul ghome-fhem, kann aber leider gar nichts über die Kombination mit Talk2Fhem finden. Eine Einschätzung (nicht möglich, weil...; bis jetzt nicht implementiert; noch von niemandem ausprobiert; Diskussion in Thread ...) fände ich sehr hilfreich. Auch über HA-Bridge ist leider nichts zu lesen.

Nicht falsch verstehen, der Post ist keine Kritik an Phill. Im Gegenteil habe ich mir diesen Thread ausgesucht, weil das noch die übersichtlichste Doku zu dem Thema war und ich hoffe, dass sie mit den vorgeschlagenen Änderungen noch besser für den Einstieg angepasst werden kann.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 04 Oktober 2018, 10:18:06
Hi, der Thread ist natürlich nur eine Diskussion. Ich habe versucht die Ergebnisse in das WIKI einfließen zu lassen. Das ist auch die erste Anlaufstelle wenn man sich in das Modul einarbeiten will. Übrigens auch in der commandref verlinkt. Aber dein Einwand mit dem Link den man nicht wirklich findet im ersten Thread ist korrekt und habe ihn mal etwas ersichtlicher gesetzt. Ebenfalls nochmal den Einleitungstext etwas angepasst. Ich bin natürlich immer Dankbar für hinweise und Vorschläge. Als Entwickler fällt es manchmal etwas schwer  eine Dokumentation allgemein verständlich zu formulieren.

Über IFTT ist mir jetzt noch keine Möglichkeit bekannt Antworten durchzuleiten, wird von mir über das Modul Googlcast gemacht. Generell fehlt mir zu anderen Schnittstellen (MQTT/HA-Bridge) einfach der Input, dann würde ich es im WIKI ergänzen. Hatte ein zwei mal angefragt ob mal jemand was schreibt, ist aber bis jetzt noch nicht geschehen.

Deswegen weiterhin gilt, ich bin für jegliche Hilfe sehr Dankbar.  :)

Werde mich jetzt in der kalten Jahreszeit auch mal wieder etwas mehr mit dem Modul beschäftigen können.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: bmaehr am 04 Oktober 2018, 23:57:49
Zitat von: Phill am 04 Oktober 2018, 10:18:06
Als Entwickler fällt es manchmal etwas schwer  eine Dokumentation allgemein verständlich zu formulieren.
Als Entwickler kenn ich das selber. Danke für die positive Reaktion :-)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 09 Oktober 2018, 21:04:35
Hast du schon mal darüber nachgedacht die erstellten Zeitgesteuerten Events einem definierbaren Raum, oder einer Gruppe zuzuordnen?
Ich finde diese leider nur aufwändig wieder, da die Kommandos wegen des Regex auch nicht in der Oberfläche verlinkt angezeigt werden.

Gruß Michael

EDIT:
habs mit einem notify gelöst:


global.DEFINED.at_talk_.* {
  fhem("attr $EVTPART1 room talk");
}
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: MBHG am 24 November 2018, 09:01:50
Hallo,

bei der Umsetzung der Wiki hänge ich an dem folgenden Punkt


2b. Erstellen eines DOIFs zum Aufruf der sub:
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


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.

Ich gebe es als Kommando ein. Übersehe ich etwas?

Gruss Mac
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 24 November 2018, 15:40:54
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.

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.

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Ma_Bo am 24 November 2018, 18:08:36
Hey ich glaube es liegt am Komma im Text, besser so machen:

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


Grüße Marcel
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Abercrombie1892 am 24 November 2018, 21:59:28
hat schon jemand mal probiert das ganze mit dem Echo Modul zu verknüpfen um hier das voice mit entsprechendem zimmer des Echos nutzen zu können?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: MBHG am 25 November 2018, 07:41:01
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.

Danke, das war es.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: MBHG am 25 November 2018, 07:41:50
Kurioserweise erkennt er bei mir nicht das bitte:

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


Er beschwert sich immer, daß ich kein Bitte gesagt hätte...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: mig2 am 25 November 2018, 16:55:56
Hoi zusammen,
ich bin am Einführen vom Talk2Fhem. Es Funktioniert eigentlich gut. Ich kann einzelne Devices schalten (Lampen / Storen). Wenn aber pro Raum mehrere Devices defniert sind. Geht das schalten nicht.
Aktuell habe ich nur noch die Lampen definiert.
Licht (\S+ ){0,2}(@rooms) (\S+) = set $2[@lights] $3{/ein/ => on,true => on,false => off}
Die Rooms sind wie folgt eingeteteilt:
&rooms = überall|Haus|alles, Büro, Gang, Küche, Eltern, Ivo|Kind1, Kind2, Essen, Badezimmer, Badkinder, Badeltenr, Eingang, Balkon, Stube|WZ|Wohnzimmer
und lights
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
Der Befehl wird korrekt erkennt:
set Licht Badezimmer ein
Die Umsetzung sieht aber wie folgt aus:
cmds set ZW_Bad1_Neon, ZW_Bad1_Spot, ZW_Bad2_Neon, ZW_Bad2_Spot on
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?

Gruss Peter
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: der-Lolo am 25 November 2018, 20:16:48
Hallo Phill, schön zu lesen das Du Dich in der "kalten" Jahreszeit wieder ein bisschen mehr mit diesem Modul beschäftigen möchtest - ich wünsche mir zur Zeit sehr von extern und intern "syntax freundlich steuern" zu können. Ich habe mir in den Kopf gesetzt von extern aus Telegram zu nutzen, das sollte offensichtlich kein großes Problem sein.
Intern würde ich gerne snips eine chance geben... Hast Du vielleicht mal darüber nachgedacht wie man nachrichten von snips an T2F ankoppeln könnte..?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: smart.builder am 25 November 2018, 21:04:37
Hallo der-Lolo, zu Snips und T2F gibt es bereits ein Topic. Ich möchte es demnächst auch testen.
https://forum.fhem.de/index.php/topic,91216.0.html (https://forum.fhem.de/index.php/topic,91216.0.html)

Gruß
Smart
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag 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?


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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag 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)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 26 November 2018, 23:50:49
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?


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

Ja genau so ist es. Man kann den Filter über T2F_filter beeinflussen. Siehe Commandref.

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?

Doch funktioniert bei mir sehr gut. Ich glaube, dass die Leerzeichen nach dem Komma (wenn mehrere Geräte geschalten werden sollen) weg müssen. Mit den Anführungszeichen sorgt man dafür das der Inhalt dazwischen direkt an FHEM gegeben wird und FHEM hier keine Leerzeichen erlaubt.  Also:
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)

Ja klar, probier mal folgendes:
DEF:
schalte && (@rooms) && (ARD|ZDF) = set KODI_$1 openchannelid $2[26,27]
oder zur Übersicht mit Key und Modwordlisten  arbeiten und dort die Auflistungen machen
schalte && (@rooms) && (@channels) = set KODI_$1 openchannelid $2[@channelnumbers]


siehe dazu: https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Variante_2:_nach_Liste (https://wiki.fhem.de/wiki/Modul_Talk2Fhem#Variante_2:_nach_Liste)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: mig2 am 01 Dezember 2018, 11:43:47
Vielen Dank, dass mit dem leerzeichen war der richtige Typ
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: MBHG am 03 Dezember 2018, 17:01:09
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.

Danke. Zusammengefasst habe ich das Attribut T2F_filter angelegt und kommasepariert die Liste der Wörter, die ich generell filtern möchte angelegt.  "Bitte" war nicht dabei, abweichend vom Standard. Damit klappt es.

Der Codeschnipsel kommt aus dem Wiki, jeder der diesen umsetzt wird über das Problem stolpern.

Gruss Marc
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: TimoD am 05 Dezember 2018, 07:45:37
Hilfe Anfängerfrage:

Wo muss die Konfiguration der Sprachbefehle RegExp-Teil rein? "Die Konfiguration der Sprachbefehle wird Zeile für Zeile in der Definition (DEF) des angelegten Gerätes vorgenommen."

1. Bedeutet des angelegten Geräts: Das talk2fhem device unter DEF oder
2. unter DEF des jeweilig zu steuerenden Gerätes z.B. Wohnzimmer Lampe? (Hier finde ich keine DEF sondern nur unter zugehörigen notifys)

Da ich im Moment nur offline bin kann ich es nicht ausprobieren. Danke für Eure schnelle Hilfe

Grüße
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 06 Dezember 2018, 08:57:24
Hallo,

1. alles im angelegten Talk2Fhem Device.
Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 16 Januar 2019, 14:46:24
Hallo Phill,

Wirklich abgeschnitten wird leider jeder Zeitbefehl.
Wäre es eine Option die Zeit einfach im String zu lassen nach der Erkennung.

Gruß Michael
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 16 Januar 2019, 15:31:13
Ja das Problem besteht. Ich könnte mir vorstellen, dass man einer Zeile explizit mitteilt den komplette Text zu verarbeiten.
Eventuell mit einem vorangesetzten Zeichen oder im Ausführungszeichen eine Art Option. Vorschläge sind willkommen.

Alternativ könnte man für die Zeitwörter Morgen, Nacht und Abend eine Erkennung sperren wenn "gute(n)" davor steht.

In deinem Fall kannst du mal Zeile 311 zum testen
{phr=>'nachts?', dtmod=>{notime=>'"03:00"',pm=>0}},
in {phr=>'(?<!gute )nachts?', dtmod=>{notime=>'"03:00"',pm=>0}}
ändern.

Gruß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag 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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 17 Januar 2019, 12:29:59
Außer,
Zitatmache nachts das licht aus
und die Wochentage oder genaue Datumsangaben.
Zitatmache Freitag Nacht das Licht aus
mache in einer Woche morgens das Licht an

Anders herum gedacht, welche sinnvolen Sätze wären mit Nacht/Tag/Morgen noch denkbar die nichts mit einer Zeitangabe zutun haben? Außer guten ...

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 17 Januar 2019, 13:14:19
Das stimmt,

aber

Mache nachts das Licht aus

wäre ja auch eine Periodische Anweisung, jede Nacht.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 23 Januar 2019, 20:49:34
Hallo,

ich habe einen Frage zu der Funktionalität "T2F_if".
Im talk Device sehe ich welche "T2F_if" aktiv sind wenn ich einen Befehl entsprechend gesagt/eingegeben habe.
Gibt es eine Möglichkeit auch zu sehen welcher Befehl dann auch ausgeführt wird?
Mit den Zeitangaben steht ja im AT entsprechend der ausführende Befehl. Wäre schön wenn man an die Daten irgendwie kommen könnte um z. B. in einer ReadingsGroup anzuzeigen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 25 Januar 2019, 14:58:39
@obi: ran kommst du über $defs{[DEVICENAME]}{helper}{notifies}. Das ist ein Array mit allen Triggern und den dazugehörigen Befehlen.
Kannst du dir folgendermaßen anschauen. {Dumper @{$defs{te}{helper}{notifies}}}

Wie man das jetzt sinnvoll in ein Reading packt um es in einer Readinggroup anzuzeigen weiß ich nicht. Ich habe mal das anzeigen der "notifies" etwas schöner gestaltet indem in der IF Klammer das FHEM Kommando steht.

Vielleicht hilft das schon.

@ahlermi ich habe  guten morgen, abend und nacht in der Zeiterkennung gesperrt. Mir fällt kein sinnvoller Fall ein wo das stören könnte.

Hier die 0.6er beta u.a. mit den oberen Änderungen. Weiß noch nicht wann ich zu einem offiziellen Release komme.

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 11 Februar 2019, 15:45:41
Hattest du das schon mit drin im Update?

Zitat von: ahlermi am 21 September 2018, 18:16:03
Problem Gefunden!
Problem im Modul


my $disu =AttrVal($hash, "T2F_disableumlautescaping", 0);

hätte:

my $disu =AttrVal($hash->{NAME}, "T2F_disableumlautescaping", 0);

sein sollen, sonnst wird das nie gelesen und bleibt 0
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 13 Februar 2019, 16:32:41
Hallo,

ich habe ein Problem/Fehler gefunden?

Ich möchte float Zahlen verwenden um die Heizung z.B. auf 20,5 Grad zu stellen. Anscheinen werden sämmtliche Kommas und Punkte entfernt.

Hier das Log dazu: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:


Folgendes habe ich im Wiki gefunden bezüglich float zahlen:
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


Ich könnte jetzt einfach nach dem Leerzeichen zwischen den beiden Zahlen filtern, schön ist das aber nicht :)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 13 Februar 2019, 16:41:32
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

Das wäre auch ein Feature Request von mir. Dann könnte ich auch die "Heizung auf Nacht" stellen :)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 14 Februar 2019, 06:21:25
Zitat von: ahlermi am 11 Februar 2019, 15:45:41
Hattest du das schon mit drin im Update?

Das ist mir doch tatsächlich durch die Lappen gegangen, danke für die Erinnerung.

@obi: Schau ich mir beides an...
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 14 Februar 2019, 12:00:34
@obi

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ösung


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

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 14 Februar 2019, 17:20:46
Hallo Phill,

ich habe nun den Fehler gefunden warum der Float Wert nicht umgewandelt wird.

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");
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 14 Februar 2019, 18:40:50
Hallo,

jetzt habe ich noch ein Problem welches ich mir nicht erklären kann.
Ich habe die Heizungssteuerun jetzt soweit fertig, dass nur eine Sache nicht funktioniert. Ist aber nur eine Kleinigkeit.

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

Sobald ich eine Kommazahl in dem wieder-teil habe wird nur die Zahl nach dem Komma verwendet.

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


Bitte nochmal um Hilfe.

Danke
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 15 Februar 2019, 08:49:07
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.

Ich habe leider ein größeres Problem, die Zeitbefehle funktionieren garnicht mehr, er sagt zwar das er es zu einer Zeit macht, aber tut es sofort.
Habe an der definition nix geändert, mit der Version aus dem Repo läuft es.


#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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 15 Februar 2019, 09:36:56
OK, selbst gefunden, das Modul reagiert jetzt anders, früher ging 13 uhr nicht, da musste man 1 uhr heute sagen damit er das nicht morgen um 1 uhr nachts macht.

Time is in past: 1550217511 1550188800

Wäre gut wenn du die $DATE Variable bei Zeit in Vergangenheit auch mit "jetzt" oder so überschreibst. :-)


Gruß Michael
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 15 Februar 2019, 11:58:31
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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 15 Februar 2019, 13:55:10
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 15 Februar 2019, 14:50:45
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... :)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 10 März 2019, 22:02:12
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 ?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 15 März 2019, 14:47:24
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ß
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 16 März 2019, 18:33:56
Dank Phill,

genau das hat das Problem gelöst. Wäre selbst nicht auf die Idee gekommen, den Regex nach vorne zu setzen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 02 April 2019, 19:14:51
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:


::)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 07 Mai 2019, 16:36:09
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 09 Mai 2019, 14:27:28
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; } [... ]
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 09 Mai 2019, 17:28:32
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.    :'(
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 09 Mai 2019, 18:09:25
Ich finde es ist ein großer Unterschied ob eine Variable nicht definiert ist, oder leer ist :-)
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Despe am 28 Juli 2019, 23:40:59
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?
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Phill am 29 Juli 2019, 09:31:52
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 (https://forum.fhem.de/index.php/topic,80960.msg906610.html#msg906610)

Eine Logausgabe mit Loglevel 5 wäre auch interessant.
Ansonsten muss ich mir das mal in Ruhe anschauen.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Despe am 30 Juli 2019, 00:05:00
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.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Despe am 30 Juli 2019, 00:18:24
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 05 August 2019, 08:46:50
Bei mir ist es eine Kombination aus Lautstärke, Rollade und Lüftersteuerung. Macht aber genau was es soll:


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


T2F_keywordlist

types_blind = Rollade, Rolllade, Rolladen, Rollladen, Rollos, Lautstärke, Lüfter, Musik, Anlage


Rollade Wohnzimmer Garten
Attributes

T2F_properties klein, Garten
T2F_rooms Wohnzimmer
T2F_types_blind !Rollade, Rolllade, Rollos


Denon
Attributes

T2F_rooms !Wohnzimmer, Erdgeschoss, Wohnbereich, Haus
T2F_types_blind !Lautstärke, Musik, Anlage
T2F_types_switch !Denon, Anlage, Verstärker, Musik, Zone, alles
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 02 September 2019, 11:33:10
Hallo,

ich habe wohl einen Bug gefunden.
Folgende Eingabe funktioniert nicht "schalte licht spüle küche morgen vormittags aus".
Alle Zeitangaben früh/vormittags usw. werden passende ersetzt wird aber nicht als Zeit umgewandelt.

Hier mein Log:
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'


In der Funktion "Talk2Fhem_get_time_by_phrase" wird "notime" nicht verarbeitet.

Ich habe folgendes ergänzt, dann funktioniert es. Ob es dadurch an einer anderen Stelle zu Problemem kommt kann ich noch nicht sagen.
} 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;


Bitte um Prüfung, eventuell mache ich ja irgendwo einen Fehler.

Danke
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 07 September 2019, 14:50:31
Hallo Phill,

ich habe wieder eine Konstellation welche zu Problemen führt. Ich verwende if mit einem Wort/Namen welches auch in einer Keywordliste enthalten ist. Dieses Wort wird dann bei "After correction" entfernt, falsch zusammengesetzt und wird dann anschließend nicht mehr als if erkannt. Theoretisch lässt sich das lösen indem man vor der "After correction" erst die If-regex sucht und den IF-Text speichert und aus dem Text entfernt. Anshließend dann nach "After correction" wieder Text + IF-Text zusammensetzen. Dann sollte es weiter richtig erkannt werden. Ich habe dies jetzt Programm-Technisch noch nicht ausprobiert. Was meinst du?

Hier mein Log, ich habe "Stehlampe" in der IF-Definition und auch in einer Keywordliste:
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:


Hier ein OK beispiel mit eindeutigem Namen "Sonnenaufgang" in der IF-Definition:
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
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 12 Oktober 2019, 08:38:34
Hallo Phill,

es hat sich wohl wieder ein Fehler in die Programmierung eingeschlichen:

Fehlermeldung:
Can't use string (""$1".("$4"?".$4":"")") as a SCALAR ref while "strict refs" in use at ./FHEM/39_Talk2Fhem.pm line 1666.

Zeile 1666:
T2FL($myname,5,"Functionmod '$$fc' $rp");

Ändern in:
T2FL($myname,5,"Functionmod '$fc' $rp");

VG Obi
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Haecksler am 23 November 2019, 19:51:30
Hallo,
ich schalte mit folgendem Ausdruck

(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 dimmen

Licht Wohnzimmer auf 20 dimmen

er gibt folgende Fehlermeldung

Field #20 doesn't exist in Array!

wenn man jedoch auf Zahlen von 0-9 dimmen will z.B.

Licht Wohnzimmer auf 8 dimmen

funktioniert das ohne Probleme.

Ist das ein Bug oder habe ich irgendwo einen Fehler drin.

Gruß,
Stefan
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Haecksler am 30 Dezember 2019, 13:04:32
Zitat von: Haecksler am 23 November 2019, 19:51:30
Hallo,
ich schalte mit folgendem Ausdruck

(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 dimmen

Licht Wohnzimmer auf 20 dimmen

er gibt folgende Fehlermeldung

Field #20 doesn't exist in Array!

wenn man jedoch auf Zahlen von 0-9 dimmen will z.B.

Licht Wohnzimmer auf 8 dimmen

funktioniert das ohne Probleme.

Ist das ein Bug oder habe ich irgendwo einen Fehler drin.

Gruß,
Stefan

Habe mir das Problem angeschaut, wenn man den Log anschaut wird die 20 als Integer erkannt, trotzdem wird noch in die else Funktion aufgerufen...Denke das ist ein Bug.
Mittlerweile habe ich das ganze in 2 Zeilen aufgespalten, womit das ganze dann auch funktioniert.

Log "Licht Aula 20" => geht nicht
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


Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Haecksler am 30 Dezember 2019, 13:14:33
Habe nochmals ein Problemchen, habe eine T2F_keywordlist in der unteranderem "Weihnachtsbeleuchtung innen" steht, habe nun festgestellt, dass sämtliche Befehle mit Weihnacht.* nicht funktionieren, weil in dem Wort "Weihnacht" die "ACHT" erkannt wird. siehe Log.

Numeral word found. 'Weihnachtsbeleuchtung innen' converted to; 8
Field #8 doesn't exist in Array!
Field #8 doesn't exist in Array
!

Ersetze ich Weihnachtsbeleuchtung durch Osterbeleuchtung funktioniert es....ist vielleicht ein Bug.

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


Gruß,
Stefan
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 08 Dezember 2020, 20:28:56
Lustig, ich habe mich gerade über das selbe geärgert, ich wollte die Weihnachts Musik abspielen, mit "X MAS" hat es dann geklappt :-D

Ursache ist die "acht" in Weinachten, das führt dazu das Talk2Fhem das als "8" umsetzt ;-)

Wollte gerade nach einer neueren Version gucken, aber ich werde das dann wohl rausnehmen müssen, bzw mit space arbeiten etc.

Gruß Michael
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Prof. Dr. Peter Henning am 08 Dezember 2020, 21:00:59
Und wenn man auf Weihelfbeleuchtung umsteigt  ?  8)

LG

pah
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Haecksler am 09 Dezember 2020, 08:03:45
Ist schade, dass hier nicht's mehr passiert...der Ansatz ist genial.
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: obi am 09 Dezember 2020, 18:37:23
Hallo,
Der Modul Autor scheint nicht mehr aktiv zu sein. Ich habe dieses Modul immer im Einsatz, da die Möglichkeit mit Attributen in den Geräten zu arbeiten genial ist. Und die Flexibilität mit der Erkennung von Zeiten usw. auch praktisch ist.
Ich habe bei mir im Modul Quelltext die komplette Nummern Erkennung  auskommentiert. Weil ich auch schon auf diese  Fehler gestoßen bin. Bevor ich den Text von talk2fhem verarbeiten lasse benutze ich die perl Bibliothek  word2num. Das funktioniert prima.

VG Obi
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 10 Dezember 2020, 09:26:55
Genau so habe ich das auch gelöst:

Für Alexa ganz wichtig ersetzen von "8min" in "in 8 Minuten".

Geht mit Sicherheit hübscher, läuft aber gut.



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);

}

Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Haecksler am 10 Dezember 2020, 11:43:17
Hallo ahlermi,
kannst du mir eventuell eine kleine Anleitung geben, wo ich was anpassen muss. Danke!

Ich gehe mal davon aus, dass du Talk2Fhem mit dem voice Reading im echodevice triggerst.
Wie schaut denn da dein Trigger-Dummy aus?

Gruß,
Stefan
Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: ahlermi am 10 Dezember 2020, 16:09:16
Ich arbeite mit dem Alexa Plugin und einem Custom Skill, außerdem natürlich Telebot etc.


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]));
}


Ich habe dafür aber im 39_Talk2Fhem.pm eine Änderung machen müssen damit die Antwort sofort kommt und nicht Asyncron.

sub Talk2Fhem_Set($@)

                #$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);


Custom Skill:

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


Titel: Antw:[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul
Beitrag von: Haecksler am 13 Dezember 2020, 17:04:24
Vielen Dank für die Beschreibung, dass mit dem custom skill ist mir zu kompliziert...werde mal versuchen das meiste mit alexa Routinen hinzubekommen.