FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Joker am 21 Januar 2016, 11:19:05

Titel: Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Joker am 21 Januar 2016, 11:19:05
Hallo,

ich habe einen Sensor der mir eine Temperaturdifferenz liefert. Ich möchte eine Aktion auslösen, wenn die Differenz für einen bestimmten Zeitraum, z.B. eine Stunde,  unterhalb einer gewissen Schwelle liegt. Wenn die Schwelle unterschritten wird, aber innerhalb des Zeitraums wieder überschritten wird, dann soll der Zeitraum neu beginnen (beim nächsten Unterschreiten).

Ich komm gerade nicht drauf wie ich sowas einfach realisieren kann, kann mir jemand helfen?
Titel: Antw:Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Otto123 am 21 Januar 2016, 12:16:01
Hi,

DOIF mit wait? define Tipp DOIF ([sensor] < 10) (set aktion on)
attr Tipp wait 3600
Titel: Antw:Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Ellert am 21 Januar 2016, 12:49:02
Ich bin nicht sicher, ob der wait Timer abgebrochen wird bei sensor>=10, falls er nicht abgebrochen wird:

define Tipp DOIF ([sensor] < 10) (set aktion on)
DOELSE
attr Tipp wait 3600
Titel: Antw:Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Damian am 21 Januar 2016, 13:46:18
Zitat von: Ellert am 21 Januar 2016, 12:49:02
Ich bin nicht sicher, ob der wait Timer abgebrochen wird bei sensor>=10, falls er nicht abgebrochen wird:

define Tipp DOIF ([sensor] < 10) (set aktion on)
DOELSE
attr Tipp wait 3600


Bei einem DOIF-Fall ohne do always wird im false-Fall in cmd2 gewechselt, hier braucht man also DOELSE nicht zu setzen. Bei do always wird dagegen cmd2 nur dann gesetzt, wenn es auch einen DOELSE-Fall gibt.

Gruß

Damian

Titel: Antw:Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Joker am 21 Januar 2016, 13:55:24
Danke!
Sieh an, so einfach  8)
Ich habe mich mit dem DOIF Modul noch nicht beschäftigt, daher war mir eine so einfache Lösung nicht bewußt. Mein Ansatz ging in die Richtung, bei Unterschreiten ein at anlegen, was bei Ablauf die Aktion ausführt. Und das at bei überschreiten löschen o.ä.

Ich werde das heute abend testen, im Prinzip würde es dann auf sowas hinaus laufen:

define switchTrigger DOIF ([sensor:temperature] < 5) (set status off)
DOELSE
(set status on)

attr switchTrigger wait 3600


Soll bewirken, dass der status nur dann auf off steht, wenn für eine Stunde lang die Temperatur unter 5 war, ansonsten steht er auf on. Müsste passen oder?

Titel: Antw:Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Otto123 am 21 Januar 2016, 18:42:24
Das passt! Jeder Wechsel der Bedingung setzt den Timer zurück.
Ich habe so meine Watchdogs gemacht, ist aus meiner Sicht viel einfacher als mit watchdog.

Gruß Otto
Titel: Antw:Aktion ausführen nur wenn Bedingung eine bestimmte Zeit erfüllt ist
Beitrag von: Joker am 22 Januar 2016, 08:40:13
Scheint einwandfrei zu klappen, vielen Dank!