Template DOIF triggert nicht

Begonnen von manne44, 14 Oktober 2026, 12:23:10

Vorheriges Thema - Nächstes Thema

manne44

Hallo,
ich habe folgendes Problem:
Im Dummy "day_flag" werden für die weitere Verarbeitung die aktuellen Sonnenaufgangs- und -untergangszeiten gespeichert. Nach meiner Vorstellung sollte nur dann die Funktion "check_values" aufgerufen werden, wenn sich der in den Klammern "[...]" stehende Trigger-Wert geändert hat. Das ist aber nicht der Fall, sondern bei der Änderung eines Trigger-Wertes werden in allen Zweigen die Funktionen aufgerufen. Das führt auch zum Ziel, weil der betroffene Zweig auch dabei ist, aber das Aufrufen der nicht betroffenen Zweige ist sinnlos. Ich kann mir nicht vorstellen, dass das vom Schöpfer gewollt ist und ich etwas entscheidendes falsch mache.
Frage: Wie mache ich das richtig?

DEF TPL_RTC ({
  if ([day_flag:sunrise]) {check_values("$1","NIGHT_time_open","gt","sunrise","0");}
  if ([day_flag:sunset]) {check_values("$1","NIGHT_time_close","gt","sunset","0");}
        if ([$1:DAY_time_open]) {check_values("$1","DAY_time_open","lt","sunset","9");}
if ([$1:DAY_time_close]) {check_values("$1","DAY_time_close","gt","sunrise","10");}
})
TPL_RTC(rolloHolzL_set)
TPL_RTC(rolloHolzR_set)
TPL_RTC(rolloSchlafL_set)
TPL_RTC(rolloSchlafR_set)
TPL_RTC(rolloVelux_set)
}

Vielen Dank.
RPI5-Trixie mit M.2-512 GByte, Docker, Homematic, WeMos, Shelly, Arduino usw., RPI-Zero mit Bookworm

Damian

Indem du separate Blöcke definierst, Ein Block wird im ganzen ausgeführt, wenn eines der vielen Trigger auslöst.
DEF TPL_RTC (
  {if ([day_flag:sunrise]) {check_values("$1","NIGHT_time_open","gt","sunrise","0");}}
  {if ([day_flag:sunset]) {check_values("$1","NIGHT_time_close","gt","sunset","0");}}
        {if ([$1:DAY_time_open]) {check_values("$1","DAY_time_open","lt","sunset","9");}}
{if ([$1:DAY_time_close]) {check_values("$1","DAY_time_close","gt","sunrise","10");}}
)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

manne44

Ganz großes Dankeschön für diese Aufklärung. Das gesamte DOIF besteht aus 25 Zweigen und es hat mich immer geärgert, dass alles aufgerufen wird. Jetzt ist es schön. Ich werde mal die vielen anderen Perl-DOIFs kontrollieren. Vielleicht kann ich da noch optimieren. Vielen Dank, aucn für das DOIF als solches.
RPI5-Trixie mit M.2-512 GByte, Docker, Homematic, WeMos, Shelly, Arduino usw., RPI-Zero mit Bookworm