[39_Talk2Fhem.pm] Flexible Sprachsteuerunghilfsmodul

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

Vorheriges Thema - Nächstes Thema

swsmily

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.

Phill

 @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ß
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

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

Abercrombie1892

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?

Phill

#213
Ich habe mal eine neue Version eingecheckt. Ab morgen verfügbar.
update 39_Talk2Fhem
reload 39_Talk2Fhem



  • Es sind jetzt verschachtelte Klammern im Regexp-Teil möglich. Wunsch von swsmily
  • Klammern sind jetzt auch bei Modifikatorteil möglich
  • Die Reihenfolge in der die Typenmodifikator angegeben werden ist jetzt bindent. Mir ist bei den letzten Beiträgen aufgefallen, dass bei eigenen Wörtern es nicht wirklich mit meinen vordefinierten RegExp (true / false) kombinierbar war. Siehe Beispiel unten.
  • Wenn jetzt eine Uhrzeit angegeben ist und die aktuelle Zeit mindestens eine Stunde weiter ist, wird ein Tag später angenommen. Ansonsten wird der Befehl gleich ausgeführt. "Morgen um 20 Uhr." geht natürlich auch.
  • Werden mehrere Befehle abgesetzt reicht jetzt ein Semikolon.

@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
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

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

Abercrombie1892

#214
ich hab jetzt einfach mal 90,45,45,else,90 als weitere modwordlist angelegt. testen kann ich es leider erst morgen..

danke

swsmily

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ß  :)

Abercrombie1892

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

Phill

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.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

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

Phill

@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.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

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

Abercrombie1892

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.

swsmily

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

swsmily

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

Phill

#222
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ß
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

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

swsmily

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.

Abercrombie1892

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