FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: m0urs am 01 August 2018, 18:15:35

Titel: DOIF: Warning "condition c02: Odd number of elements in anonymous hash"
Beitrag von: m0urs am 01 August 2018, 18:15:35
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!
Titel: Antw:DOIF: Warning "condition c02: Odd number of elements in anonymous hash"
Beitrag von: Damian am 01 August 2018, 18:23:28
{isAtHome()} ohne geschweifte Klammern angeben.
Titel: Antw:DOIF: Warning "condition c02: Odd number of elements in anonymous hash"
Beitrag 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.
Titel: Antw:DOIF: Warning "condition c02: Odd number of elements in anonymous hash"
Beitrag von: Damian am 01 August 2018, 19:07:27
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).