FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: noanda am 20 Dezember 2015, 18:33:34

Titel: DOIF "and" und "or" kombination
Beitrag von: noanda am 20 Dezember 2015, 18:33:34
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!  >:( >:( >:( >:( >:( >:( >:(
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: jensb am 20 Dezember 2015, 18:41:17
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
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: noanda am 20 Dezember 2015, 20:51:21
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
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: Ellert am 21 Dezember 2015, 00:06:03
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)
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: noanda am 21 Dezember 2015, 10:33:49
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 :-)
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: dieda am 21 Dezember 2015, 14:18:03
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"))
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: noanda am 21 Dezember 2015, 14:44:28
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.
Titel: Antw:DOIF "and" und "or" kombination
Beitrag von: dieda am 21 Dezember 2015, 14:54:52
Das hängt von deinen Verschachtelungsebenen ab.