FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Saphora am 08 Juli 2017, 07:21:00

Titel: Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 08 Juli 2017, 07:21:00
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.
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: CoolTux am 08 Juli 2017, 07:27:35
Du kannst das RegEx enger setzen. Zeig Mal bitte einen Auszug aus dem Eventmonitor wenn du einen Knopf auf der Fernbedienung drückst.
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag 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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: CoolTux am 08 Juli 2017, 09:26:00
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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag 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");
                }
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Otto123 am 08 Juli 2017, 10:36:10
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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: CoolTux am 08 Juli 2017, 10:41:22
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

Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: CoolTux am 08 Juli 2017, 10:45:10

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.
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 08 Juli 2017, 10:58:03
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].*
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Otto123 am 08 Juli 2017, 10:59:55
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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 08 Juli 2017, 11:09:57
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.
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: CoolTux am 08 Juli 2017, 11:13:14
Fernbedienung:Fernbedienung_Btn_[0-9]+.Short


Finde DEINEN Fehler
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag 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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: CoolTux am 08 Juli 2017, 11:23:16
Statt Doppelpunkt mal nur einen Punkt probieren.
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 08 Juli 2017, 11:25:36
Auch keine Reaktion :(
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Otto123 am 08 Juli 2017, 11:26:11
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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 08 Juli 2017, 11:34:14
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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Otto123 am 08 Juli 2017, 11:51:14
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
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 08 Juli 2017, 12:44:49
Danke.
Werde es so nutzen :)
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: rudolfkoenig am 08 Juli 2017, 14:26:37
Zitat[0-9]+ geht nicht im Eventmonitor (Bug?)

Siehe https://forum.fhem.de/index.php/topic,74028
Titel: Antw:Mehrfach Auslösen Notify verhindern
Beitrag von: Saphora am 10 Juli 2017, 20:04:55
Super.
Auch von mir Danke für das fixen  :D