Geräteüberwachung vor zu häufigem Schalten

Begonnen von cseuss, 07 Juni 2022, 20:49:10

Vorheriges Thema - Nächstes Thema

cseuss

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

DetlefR

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

cseuss

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

fiedel

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Damian

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\
  }\
}


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

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.

DetlefR

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.