Hallo zusammen,
Ich habe in Bezug auf eine Frage hier mal was ausprobiert und bin gescheitert:define Test_1 dummy
attr Test_1 devStateIcon an:general_an:aus aus:general_aus:an
attr Test_1 room Test
define Test_2 dummy
attr Test_2 devStateIcon an:general_an:aus aus:general_aus:an
attr Test_2 room Test
define Test_3 dummy
attr Test_3 devStateIcon an:general_an:aus aus:general_aus:an
attr Test_3 room Test
define Test_4 dummy
attr Test_4 devStateIcon an:general_an:aus aus:general_aus:an
attr Test_4 room Test
define Ergebnis dummy
attr Ergebnis room Test
define di_Test DOIF (["^Test_"] eq "an") (set Ergebnis ein) DOELSE (set Ergebnis aus)
attr di_Test do always
attr di_Test room Test
Ich hätte jetzt erwartet, dass das Einschalten eines Dummy immer das Ergebnis auf ein setzt und wenn alle Dummys aus sind auch das DOELSE greift. Das geht aber nicht, stattdessen greift das DOELSE, wenn ich einen Dummy einschalte :o
verwirrte Grüße
Niels
Dann schau dir doch mal das List von Ergebnis an. Oder häng es hier mit rein.
Na ja, dann doch lieber das list von di_Test ;)
Hier mal nach Test_1 = an:
Internals:
CFGFN
DEF (["^Test_"] eq "an") (set Ergebnis ein)
DOELSE
(set Ergebnis aus)
NAME di_Test
NR 57737
NTFY_ORDER 50-di_Test
STATE cmd_2
TYPE DOIF
Readings:
2016-05-02 09:21:01 Device Test_1
2016-05-02 09:21:01 cmd_event Test_1
2016-05-02 09:21:01 cmd_nr 2
2016-05-02 09:21:01 matched_event_c1_1 an
2016-05-02 09:21:01 state cmd_2
Condition:
0 EventDoIf('^Test_',$hash,'',0) eq "an"
Devices:
Do:
0:
0 set Ergebnis ein
1:
0 set Ergebnis aus
Helper:
event an
globalinit 1
last_timer 0
sleeptimer -1
timerdev Test_1
timerevent an
triggerDev Test_1
timerevents:
an
triggerEvents:
an
Internals:
Itimer:
Readings:
Regexp:
0:
0 ^Test_
All:
0 ^Test_
State:
Trigger:
Attributes:
do always
room Test
Da verstehe ich nicht, warum der Status auf cmd_2 steht...
Und hier Test_1 wieder aus:Internals:
CFGFN
DEF (["^Test_"] eq "an") (set Ergebnis ein)
DOELSE
(set Ergebnis aus)
NAME di_Test
NR 57737
NTFY_ORDER 50-di_Test
STATE cmd_2
TYPE DOIF
Readings:
2016-05-02 09:25:01 Device Test_1
2016-05-02 09:25:02 cmd_event Test_1
2016-05-02 09:25:02 cmd_nr 2
2016-05-02 09:25:01 matched_event_c1_1 aus
2016-05-02 09:25:02 state cmd_2
Condition:
0 EventDoIf('^Test_',$hash,'',0) eq "an"
Devices:
Do:
0:
0 set Ergebnis ein
1:
0 set Ergebnis aus
Helper:
event aus
globalinit 1
last_timer 0
sleeptimer -1
timerdev Test_1
timerevent aus
triggerDev Test_1
timerevents:
aus
triggerEvents:
aus
Internals:
Itimer:
Readings:
Regexp:
0:
0 ^Test_
All:
0 ^Test_
State:
Trigger:
Attributes:
do always
room Test
OK, funktionieren wird das wohl eh nicht, weil der Trigger nun das DOELSE unabhängig vom Status der anderen Test_-Dummys fordert, aber warum Teil 1 nicht geht...
ahnungslose Grüße
Niels
Zitat von: Muschelpuster am 02 Mai 2016, 09:28:16
Na ja, dann doch lieber das list von di_Test ;)
Hier mal nach Test_1 = an:
Internals:
CFGFN
DEF (["^Test_"] eq "an") (set Ergebnis ein)
DOELSE
(set Ergebnis aus)
NAME di_Test
NR 57737
NTFY_ORDER 50-di_Test
STATE cmd_2
TYPE DOIF
Readings:
2016-05-02 09:21:01 Device Test_1
2016-05-02 09:21:01 cmd_event Test_1
2016-05-02 09:21:01 cmd_nr 2
2016-05-02 09:21:01 matched_event_c1_1 an
2016-05-02 09:21:01 state cmd_2
Condition:
0 EventDoIf('^Test_',$hash,'',0) eq "an"
Devices:
Do:
0:
0 set Ergebnis ein
1:
0 set Ergebnis aus
Helper:
event an
globalinit 1
last_timer 0
sleeptimer -1
timerdev Test_1
timerevent an
triggerDev Test_1
timerevents:
an
triggerEvents:
an
Internals:
Itimer:
Readings:
Regexp:
0:
0 ^Test_
All:
0 ^Test_
State:
Trigger:
Attributes:
do always
room Test
Da verstehe ich nicht, warum der Status auf cmd_2 steht...
Und hier Test_1 wieder aus:Internals:
CFGFN
DEF (["^Test_"] eq "an") (set Ergebnis ein)
DOELSE
(set Ergebnis aus)
NAME di_Test
NR 57737
NTFY_ORDER 50-di_Test
STATE cmd_2
TYPE DOIF
Readings:
2016-05-02 09:25:01 Device Test_1
2016-05-02 09:25:02 cmd_event Test_1
2016-05-02 09:25:02 cmd_nr 2
2016-05-02 09:25:01 matched_event_c1_1 aus
2016-05-02 09:25:02 state cmd_2
Condition:
0 EventDoIf('^Test_',$hash,'',0) eq "an"
Devices:
Do:
0:
0 set Ergebnis ein
1:
0 set Ergebnis aus
Helper:
event aus
globalinit 1
last_timer 0
sleeptimer -1
timerdev Test_1
timerevent aus
triggerDev Test_1
timerevents:
aus
triggerEvents:
aus
Internals:
Itimer:
Readings:
Regexp:
0:
0 ^Test_
All:
0 ^Test_
State:
Trigger:
Attributes:
do always
room Test
OK, funktionieren wird das wohl eh nicht, weil der Trigger nun das DOELSE unabhängig vom Status der anderen Test_-Dummys fordert, aber warum Teil 1 nicht geht...
ahnungslose Grüße
Niels
Angaben der Form ["..."] stellen eine Ereignisabfrage dar und die kann nur wahr (zum Zeitpunkt der Triggerung) oder nicht wahr sein.
Daher immer nur (["^Test_"]) (set ...) angeben.
Gruß
Damian
Danke, das macht ja auch irgendwie Sinn - ansonsten wäre ja auch immer die Frage, ob es sich hier um eine UND- oder eine ODER-Verknüpfung handeln würde.
verstandene Grüße
Niels