Hallo.
Ich möchte bei Anstieg der Luftfeuchtigkeit (z.B. >4%) bei zwei aufeinanderfolgenden Messungen eine Aktion ausführen.
Ich benutze bereits das Attribut 'event on change'. Wie sieht denn dann mein notify aus?
Vielen Dank.
Wenn ich das so lese stellt sich mir, nachdem du es im 2. Thread sogar zu Frage geschafft hast, erstmal die Frage nach der Zeit...
Ansonsten wird dich erstmal ein wenig Eigeninitiative am ehesten weiter bringen...
Versuche es erstmal mit einem fixwert. Luftfeuchte größer 60 Prozent. Darauf kannst du dann weiter aufbauen.
Guck dir mal das Modul Threshold (http://fhem.de/commandref.html#THRESHOLD) an! Damit geht es relativ einfach.
Gruß
Frank
Hallo,
am einfachsten wäre es den dritten angepinnten Beitrag zu lesen.
Damit sollte sich schonmal eine Liste der benötigten Infos zusammenfinden lassen.
Sonst würde ich sagen:
ZitatWie sieht denn dann mein notify aus?
Mit deinen Infos recht einfach.
define n_Feuchte notify <Device:reading> <und_hier_der_code>
Aber das sollte sich eigentlich auch aus der commandref so erschliessen daher wunder ich mich grad über die Frage.
Grüße
P.S.: Ich vermute den zweiten Beitrag ohne Frage und mitten im Text abgesendet kann man löschen?
Hallo zusammen,
vielen Dank für die Antworten.
Mir geht es nur darum, dass ich eine Funktion (ein Badlüfter soll nach einem relativen Anstieg der Luftfeuchtigkeit um x% für eine definierte Dauer laufen) ausführen möchte, wenn der neue Wert um x% größer als der alte Wert ist.
Wenn ich nun das
Zitatdefine n_Feuchte notify <Device:reading> <und_hier_der_code>
einfüge, würde nun durch das von mir zugewiesene Attribut (event on change) gewährleistet, dass immer nur bei Wertänderungen das n_Feuchte ausgeführt wird, oder verstehe ich das falsch?
Das mit der Funktion (Neu-/Altwert, Einschalten für eine bestimmte Zeit usw.) ist für mich klar, es geht nur um das Triggerereignis.
Zitat von: Bastelbude am 04 November 2014, 09:12:34
Wenn ich nun das
einfüge, würde nun durch das von mir zugewiesene Attribut (event on change) gewährleistet, dass immer nur bei Wertänderungen das n_Feuchte ausgeführt wird, oder verstehe ich das falsch?
Ja, das ist richtig...
Hallo,
Zitates geht nur um das Triggerereignis.
Dann würd ich auf die Luftfeuchte deines Sensors triggern lassen.
event-on-change hast du eh schon gesetzt somit wird das notify nur getriggert wenn sich die Feuchte ändert.
Im Code machst du dann den Rest.
Sowas hab ich übringes auch um nach dem Duschen (oder in der Wanne liegen) den Badezimmerlüfter einzuschalten.
Ich prüfe aber im Code auf einen Anstieg der Feuchte zum vorherigen Wert und lass den Lüfter nur laufen wenn eine bestimmte Differenz überschritten ist.
Und dann läuft der Lüfter auch nur 30 Minuten.
Das lässt sich zwar auch mit Threshold erledigen aber mir ist die Variante mit if (leider) noch lieber (und geläufiger).
Grüße
Zitat von: Puschel74 am 04 November 2014, 09:43:29
... mir ist die Variante mit if (leider) noch lieber (und geläufiger).
Mir geht das genau so. ;o) Hab Threshold noch nie verwendet, habe es aber vor, da es einiges an Code einspart.
Gruß
Frank
Zitat von: Puschel74 am 04 November 2014, 09:43:29
Das lässt sich zwar auch mit Threshold erledigen aber mir ist die Variante mit if (leider) noch lieber (und geläufiger).
Das Modul THRESHOLD unterstützt die Differenz zweier aufeinander folgender Readings nicht.
Um es sauber zu programmieren, sollte man die zeitliche Komponente nicht außer acht lassen.
Es kann kritischer sein, dass ein Wert um 1 % ansteigt, als wenn er um 10 % ansteigt, nämlich dann, wenn er 1 % pro Sekunde ansteigt und 10 % innerhalb einer Minute.
Die Abfrage müsst dann heißen: Wertdifferenz/Zeitdifferenz > x
Gruß
Damian
Super, vielen Dank, jetzt weiss ich Bescheid.
Viele Grüße
event-on-change reduziert die Datenlast zwar ein wenig, nützt aber aufgrund der Ungenauigkeit der Feuchtigkeitssensoren wenig .... der Wert ändert sich eigentlich ständig, wenn auch nur 1 Stelle hinterm Komma.
Ich habe jetzt eine für mich prima funktionierende Lösung gefunden:
- die Feuchtigkeit wird in einem DBlog protokolliert, dies ist würg die Ermittlung de Durchschnittswert erforderlich (FileLog sollte aber auch gehen)
- ein zusätzliches Userreading enthält den Durchschnittswert der Feuchtigkeit der letzten 40 Minuten
- bei jedem empfangenen Wert wird geprüft:
Wenn der aktuelle Wert > 3% über dem Durchschnittswert liegt oder ein Maximalwert (in einem Dummy gespeichert) überschritten ist und der Lüfter noch nicht läuft, wird dieser für maximal 2 Stunden eingeschaltet
Wenn der aktuelle Wert < 0,5% über dem Durchschnittswert liegt oder der Minimalwert (in einem Dummy gespeichert) unterschritten ist und der Lüfter noch läuft, wird dieser ausgeschaltet
Funktioniert bis jetzt eigentlich perfekt, kann man schön sehr wenn man entsprechende Plots mit Lüfterlaufzeit, Durchschnittswert und Luftfeuchtigkeit erstellt.
Bei Interesse kann ich mal den nötigen Code für raussuchen.
Hallo,
Zitatin einem Dummy gespeichert
Hatte ich auch bis ich über die wunderschöne Möglichkeit mit setreading gestolpert bin.
Damit lassen sich bequem zusätzlich Readings in bereits existierenden Geräten unterbringen und auch wieder mit ReadingsVal auslesen.
Hat mir auf einen Schlag jede Menge unnötiger Dummys beschert die ich wieder löschen konnte.
Grüße
Zitat von: Puschel74 am 08 November 2014, 08:50:37
dummy....setreading
Ja, ich weiß ;)
Ging mir genauso und hab ich an vielen Stellen auch schon irgendwann mal abgeändert .... aber beim Lüfter ist es noch als "Altlast" dabei.