FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: nofear87 am 06 Februar 2014, 12:52:42

Titel: Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: nofear87 am 06 Februar 2014, 12:52:42
Der Push mit Pushover funktioniert einwandfrei, leider wird er 3-4 Mal abgeschickt. Ich denke das liegt aber nicht am Pushover sondern am FHEM bzw. MAX Event.

Warum wird dieses mehrmals ausgelöst? Gibt es eine Möglichkeit das Event nur einmal abzuschicken? Kann man evtl. auf die Auslösezeit zugreifen, um eine Zeitsperre einzurichten?

Hier noch mein Config-Code:

define Tuer_closed notify MAX_073c07 { if ( Value("MAX_073c07") eq "closed") {fhem("set PushService msg 'Titel' 'Wohnungstür wurde geschlossen' '' 0 ''")} }
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: siggi85 am 06 Februar 2014, 12:57:42
Wenn das Event öfter ausgelöst wird, obwohl sich der Zustand nicht ändert, könnte dir das Attribut "event-on-change-reading" vielleicht weiter helfen. Ein Event wird so nur noch bei einer Statusänderung ausgelöst.
Vielleicht gibt es aber auch eine Lösung damit dein Pushover nur ein mal gesendet wird. Dann wird auch wirklich das Problem und nicht nur das Symptom bekämpft. Da kann aber vielleicht jemand anderes weiter helfen.
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: betateilchen am 06 Februar 2014, 13:03:06
Dein Push wird immer dann ausgeführt, wenn sich irgendwas an Deinem Device ändert. Dein notify ist einfach zu unspezifisch. Du willst doch eigentlich nur dann benachrichtigt werden, wenn ein closed passiert. Somit könntest Du das triggern direkt auf das closed begrenzen:

define Tuer_closed notify MAX_073c07.*:.*closed.*
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: nofear87 am 06 Februar 2014, 13:58:19
Super! Vielen Dank an euch beide!

Es funktioniert aber ich habe noch nicht so recht verstanden wo der unterschied zwischen
.*:.*closed.*
und
{ if ( Value("MAX_073c07") eq "closed")
besteht :(

Nach was sollte ich hier mal in der Reference suchen?

Das stündliche Status Event des Fensterkontaktes kann ich damit sicher noch nicht umgehen?
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: siggi85 am 06 Februar 2014, 15:38:36
Zitat von: nofear87 am 06 Februar 2014, 13:58:19
Das stündliche Status Event des Fensterkontaktes kann ich damit sicher noch nicht umgehen?

Wenn der Status sich nicht ändert, dann kannst du es über "attr XXX event-on-change-reading state" Events verhindern die den Status nicht verändern.
--> Erst wieder ein Event wenn der Status sich ändert
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: herrmannj am 06 Februar 2014, 16:15:50
ZitatEs funktioniert aber ich habe noch nicht so recht verstanden wo der unterschied zwischen
Code: [Auswählen]

.*:.*closed.*

und
Code: [Auswählen]

{ if ( Value("MAX_073c07") eq "closed")

besteht :(

Nach was sollte ich hier mal in der Reference suchen?

Ersteres (siehe Betateilchens code) löst nur aus wenn der status sich auf "closed" ändert. Dein Versuch hat bei jeder Meldung des max (also auch battery oder "ich lebe noch" Meldung) das notify ausgelöst und im notify wird geprüft ob "closed" ist.

Betateilchens Variante ist btw auch gleich effizienter weil das notify nur bei Bedarf ausgelöst wird, das erzeugt auch weniger fhem Rechenlast. Minimal liese sich das nur noch durch
define Tuer_closed notify MAX_073c07:closed (etvl auch so notwendig: "define Tuer_closed notify MAX_073c07:\sclosed") optimieren, dann muss die regex engine noch weniger "denken".

Deine Frage "wo kann ichs nachschlagen": google Dich in regex ein, sind in fhem ein Kernkonzept.

vg
Jörg
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: nofear87 am 06 Februar 2014, 16:33:12
Zitat von: siggi85 am 06 Februar 2014, 15:38:36
Wenn der Status sich nicht ändert, dann kannst du es über "attr XXX event-on-change-reading state" Events verhindern die den Status nicht verändern.
--> Erst wieder ein Event wenn der Status sich ändert

Danke! Werde ich mir anschauen, hört sich sinnvoll an!

Zitat von: herrmannj am 06 Februar 2014, 16:15:50
Ersteres (siehe Betateilchens code) löst nur aus wenn der status sich auf "closed" ändert. Dein Versuch hat bei jeder Meldung des max (also auch battery oder "ich lebe noch" Meldung) das notify ausgelöst und im notify wird geprüft ob "closed" ist.

Betateilchens Variante ist btw auch gleich effizienter weil das notify nur bei Bedarf ausgelöst wird, das erzeugt auch weniger fhem Rechenlast. Minimal liese sich das nur noch durch
define Tuer_closed notify MAX_073c07:closed (etvl auch so notwendig: "define Tuer_closed notify MAX_073c07:\sclosed") optimieren, dann muss die regex engine noch weniger "denken".

Deine Frage "wo kann ichs nachschlagen": google Dich in regex ein, sind in fhem ein Kernkonzept.

vg
Jörg

Was genau wird mit den regexp durchsucht? Die Readings?

Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: herrmannj am 06 Februar 2014, 16:39:35
yes:

devspec state oder devspec reading value je noch Form.

edith:
Wobei "durchsucht" mißverständlich ist / sein kann. Immer wenn ein Event erzeugt wird prüft die regex ob das (device + ...) event zur "seiner" Definition passt.

vg
Jörg
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: nofear87 am 07 Februar 2014, 19:15:06
Danke Jörg!

define Balkontuer MAX ShutterContact 073d67
attr Balkontuer room Kueche

attr  Balkontuer event-on-change-reading state
define Log_Balkontuer FileLog ./log/Balkontuer-%Y.log Balkontuer
attr Log_Balkontuer logtype text
attr Log_Balkontuer room Kueche


Ist es richtig, dass es reicht wenn ich die markierte Zeile hinzufüge, um stündliche Events zu unterbinden?
Wenn ich die Referenz richtig verstanden habe löst das Event jetzt nur noch aus wenn sich state in den Readings ändert?
Ich frage das ganze dann dennoch weiter mit notify ab?


Readings
battery    ok    2014-02-07 19:09:59
onoff    0    2014-02-07 19:09:59
state    closed    2014-02-07 19:09:59
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: Groby am 08 Februar 2014, 09:58:13
Hi,

richtig, wenn Du auch die battery im "Auge" behalten willst musst Du das so abändern:

attr  Balkontuer event-on-change-reading battery,state

Dann bekommst Du Events nur bei bei Änderung von battery & state, die Du mit notifies abarbeiten kannst...

MfGroby
Titel: Antw:Event wird zu häufig ausgelöst. Wie kann ich das umgehen/verhindern?
Beitrag von: nofear87 am 08 Februar 2014, 15:20:31
Danke, habe ich getestet und es funktioniert wie gewünscht ;-)