Ich versuche eine Anwesenheitserkennung umzusetzen, im Endeffekt soll eine Elro Funksteckdose für x Minuten eingeschaltet werden wenn sich das Handy im WLAN anmeldet.
Die Anwesenheitserkennung funktioniert soweit und auch der Timer wird entsprechende gesetzt.
define Handy_Hermann PRESENCE lan-ping 192.168.178.105 30
define Anw_Handy_Hermann notify Handy_Hermann { \
if ("%" ne "absent") {\
fhem ("set WN_Stern on;; define WN_SternTimer at +00:02 set WN_Stern off");;\
}\
else {\
fhem "/fhem/wohnzimmer.py 2 0&";;\
}\
Log 1, "notify wird ausgeführt mit @ %";;\
}
Das Problem ist nur, das über define Handy_Hermann PRESENCE lan-ping 192.168.178.105 30 das Handy alle 30 Sekunden wieder gefunden wird und dadurch der WN_SternTimer immer wieder neu gesetzt wird. Im Endeffekt geht die Lampe erst aus wenn das Handy nicht mehr im WLAN ist.
Hier meine zweite Idee:
define N_Anwesend notify Anwesend { \
if ("%" eq "on" ) {\
fhem ("set WN_Stern on;; define WN_SternTimer at +00:02 set WN_Stern off");;\
}\
else {\
fhem ("set WN_Stern off");;\
}\
Log 1, "notify wird ausgeführt mit @ %";;\
}
define Anw_Handy_Hermann notify Handy_Hermann { \
if ("%" eq "present" && "$value{Anwesend}" eq "off") {\
fhem ("set Anwesend on");;\
}\
else {\
fhem ("set Anwesend off");;\
}\
Log 1, "notify wird ausgeführt mit @ %";;\
}
Die Steckdose wird geschaltet wenn Anwesend on ist und Anwesend wird auf on geschaltet wenn das Handy im WLAN ist und Anwesend noch auf off ist.
Leider funktioniert es nicht denn Anwesend wird noch auf on gesetzt.
Hat jemand eine Idee wie ich die zweite Variante zum Laufen bekomme bzw eine ganz andere Idee?
so auf keinen Fall:
"$value{Anwesend}"
Vielleicht wird es so besser:
Value("Anwesend")
siehe:
http://forum.fhem.de/index.php/topic,14010.msg176719.html#msg176719
(http://forum.fhem.de/index.php/topic,14010.msg176719.html#msg176719)
Hallo,
besser und leichter lesbarer wäre es mit den passenden Tags aber das ist ja bereits zur genüge beschrieben und erklärt.
Ich persönlich les mir solche Textwüsten nichtmehr durch.
Grüße
Ich konnte das Problem lösen, die if Abfrage sieht nun wie folgt aus
define Anw_Handy_Hermann notify Handy_Hermann { \
if ("%" ne "absent" && Value("Anwesend") ne "on") {\
fhem ("set Anwesend on");;\
}\
else {\
fhem ("set Anwesend off");;\
}\
Log 1, "notify wird ausgeführt mit @ %";;\
}