Hallo zusammen,
ich möchte, dass wenn der Bewohner Leonardo sein Dachfenster offen vergisst eine Mail geschcikt wird. Dazu folgenden code:
define MailFensterLeo DOIF ([rr_Leonardo] eq "absent" or [rr_Leonardo] eq "gone" and [MelderFENKZL] eq "open") ({DebianMail('xxx@googlemail.com','Eines der Fenster ist noch offen','Eines der Fenster ist noch offen, bitte keine Fenster offen lassen wenn es regnen könnte. ')})
attr MailFensterLeo do always
Leider bekomme ich die Mail auch wenn sich nur der Zustand der Fesnters verädnert, und auch wenn sich nur der Zustand von Leonardo verändert.
Nun die Frage, liegt das an der Abfolge von "or" und "and" ? oder kann man die überhaupt nicht kombinieren oder müss der "or" Teil in Klammern? habe schon eineiges probiert, will aber nicht! >:( >:( >:( >:( >:( >:( >:(
Hallo noanda,
vielleicht ist der nächste Schritt einfach. Normalerweise geht "and" vor "or". Damit die "open" Bedingung für beide Leonardo-Zustände gilt, brauchst man also eine Klammer um das "or".
Grüße,
Jens
wäre dann also:
define MailFensterLeo DOIF (([rr_Leonardo] eq "absent" or [rr_Leonardo] eq "gone") and [MelderFENKZL] eq "open") ({DebianMail('xxx@googlemail.com','Eines der Fenster ist noch offen','Eines der Fenster ist noch offen, bitte keine Fenster offen lassen wenn es regnen könnte. ')})
attr MailFensterLeo do always
werde es mal testen
Falls das Fenster während Leonardos Abwesendheit geöffnet wird, gibt es auch eine Mail. Falls Du das unterbinden möchtest http://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Stati_ohne_Trigger (http://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Stati_ohne_Trigger)
Danke für den Tip.
übrigens:
das geht:
(([test1] eq "on" or [test2] eq "on") and ([test3] eq "on" or [test4] eq "on")) (set test5 1) DOELSE (set test5 3)
das geht leider nicht :
(([test1] eq "on" or [test2] eq "on") and ([test3] eq "on" or [test4] eq "on")) (set test5 1) DOELSEIF (([test1] eq "on" or [test2] eq "on") and [test3] eq "on" and [test4] eq "on") (set test5 2) DOELSE (set test5 3)
war aber nur ein Test von mir, auch wenn es nett wäre :-)
Ist doch eigentlich simpel:
Zitat([Bedingen, die immer erfüllt sein muss] and ([die 1. Oderbedingung] or [die 2. Oderbedingung] or ... ))
Bei dir ist dieses die Bedingung die immer erfüllt sein muss:
Zitat[MelderFENKZL] eq "open"
Dies sind die Oder-Bedingungen:
Zitat[rr_Leonardo] eq "absent" or [rr_Leonardo] eq "gone"
Alles zusammengepackt:
Zitat([MelderFENKZL] eq "open" and ([rr_Leonardo] eq "absent" or [rr_Leonardo] eq "gone"))
Danke, das habe ich schon und das hat auch so weit super funktioniert.
Mich würde aber auch interessieren wann und an welcher Stelle was wie pirorisiert wird und was nicht. Für andere schaltungen.
Das hängt von deinen Verschachtelungsebenen ab.