Dummy-Variable für eine bestimmte Zeit setzen

Begonnen von sylvester, 09 Mai 2016, 19:24:52

Vorheriges Thema - Nächstes Thema

sylvester

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

Ellert

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

RadioJames

#2
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.
There are 10 kind of people. Those who understand binary and those who don't.

dev0

Die SetExtenstions (on-for-timer,...) kann man bei dummy devices mit dem Attribut useSetExtensions aktivieren.

sylvester

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

Wernieman

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
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html