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
Er wird versuchen, den Status des Devices "0-9" aufzulösen.
Da es ein String ("") ist, versuch ihn doch zu verketten: @".._[0"."-9]{6}"
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
Probier mal [@".._(0|1|2|3|4|5|6|7|8|9){6}"])
Ich würde [@"^.._(\d){6}"] nehmen.
Hallo Ellert, hallo Damian,
leider kein Erfolg. Bei beiden Versuchen gleiches Ergebnis wie ".._[0-9]{6}" :(
lG
Wolfgang
Mit welcher DOIF-Version tritt das Verhalten auf?
ggf. [@"^.._\d\d\d\d\d\d"]
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
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
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}\$"
Hallo Ellert,
WID([$SELF:Standort], [@"^.._[0-9]{6}$"])
das war die Lösung!
Vielen Dank!