watchdog und at Badezimmerlüfter

Begonnen von lukasbastelpeter, 19 April 2015, 00:02:41

Vorheriges Thema - Nächstes Thema

lukasbastelpeter

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?

# Raspberry Pi
# Homematic, Z-Wave
# HUE, Tradfri
# Harmony
# ESP8266  Basteleien per MQTT

rudolfkoenig

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.