LONG-Abfrage mit direkter Zuordnung eines Aktors zu einer FB kombinieren

Begonnen von TommiH, 23 Juni 2021, 12:54:40

Vorheriges Thema - Nächstes Thema

TommiH

Moin zusammen,

ich versuche gerade folgendes Problem zu lösen.
Ich habe eine 4/8er Fernbedienung (HM-RC-8) bei der ich mit den Tasten 1/2 eine Markise verbunden habe.
Mit den Tasten 3 und 4 sind einzelne Aktoren verbunden. Das klappt alles wunderbar.

Nun habe ich überlegt mit einem Notify eine weitere Zuordnung zu erzeugen

define nGA_FB_Btn_08 notify GA_FB_Btn_08.Long.* set GA_Markise pct 40

Auch das geht wie gewünscht, nun kommt aber das Problem.

Kann ich irgendwie realisieren, dass ich auch mit der Taste 1 oder 2 das notify nutzen kann?

Ein
define nGA_FB_Btn_02 notify GA_FB_Btn_02.Long.* set GA_Markise pct 40
funktioniert leider nicht. Wenn ich nun lang auf die Taste 2 drücke, dann fährt die Markise ca. 2 Sekunden raus und bleibt dann wieder stehen. Wo ist da mein Fehler?

LG
Tommi


Otto123

Hallo Tommi,
ZitatTasten 1/2 eine Markise verbunden habe.
Du hast die beiden Tasten mit dem Aktor gepeert?

Dann bewirkt der Lange Tastendruck ja genau das was vorgesehen ist: er fährt solange Du drückst. (Standardverhalten)

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

Beta-User

Du solltest für sowas auch immer den Event-Monitor parallel ansehen.

Aus dem Kopf sehe ich zwei Probleme:
a) das (auch von Otto123 vermutete) direkte Peering bewirkt, dass der letzte Befehl, den der Aktor "sieht", die "Release"-Mitteilung ist. Die überschreibt dann alle vorhergehenden Anweisungen (ggf. eben auch die vom notify)
b) du wertest relativ viele Events aus und sendest daher vermutlich auch oft denselben Befehl raus => ungünstig...

Würde das wie folgt angehen:
1) das Peering sollte nur die kurzen Tastendrücke für Schaltaktionen auswerten. Dazu muss ggf. die Parametrierung auf dem Aktor geändert werden. Details wären die "lg"-Werte (oder so ähnlich) zu ändern, Details bitte dem Wiki (Startpunkt: https://wiki.fhem.de/wiki/Homematic_Peering_Beispiele?) und dem Anhang zum Einsteiger-pdf entnehmen;
2) den trigger für das notify auf den "Release"-Event einschränken und dann ggf. noch ein (kurzes) (FHEM-) sleep vor die eigentliche Funkanweisung (set ...) einfügen, dass sich erst der Funkverkehr beruhigen kann, bevor was neues kommt (nämlich das, das letztendlich gewollt ist).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

TommiH

Ah, okay, stimmt eigentlich,

kurz - so lange bis Ende oder ein anderer Druck kommt
lang - so lange, bis losgelassen wird

Gut, damit wäre es klar, warum es sich so verhält - ist ja richtig.

Letztendlich müsste das  LongRelease abgefragt werden, davor alles quasi auf 0 gesetzt werden, damit nichts weiter abgearbeitet wird und dann nach dem  LongRelease müsste dann der eigentliche Befehl GA_Markise pct 40 abgesetzt werden.

Dann schaue ich mir mal nochmal die Peering-Beispiele an, danke für die beiden Infos/Anregungen.

LG
Tommi

Beta-User

Zitat von: TommiH am 23 Juni 2021, 13:22:33
Letztendlich müsste das  LongRelease abgefragt werden,
[OT-Hinweis]
Die Wortwahl "abgefragt" irritiert mich etwas: MAn. sollte man sich angewöhnen, die Wortwahl an die "Denkweise" vom jeweiligen Modul anzupassen, und hier wäre dann m.E. eben besser: (Nur) der LongRelease-Event soll (als trigger) ausgewertet (und beachtet) werden.

Obacht: Wenn du direktes peering hast und eine VCCU eingerichtet, kann es sein, dass du zwei entsprechende Events hast. Dann bitte den Trigger noch weiter einschränken (Tipp: die Klammern dann in der regexp durch Punkte ersetzen).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Hallo TommiH

Da wir jetzt schon beim Feintuning sind :)
Dein Trigger ist nicht "günstig" siehe auch hier: https://forum.fhem.de/index.php?topic=115414.0

Long ist noch spezieller. Man kann aber so triggern, dass nur ein Long erkannt wird - den ersten Event im Hauptdevice und nicht im Channel nehmen! Taster4_01:Taster_Klingel:.Long :
2021-06-24 09:16:07 CUL_HM Taster4_01 Taster_Klingel Long
2021-06-24 09:16:08 CUL_HM Taster_Klingel Long 1_3 (to VCCU)
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger_cnt: 3
2021-06-24 09:16:08 CUL_HM Taster_Klingel Long 2_3 (to VCCU)
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger_cnt: 3
2021-06-24 09:16:08 CUL_HM Taster_Klingel Long 3_3 (to VCCU)
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger_cnt: 3
2021-06-24 09:16:08 CUL_HM Taster_Klingel Long 4_3 (to VCCU)
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:08 CUL_HM Taster_Klingel trigger_cnt: 3
2021-06-24 09:16:09 CUL_HM Taster_Klingel Long 5_3 (to VCCU)
2021-06-24 09:16:09 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:09 CUL_HM Taster_Klingel trigger_cnt: 3
2021-06-24 09:16:09 CUL_HM Taster_Klingel Long 6_3 (to VCCU)
2021-06-24 09:16:09 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:09 CUL_HM Taster_Klingel trigger_cnt: 3
2021-06-24 09:16:09 CUL_HM Taster4_01 CMDs_done
2021-06-24 09:16:09 CUL_HM Taster4_01 Taster_Klingel LongRelease
2021-06-24 09:16:09 CUL_HM Taster_Klingel LongRelease 6_3 (to VCCU)
2021-06-24 09:16:09 CUL_HM Taster_Klingel trigger: Long_3
2021-06-24 09:16:09 CUL_HM Taster_Klingel trigger_cnt: 3

Man kann auch gezielt auf einen bestimmten (den dritten) Long reagieren Taster_Klingel:Long.3_.* .
Man kann die Dauer auswerten:
defmod n_TasterklingelLong notify Taster_Klingel:Long.(\d*)_.* {my $string=$EVENT;;$string=~/Long.(\d*)_.*/;;my $number=$1;; if ($number > 3){Log 1,"So Lange gedrueckt: $number"}}
Man kann eine mehrfachtriggerung verhindern durch das Attribute disabledAfterTrigger
ZitatdisabledAfterTrigger <sekunden>
deaktiviert die Ausführung für <sekunden> nach dem das notify ausgelöst wurde.

Zu Long_Release : mMn drückt die eine Hälfte der Menschheit den Knopf bis etwas passiert - die sind bei dieser Logik quasi raus :)

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

Beta-User

Zitat von: Otto123 am 24 Juni 2021, 09:24:57
Zu Long_Release : mMn drückt die eine Hälfte der Menschheit den Knopf bis etwas passiert - die sind bei dieser Logik quasi raus :)
(Im Prinzip): fully agreed!

Das sollte man ggf. nur triggern lassen, um z.B. einen Dimmprozess zu beenden.

Hier ist es aber etwas speziell: Wer weiß, dass ein langer Tastendruck eine ganz bestimmte Position anfahren soll, sollte sich auch merken können, dass das ganze erst losläuft, wenn er losläßt ::) ... Ob sich das mit einer direkten Reaktion hier mit direktem Peering (?) überhaupt lösen ließe, habe ich aber auch nicht näher untersucht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

frank

warum eigentlich zusätzlich ein notify nutzen?
das sollte doch auch direkt über das peering funktionieren.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html