Hauptmenü

[Gelöst]Bedingtes DOIF

Begonnen von AGi2019, 29 Dezember 2020, 16:14:15

Vorheriges Thema - Nächstes Thema

AGi2019

Hallo zusammen,

ich verzweifle gerade und benötige mal Hilfe von euch.

Ich versuche folgendes Problem zu lösen und finde keinen Weg:
pseudo:
Wenn Fenster auf,
dann warte X Minuten und sende anschließend Message1
Sollte X Minuten abgelaufen und die Message1 versendet sein, sende Message2 wenn das Fenster geschlossen wird.
Sollte das Fenster vor Ablauf von X Minuten geschlossen werden, sende KEINE Message.

Ich habe mal ein DOIF angefangen.
Folgende Atribute sind gesetzt:
do resetwait
wait 10:0 (zum Test nur 10 Sekunden)
define doFenster_Warning DOIF ([Fenster] eq "open")\
{\
  fhem('set WEB_TelegramBot msg @123 Fenster schon 10Minuten geöffnet');;\
}\
DOELSEIF ([Fenster] eq "closed")\
{\
  fhem('set WEB_TelegramBot msg @123 Fenster wieder geschlossen')\
}\
attr doFenster_Warning do resetwait
attr doFenster_Warning wait 10:0


Das funktioniert natürlich nicht, aber vielleicht kann mit jmd den entscheidenen Tipp (Codeschnipsel) geben :).

Vielen Dank im Voraus für eure Unterstützung und allen einen schönen Jahreswechel.
AGi


###### UPDATE ######

Ich habe eine Lösung gefunden.
Ich arbeite mit einer Hilfsvariablen...varHelp
defmod doFenster_Warning DOIF ([Fenster] eq "open")\
{\
  fhem('set WEB_TelegramBot msg @123 Fenster schon 10Minuten geöffnet');;\
  fhem('setreading doFenster_Warning varHelp gesendet');;\
}\
DOELSEIF (([Fenster] eq "closed") and ([doFenster_Warning:varHelp] eq "gesendet"))\
{\
  fhem('set WEB_TelegramBot msg @123 Fenster wieder geschlossen');;\
fhem('setreading doFenster_Warning varHelp init');;\
}\
DOELSEIF ([Fenster] eq "closed")\
{\
  fhem('setreading doFenster_Warning varHelp init');;\
}\
\

attr doFenster_Warning do resetwait
attr doFenster_Warning readingList varHelp
attr doFenster_Warning wait 10:0