FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Xcoder am 31 Dezember 2015, 09:24:29

Titel: DOIF mit IF im Kommando
Beitrag 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
Titel: Antw:DOIF mit IF im Kommando
Beitrag von: Damian am 31 Dezember 2015, 10:51:29
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
Titel: Antw:DOIF mit IF im Kommando
Beitrag von: Xcoder am 31 Dezember 2015, 15:57:06
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.