FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: dantist am 01 Dezember 2015, 22:52:39

Titel: HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 01 Dezember 2015, 22:52:39
Hallo,

gibt es eine Möglichkeit, die Updatefrequenz des Homematic-Wandtasters zu reduzieren bzw. zu häufige Updates zu ignorieren?

Wenn man den Taster gedrückt hält, wird gefühlt 5x pro Sekunde ein long press gefeuert. Ich würde auf dieses Event gerne maximal 1-2x pro Sekunde reagieren. Gibt es dafür eine elegante Lösung? Habe es mit event-min-interval versucht, aber das bewirkt nichts.

Hintergrund ist, dass ich mit dem Schalter einige Hue-Lampen dimme, und mehr als zwei Updates pro Sekunde machen die nicht mit.

Grüße
Daniel
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: justme1968 am 01 Dezember 2015, 23:06:19
die hue bridge verträgt beim schalten einer lanpe etwa 10 kommandos pro sekunde. du musst aber über ein delayedUpdate beim set dimUp bzw. dimDown dafür sorgen das die bridge nicht mit gleichzeitigem pollen überrannt wird.

um das dimmen direkt live zu sehen ist es auch sinnvoll transitiontime auf 0 zu setzen.

gruss
  andre
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 01 Dezember 2015, 23:19:19
Stimmt, bei einer einzelnen Lampe ist das auch kein Problem. Es sollen allerdings drei Lampen gleichzeitig geschaltet werden, und da kommt es zu den genannten Problemen.

Hast du ein Beispiel zum Thema "delayedUpdate"? Finde da grade nichts zu. Wird das als Attribut auf eine Gruppe oder auf einzelne Lampen gesetzt? Und was genau bewirkt das?
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: justme1968 am 02 Dezember 2015, 00:15:49
delayedUpdate ist in diesem fall kein attribut sondern gehört mit ins set kommando: set <devices> dimDown : transitiontime 0 : delayedUpdate

auch beim einer hand voll lampen sollte es noch keine wirklichen problem machen. wenn es noch mehr werden schau mal ob es mit einer hue group besser geht.

gruss
  andre
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 02 Dezember 2015, 00:36:51
Funktioniert leider auch nicht, egal ob mit den drei Devices oder der Gruppe  :( Es wird immer der erste dimUp bzw. dimDown ausgeführt, danach hängt es für eine Weile und reagiert überhaupt nicht mehr.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: frank am 02 Dezember 2015, 08:26:52
ZitatWenn man den Taster gedrückt hält, wird gefühlt 5x pro Sekunde ein long press gefeuert. Ich würde auf dieses Event gerne maximal 1-2x pro Sekunde reagieren. Gibt es dafür eine elegante Lösung? Habe es mit event-min-interval versucht, aber das bewirkt nichts.
1. ein long ist wahrscheinlich default=0.4s. demnach sollten keine 5 events auftauchen. ich denke deine regex könnte besser werden. welche events werden auf dem eventmonitor angezeigt?
2. bei einem echten hm taster hast du eventuell ein register um das long zu verlängern. vielleicht longpress.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 03 Dezember 2015, 23:54:36
Ich habe es grade noch einmal getestet (Schalter gedrückt halten) und ins Logfile geschaut. Das "Long"-Event wird bis zu 11x pro Sekunde gefeuert:

2015-12-03_23:49:45 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:45 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:45 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:46 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:48 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:49 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:49 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:49 SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-03_23:49:49 SchalterFlur1 SchalterFlur1_Button2 Long


@frank Was meinst du mit "regex könnte besser werden"?
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: justme1968 am 04 Dezember 2015, 00:03:31
kannst du bitte mal mit verbose 5 schauen wo genau es dann hängt?

11 mal pro sekunde kommt mir auch sehr viel vor. ich glaube der kleinste möglichen werte für longpress sind 0.3s bis 1.8s. aber das hängt eventuell auch vom device ab.

ich habe mit einem HM-PB-2-WM55 aber auch das problem das ich ihn nicht zum vernünftigen lautstärke einstellen eines sonos player verwenden kann. es ruckelt und hackt. mit einem bluetoth taster funktioniert es dagegen wunderbar.

gruss
  andre
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: frank am 04 Dezember 2015, 00:24:11
Zitat@frank Was meinst du mit "regex könnte besser werden"?
du reagierst doch sicherlich über notify? poste die ausgabe vom eventmonitor, wenn du den taster gedrückt hälst und das notify, oder was auch immer.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 15 Dezember 2015, 19:02:53
Zitat von: frank am 04 Dezember 2015, 00:24:11
du reagierst doch sicherlich über notify? poste die ausgabe vom eventmonitor, wenn du den taster gedrückt hälst und das notify, oder was auch immer.

Hier ist die Ausgabe des Eventmonitors, wenn ich den Schalter ein paar Sekunden gedrückt halte:

Events (Filter:.*):
2015-12-15 18:57:11.903 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:11.903 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:11.916 CUL_HM SchalterFlur1_Button2 Long 1_89 (to SchalterFlur1)
2015-12-15 18:57:11.916 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:11.916 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:12.136 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:12.136 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:12.146 CUL_HM SchalterFlur1_Button2 Long 2_89 (to SchalterFlur1)
2015-12-15 18:57:12.146 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:12.146 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:12.392 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:12.392 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:12.402 CUL_HM SchalterFlur1_Button2 Long 3_89 (to SchalterFlur1)
2015-12-15 18:57:12.402 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:12.402 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:12.648 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:12.648 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:12.658 CUL_HM SchalterFlur1_Button2 Long 4_89 (to SchalterFlur1)
2015-12-15 18:57:12.658 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:12.658 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:12.904 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:12.904 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:12.915 CUL_HM SchalterFlur1_Button2 Long 5_89 (to SchalterFlur1)
2015-12-15 18:57:12.915 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:12.915 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:13.160 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:13.160 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:13.171 CUL_HM SchalterFlur1_Button2 Long 6_89 (to SchalterFlur1)
2015-12-15 18:57:13.171 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:13.171 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:13.416 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:13.416 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:13.427 CUL_HM SchalterFlur1_Button2 Long 7_89 (to SchalterFlur1)
2015-12-15 18:57:13.427 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:13.427 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:13.672 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:13.672 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:13.683 CUL_HM SchalterFlur1_Button2 Long 8_89 (to SchalterFlur1)
2015-12-15 18:57:13.683 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:13.683 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:13.928 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:13.928 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:13.939 CUL_HM SchalterFlur1_Button2 Long 9_89 (to SchalterFlur1)
2015-12-15 18:57:13.939 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:13.939 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:14.184 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:14.184 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:14.195 CUL_HM SchalterFlur1_Button2 Long 10_89 (to SchalterFlur1)
2015-12-15 18:57:14.195 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:14.195 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:14.440 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:14.440 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:14.451 CUL_HM SchalterFlur1_Button2 Long 11_89 (to SchalterFlur1)
2015-12-15 18:57:14.451 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:14.451 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:14.696 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:14.696 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:14.707 CUL_HM SchalterFlur1_Button2 Long 12_89 (to SchalterFlur1)
2015-12-15 18:57:14.707 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:14.707 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:14.961 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:14.961 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:14.978 CUL_HM SchalterFlur1_Button2 Long 13_89 (to SchalterFlur1)
2015-12-15 18:57:14.978 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:14.978 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:15.208 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:15.208 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:15.219 CUL_HM SchalterFlur1_Button2 Long 14_89 (to SchalterFlur1)
2015-12-15 18:57:15.219 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:15.219 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:15.464 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:15.464 CUL_HM SchalterFlur1 SchalterFlur1_Button2 Long
2015-12-15 18:57:15.475 CUL_HM SchalterFlur1_Button2 Long 15_89 (to SchalterFlur1)
2015-12-15 18:57:15.475 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:15.475 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89
2015-12-15 18:57:15.723 CUL_HM SchalterFlur1 battery: ok
2015-12-15 18:57:15.723 CUL_HM SchalterFlur1 CMDs_done
2015-12-15 18:57:15.723 CUL_HM SchalterFlur1 SchalterFlur1_Button2 LongRelease
2015-12-15 18:57:15.735 CUL_HM SchalterFlur1_Button2 LongRelease 16_89 (to SchalterFlur1)
2015-12-15 18:57:15.735 CUL_HM SchalterFlur1_Button2 trigDst_555342: noConfig
2015-12-15 18:57:15.735 CUL_HM SchalterFlur1_Button2 trigger: Long_89
2015-12-15 18:57:15.735 CUL_HM SchalterFlur1_Button2 trigger_cnt: 89


Das Notify triggert den Dim-Befehl an die Hue-Lampen. Wenn ich dort ein Logging einfüge, sieht es so aus:

2015.12.15 18:59:48.319 2: long press
2015.12.15 18:59:48.563 2: long press
2015.12.15 18:59:48.818 2: long press
2015.12.15 18:59:49.075 2: long press
2015.12.15 18:59:49.331 2: long press
2015.12.15 18:59:50.075 2: long press
2015.12.15 18:59:50.108 2: long press
2015.12.15 18:59:50.165 2: long press
2015.12.15 18:59:50.354 2: long press
2015.12.15 18:59:50.610 2: long press
2015.12.15 18:59:50.866 2: long press
2015.12.15 18:59:51.122 2: long press
2015.12.15 18:59:51.378 2: long press
2015.12.15 18:59:51.634 2: long press
2015.12.15 18:59:51.893 2: long press


Helfen die Ausgaben weiter? Eine elegante Lösung wäre vielleicht eine Art "Cooldown"-Phase für das Notify, z.B. dass mindestens 0,5 Sekunden zum letzten Aufruf vergangen sein müssen, damit es reagiert. Vielleicht bin ich gedanklich aber auch auf dem Holzweg.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: frank am 15 Dezember 2015, 20:01:37
zuerst einmal setze event-on-change=.* in allen channels und dem device vom taster. dann fallen schon mal alle doppelten raus. das solltest du grundsätzlich in allen devices tun.
dann fehlt noch die definition von deinem notify.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 15 Dezember 2015, 20:20:07
Wenn ich event-on-change setze, würde das long press dann nicht nur noch einmal ausgeführt bis zum Loslassen des Schalters? Es soll ja gefeuert werden, solange der Schalter gedrückt wird. Eben nur nicht so kurz hintereinander wie im Moment.

Das Notify sieht so aus:

SchalterFlur[0-9]:SchalterFlur[0-9]_Button.* { dimmer_Hall("$EVENT") }

Es gibt drei Flurschalter, daher die Platzhalter.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: frank am 15 Dezember 2015, 20:50:15
ZitatWenn ich event-on-change setze, würde das long press dann nicht nur noch einmal ausgeführt bis zum Loslassen des Schalters?
da hast du recht. mit deinem aktuellen notify wird das dann nichts.

1. mir kommt der abstand deiner long events zu kurz vor. das solltest du in einem register verlängern können. wahrscheinlich bis 1.8 sek. das wäre das eleganteste im moment.

2. ansonsten triggerst du auf die events
2015-12-15 18:57:11.916 CUL_HM SchalterFlur1_Button2 Long 1_89 (to SchalterFlur1)
und änderst die regex entsprechend und lässt nur einige events triggern, zb das 1. und 5. long:

SchalterFlur[0-9]_Button2.Long.(1|5)_.*
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 15 Dezember 2015, 21:10:04
Mit Registern habe ich mich bisher nicht beschäftigt, auf den ersten Blick scheinen sie aber ok zu sein (ich vermute mal nur R-longPress ist relevant). Die Werte sind bei allen Schaltern identisch. Die eingetragenen 0,4 Sekunden scheinen also ignoriert zu werden.

(http://www.bilder-upload.eu/upload/eddcb0-1450211096.png)

Wenn sich da nichts machen lässt, werde ich deine Notify-Anpassung testen, das ist eine gute Idee. Wobei mir saubere bzw. tatsächlich berücksichtigte Registerwerte lieber wären.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: frank am 15 Dezember 2015, 22:10:12
verstell doch mal longPress auf 1s. mit get regList siehst du immer alle register und die möglichen werte.

set <chn> regSet longPress 1
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: dantist am 15 Dezember 2015, 23:16:02
Ich habe den Wert testweise auf 1 gesetzt, aber ohne Änderung des Intervalls. Mir ist allerdings aufgefallen, dass beim gedrückt halten des Schalters die orangene LED nun später zu leuchten beginnt. Es sieht so aus, als beschreibt "R-longPress", nach welcher Zeitspanne ein long- statt eines short-press registriert wird.
Titel: Antw:HM-PB-2-WM55 - Updates pro Sekunde bei gedrücktem Schalter reduzieren
Beitrag von: frank am 15 Dezember 2015, 23:43:09
also nur die zeit bis zum ersten long, schade.
dafür kannst du dann event-on-change nehmen und sparst eine menge events.  :)