Hallo,
könnte mir bitte jemand auf die Sprünge helfen, warum ich bei dem folgenden DOIF die Warning "condition c02: Odd number of elements in anonymous hash" bekomme? Die Logik selbst scheint zwar soweit zu funktionieren, ich hätte gerne aber diese Fehlermeldung beseitigt ;-)
Hier die Definition meines DOIF:
(
([xx.HUE.lichtsensor_aussen:lightlevel] < 29000)
and
[15:00-23:59]
and
{isAtHome()}
)
(
set xx.ST.positionslichter on
)
DOELSEIF (
([xx.HUE.lichtsensor_aussen:lightlevel] > 32000)
and
[15:00-23:59]
and
{isAtHome()}
)
(
set xx.ST.positionslichter off,
set wz.ST.wandlicht_hinten off,
set wz.HUE.Ecke off
)
DOELSE ()
Die Funktion "isAtHome()" ist folgendermassen definiert:
sub isAtHome() {
## Ist jemand zuhause? ##
my $state = ReadingsVal("Wohnung", "state", "home");
my $guest = ReadingsVal("rg_Gast", "state", "absent");
if ( ($state eq "home") || ($state eq "asleep") || ($guest eq "home")){
return 1;
}
return 0;
}
Vielen Dank schon mal!
{isAtHome()} ohne geschweifte Klammern angeben.
Ah, das war es. Vielen Dank. Dann hatte ich da einen Denkfehler. Das heisst innerhalb eines Bedingungsblocks ist immer alles Perl-Syntax? Ich dachte das wäre nur der Fall, wenn man den Block mit "{}" und nicht mit "()" definiert.
Zitat von: m0urs am 01 August 2018, 18:29:09
Ah, das war es. Vielen Dank. Dann hatte ich da einen Denkfehler. Das heisst innerhalb eines Bedingungsblocks ist immer alles Perl-Syntax? Ich dachte das wäre nur der Fall, wenn man den Block mit "{}" und nicht mit "()" definiert.
Das gilt nur für den Ausführungszweig. DOIF-Bedingung ist immer Perl (außerhalb eckiger Klammern).