FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jazzor am 24 September 2019, 22:59:20

Titel: DOIF - Probleme mit logik bei Zeitraum und Nebenbedingung
Beitrag von: jazzor am 24 September 2019, 22:59:20
Hallo zusammen,

ich versuche derzeit eine kleine Abwesenheitssimulation zu schreiben und stehe gerade auf dem Schlauch.

Der Code ist folgender:
([22:34-22:35] and [?Sicherheit:"^armaway$"]) (set Telegram msg doif)
DOELSE (set Telegram msg doelse)


Ich erwarte eigentlich, dass wenn das Interval beginnt und Sicherheit auf armaway ist, der DOIF Teil auslöst und wenn das Intervall endet der DOELSE-Teil abgearbeitet wird.
Sowohl das Interval als auch die Abfrage auf armaway funktionieren einzeln problemlos.
Warum geht das dann nicht in dieser logischen Verknüpfung?
Viele Grüße!
Titel: Antw:DOIF - Probleme mit logik bei Zeitraum und Nebenbedingung
Beitrag von: swsmily am 24 September 2019, 23:09:55
So wie ich das sehe fragst du mit [?Sicherheit:"^armaway$"] nicht den Status von Sicherheit ab.
Ich würde sagen es müsste so aussehen:

([22:34-22:35] and [?Sicherheit] eq "armaway"])
Titel: Antw:DOIF - Probleme mit logik bei Zeitraum und Nebenbedingung
Beitrag von: jazzor am 25 September 2019, 06:39:45
Danke für die Nachricht!
Ich werde das nachher mal ausprobieren.
Die Abfrage habe ich 1:1 aus dem Doif-Dialog des Event-Monitors übernommen. Wäre davon ausgegangen, dass der richtig ist?!
Titel: Antw:DOIF - Probleme mit logik bei Zeitraum und Nebenbedingung
Beitrag von: Damian am 25 September 2019, 07:36:14
Zitat von: jazzor am 25 September 2019, 06:39:45
Die Abfrage habe ich 1:1 aus dem Doif-Dialog des Event-Monitors übernommen. Wäre davon ausgegangen, dass der richtig ist?!

Für Event-Abfragen ja, aber du willst einen Status abfragen (und das ohne Trigger) - das ist ein großer Unterschied.
Titel: Antw:DOIF - Probleme mit logik bei Zeitraum und Nebenbedingung
Beitrag von: jazzor am 25 September 2019, 22:19:52
Okay, danke erstmal. Das funktioniert... fast.
Die Abfrage ist richtig, allerdings habe ich nicht bedacht, dass am Ende eines Zeitraums immer der DOELSE Teil durchlaufen wird (also auch unabhängig von Sicherheit, da der Zeitraum dann als false evaluiert wird).
Muss also den Zeitraum in verschiedene zeitpunkte unterteilen und die einzelnen Befehle mit DOELSEIF einleiten.