FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: StefanStrobel am 25 Januar 2016, 20:29:21

Titel: [patch] fhem.pl CommandAttr und Wildcard-Attribute
Beitrag von: StefanStrobel am 25 Januar 2016, 20:29:21
Hallo,

wenn ein Modul Wildcard-Attribute verwendet und gleichzeitig Hinweise für fhemweb an die Attribute hängt, wie z.B. get[0-9]*RegOpt:s,i,g
dann kann das zu Fehlern führen, da CommandAttr versucht bei solchen Attributen den gesamten String als regex zu matchen und die Optionen passen dann evt. nicht.
Folgende kleine Änderung wäre eine Lösungsmöglichkeit:

# diff -u fhem.pl.orig fhem.pl
--- fhem.pl.orig        2016-01-25 20:21:29.485961535 +0100
+++ fhem.pl     2016-01-25 20:22:07.557480102 +0100
@@ -2448,7 +2448,9 @@
     if(" $list " !~ m/ ${attrName}[ :;]/) {
        my $found = 0;
        foreach my $atr (split("[ \t]", $list)) { # is it a regexp?
-         if(${attrName} =~ m/^$atr$/) {
+         $atr =~ /^([^ ;:]+)(:.*)?$/;
+         my $base = $1;
+         if(${attrName} =~ m/^$base$/) {
            $found++;
            last;
          }


Gruss
    Stefan
Titel: Antw:[patch] fhem.pl CommandAttr und Wildcard-Attribute
Beitrag von: rudolfkoenig am 26 Januar 2016, 08:36:58
Habs eingecheckt mit leichter Aenderung: im neuen Regexp das Leerzeichen entfernt, da es wg. split nicht mehr vorkommen duerfte.

Beim betrachten der Funktion habe ich festgestellt, dass ich nicht mehr weiss, wozu ; als Trenner zu verwenden ist, und ich vermute, das Feature funktioniert nicht. Ich meine es hatte irgendetwas mit Optional- vs. Pflichtfeld zu tun. Kann sich jemand besser erinnern?