Hallo zusammen,
ich würde mich über Eure Hilfe sehr freuen. Ich tue mich etwas schwer, die nachfolgende Anforderung umzusetzen.
Ich habe eine Brunnenpumpe in meinem FHEM eingebunden. Ich überwache die Leistungsaufnahme und steuere damit einen Dummy "di_Brunnenpumpe_Betrieb" (on/off), der gesetzt wird, wenn die Pumpe läuft.
Bei bestimmten Fehlfunktionen (z.B. Wasserventile nicht vollständig geschlossen) schaltet die Pumpe im Abstand von wenigen Minuten mehrfach. Das möchte ich vermeiden.
Wie kann ich eine Überwachung realisieren, die feststellt, dass der Dummy di_Brunnenpumpe_Betrieb innerhalb eines definierten Zeifenster, z.B. fünf Minuten, mehr als x mal gesetzt wurde.
Habt Ihr eine Idee?
Vielen Dank und Gruß
Christian
Hallo Christian,
du könntest z.B. "event-min-interval" verwenden, damit nur in einem bestimmten Zeitraum auf was auch immer reagiert wird.
Um da etwas Genaueres sagen zu können braucht es aber ein paar mehr Angaben.
Wie/womit wird die Leistung gemessen?
Wie wird "di_Brunnenpumpe" gesetzt. Notify/DOIF?
Und soll nur verhindert werden, dass der Dummy gesetzt wird, oder dass die Pumpe schaltet?
Gruß
Detlef
Hi Detlev,
danke für die schnelle Antwort.
Hier das DOIF, mit dem ich den Dummy setze:
defmod di_Brunnenpumpe_Betrieb DOIF ([ZE.Brunnenpumpe_Pwr:power] > 700) (set du_Brunnenpumpe_Betrieb on) DOELSEIF ([ZE.Brunnenpumpe_Pwr:power] < 100)(set du_Brunnenpumpe_Betrieb off)
attr di_Brunnenpumpe_Betrieb group Z_Steuerung
attr di_Brunnenpumpe_Betrieb room Zentral
attr di_Brunnenpumpe_Betrieb wait 10:10
In erster Linie möchte ich einen Alarm auslösen, wenn die Pumpe zu oft im definierten Zeitintervall schaltet. Alarme versende ich mit dem Pushover-Modul.
Ich möchte aber erst einmal ermitteln, dass pro Zeiteinheit "häufig" geschaltet wurde.
Zur Info noch. Die Pumpe schaltet sich selber über einen Druckschalter bei Bedarf ein. Ich schalte sie also nicht aktiv, sondern überwache sie nur.
Gruß
Christian
Dafür gibt es Sequence (https://wiki.fhem.de/wiki/Trick_der_Woche#Sequence_nutzen).
Gruß
Frank
aus: https://wiki.fhem.de/wiki/DOIF/Perl-Modus#Timer_setzen:_set_Exec.28.29
Aktion auslösen, wenn innerhalb einer bestimmten Zeitspanne ein Ereignis x mal auftritt
defmod di_count DOIF {\
if (["FS:on"] and !get_Exec("counter")) { # wenn Ereignis (hier "FS:on") eintritt und kein Timer läuft\
$_my_count=1;; # setze count-Variable auf 1\
set_Exec("counter",3600,'Log (3,"count: $_my_count action") if ($_my_count > 10)');; # setze Timer auf eine Stunde zum Protokollieren der Anzahl der Ereignisse, wenn sie über 10 ist\
} else {\
$_my_count++;; # wenn Timer bereits läuft zähle Ereignis\
}\
}
ZitatDafür gibt es Sequence.
Ich habe Schwierigkeiten zu erkennen, wie das mit sequence klappen soll, ich wuerde das Problem mit dem unlaengst eingefuehrten eventCount Internal loesen, was bei dem Event ausloesenden Geraet hochgezaehlt wird.
Die fuer Endanwender bessere Loesung duerfte aber das event-aggregator Attribut sein, (https://fhem.de/commandref_modular.html#event-aggregator) mit n als Funktion.
ZitatDie fuer Endanwender bessere Loesung duerfte aber das event-aggregator Attribut sein
Wieder was neues gelernt.
attr du_Brunnenpumpe_Betrieb event-aggregator state::none:n:300
sollte funktionieren.
Ist das mit "event-on-change-reading" kombinierbar. Ansonsten würde ja jedes on oder off gezählt werden und nicht nur die Änderungen.