Hauptmenü

DOIF kann kein ".*" ?

Begonnen von Tom111, 03 September 2015, 14:04:48

Vorheriges Thema - Nächstes Thema

Tom111

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







FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V

Brockmann

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.

Tom111

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
FHEM 5.9 auf Raspberry Pi - 3B+ - Stretch-5.10.88+ | CUL868 CC1101 - USB - Lite module - V3 FW 1.67
Fritz!Box 7490 OS 07.29 / Fritz!Dect200 / Fritz!Powerline 546E
FS20ST-4/ FS20 DI-5/ FS20LS/ FS20 PIRI-2-KU/ FS20 TFK/ FS20S4A/FS20 SU-3/FS20 S20-3
HMS100TF/FHT80TF-2/ASH2200/S300TH/MiLight-Bridge V