[erledigt] Nichtauslösung des DOIF bei Ereignis und Zeit-Kombination

Begonnen von münster, 14 Februar 2019, 20:16:50

Vorheriges Thema - Nächstes Thema

münster

Hallo Gemeinde,

hoffe mein Fall gehört tatsächlich in den Bereich DOIF. Fürchte fast es gehört in den Bereich Anfängerfragen! Bin nun schon seit mehreren Tagen am grübeln und ausprobieren warum mein gewähltes DOIF nicht funktioniert. Habe die Commandref als auch jegliche Bereiche zur Erläuterung des DOIF durchforstet und Beispiele versucht für meinen Fall zu übertragen. Langsam gebe ich auf. Zumal ich mir ziemlich sicher bin nichts falsches definiert zu haben. Aber die Realität sagt, dass nichts zur gegebenen Zeit auslöst.

Internals:
   DEF        (["Fenster_.*:Window.*Open"] and [07:10|Mo Di Mi Do Fr]) (set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"])
   FUUID      5c602886-f33f-15ce-3168-fee279a365346b02
   MODEL      FHEM
   NAME       Warnung_FHT_Fenster
   NR         432
   NTFY_ORDER 50-Warnung_FHT_Fenster
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2019-02-14 19:40:16   cmd             0
     2019-02-14 19:40:16   mode            enabled
     2019-02-14 19:40:16   state           initialized
     2019-02-14 19:40:16   timer_01_c01    15.02.2019 07:10:00|MoDiMiDoFr
   Regex:
     cond:
       :
         0:
           "Fenster_.*:Window.*Open" Fenster_.*:Window.*Open
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('Fenster_.*',$hash,'Window.*Open',0) and ::DOIF_time_once($hash,0,$wday,"MoDiMiDoFr")
   days:
     0          MoDiMiDoFr
   devices:
   do:
     0:
       0          set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"]
     1:
   helper:
     globalinit 1
     last_timer 1
     sleeptimer -1
   intervalfunc:
   itimer:
   localtime:
     0          1550211000
   realtime:
     0          07:10:00
   time:
     0          07:10:00
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1550211000:
       localtime  1550211000
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always
   room       Telegram


define Warnung_FHT_Fenster DOIF (["Fenster_.*:Window.*Open"] and [07:10|Mo Di Mi Do Fr]) (set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"])


Ohne das AND funktioniert jedes Ereignis für sich.

define Warnung_FHT_Fenster DOIF (["Fenster_.*:Window.*Open"]) (set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"])


Funktioniert --> Nachricht auf Telegram bzw. Handy kommt an mit der entsprechenden Meldung.

define Warnung_FHT_Fenster DOIF ([07:10|Mo Di Mi Do Fr]) (set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"])


Funktioniert --> Nachricht auf Telegram bzw. Handy kommt an mit der entsprechenden Meldung.

Hoffe Ihr könnt mir ggfs. den richtigen Schubser geben.

Im Voraus vielen Dank!

Ellert

#1
["Fenster_.*:Window.*Open"] and [07:10|Mo Di Mi Do Fr] Da FHEM alle Ereignisse und Timer sequenziell abarbeitet kann ein Event und ein Zeitpunk niemals gleichzeitig wahr sein.
ZitatHabe die Commandref als auch jegliche Bereiche zur Erläuterung des DOIF durchforstet
Das steht schon in einem der ersten Abschitte der deutschsprachigen Befehlsreferenz zu DOIF https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
ZitatDie logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann
Du könntest eine Zeitspanne verwenden, statt Events Readings oder eine Oder-Verknüpfung, dass hängt davon ab, was genau Du erreichen möchtest.

amenomade

Oder aggregation Funktion im DOIF:
([07:10|Mo Di Mi Do Fr] and [?#"^Fenster":Window:"Open"] != 0)
   (set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"])


(angenommen, dass die Devices mit Fenster anfangen, und ein Reading namens "Window" haben, das den Wert "Open" mit grossem O haben kann
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

münster

Hallo Ellert und amenomade,

habt vielen Dank für Eure schnelle Rückmeldung. Vielleicht noch zur Erläuterung. Letztlich will ich früh 7:10, bevor ich das Haus verlasse, eine Prüfung ob alle Fenster zu sind. Da ich frühmorgens noch faul bin und manchmal auch eilig habe, will ich eine Nachricht welche Fenster noch offen bzw. zu schliessen sind. Hab ein Talent dafür die Fenster offen zu lassen auch wenn niemand da ist.

ZitatDas steht schon in einem der ersten Abschitte der deutschsprachigen Befehlsreferenz zu DOIF https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

Na was so ein kleiner Satz in dem langen Text so bewirken kann. Hab ich tatsächlich überlesen bzw. evtl. auch nicht 100% verstanden was das für meine Funktion für Auswirkungen hat.

Zitat([07:10|Mo Di Mi Do Fr] and [?#"^Fenster":Window:"Open"] != 0)
   (set teleBot msg @FHEM ALARM!!!   FENSTER OFFEN! [@"^Fenster":Window:"Open"])

Hab´mal schnell deinen Vorschlag ausprobiert und getestet. Hmm, was soll sagen?! Funktioniert auf Anhieb!  :)

Muss aber gestehen dass ich den Code bzw. aggregation noch nicht ganz durchschaut habe. Werde mich auf jeden Fall jetzt damit im Detail auseinandersetzen. Damit ich auch verstehe was mir aufgezeigt wurde.

Nochmal vielen Dank!