FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Tom111 am 03 September 2015, 14:04:48

Titel: DOIF kann kein ".*" ?
Beitrag von: Tom111 am 03 September 2015, 14:04:48
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







Titel: Antw:DOIF kann kein ".*" ?
Beitrag von: Brockmann am 03 September 2015, 14:16:28
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.
Titel: Antw:DOIF kann kein ".*" ?
Beitrag von: Tom111 am 03 September 2015, 15:13:22
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