FHEM Forum

FHEM => Automatisierung => Thema gestartet von: lukasbastelpeter am 19 April 2015, 00:02:41

Titel: watchdog und at Badezimmerlüfter
Beitrag von: lukasbastelpeter am 19 April 2015, 00:02:41
Hi,

ich habe mir folgendes zusammengetippt:
Zitat
define BZ.d_Luefterautomatik dummy

define BZ.d_Luftnot dummy
attr BZ.d_Luftnot alias Dummy für Lüftersteuerung im Badezimmer
attr BZ.d_Luftnot room hidden

define n_BZ.Tuer notify BZ.Tuer IF ([BZ.Tuer] eq "closed" && [d_Luftnot] eq "1") (set BZ.Luefter on);;;; IF ([BZ.Tuer] eq "open" && [d_Luftnot] eq "1") (set BZ.Luefter off);;;;
attr n_BZ.Tuer room hidden

define w_BZ.Deckenlampe watchdog BZ.Deckenlampe:on 00:00:45 n_BZ.Deckenlampe:off IF([BZ.d_Luefterautomatik] eq "on") ({fhem ("set BZ.d_Luftnot 1")});;;; define a_BadLuefter at +00:02:30 {fhem ("set BZ.d_Luftnot 1")};;;; trigger w_BZ.Deckenlampe
attr w_BZ.Deckenlampe room hidden

define n_BZ.d_Luftnot notify BZ.d_Luftnot IF ([BZ.Tuer] eq "closed" && [BZ.d_Luftnot] eq "1") (set BZ.Luefter on);;;; IF ([BZ.d_Luftnot] eq "0") (set BZ.Luefter off)

Der Gedanke:
Ich habe eine Lüfterauotomatik, die kann ein oder aus sein.
Badezimmerlampe geht an, aktiviert den wachdog, geht das licht innerhalb von 45 Sekunden nicht wieder aus und ist die Automatik aktiviert, setzt er den Dummy "Luftnot" auf 1, definiert ein at, welches 2:30 Minuten später den Dummy wieder auf 0 setzt, dann triggert er sich selbst, um für den nächsten Gang aufs stille örtchen gewappnet zu sein.

Sobald Lufnot=1 geht, falls die Tür nicht auf steht (z.B. Wäsche einräumen/putzen o.Ä.) der Lüfter an, ist die Tür auf, passiert nichts. Wird die Tür geschlossen geht der Lüfter an, falls Luftnot=1.

Wenn Luftnot=0 passiert nichts.



Kann es leider nicht so einfach testen, da alles noch an einem anderen System hängt und ich das so on the fly nicht umstricken kann...
Ist das syntaktisch richtig? funktioniert der watchdog in Verbindung mit dem at? oder triggert sich der watchdog erst "in dem at", da der Trigger ja nach dem at steht?

Titel: Antw:watchdog und at Badezimmerlüfter
Beitrag von: rudolfkoenig am 19 April 2015, 08:34:40
ZitatKann es leider nicht so einfach testen

Einfach ist relativ, aber man koennte die benoetigten Events via trigger erzeugen.

Das ;;;; schaut komisch aus. Wenn ein "Einzeiler" diese Komplexitaet erreicht, sollte man darueber nachdenken, ob es nicht sinnvoller ist, ihn in eine Funktion in 99_myUtils.pm auszulagern.