Hallo,
bei der Eingabe von :
define DOIF1 DOIF ([DECT_Cam] eq "inactive")(set Lamp1 on) DOELSEIF ([DECT_Cam] eq "set_.*")(set Lamp2 on)
so funktioniert es:
define DOIF1 DOIF ([DECT_Cam] eq "inactive")(set Lamp1 on) DOELSEIF ([DECT_Cam] eq "set_on")(set Lamp2 on) DOELSEIF ([DECT_Cam] eq "set_off")(set Lamp2 on)
Dummerweise erkennt DOIF kein ".*" in den Werten, wenn das funktionieren würde könnte ich jede Menge Code sparen.
Vielleicht kann man das ja mal nachrüsten!
Gruß
Tom
Zitat von: Tom111 am 03 September 2015, 14:04:48
Vielleicht kann man das ja mal nachrüsten!
Oder Du wirfst mal einen Blick in die Commandref:
ZitatVergleichende Abfragen werden, wie in Perl gewohnt, mit Operatoren ==, !=, <, <=, >, >= bei Zahlen und mit eq, ne, lt, le, gt, ge, =~, !~ bei Zeichenketten angegeben. Logische Verknüpfungen sollten zwecks Übersichtlichkeit mit and bzw. or vorgenommen werden. Selbstverständlich lassen sich auch alle anderen Perl-Operatoren verwenden, da die Auswertung der Bedingung vom Perl-Interpreter vorgenommen wird.
Also nicht eq, sondern =~, dann kannst Du auch Regular Expressions angeben.
Hallo,
danke für die Info, hab ich wohl übersehen in der kurzen commandref.
Die Verwendung von "=~" bringt eher unbefriedigende Ergebnisse als die von "set_on" und "set_off" seperat!
1. wenn ich "=~" bei set_on verwende, erfolgt keine weitere Reaktion mehr bei set_off (das möchte ich aber).
2. folgendes hinzugefügt: attr DOIF1 do always, jetzt erfolgt eine Reaktion bei "set_on" und bei "set_off" wird die Reaktion verdoppelt (quasi zweimal "set_off")
(Wahrscheinlich weil von links nach rechts abgearbeitet wird)
Die Eingabe von :
define DOIF1 DOIF ([DECT_Cam] eq "inactive")(set Lamp1 on) DOELSEIF ([DECT_Cam] eq "set_on")(set Lamp2 on) DOELSEIF ([DECT_Cam] eq "set_off")(set Lamp2 on)
verhält sich genau so wie ich es möchte, deshalb lass ich es so und schließe das Thema hier ab!
Gruß
Tom