DOIF "and" und "or" kombination

Begonnen von noanda, 20 Dezember 2015, 18:33:34

Vorheriges Thema - Nächstes Thema

noanda

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!  >:( >:( >:( >:( >:( >:( >:(
Raspberry Pi - FHEM 5.5
HMLAN, RFXtrx433 , CUL 868
HM-CC-RT-DN, HM-SEC-MDIR , HM-SEC-SC-2
HM-LC-SW2-FM, ROTO_ZEL-STG-RM-FZS
ELRO440AB, Flamingo

jensb

#1
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
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

noanda

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
Raspberry Pi - FHEM 5.5
HMLAN, RFXtrx433 , CUL 868
HM-CC-RT-DN, HM-SEC-MDIR , HM-SEC-SC-2
HM-LC-SW2-FM, ROTO_ZEL-STG-RM-FZS
ELRO440AB, Flamingo

Ellert

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

noanda

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 :-)
Raspberry Pi - FHEM 5.5
HMLAN, RFXtrx433 , CUL 868
HM-CC-RT-DN, HM-SEC-MDIR , HM-SEC-SC-2
HM-LC-SW2-FM, ROTO_ZEL-STG-RM-FZS
ELRO440AB, Flamingo

dieda

#5
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"))
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

noanda

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.
Raspberry Pi - FHEM 5.5
HMLAN, RFXtrx433 , CUL 868
HM-CC-RT-DN, HM-SEC-MDIR , HM-SEC-SC-2
HM-LC-SW2-FM, ROTO_ZEL-STG-RM-FZS
ELRO440AB, Flamingo

dieda

Das hängt von deinen Verschachtelungsebenen ab.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs