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.
Du kannst das RegEx enger setzen. Zeig Mal bitte einen Auszug aus dem Eventmonitor wenn du einen Knopf auf der Fernbedienung drückst.
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
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
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");
}
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
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
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.
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].*
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
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.
Fernbedienung:Fernbedienung_Btn_[0-9]+.Short
Finde DEINEN Fehler
Hätte ich dazuschreiben sollen.
Es geht weder mit Ferbedienung-xxx noch mit Ferbedienung:Ferbedienung_xxx
Statt Doppelpunkt mal nur einen Punkt probieren.
Auch keine Reaktion :(
und bitte lies und verstehe die Doku (https://fhem.de/commandref_DE.html#notify):
ZitatHinweise:
<Suchmuster> ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event.
Das <Suchmuster> muss exakt (!) entweder dem Gerätenamen entsprechen oder der Zusammenfügung aus Gerätename:Event. Events lassen sich mit "inform" in Telnet oder durch Beobachtung des "Event-Monitors" in FHEMWEB ermitteln.
Zitat von: Saphora am 08 Juli 2017, 11:21:28
Hätte ich dazuschreiben sollen.
Es geht weder mit Ferbedienung-xxx noch mit Ferbedienung:Ferbedienung_xxx
Weil es Fernbedienung heißen muss? ;D
Und keiner hat gesagt, dass hinter Short kein .* stehen soll/darf
Gruß Otto
Fernbedienung war nur ein Schreibfehler im Forum ;D
Folgendes geht nicht:
Fernbedienung:Fernbedienung_Btn_[0-9]+.Short.*
Folgendes geht:
Fernbedienung_Btn_[0-9]+.Short.*
:o
gerade im Eventmonitor getestet mit notify Style
[0-9]+ geht nicht im Eventmonitor (Bug?)
[0-9]+ geht aber sehr wohl im notify
Fernbedienung:Fernbedienung_Btn_[0,1][0-9].Short
geht auch im Eventmonitor
Ich weiß es jetzt erstmal nicht besser.
Gruß Otto
Danke.
Werde es so nutzen :)
Zitat[0-9]+ geht nicht im Eventmonitor (Bug?)
Siehe https://forum.fhem.de/index.php/topic,74028
Super.
Auch von mir Danke für das fixen :D