Habe eine "einfache" IF-Bedingung definiert:
define myTest at +*00:01 if ("1" eq "1") (set 40Relais3 off) else (set 40Relais1 on)
Logfile schreibt: 2016.12.10 14:15:00 3: myTest: Unknown command if, try help.
Kann mir jemand sagen warum?
Müsste es nicht einfach: DOIF sein.
Dann sollte es doch schon klappen.
und dann: ELSE für deine Bedingung und falls du mehr als eine hast dann: DOELSEIF
Grüße
Ach mist... klappt alles nicht...
define mywatchdog DOIF ([PIR1:on:sec] < 10) (set 40Relais2 on) DOELSE (set 40Relais2 off)
bin in einer anderen Frage auch genau hier angekommen :(
Mir kommt es so vor, als wenn DOIF nur einmal schaut und dann nie wieder...
Ich dachte der wird initialisiert und schaut dann nach der in der Bedingung genannten Zeit wieder nach und
außerdem immer wenn ein Event durch FHEM geistert ob die Bedingung noch stimmt....
Eigentlich sollte das nicht der Fall sein.
Bei mir zumindest ist das DOIF in Kombination mit allen Geräten die etwas schalten sollen sehr zuverlässig und ändert jedesmal den command je nach dem, welche Status beim Reading vorliegt.
Was möchtest du denn genau machen ?
Grüße
if ist ein perl Befehl, IF ein fhem Befehl
Hi Syrex und andere Helfer,
Nocheinmal das Vorhaben.
Ich habe einen Eigenbau Bewegungsmelder, der solange er eine Bewegung erkennt aller 10 Sekunden eine Nachricht verschickt.
Der Bewegungsmelder ist bei mir "PIR1" und das dazugehörige Reading ist "pir1"
Ein weiteres Gerät ist eine Lampe an einem Relais (auch Eigenbau). Das Relais kann ich mit "set 40Relais1 on" oder "set 40Relais1 off" schalten.
Nun war die Idee. dass sobald ein aktuelles Reading vom Bewegungsmelder kommt, ein "set 40Relais1 on" gesendet wird und wenn länger als 20 Sekunden nichts mehr von PIR1 kommt,
oder genauer sich das Datum des readings pir1 länger als 20 Sekunden nicht geändert hat, dann soll die Lampe wieder ausgehen... "set 40Relais1 off"
Daher die Idee:
define mywatchdog DOIF ([PIR1:pir1:sec] < 20) (set 40Relais1 on) DOELSE (set 40Relais1 off)
1. Ist ein DOIF für diese Aufgabe das Richtige?
2. Ist die Bedingung richtig: ([PIR1:pir1:sec] < 20)
Danke für Eure Hilfe
Update:
Zwischenzeitlich konnte ich es lösen.. es ist KEIN DOIF sondern folgende Kombination:
define Bewegung notify PIR1 set 40Relais1 on
define keineBewegung watchdog PIR1 00:00:15 SAME set 40Relais1 off;; trigger keineBewegung .
Danke an alle Tipps!!!