Watchdog läuft immer weiter

Begonnen von Eddy1983, 30 Dezember 2019, 11:40:55

Vorheriges Thema - Nächstes Thema

Eddy1983

Hallo liebe FHEM Gemeinde,

ich habe mal wieder ein kleines Problem das ich nicht selbst gelöst bekomme. Leider bekomme ich meine Suchanfrage auch nicht so formuliert, dass ich da eine Antwort drauf finde.

Folgende Situation:
Ich habe 2 Pumpen die Grundwasser weg pupen. An jeder Pumpe hängt eine AVM Steckdose mit denen ich die Stromaufnahmen der Pumpe überwache.
Nun habe ich mir ein doif gebastelt, welches wenn die Stromaufnahme einer Pumpe > 200 Watt ist einen Dummy ,,statusPumpe" auf ,,An" Setzt und und wenn die Stromaufnahme < 200 Watt ist eben auf ,,Aus" setzt. Das Funktioniert.

Nun habe ich Watchdogs gesetzt, die Prüfen sollen ob die Pumpe länger als 8 Minuten läuft und wenn das der Fall ist auf einem kleinen LED-Panel ein Licht an machen.
Das gleiche wenn die Pumpe länger als eine Stunde nicht gelaufen hat.

Das funktioniert alles schon fast.
Allerdings nur wenn die Überwachungszeit sehr kurz ist. Prüfe ich ob die Pumpe länger als 30 Sekunden läuft geht das Lämpchen an. Stelle ich die Zeit allerdings wieder auf 8 Minuten, schiebt sich der Watchdog jede Minute um 8 Minuten weiter.

Ich denke, das liegt daran, dass die Steckdose jede Minute ausgelesen wird und wenn die Pumpe mehr als 200 Watt auf nimmt der Dummy für den Status erneut auf ,,An" gesetzt wird.

Folgend mal mein Code. Hat da jemand eine Idee wie ich das lösen kann?

#Alarme
define di_PumpeHof DOIF ([FBDECT_Fritz.Box_08761_0074606:power:d] > 200) (set PumpeHofStatus An) DOELSEIF ([FBDECT_Fritz.Box_08761_0074606:power:d] < 200) (set PumpeHofStatus Aus)
setuuid di_PumpeHof 5dc1beaa-f33f-98a3-351e-170d0d218f82a40e
attr di_PumpeHof do always

define PumpeHofStatus dummy
setuuid PumpeHofStatus 5dc1c545-f33f-98a3-3f0b-a07cc1d258a016c5
attr PumpeHofStatus room System
attr PumpeHofStatus setList An Aus


define wd_PumpeHofAn watchdog PumpeHofStatus:An 00:08:00 PumpeHofStatus:Aus set Infotafel pixel 4 100 0 100 ;; set PumpeHofAlarm Alarm
setuuid wd_PumpeHofAn 5dc1d114-f33f-98a3-3bc3-0b2601b49725bcc2
attr wd_PumpeHofAn autoRestart 1
attr wd_PumpeHofAn group Watchdogs
attr wd_PumpeHofAn room System


define wd_PumpeHofAus watchdog PumpeHofStatus:Aus 01:00:00 PumpeHofStatus:An set Infotafel pixel 4 100 0 0 ;; set PumpeHofAlarm Alarm
setuuid wd_PumpeHofAus 5dc1e303-f33f-98a3-8e3f-a14f43b40d979bb8
attr wd_PumpeHofAus autoRestart 1
attr wd_PumpeHofAus group Watchdogs
attr wd_PumpeHofAus room System


Vielen Dank für eure Hilfe.

willib

Das liegt daran, dass dein DOIF jedesmal wenn bei deiner Steckdose die readings aktualisiert werden, den Dummy PumpeHofStatus auf An setzt. Diese Event startet deinen Watchdog neu.
Das könntest du verhindern indem du das do always attribut am DOIF löschst.
Besser wäre meiner Meinung nach ohne Dummies und watchdogs die gesamte Funktionalität in ein DOIF zu packen. Das mach dein System erheblich übersichtlicher.
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

Otto123

#2
Hi,

ich verstehe es auf die Schnelle nicht sofort aber es gibt auch noch ein attribute:
Zitatregexp1WontReactivate
When a watchdog is active, a second event matching regexp1 will normally reset the timeout. Set this attribute to prevents this.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Eddy1983

Vielen Dank für eure Hilfe.

Ich habe, so denke ich, schon eine Lösung gefunden.
Der Status der Pumpe wird nun nur noch auf "An" gesetzt wenn die Pumpe mehr als 200 Watt auf nimmt und ihr Status "Aus" ist. Ist der Status schon "An" wird nichts gemacht.

define di_PumpeHof DOIF ([FBDECT_Fritz.Box_08761_0074606:power:d] > 200 and [PumpeHofStatus] eq "Aus" and [PumpeHofAlarm] eq "OK")  (set PumpeHofStatus An ;; set Infotafel pixel 4 0 155 0) DOELSEIF ([FBDECT_Fritz.Box_08761_0074606:power:d] < 200 and [PumpeHofStatus] eq "An" and [PumpeHofAlarm] eq "OK") (set PumpeHofStatus Aus ;; set Infotafel pixel 4 0 0 0)
setuuid di_PumpeHof 5dc1beaa-f33f-98a3-351e-170d0d218f82a40e
attr di_PumpeHof do always


Zusätzlich wird nun auf meinem Display noch angezeigt ob die Pumpe grade läuft oder nicht. Allerdings nur wenn kein Alarm vorliegt. Ansonsten würde die Alarm-LED jedes mal ausgeschaltet wenn die Pumpe aus geht. Liegt ein Alarm vor passiert einfach nichts mehr bis ich den Alarm manuell lösche.

Ich werde das noch eine Zeit im Auge behalten und wenn es funktioniert auf [Gelöst] setzen.

Wie gesagt, vielen Dank für eure Hilfe. Manchmal sieht man halt den Wald vor lauter Bäumen nicht.

CoolTux

Einfach nur das do always weg und alles wäre schick gewesen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Eddy1983

#5
Hi CoolTux,

ich glaube Du hast mich damals auf die Idee mit den Watchdogs gebracht. Vielen Dank dafür.
Nur für mein Verständnis, würde das DOIF dann nicht nur ein mal laufen und danach nicht mehr?

Ich weiß, steht alles in der Referenz, nur verstehe ich nicht immer was da steht. :o

CoolTux

Wenn Du bei DOIF einen zweiten oder mehrere Zweige hast. Also DOELSIF dann aggiert das DOIF in seiner reinen Form als Statemaschin.
Bedeutet das eine Statusänderung erfolgen muss um einen weiteren Zweif aus zu lösen.


1(IF Lampe an mache Rollo runter) DOELSIF 2(ist lampe aus mache Rollo rauf)

Das Rollo kann nur rauf fahren wenn Lampe aus ist. Dazu muss aber zwingend die Lampe vorher angewesen sein. Es kann also nur in den Status 2 wechseln wenn er vorher im Status 1 war.
Das macht bei Deinem Beispiel absolut Sinn.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net