Warum wird 22:00 das else ausgeführt?

Begonnen von roedert, 16 August 2021, 21:58:32

Vorheriges Thema - Nächstes Thema

roedert

Fürs Gartenlicht habe ich dieses DOIF
([16:00-23:00] && ($month >= 3 && $month <= 9) && [Aussen.Helligkeit:brightness]<20) (
  {
    Log 2,"DOIF $SELF: $DEVICE $EVENT cmd_1";
    fhem("set Garten.Licht scene abends_Sommer");
  }
)
DOELSEIF ([16:00-22:00] && ($month >= 10 || $month <= 2) && [Aussen.Helligkeit:brightness]<20 && [Weihnachtsbeleuchtung]==1) (
  {
    Log 2,"DOIF $SELF: $DEVICE $EVENT cmd_2";
    fhem("set Garten.Licht scene Weihnachten");
  }
)
DOELSEIF ([16:00-22:00] && ($month >= 10 || $month <= 2) && [Aussen.Helligkeit:brightness]<20) (
  {
    Log 2,"DOIF $SELF: $DEVICE $EVENT cmd_3";
    fhem("set Garten.Licht scene abends_Winter");
  }
)
DOELSE (
  {
    Log 2,"DOIF $SELF: $DEVICE $EVENT cmd_else";
    fhem("set Garten.Licht scene off");
  }
)

Warum wird um genau 22:00 das DOELSE ausgeführt?
Eigentlich sind doch alle Bedingungen des ersten Blocks erfüllt .... es ist zwischen 16 und 23:00, Monat liegt zwischen 3 und 9 und Aussen.Helligkeit:brightness ist auch kleiner 20.

Pfriemler

Ich würde vermuten: Auch um 22 Uhr wird ein Timerevent ausgelöst für das DOIF. Aktuell lassen die übrigen Bedingungen dann aber nur das DOELSE übrig.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Damian

Zitat von: roedert am 16 August 2021, 21:58:32
Warum wird um genau 22:00 das DOELSE ausgeführt?
Eigentlich sind doch alle Bedingungen des ersten Blocks erfüllt .... es ist zwischen 16 und 23:00, Monat liegt zwischen 3 und 9 und Aussen.Helligkeit:brightness ist auch kleiner 20.

Weil der erste DOIF-Fall nicht betrachtet wird, weil dort der 22:00 Uhr-Trigger nicht vorkommt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF