Mehrfach Auslösen Notify verhindern

Begonnen von Saphora, 08 Juli 2017, 07:21:00

Vorheriges Thema - Nächstes Thema

Saphora

Guten morgen zusammen,
ist es möglich das mehrfache Aufrufen eines Notify innerhalb weniger Millisekunden zu vermeiden?

Hintergrund: Es wird eine Homematic Fernbedienung genutzt, welche ein Notify auslöst. Da Homematic 5 Mal sendet, wird das Notify auch bis zu 5 Mal ausgelöst.
Das ist bei Aufruf von Funktionen etwas blöd, weil Aktionen mehrfach ausgelöst werden und dadurch durcheinander kommen.
Eine Möglichkeit wäre die Senderate auf 1 bei Homematic Geräten zu stellen. Jedoch geht da etwas die Zuverlässigkeit beim schalten verloren.
Gibt es noch andere Wege?
Danke.

CoolTux

Du kannst das RegEx enger setzen. Zeig Mal bitte einen Auszug aus dem Eventmonitor wenn du einen Knopf auf der Fernbedienung drückst.
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

heinzfo

#2
Das Attribute update-on-change-reading hat mir in solchen Fällen immer geholfen.

attr xxxx update-on-change-reading .*

Grüße, Heinz

Gesendet von meinem SM-G930F mit Tapatalk

CoolTux

Zitat von: heinzfo am 08 Juli 2017, 08:07:32
Das Attribute update-on-change-reading hat mir in solchen Fällen immer geholfen.

attr xxxx update-on-change-reading .*

Grüße, Heinz

Gesendet von meinem SM-G930F mit Tapatalk

Das könnte in der Tat helfen. Allerdings kann es auch, im Übermaß angewendet, das System zusätzlich belasten. Daher vielleicht besser erstmal schauen wie weit man mit RegEx kommt
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

Saphora

Also im Log wird der Button Druck nur einmal ausgegeben:
                                                                       
2017-07-08 10:14:01 CUL_HM Fernbedienung battery: ok
2017-07-08 10:14:01 CUL_HM Fernbedienung Fernbedienung_Btn_12 Short
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 Short (to broadcast)
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 trigger: Short_31
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 trigger_cnt: 31


Hier mal der Perl Code für den Button 12. Wenn ich mir in der colorSub() eine Ausgabe mache, dann wird diese zwischen 3 - 5 Mal ausgegeben. 
Fernbedienung_Btn_[01]. {
if($NAME =~ /01/ && $EVENT =~ /Short/){
    colorSub("1");
                }

Otto123

#5
Moin,

also Homematic sendet nicht 5 mal, das ist schlicht und ergreifend falsch! Er sendet mehrere Informationen hintereinander und Du reagierst auf Alles.
Versuch mal Fernbedienung_Btn_12:Short.*

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

CoolTux

Zitat von: Saphora am 08 Juli 2017, 10:22:24
Also im Log wird der Button Druck nur einmal ausgegeben:
                                                                       
2017-07-08 10:14:01 CUL_HM Fernbedienung battery: ok
2017-07-08 10:14:01 CUL_HM Fernbedienung Fernbedienung_Btn_12 Short
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 Short (to broadcast)
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 trigger: Short_31
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 trigger_cnt: 31


Hier mal der Perl Code für den Button 12. Wenn ich mir in der colorSub() eine Ausgabe mache, dann wird diese zwischen 3 - 5 Mal ausgegeben. 
Fernbedienung_Btn_[01]. {
if($NAME =~ /01/ && $EVENT =~ /Short/){
    colorSub("1");
                }





Fernbedienung:Fernbedienung_Btn_.*.Short {
if($NAME =~ /01/ && $EVENT =~ /Short/){
    colorSub("1");
                }


Probiere mal bitte erstmal so. Das kann man noch feiner machen. Müsste ich aber erstmal testen

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

CoolTux


Fernbedienung:Fernbedienung_Btn_[0-9]+.Short {
if($NAME =~ /01/ && $EVENT =~ /Short/){
    colorSub("1");
                }


So geht es auch. Wobei ich denke das Deine Abfrage dann unnötig sein sollte. Aber das kannst nur Du wissen.
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

Saphora

Also folgend funktioniert es:
Fernbedienung_Btn_[0-9]+.Short.*

Das Notify soll aber noch zwischen Short und Long unterscheiden. Meine Annahme, dass der folgende Code geht. Jedoch wird dann das Notify wieder zweimal ausgelöst:
Fernbedienung_Btn_[0-9]+.[Short|Long].*

Otto123

#9
Weil Du damit wieder zweimal reagierst:
Zitat
2017-07-08 10:14:01 CUL_HM Fernbedienung Fernbedienung_Btn_12 Short
2017-07-08 10:14:01 CUL_HM Fernbedienung_Btn_12 Short (to broadcast)
Du musst es schon so machen wie CoolTux vorschlägt.
Kennst Du den Eventmonitor? Dort kann man alles testen und vor allem Live sehen was passiert und was nicht.

Aber bei long wird es eh Dauerfeuer.

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

Saphora

Fernbedienung_Btn_[0-9]+.Short
Wenn hinter Short kein Punkt steht, dann reagiert das Notify nicht.

Eine Möglichkeit wäre dann zwei Notifiy mit Short und Long.

CoolTux

Fernbedienung:Fernbedienung_Btn_[0-9]+.Short


Finde DEINEN Fehler
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

Saphora

Hätte ich dazuschreiben sollen.
Es geht weder mit Ferbedienung-xxx noch mit Ferbedienung:Ferbedienung_xxx

CoolTux

Statt Doppelpunkt mal nur einen Punkt probieren.
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

Saphora