Hallo zusammen
ich übe gerade meine ersten Schritte und komme mit einer verschachtelten If-Abfrage in einem notify nicht weiter:
define notify no2 FTS_Tagschalter:BI if (isday() ) ( if ([test] eq "on") (set test off) ELSE (set test on) )
FTS_Tagschalter ist ein Taster an einem Eltako FTS14EM und es soll bei jedem Tastendruck der dummy test ein oder ausgeschaltet werden
dieser code ohne isday() funktioniert schon ohne Probleme:
define notify no1 FTS_Tagschalter:BI if ([test] eq "on") (set test off) ELSE (set test on)
Aber sobald ich isday() einfüge passiert am dummy test nichts mehr.
Tagsüber sollte dann doch der dummy test umgeschaltet werden aber Nachts sollte keine Umschaltung erfolgen.
Hat jemand einen Tipp für mich?
Viele Grüße
Ned
Ich wage zu behaupten, dass auch die angebliche Fassung nicht funktioniert, da ist if und IF gemischt.
Empfehlung: rein Perl-if verwenden, sonst kommst du nur mit der Syntax dauernd ins Schleudern. Basis wäre hier zu finden: https://wiki.fhem.de/wiki/Trick_der_Woche#Struktur_von_.22else_if.22_Verzweigungen
Da du eine "UND"-Logik für die beiden Eingangsbedingungen haben willst, kannst du das so schreiben:
define notify no2 FTS_Tagschalter:BI if (isday() && ReadingsVal("test","state","off") eq "on") { fhem("set test off") } else { fhem("set test on") }
Du verwendest FHEM IF!
Die Bedingung ist falsch, so sollte die Bedingung richtig sein:
(isday() and [test] eq "on")
Ob allerdings isday() wirklich in einem FHEM IF funktioniert weiß ich nicht, dann besser die Perl Version nehmen.
Doch geht :)
https://forum.fhem.de/index.php/topic,74056.msg657533.html#msg657533
Du hast nicht verschachtelt und Du brauchst ein "und" :)
Gruß Otto