Moin
Ich habe eine HM-RC-8 Fernbedienung die ich zum Steuern von Nicht-HM Devices (Somfy Rolläden) nutze. Hierfür habe ich einen Virtual Aktor erstellt und die Kanäle der Fernbedienung mit den Kanälen des Aktor pepeert (Single Set).
Ich kann hier jetzt je Kanal zwischen On und Off unterscheiden und mittels DOIF den Somfy Rolläden steuern.
Ich würde aber gerne auch die Möglichkeit der FB nutzen zwischen Long und Short Tastendrücken zu unterscheiden. Jemand eine Idee, wie ich das hinbekomme?
Hier ein Auszug aus meiner FHEM.cfg
define Remote_WZ CUL_HM 4C7EE9
attr Remote_WZ IODev CUL_0
attr Remote_WZ IOgrp VCCU:CUL_0
attr Remote_WZ autoReadReg 4_reqStatus
attr Remote_WZ expert 2_raw
attr Remote_WZ firmware 1.1
attr Remote_WZ group Fernbedienung
attr Remote_WZ model HM-RC-8
attr Remote_WZ room CUL_HM
attr Remote_WZ serialNr NEQ0503128
attr Remote_WZ subType remote
attr Remote_WZ webCmd getConfig:clear msgEvents
define FileLog_Remote_WZ FileLog ./log/Remote_WZ-%Y.log Remote_WZ
attr FileLog_Remote_WZ logtype text
attr FileLog_Remote_WZ room CUL_HM
define Remote_WZ_1 CUL_HM 4C7EE901
attr Remote_WZ_1 group Fernbedienung
attr Remote_WZ_1 model HM-RC-8
attr Remote_WZ_1 peerIDs 00000000,12345601,
attr Remote_WZ_1 room Dummies
define Remote_WZ_2 CUL_HM 4C7EE902
attr Remote_WZ_2 group Fernbedienung
attr Remote_WZ_2 model HM-RC-8
attr Remote_WZ_2 peerIDs 00000000,12345602,
define VA_1 CUL_HM 123456
attr VA_1 IODev VCCU
attr VA_1 expert 2_raw
attr VA_1 room CUL_HM,Dummies
attr VA_1 subType virtual
attr VA_1 webCmd virtual
define VA_1_1 CUL_HM 12345601
attr VA_1_1 group Fernbedienung
attr VA_1_1 model virtual_8
attr VA_1_1 peerIDs 4C7EE901,
attr VA_1_1 room Dummies
attr VA_1_1 webCmd press short:press long
define VA_1_2 CUL_HM 12345602
attr VA_1_2 group Fernbedienung
attr VA_1_2 model virtual_8
attr VA_1_2 peerIDs 4C7EE902,
attr VA_1_2 room Dummies
attr VA_1_2 webCmd press short:press long
define Fernbedienung_1_1 DOIF ([VA_1_1] eq "ON") (set Rollo5 on)\
DOELSEIF ([VA_1_1] eq "OFF") (set Rollo5 stop)\
DOELSEIF ([VA_1_2] eq "ON") (set Rollo5 off)\
DOELSE ([VA_1_2] eq "OFF") (set Rollo5 stop)
attr Fernbedienung_1_1 group Fernbedienung,Rolläden WZ
define Fernbedienung_1_2 DOIF ([VA_1_3] eq "ON") (set Rollo6 on, set Rollo7 on)\
DOELSEIF ([VA_1_3] eq "OFF") (set Rollo6 stop, set Rollo7 stop)\
DOELSEIF ([VA_1_4] eq "ON") (set Rollo6 off, set Rollo7 off)\
DOELSE ([VA_1_4] eq "OFF") (set Rollo6 stop, set Rollo7 stop)
attr Fernbedienung_1_2 group Fernbedienung,Rolläden WZ
Zitat von: Garbsen am 30 Juli 2016, 21:26:16
Ich würde aber gerne auch die Möglichkeit der FB nutzen zwischen Long und Short Tastendrücken zu unterscheiden. Jemand eine Idee, wie ich das hinbekomme?
Ich mache das bei allen meinen Fernbedienungen über ein simples notify.
Zitat von: betateilchen am 30 Juli 2016, 21:56:04
Ich mache das bei allen meinen Fernbedienungen über ein simples notify.
Kannst Du bitte mal einen Beispielscode posten?
Was genau überwachst Du mit notify?
define rc_notify notify .*_Btn_...(Short|Long).* {mache irgendwas mit $EVTPART0}
define Fernbedienung_1_2 DOIF ([VA_1_3:"Short"]) (set Rollo6 on, set Rollo7 on)...
Gruß
Damian
Meine Lösung funktioniert aber mit einem einzigen notify für ALLE meine Fernbedienungen und für Long und Short gleichzeitig :)
Zitat von: betateilchen am 31 Juli 2016, 10:57:56
Meine Lösung funktioniert aber mit einem einzigen notify für ALLE meine Fernbedienungen und für Long und Short gleichzeitig :)
Fragst Du mit dem notify direkt die Remote ab? Ohne Umweg über einen Virtual Aktor?
Genau das habe ich nicht hinbekommen, da reagiert nichts.
Ich muss es nochmal versuchen, vielleicht habe ich Syntax-Fehler.
Copy Paste doch bitte mal den original, kompletten notify-code
define n_remote_HomeMatic notify .*_Btn_...(Short|Long).* {myRemote($NAME,$EVTPART0)}
myRemote() ist eine Funktion in der 99_myUtils.pm, in der sämtliche Fernbedienungen mit allen Tasten und der Unterscheidung nach Short und Long ausgewertet werden. Übrigens nicht nur die Homematic-Fernbedienungen, sondern auch die EnOcean Wandtaster (über ein zweites notify für enocean).
Die Funktion, die ich verwende, wird Dir nicht viel nützen.
Aber zum Testen kannst Du folgende Funktion in Deine 99_myUtils.pm einbauen, dann solltest Du entsprechende Meldungen im Logfile bekommen.
sub myRemote($$) {
my ($name,$evt) = @_;
Debug "Name: $name Event: $evt";
return
}
Entscheidend ist natürlich, wie die Fernbedienungen und ihre Tasten bei Dir in fhem "heißen". Bei mir haben die alle den standard-Namen, der bei Anlernen der Fernbedienungen vergeben wurde - siehe Screenshot im Anhang.
Die Auswertung in meiner 99_myUtils.pm sieht prinzipiell so aus:
when ('HM_4987D5') {
CommandSet(undef,'wz_Licht_Sessel on') if ($button == 1 && $evt eq "Short");
CommandSet(undef,'wz_Licht_Sessel off') if ($button == 1 && $evt eq "Long");
CommandSet(undef,'wz_Licht_Bild on') if ($button == 2 && $evt eq "Short");
CommandSet(undef,'wz_Licht_Bild off') if ($button == 2 && $evt eq "Long");
CommandSet(undef,'wz_Licht_Hifi on') if ($button == 3 && $evt eq "Short");
CommandSet(undef,'wz_Licht_Hifi off') if ($button == 3 && $evt eq "Long");
@Betateilchen
Ok, das sieht interessant aus, mit 99_myutils.pm habe ich mich noch nicht beschäftigt. Nutze FHEM erst seit ein paar Wochen und lerne ständig dazu. Ich werde mir das auf jeden Fall mal genauer ansehen, scheint gute Lösung zu sein.
Vorerst bleibe ich bei meiner DOIF Lösung, allerdings verändert auf Abfrage long short, hier Danke an Damian!
Ich hatte das schon probiert aber nicht hinbekommen, denke Syntaxfehler Long / long, jedenfalls klappt es so jetzt und ist weitaus besser als die on off Abfrage für meine Zwecke.