FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: forum-merlin am 01 Januar 2017, 11:16:01

Titel: DOIF Timerablauf Frage
Beitrag von: forum-merlin am 01 Januar 2017, 11:16:01
Ein frohes neues Jahr wünsche ich Euch!!

Ich möchte ein DOIF machen das einen Dummy wieder zurück auf einen vorherigen Status setzt.
Szenario:
Meine Alarmanlage ist auf Status scharf-anwesend (Aussenhaut ist überwacht). Jetzt möchte man kurz mal raus für 15 Minuten.
Jetzt will man aber nicht manuell die AL aus, und später wieder an machen müssen.
Ich dachte daher an einen Taster. Wenn man den drückt, wird die AL ausgeschaltet und es läuft im hintergrund ein Timer. Und dieser stellt nach 20 minuten wieder die AL auf AN.

Ich regle das Schalten des AL Status über Dummys und überwache diese mit DOIFs um dann zu reagieren.
Ein Dummy heisst eben AlarmPause.

Ich lese und lese, kapiere aber den Timer in DOIF irgendwie nicht.

Das ist es was ich dazu bis jetzt habe.
Kann mir jemand helfen die definition funktionsfähig zu bekommen?


define du_AlarmPause Dummy
attr du_AlarmPause room AlarmanlageTest
attr du_AlarmPause group AlarmStateSteuerung
attr du_AlarmPause comment "Dieser Dummy soll verwendet werden um eine Pause von 20 Minuten zu setzen. Hier soll der Status scharf-anwesend-pause gesetzt werden, dann ein Timer von 20 Min laufen, und dann wieder auf den vorherigen Status scharf-anwesend gehen"
attr du_AlarmPause setList scharf-anwesend scharf-anwesend-pause
attr du_AlarmPause webCmd scharf-anwesend:scharf-anwesend-pause
set du_AlarmPause initialstate

define doif_AlarmPause DOIF
([du_AlarmPause:state] eq "scharf-anwesend-pause")
(hier.muss.der.timer.irgendwie.hin.denke.ich set du_AlarmPause scharf-anwesend)
attr doif_AlarmPause comment "Dieser DOIF soll dauf den Dummy du_AlarmPause reagieren. es soll ein timer von 20 Minuten Laufen wenn der Status auf scharf-anwesend-pause gesetzt wird, und nach 1200 Sec soll der ursprüngliche Dummy du_AlarmPause wieder auf scharf-anwesend gesetzt werden."
attr doif_AlarmPause room AlarmanlageTest
attr doif_AlarmPause group AlarmStateSteuerung


Bin für jede Hilfe Dankbar.

LG merlin
Titel: Antw:DOIF Timerablauf Frage
Beitrag von: automatisierer am 01 Januar 2017, 11:42:33
der Timer ist ein Attribut der kommt nicht mit in die def.

define doif_AlarmPause DOIF
([du_AlarmPause:state] eq "scharf-anwesend-pause") (set du_AlarmPause scharf-anwesend)
attr doif_AlarmPause comment "Dieser DOIF soll dauf den Dummy du_AlarmPause reagieren. es soll ein timer von 20 Minuten Laufen wenn der Status auf scharf-anwesend-pause gesetzt wird, und nach 1200 Sec soll der ursprüngliche Dummy du_AlarmPause wieder auf scharf-anwesend gesetzt werden."
attr doif_AlarmPause room AlarmanlageTest
attr doif_AlarmPause group AlarmStateSteuerung
attr doif_AlarmPause wait 1200


dann wäre da noch ein
attr doif_AlarmPause do always damit es auch mehr als einmal ausgeführt wird
oder
attr doif_AlarmPause do resetwait damit es mehr als einmal ausgeführt wird und der Timer zurück gesetzt wird, wenn während der Timer Laufzeit nochmal die Taste gedrückt wird.
Titel: Antw:DOIF Timerablauf Frage
Beitrag von: forum-merlin am 01 Januar 2017, 11:46:53
Coole Sache!
Danke Dir. Ich werde es mal ausprobieren!

Noch eine Frage...
do always ODER do resetwait ??
Was würdest Du machen?
Geht auch beides?
Titel: Antw:DOIF Timerablauf Frage
Beitrag von: automatisierer am 01 Januar 2017, 11:58:18
wenn du die commandref dazu liest, kannst du das selber entscheiden. Die Frage, ob beides, lässt darauf zurückschliessen, dass du die commandref noch gar nicht studiert hast...
Titel: Antw:DOIF Timerablauf Frage
Beitrag von: forum-merlin am 01 Januar 2017, 12:39:52
Stimmt, als ich deine Antwort gelesen und meine Frage darauf hier gepostet hatte, hatte ich die zwei Attribute noch nicht studiert gehabt.

Aber direkt nach meiner Antwort und dann hatte ich es mir auch selbst beantwortet, aber die Frage hier nicht überarbeitet.
Aber das zu verallgemeinern dass ich die commandref (also alles) NOCH GARNICHT STUDIERT habe, ist etwas übertrieben.
Und im DOIF Bereich ist (vorbildlich) sehr viel geschrieben und erklärt, und da kann es aber auch vorkommen, dass man mal was überliest.

Wie auch immer. Danke für Deine Antworten, die haben mich wieder ein Stück weiter gebracht!