komme nicht weiter mit notify

Begonnen von cerberus, 26 November 2013, 10:13:52

Vorheriges Thema - Nächstes Thema

cerberus

Hallo, ich habe einige notifys für die Beschaltung meines Licht Carports angelegt und wollte nun diese in einer Funktion zusammenfassen.

Der alte Code schaute so aus:

define notify_Licht_Carport_Taster_onfortimer notify Taster_Licht_Carport_Aussen:on-for-timer set Licht_Carport_Aussen on-for-timer 120
define notify_Licht_Carport_Taster_off notify Taster_Licht_Carport_Aussen:off-for-timer set Licht_Carport_Aussen off
define notify_Licht_Carport_Annaeherungsschalter_onfortimer notify Annaeherungsschalter_Garage_C1:on set Licht_Carport_Aussen on-for-timer 120
define notify_Licht_Carport_Handsender_onfortimer notify Mini_Handsender_C2:on set Licht_Carport_Aussen on-for-timer 120
define notify_Licht_Carport_Handsender_off notify Mini_Handsender_C2:off set Licht_Carport_Aussen off


Nun habe ich das in dieser Funktion zusammengefasst:

define notify_Licht_Carport_Aussen_onfortimer notify (Taster_Licht_Carport_Aussen|Annaeherungsschalter_Garage_C1|Mini_Handsender_C2) {\
if (Value("Taster_Licht_Carport_Aussen") eq "on-for-timer" || Value("Annaeherungsschalter_Garage_C1") eq "on" || Value("Mini_Handsender_C2") eq "on") {\
fhem("set Licht_Carport_Aussen on-for-timer 120") }\
else { fhem("set Licht_Carport_Aussen off");;\
}\
}


Mein Problem ist nun das wenn ich zb. den Mini_Handsender auf off betätige, was ich im Event monitor auch sehe, wird ein  set Licht_Carport_Aussen on-for-timer 120 ausgeführt und kein off

Gruß
cerberus

siehe LOG
Banana PI mit Bananian + Fhem 5.5, 2x SCC SlowRF/Homematic + RS485 LAN Gateway HMW-LGW-O-DR-GS-EU + RPI2 I2C to 1-Wire Host Adapter for Raspberry Pi

OiledAmoeba

Der Fehler steckt im if:
Taster=on-for-timer ODER Annäherungsschalter=on ODER Handsender=on

Wenn nun der Befehl Handsender=off kommt, schaltet fhem korrekt das Licht für 2 Minuten an, weil Taster immer noch on for timer oder Annäherungsschalter immer noch on ist. Damit ist das if-Statement erfüllt und es wird in then-Zweig gegangen. Der else-Zweig wird nur aufgerufen, wenn alle drei Gründe nicht mehr zutreffen.
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+