Hauptmenü

DOIF mit IF im Kommando

Begonnen von Xcoder, 31 Dezember 2015, 09:24:29

Vorheriges Thema - Nächstes Thema

Xcoder

Hallo,

Ich möchte in einem DOIF nach Ablauf einer Verzögerung den Status noch einmal prüfen. Leider wird der Status im IF schon bei vor Ablauf der 5 min aufgelöst und das erzeugte AT hat dann nicht mehr die Bedingung sondern schon das Resultat also <Heizbetrieb eq "Heizbetrieb">

Wie kann ich bewirken, dass die Kondition im IF erst nach der Verzögerung ausgewertet wird?

define SWC_170_heating DOIF ([SWC_170:opStateHeatPump3] eq "Heizbetrieb")
(define EIB_30f0_at at +00:05:00 IF ([SWC_170:opStateHeatPump3] eq "Heizbetrieb") (set EIB_30f0 on))
DOELSE (set EIB_30f0 off)

Gruss

Damian

Zitat von: Xcoder am 31 Dezember 2015, 09:24:29
Hallo,

Ich möchte in einem DOIF nach Ablauf einer Verzögerung den Status noch einmal prüfen. Leider wird der Status im IF schon bei vor Ablauf der 5 min aufgelöst und das erzeugte AT hat dann nicht mehr die Bedingung sondern schon das Resultat also <Heizbetrieb eq "Heizbetrieb">

Wie kann ich bewirken, dass die Kondition im IF erst nach der Verzögerung ausgewertet wird?

define SWC_170_heating DOIF ([SWC_170:opStateHeatPump3] eq "Heizbetrieb")
(define EIB_30f0_at at +00:05:00 IF ([SWC_170:opStateHeatPump3] eq "Heizbetrieb") (set EIB_30f0 on))
DOELSE (set EIB_30f0 off)

Gruss
In den meisten Fällen sind IF-Abfragen und at-Definitionen beim DOIF überflüssig.  Für Verzögerungen gibt es das wait-Attribut beim DOIF:

define SWC_170_heating DOIF ([SWC_170:opStateHeatPump3] eq "Heizbetrieb")
  (set EIB_30f0 on)
DOELSE
  (set EIB_30f0 off)

attr SWC_170_heating wait 300



Gruß

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

Xcoder

Hmm, jetzt wo ich die FHEM Referenz noch einmal lese, sehe ich auch ein, dass ich mir damit das IF sparen kann... DOIT ist wirklich die eierlegende Wollmilchsau...

Danke und Gruss.