diff --git a/fhem/FHEM/98_IF.pm b/fhem/FHEM/98_IF.pm
index 79dde662d..9b7881f76 100644
--- a/fhem/FHEM/98_IF.pm
+++ b/fhem/FHEM/98_IF.pm
@@ -180,10 +180,14 @@ EvalAllIf($)
($beginning,$eval,$err,$tailBlock)=GetBlockIf($tailBlock,'[\{\}]');
return ($eval,$err) if ($err);
if ($eval) {
+ if (substr($eval,0,1) eq "(") {
my $ret = eval $eval;
return($eval." ",$@) if ($@);
$eval=$ret;
- }
+ } else {
+ $eval="{".$eval."}";
+ }
+ }
$cmd.=$beginning.$eval;
}
return ($cmd,"");
@@ -397,16 +401,16 @@ CommandIF($$)
Filter by "on" and "off" in the status of the device "move":
- define activity notify move IF ([move:&STATE:[(on|off)] eq "on" and $we) (set lamp off)
+ define activity notify move IF ([move:&STATE:[(on|off)]] eq "on" and $we) (set lamp off)
Example of the use of Readings in the then-case:
define temp at 18:00 IF ([outdoor:temperature] > 10) (set lampe [dummy])
- If an expression is to be evaluated first in a FHEM command, then it must be enclosed in braces.
+ If an expression is to be evaluated first in a FHEM command, then it must be enclosed in brackets.
For example, if at 18:00 clock the outside temperature is higher than 10 degrees, the desired temperature is increased by 1 degree:
- define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {[thermostat:desired-temp:d]+1})
+ define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {([thermostat:desired-temp:d]+1)})
Multiple commands are separated by a comma instead of a semicolon, thus eliminating the doubling, quadrupling, etc. of the semicolon:
@@ -450,6 +454,7 @@ CommandIF($$)
In der Bedingung des IF-Befehls wird die vollständige Syntax des Perl-if unterstützt. Mögliche Operatoren sind u. a.:
+
define check at +00:10 IF ([outdoor:state] eq "open") (set switch1 on)
define test notify lamp
IF ([lamp] eq "on") (
@@ -543,22 +551,42 @@ CommandIF($$)
(set switch on)
+ Mehrzeilige Eingaben in der cfg-Datei müssen dagegen jeweils am Zeilenende mit \ verknüpft werden (das ist eine Eigenschaft von FHEM und nicht von IF):define test notify lamp \
+ IF ([lamp] eq "on") (\
+
+ IF ([outdoor:humidity] < 70)\
+
+ (set lamp off)\
+
+ ELSE\
+
+ (set lamp on)\
+
+
+ ) ELSE\
+
+ (set switch on)
+
+
+
Filtern nach Zahlen im Reading "temperature":define settemp at 22:00 IF ([tempsens:temperature:d] >= 10) (set heating on)
define activity notify move IF ([move:&STATE:[(on|off)] eq "on" and $we) (set lamp off)
+ define activity notify move IF ([move:&STATE:[(on|off)]] eq "on" and $we) (set lamp off)
define temp at 18:00 IF ([outdoor:temperature] > 10) (set lampe [dummy])
define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {[thermostat:desired-temp:d]+1})
+ define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {([thermostat:desired-temp:d]+1)})