FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rbs am 21 Dezember 2016, 22:43:52

Titel: Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: rbs am 21 Dezember 2016, 22:43:52
Guten Abend liebe Fhem Gemeinde,

mein aktuelles Projekt ist gerade die Einbindung von Funkfernbedieungen in fhem für meine "Alarmanlange" bestehend aus Steckdose und Bewegungsmeldern.

Um den Tastendruck auf der Fernbedieung abzufangen habe ich mir ein notify angelegt. Nun merke ich aber, dass beim längeren drücken der Taste das event mehrmals so schnell nach einander aufgerufen wird, dass die aktionen wiederholt ausgeführt werden. kann man das irgendwie abfangen?
Hier mein Code:

#alarmanlage scharf/unscharf schalten mit FB 2

define act_on_alarmAnlage_An_by_FB1 notify Remote_Control2_Btn_01:Long.* {\
sleep 1;;\
if ( [ "alarmAnlage_Switch" ] ne "on" ) {\
fhem("set alarmAnlage_Status on");;\
Log(3,"Alarmanlage mit Fernbedieunung2 Taste 1 (lock) scharf geschaltet");;\
$main::lastAlarmMsg="Alarmanlage Fernbedieunung2 AN Button";;\
}\
}
define act_on_alarmAnlage_Aus_by_FB1 notify Remote_Control2_Btn_02:Long.* {\
sleep 1;;\
if ( [ "alarmAnlage_Switch" ] ne "off" ) {\
fhem("set alarmAnlage_Status off");;\
Log(3,"Alarmanlage mit Fernbedieunung2 Taste 2 (unlock) deaktiviert");;\
$main::lastAlarmMsg="Alarmanlage Fernbedieunung2 AUS Button";;\
}\
}

define act_on_alarmAnlage_An notify alarmAnlage_Status:on {\
if ( [ "alarmAnlage_Switch" ] ne "on" ) {\
fhem("set alarmAnlage_Switch on");;\
fhem ("set Wz.TvReceiver showText Alarm Anlage wurde aktiviert.");;\
DebianMail('test@test.info', 'Alarm Anlage wurde aktiviert.', 'AAA','');;\
}\
}

define act_on_alarmAnlage_Aus notify alarmAnlage_Status:off {\
if ( [ "alarmAnlage_Switch" ] ne "off" ) {\
fhem("set alarmAnlage_Switch off");;\
fhem ("set Wz.TvReceiver showText Alarm Anlage wurde deaktiviert.");;\
DebianMail('test@test.info', 'Alarm Anlage wurde deaktiviert.', 'AAA','');;\
}\
}

Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: MadMax-FHEM am 21 Dezember 2016, 23:04:27
Öffne doch mal den Eventmonitor und schaue was an Events kommt, wenn du die Aktion auslöst.

Eventuell wird der Event nur "gefühlt" mehrfach geschickt:

z.B.

Long

...

Long (to vccu)

...

Long (to Peer)

Wenn diese 3 Events kommen und die kommen dann alle zum selben Drücken auf der FB, dann "greift" dein Notify eben genau 3x...
D.h. du müsstest dein Notify besser "formulieren"...

Ein weiterer Punkt wäre event-on-change-reading passend definieren...

Gruß, Joachim
Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: Otto123 am 21 Dezember 2016, 23:19:12
Hallo rbs,

gehe mal bitte auf das Homematic Unterforum und suche nach long.*
Da findest Du sowas wie dies hier https://forum.fhem.de/index.php/topic,62238.msg536412.html#msg536412

Gruß Otto
Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: rbs am 22 Dezember 2016, 08:02:32
danke Euch für die Tipps. Ich schaue heute Abend mir das weiter an!
Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: rbs am 23 Dezember 2016, 00:42:52
So, hier mein event log:

2016-12-23 00:24:47 CUL_HM Remote_Control2 Remote_Control2_Btn_01 Long
2016-12-23 00:24:48 dummy alarmAnlage_Switch on
2016-12-23 00:24:48 ENIGMA2 Wz.TvReceiver showText Alarm Anlage wurde aktiviert.
2016-12-23 00:25:00 dummy alarmAnlage_Status on
2016-12-23 00:25:00 CUL_HM Remote_Control2_Btn_01 Long 1_19 (to broadcast)
2016-12-23 00:25:00 CUL_HM Remote_Control2_Btn_01 trigger: Long_19
2016-12-23 00:25:00 CUL_HM Remote_Control2_Btn_01 trigger_cnt: 19
2016-12-23 00:25:00 CUL_HM Remote_Control2 battery: ok
2016-12-23 00:25:00 CUL_HM Remote_Control2 Remote_Control2_Btn_01 Long
2016-12-23 00:25:01 dummy alarmAnlage_Switch on
2016-12-23 00:25:01 ENIGMA2 Wz.TvReceiver showText Alarm Anlage wurde aktiviert.
2016-12-23 00:25:09 dummy alarmAnlage_Status on
2016-12-23 00:25:09 CUL_HM Remote_Control2_Btn_01 Long 2_19 (to broadcast)
2016-12-23 00:25:09 CUL_HM Remote_Control2_Btn_01 trigger: Long_19
2016-12-23 00:25:09 CUL_HM Remote_Control2_Btn_01 trigger_cnt: 19
2016-12-23 00:25:09 CUL_HM Remote_Control2 battery: ok
2016-12-23 00:25:09 CUL_HM Remote_Control2 Remote_Control2_Btn_01 Long
2016-12-23 00:25:10 dummy alarmAnlage_Switch on
2016-12-23 00:25:11 ENIGMA2 Wz.TvReceiver showText Alarm Anlage wurde aktiviert.
2016-12-23 00:25:19 dummy alarmAnlage_Status on
2016-12-23 00:25:19 CUL_HM Remote_Control2_Btn_01 Long 3_19 (to broadcast)
2016-12-23 00:25:19 CUL_HM Remote_Control2_Btn_01 trigger: Long_19
2016-12-23 00:25:19 CUL_HM Remote_Control2_Btn_01 trigger_cnt: 19
2016-12-23 00:25:19 CUL_HM Remote_Control2 battery: ok
2016-12-23 00:25:19 CUL_HM Remote_Control2 Remote_Control2_Btn_01 Long
2016-12-23 00:25:21 dummy alarmAnlage_Switch on
2016-12-23 00:25:21 ENIGMA2 Wz.TvReceiver showText Alarm Anlage wurde aktiviert.
2016-12-23 00:25:31 dummy alarmAnlage_Status on
2016-12-23 00:25:31 CUL_HM Remote_Control2_Btn_01 Long 4_19 (to broadcast)
2016-12-23 00:25:31 CUL_HM Remote_Control2_Btn_01 trigger: Long_19
2016-12-23 00:25:31 CUL_HM Remote_Control2_Btn_01 trigger_cnt: 19



Den Post in dem Link habe ich mir angesehen. Habe nun verstanden, dass die Long events hochgezählt werden.
Aber so ganz verstanden wie ich das notify statt "Remote_Control2_Btn_01:Long.*" umschreiben muss, dass es nur noch einmal ausgelöst wird, habe ich noch nicht

Das klappte nicht:
Remote_Control2_Btn_01:Long.1
Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: Otto123 am 23 Dezember 2016, 00:47:22
Remote_Control2_Btn_01:Long.1.*
Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: rbs am 23 Dezember 2016, 07:46:42
Ui Danke ;D
Titel: Antw:Aktion bei notify derHM-RC-key3 bei Tastendruck nur einmal ausführen?
Beitrag von: Otto123 am 23 Dezember 2016, 07:53:52
Moin,

naja stammt nicht von mir Du hättest Du meinen Link lesen müssen  8) da hat es pfriemler ja gut erklärt
ZitatDu hast schon richtig erkannt, dass während des Tastendrückens die erste Zahl hinter Long heraufgezählt wird (und die nach dem _ den eigentlichen Tastendruck heraufzählt), die Änderungen default bei HomeMatic alle 0,4 Sekunden. Statt auf alle Longs zu triggern, kannst Du auf ein einzelnes Event reagieren:

FB12_Btn_10:Long.5.*
nutze ich bspw. in einem Notify, welches nach etwa 2 Sekunden getriggert wird (Schutz gegen Fehlbedienung). Ein Risiko besteht darin, dass dieses Event von FHEM übersehen wird, etwa weil eine Funkstörung den Empfang genau dieses Telegramms verhindert.
Triggerst Du auf ":Long.1.*", dann wird allerdings auch bei "Long 10_xxx" beginnend 10x getriggert (bis Long 19) und dann ab "Long 100" im Dauerfeuer.

Der Punkt nach Long ist tricky - Regex lässt grüßen. Um eine Beschäftigung damit kommst Du bei FHEM eigentlich nicht herum.
Gruß Otto