DOIF: Warning "condition c02: Odd number of elements in anonymous hash"

Begonnen von m0urs, 01 August 2018, 18:15:35

Vorheriges Thema - Nächstes Thema

m0urs

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!

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

m0urs

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.

Damian

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).
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF