FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: sylvester am 09 Mai 2016, 19:24:52

Titel: Dummy-Variable für eine bestimmte Zeit setzen
Beitrag von: sylvester am 09 Mai 2016, 19:24:52
Hallo,

ich brauche mal eure Hilfe.

Ich habe einen Windsensor von Homematic.
Da dieser etwas träge ist, würde ich gerne eine Dummy-Variable auf on setzen, wenn Windgeschwindigkeiten von über 20km/h erkannt wurden. Wenn innerhalb der nächsten Stunde nicht wieder eine Geschwindigkeit größer 20km/h erkannt wurde, soll die Variable auf off wechseln, andernfalls beginnt die Stunde von neuem zu laufen.

Normalerweise würde ich das einfach mit einem notify und set on-for-timer machen. Das gibt es aber bei Dummy-Variablen nicht.
Nun könnte ich mir auch ein Konstrukt mit einem Watchdog vorstellen. Aber so richtig bekomme ich das nicht hin.

Kann mir jemand einen Tipp geben, wie ich das einfach realisiere?

Vielen Dank und viele Grüße

Stephan
Titel: Antw:Dummy-Variable für eine bestimmte Zeit setzen
Beitrag von: Ellert am 09 Mai 2016, 19:39:36
Mit DOIF siehe: http://fhem.de/commandref_DE.html#DOIF
([Wind] > 20) (set dummy on) (set dummy off)

und die Attribute
wait 0,3600
do resetwait
Titel: Antw:Dummy-Variable für eine bestimmte Zeit setzen
Beitrag von: RadioJames am 09 Mai 2016, 19:49:33
Hallo Sylvester,

ich würde über ein notify, das bei Änderung der Windgeschwindigkeit ausgelöst wird, eine Perl Funktion (99_MyUtils.pm) aufrufen. Wird dein Grenzwert von 20 km/h erstmals überschritten, setzt du dort die Dummy Variable auf ON. Ist die Dummy Variable ON und es wird eine Geschwindigkeit unter deinem Limit gemeldet, setzt du einen Timer über at auf 1 Stunde. Ist die Geschwindigkeit bei einem neuen Aufruf der Funktion über deinem Limit, killst du den Timer mit delete. Eventuell ist die Implementierung eines Hystereseverhaltens sinnvoll, damit nicht ständig bei kleinen Änderungen der Timer gekillt und wieder gesetzt wird. Läuft der Timer ab, wird eine Handlerroutine aufgerufen, die die Dummy Variable wieder auf OFF setzt.

So würde ich es machen. Änderungen in der fhem.cfg halte ich , wenn möglich, minimal. Bin eher der Perl Fan, der in eigenen Modulen (99_MyXXXUtils.pm) Spiel Spass und Spannung sucht.

Grüße
James.
Titel: Antw:Dummy-Variable für eine bestimmte Zeit setzen
Beitrag von: dev0 am 09 Mai 2016, 19:52:50
Die SetExtenstions (on-for-timer,...) kann man bei dummy devices mit dem Attribut useSetExtensions aktivieren.
Titel: Antw:Dummy-Variable für eine bestimmte Zeit setzen
Beitrag von: sylvester am 09 Mai 2016, 21:12:53
Hallo zusammen,

vielen Dank für die schnellen Antworten.

Da ich in Perl nicht so bewandert bin, habe ich mich jetzt erstmal für die letzte Variante mit einem notify und on-for-timer entschieden.
Mal schauen, ob es klappt.

Viele Grüße

Stephan
Titel: Antw:Dummy-Variable für eine bestimmte Zeit setzen
Beitrag von: Wernieman am 10 Mai 2016, 10:04:25
Nur mal las ergänzung:
Es muß nicht DOIF oder perl sein:

ein notify, welches
- Deinen Dummi setzt
- den veralteten (s.u.) at-job X löscht
- einen at-job X, der nach X minuten anläuft und Deinen dummy zurücksetzt.

Hat nur den Nachteil, das immer wieder "at-Jobs" definiert werden