[gelöst] Problem mit regulärem Ausdruck und uiTable

Begonnen von ZeitlerW, 18 Dezember 2017, 14:03:53

Vorheriges Thema - Nächstes Thema

ZeitlerW

Hallo zusammen,

ich möchte mit Hilfe der uiTable Funktion meinen Konfigeditor erweitern. Es soll ein dropdown Feld aus bestehenden Devices angezeigt werden.

Ich bin wie folgt vorgegangen:

defmod test DOIF (1)
attr test room test
attr test uiTable WID([$SELF:Standort],[@".._[0-9]{6}"])


Meine Vermutung wäre nun gewesen, daß der reguläre Ausdruck das gleiche ergibt wie bei list

list .._[0-9]{6}

TH_000001
TH_000002
TH_000003


leider wird der Regexp mit folgendem Ergebnis ausgeführt (entspricht list .._.*):

list .._.*

TH_000001
TH_000001_TUER_History
TH_000001_Temp
TH_000001_Temp_FL
TH_000001_Temp_SVG
TH_000001_Tuer
TH_000001_map
TH_000002
TH_000002_TUER_History
TH_000002_Temp
TH_000002_Temp_FL
TH_000002_Temp_SVG
TH_000002_Tuer
TH_000002_map
TH_000003
TH_000003_map



Ist das ein Bug oder Feature?

Vielen Dank
Wolfgang

Per

Er wird versuchen, den Status des Devices "0-9" aufzulösen.
Da es ein String ("") ist, versuch ihn doch zu verketten: @".._[0"."-9]{6}"

ZeitlerW

Hallo Per,

das funzt leider nicht.

Unmatched [ in regex; marked by <-- HERE in m/.._[ <-- HERE 0/ at ./FHEM/98_DOIF.pm line 2073.

lG
Wolfgang

Ellert

Probier mal [@".._(0|1|2|3|4|5|6|7|8|9){6}"])

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ZeitlerW

Hallo Ellert, hallo Damian,


leider kein Erfolg. Bei beiden Versuchen gleiches Ergebnis wie ".._[0-9]{6}" :(

lG
Wolfgang

Ellert

#6
Mit welcher DOIF-Version tritt das Verhalten auf?

ggf.  [@"^.._\d\d\d\d\d\d"]

ZeitlerW

#7
Hallo Ellert,

... leider nicht ..
Internals:
   DEF        (1)
   NAME       test
   NR         55
   NTFY_ORDER 50-test
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-12-18 13:05:29   Bezeichnung     
     2017-12-18 13:05:31   EUI             
     2017-12-18 13:46:26   Hallo           1
     2017-12-19 06:19:42   Standort        TH_000001
     2017-12-18 13:08:41   Typ             
     2017-12-18 13:03:34   cmd             0
     2017-12-18 13:03:34   state           initialized
   Regex:
     uiTable:
       :
         test_uiTable_c_0_0_0_0:
           "^.._\d\d\d\d\d\d" ^.._\d\d\d\d\d\d
       test:
         test_uiTable_c_0_0_0_0:
           Standort   ^test$:^Standort:
   condition:
     0          1
   devices:
   do:
     0:
       0         
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   uiState:
   uiTable:
     dev        test
     reading    Standort
     table:
       0:
         0:
           0:
             0          DOIF_Widget($hash,$reg,'test_uiTable_c_0_0_0_0',ReadingValDoIf($hash,'test','Standort'),"",AggregateDoIf($hash,'@','^.._\d\d\d\d\d\d'),'test','Standort')
     tc:
     td:
       0:
     tr:
Attributes:
   room       test
   uiTable    WID([$SELF:Standort],[@"^.._\d\d\d\d\d\d"])


Aktueller Stand von DOIF 15558

Nachtrag :

Ich glaube ich weiss warum die regexp matched: Alle devices sind in Räumen die mit ".._[0-9]{6}" matchen.


lG
Wolfgang

Ellert

Ich kann das Problem nicht nachstellen, bei mir funktioniert alles, wie es soll.


defmod agr_rgx DOIF (1)
attr agr_rgx uiTable WID([$SELF:liste],[@"^...\d\d"])


Vielleicht ist bei Deiner Spielerei irgendwas verbogen worden.

vieleicht hilft shutdown restart oder in hartnäckigen Fällen auch shutdown und sudo reboot

Ellert

list verwendet wie auch notify einen verfälschten regulären Ausdruck indem ^ voran und $ nachgestellt wird, das ist leider nicht in der Commandref dokumentiert. DOIF verwendet den regulären Ausdruck so, wie Du ihn angibst.

Also noch mal versuchen mit  [@"^.._(\d){6}\$"


ZeitlerW

Hallo Ellert,

WID([$SELF:Standort], [@"^.._[0-9]{6}$"])

das war die Lösung!


Vielen Dank!