Anfänger haben ja meistens viele Probleme und ich gehöre auch dazu. Vielleicht können mir hier alte Hasen helfen...
Ich möchte eine Automatik programmieren die mir das Licht spätestens nach einer Stunde das Licht ausschalten, wenn man es nicht vorher selbst ausschaltet. Hier ist es fürs Badezimmer.
Ich habe ein wenig gesucht und bin auf ein Treppenlicht gestoßen (mit Anpassung an meine Bedürfnisse):
define OG.bz.LS.Licht_an notify OG.bz.LS.Licht:on* define OG.bz.LS.Licht_aus at +01:00:00 set OG.bz.LS.Licht off
OG.bz.LS.Licht ist ein Homematic-Unterputz-Schalter.
Das funktiniert leider nur unzureichend, denn wenn jemand vorher (z.B. 30min) das Licht kurz eingeschaltet hatte, wird einem das Licht vorzeitig abgedreht.
Dann hab ich weiter gesucht und probiert, z.B.:
define OG.bz.LS.Licht_auto DOIF ([OG.bz.LS.Licht:?on] and [+01:00]) (set OG.bz.LS.Licht off)
Verhält sich aber genau so wie vorher.
Du musst dann, wenn das Licht aus (gemacht) ist, prüfen, ob das ursprüngliche at noch aktiv ist und es löschen. Wenn Du es mit einem DOIF löst, musst Du ebenfalls das "off" mit einem DOELSEIF abfragen, um einen anderen Status im DOIF zu erreichen.
Ich würde es so lösen:
define Blub DOIF ([OG.bz.LS.Licht] eq "on") (set OG.bz.LS.Licht off)
DOELSEIF ([OG.bz.LS.Licht] eq "off") ()
attr Blub wait 3600:0
Bewirkt, dass das DOIF "scharf" wird, sobald das Licht an geht, allerdings wartet es mit der Kommandoausführung, bis eine Stunde vergangen ist - es sei denn, innerhalb dieser Stunde geht das Licht aus, denn dann wird auf Grund des Statuswechsels das cmd_1 nicht mehr ausgeführt.
Kannst es nicht mit einem : set LS.Licht on-for-timer 60
machen ? 60 = Sekunden
Gruß otto
@otto: Das funktioniert dann aber nur, wenn mittels fhem eingeschaltet; so wie ich das verstehe, soll es ja darum gehen, das Licht automatisch auszuschalten, wenn es von Hand eingeschaltet wurde.
@Ralli
Danke. Funktioniert bestens. :)