HM-RC-4-3 Tasten einzeln Peeren

Begonnen von otto, 01 Januar 2018, 15:37:14

Vorheriges Thema - Nächstes Thema

otto

Hallo hab HM-RC-4-3 und einen HM-LC-SW2-FM
Wenn ich sie direkt peere hab ich ein Tastenpaar pro Kanal,
wie bekomme ich sie auseinander das ich mit einen Kanal jeweils Tastenfunktion oder Anschaltverzögerung hin bekomme ?
In der ccu2 webui hat man da danach einen der beiden gelöscht und in neu verknüpft aber wie geht das bei Fhem?

Gruß otto

Otto123

#1
Gesundes Neues Jahr!
Hallo Otto,

von der Sache her genauso :) nur mit FHEM

Also anstatt peerChan dual set - single set nehmen.

Beispiel
Zitatset myRemote peerChan 2 mySwActChn single set #Peer zweiten Knopf mit Aktorkanal
set myRmtBtn peerChan 0 mySwActChn single set #myRmtBtn ist ein Knopf der Fernbedienung. '0' wird hier nicht verarbeitet
Beachte den Unterschied ob Du den Knopf des Hauptdevices oder den Btn direkt angibst. Ich mache immer die zweite Variante.
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

MadMax-FHEM

Hallo Ottos,

@Otto (123): den hab ich dir extra "gelassen" ;)

Ich dachte mir einem Otto kann nur ein Otto antworten ;)

Gutes neues Jahr!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

martinp876

Wie otto sagt.
Aber grundsätzlich ist es wie in der cul. Wenn du einen zu viel gepeert hast einfach einen lösche .
Solltest du das Einsteiger doc gelesen haben ist klar, dass der aktor bei dual peeren andere aktionen programmiert als bei single. Das ist aber auch wieder egal, da du m.E. die reaktion eines aktors auf einen trigger immer bewusst einstellen solltest. Mir waere es zu fragil mit default Programmierung zu arbeiten. Da stehe ich nicht alleine, da auch in der cul nach peeren erst die reaktion eingestellt wird.
Also erst peeren, ggf peers löschen bis alle am platz sind. Dann register setzen. Mit templates kann man sie auch prüfbar setzen, meine wiederkehrende Empfehlung.

otto

Frohes und gutes neues Jahr  :D

Ja hab es nicht überrissen das es einfach hinterher auch noch das unset gibt  ;)
und komischerweise ist am Anfang bei peeren ein "please enter peer" gekommen ?
Aber jetzt funkioniert es Danke Euch (Otto123 martinp876,MadMax-FHEM)


Gruß otto


otto

Frohes und gutes neues Jahr  :D

Ja hab es nicht überrissen das es einfach hinterher auch noch das unset gibt  ;)
und komischerweise ist am Anfang bei peeren ein "please enter peer" gekommen ?
Aber jetzt funktioniert es Danke Euch (Otto123 martinp876,MadMax-FHEM)


Gruß otto


Pfriemler

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

martinp876


UweUwe

Hallo Otto und MadMax-FHEM,
der 4 fach Taster HM-RC-4-3 ist mein nächstes device, zusammengebaut, gepairt (R-pairCentral 0x070657). Ich hab den Schalter über die VCCU angeschlossen. Hab mal den Blog studiert und in der Doku und habe dazu einige Gedanken und Fragen:
Sind folgende Aussagen grundsätzlich richtig?
1. Aktor-Kanäle von HM Geräten kann ich direkt mit Kanälen des Schalter peeren (nur, vorzugsweise), ich kann diese Kanäle mit der VCCU peeren (nur) und anschliessend mit den Kanälen des HM-Aktors  und ich kann auch die Kanäle des HM-Schalters mit der VCCU und einem Kanal des HM-Aktor peeren (und). Rückmeldung bekomme ich immer.
2. Will ich nicht HM-Aktor Geräte mit Kanälen eines HM-Schalter schalten, so kann ich entweder über ein notify den Kanal des HM-Schalters direkt abfangen oder den HM-Kanal des Schalters mit der VCCU peeren und über ein notity die Änderung des VCCU Kanals  abfangen und damit z.B. einen nicht HM-Aktor schalten (bevorzugt). Wenn ich über die VCCU gehe, so bekomme ich eine Rückmeldung auf den Schalter. Ich bevorzuge über die VCCU zu gehen.
Mit eurem Beispiel (unten) befasse ich mich gerade:
Mein Handschalter heisst H.Str mit den Kanälen Btn_01, Btn_02, Btn_03, Btn_4. Ich möchte eine Doppelbelegung auf jeden Schalter (an,aus)
Ich möchte von der VCCU den 4. Kanal verwenden, der ist auch verfügbar und heisst VCCU_Btn4
2. Schalten möchte ich ein FBDECT Gerät mit dem Namen "GARTENWEG_LICHT" (on, off)
3. Schalten möchte ich und einen Alarm aus meiner Alarmanlage Alarm 0 mit dem Namen "level0"  (armed, disarmed).
4. Schalten möchte ich den Aktor 1 aus meinem 4 fach Aktor HM-LC-Sw4-DR  mit dem Kanalnamen AKTOR01_GARTEN_Sw_01

FBDECT Gerät: (nicht HM)
1. Zuerst den Handschalter (Taste 2) mit dem VCCU set H.Str_Btn_02 peerChan 0 VCCU_Btn4 single set 2. Dann über ein Notify das nicht HM Geräte schalten:define H.Str_2 notify H.Str_Btn_02 {if ("%" =~ "Short" ) { fhem ("set Gartenweg_Licht on")} else {  fhem("set Gartenweg_Licht off ")}}
Und nun zum HM Gerät 4 fach Aktor HM-LC-Sw4-DR  Kanal 1
1. Koppeln mit der VCCU virtueller Kanal 4
set H.Str_Btn_4 peerChan 0 VCCU_Btn4 single set  2. Koppeln direkt mit dem Aktor mit (Taste 4 mit Kanal 1 des AKTOR01
set H.STR_BTN_4 peerChan 0 AKTOR_GARTEN_01 single set3. Und jetzt noch die Attribute für short und lang
set AKTOR01_GARTEN_01 regset shSwJtOn dlyOn H.STR_Btn_4
set AKTOR01_GARTEN_01 regset lgSwJtOff dlyOff H.STR_Btn_4

P.S. ich benutzte hier die "0" hinter peerchain ohne zu verstehen. Was ist der Grund für die 0?

Hier kommt jetzt euer Beispiel:
set myRemote peerChan 2 mySwActChn single set #Peer zweiten Knopf mit Aktorkanal
set myRmtBtn peerChan 0 mySwActChn single set #myRmtBtn ist ein Knopf der Fernbedienung. '0' wird hier nicht verarbeitet


was ihr hier beschreibt ist das direkte peering zwischen HM-Taster und HM-Aktor, damit nur möglich für einen HM Aktor (mein 4 fach Aktor HM-LC-Sw4-DR Beispiel).
Zitatset myRemote peerChan 2 mySwActChn single set #Peer zweiten Knopf mit Aktorkanal
myRemote ==> H.Str
2 ==> es wird die Taste 2 gepeert
mySwActChn  ==> AKTOR01_GARTEN_01
single set ==> nur die Taste 2 wird gepeert, kein Tastenpaar 
Ich denke, verstanden!!
set myRmtBtn peerChan 0 mySwActChn single set #myRmtBtn ist ein Knopf der Fernbedienung. '0' wird hier nicht verarbeitet
? benötige ich hier zuerst ein define myRmtBtn2 dummy um die Taste 2 meiner Fernbedingung zu definieren
myRmtBtn ==> myRmtBtn2 # ich peere die Taste 2 meiner Fernbedienung, die ich vorher "define" habe.
0 ==> warum hier 0 ?
mySwActChn ==> AKTOR01_GARTEN_01
single set ==> nur die Taste 2 wird gepeert, kein Tastenpaar

Danke für euer feedback, falls ihr Zeit habt.













Otto123

#9
Moin,

Zitat? benötige ich hier zuerst ein... define myRmtBtn2 dummy
Nein!
Dein H.Str_Btn_02 wäre myRmtBtn in dem von Dir genannten Beispiel.
Hängt hiermit zusammen
ZitatP.S. ich benutzte hier die "0" hinter peerchain ohne zu verstehen. Was ist der Grund für die 0?

Ja es ist verwirrend, es wird (vor allem Gedanklich) schon lange dran gearbeitet die Sache zu vereinheitlichen und eine Variante wegzulassen.
Du machst entweder: konkrete Taste (mit der überflüssigen Zahl 0)set H.Str_Btn_02 peerChan 0
Oder: Hauptgerät und Taster in Form der Zahl 2
set H.Str peerChan 2 Beides spricht den gleichen Knopf auf der Fernbedienung/Taster an.

Ich nehme nur die Variante mit der 0 !

Dein notify geht einfacher, die FBDECT können doch toggle. So hier, aber nicht getestet.
define H.Str_2 notify H.Str_Btn_02:.Short.* set Gartenweg_Licht toggle
bzw. ich nehme immer den anderen Event
define H.Str_2 notify H.Str:H.Str_Btn_02.Short set Gartenweg_Licht toggle

Alles andere was Du gesagt hast klang beim drüber lesen richtig, ich hoffe ich habe nichts überlesen.  ;)

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

UweUwe

Hallo Otto,
hat alles prima geklappt, mit Ausnahme des Alarms. Den kann ich bisher nur "entarmen"  8) ;).
Da toggle beim Alarm nicht ist, bis ich auf mein notify gegangen:
define H.Str_Btn_2.N notify H.Str_Btn_02 { if  ("%" =~ "Short" ) { fhem ("set AAA armed 0")} else {fhem("set AAA disarmed 0 ")}}
Hier der Event:
CUL_HM H.Str H.Str_Btn_02 Short
2019-01-27 16:25:34 Alarm AAA disarmed 0
2019-01-27 16:25:34 Alarm AAA disarmed 0
2019-01-27 16:25:34 Alarm AAA disarmed 0
2019-01-27 16:25:34 CUL_HM H.Str_Btn_02 Short 1_58 (to VCCU)
2019-01-27 16:25:34 CUL_HM H.Str_Btn_02 trigger: Short_58
2019-01-27 16:25:34 CUL_HM H.Str_Btn_02 trigger_cnt: 58
2019-01-27 16:25:34 CUL_HM VCCU_Btn3 trigLast: H.Str_Btn_02:short
2019-01-27 16:25:34 CUL_HM VCCU_Btn3 trig_H.Str_Btn_02: Short_58
2019-01-27 16:25:34 CUL_HM VCCU_Btn4 trigLast: H.Str_Btn_02:short
2019-01-27 16:25:34 CUL_HM VCCU_Btn4 trig_H.Str_Btn_02: Short_58

Ich muss auch gestehen, dass ich das  ("%" =~ "Short" ) abgeschrieben habe.
Muss ich da auf Short_59 abfragen?
Hier das List des Kanals
Internals:
   CFGFN     
   DEF        6AAF7302
   FUUID      5c4cc2e8-f33f-64ff-ea60-081cee70501989f2
   NAME       H.Str_Btn_02
   NOTIFYDEV  global
   NR         2208
   STATE      Short 1_59 (to VCCU)
   TYPE       CUL_HM
   chanNo     02
   device     H.Str
   peerList   VCCU_Btn3,VCCU_Btn4,
   READINGS:
     2019-01-27 15:00:38   R-VCCU_Btn3-expectAES off
     2019-01-27 15:00:38   R-VCCU_Btn3-peerNeedsBurst off
     2019-01-27 15:01:57   R-VCCU_Btn4-expectAES off
     2019-01-27 15:01:57   R-VCCU_Btn4-peerNeedsBurst off
     2019-01-26 21:38:28   R-sign          off
     2019-01-27 16:37:35   RegL_01.         00:00 04:10 08:00 09:00
     2019-01-27 16:37:38   RegL_04.VCCU_Btn3  00:00 01:00
     2019-01-27 16:37:38   RegL_04.VCCU_Btn4  00:00 01:00
     2019-01-27 16:37:35   peerList        VCCU_Btn3,VCCU_Btn4,
     2019-01-27 16:26:06   state           Short 1_59 (to VCCU)
     2019-01-27 16:26:06   trigger         Short_59
     2019-01-27 16:26:06   trigger_cnt     59
   helper:
     BNO        59
     BNOCNT     1
     peerIDsRaw ,07065703,07065704,00000000
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     regCollect:
     role:
       chn        1
     shadowReg:
     tmpl:
Attributes:
   DbLogExclude .*
   model      HM-RC-4-3
   peerIDs    00000000,07065703,07065704


Pfriemler

#11
@Otto: Auch wenn die FritzDECT toggeln kann: UweUwe möchte eine gezielte Aktion je nach kurzem (=ein) und langem (=aus) Tastendruck - zumindest legen das die Registermods beim Peeren mit dem HM-LC-Sw4-DR nahe... insofern ist das Notify prinzipiell richtig angedacht.

Zitat von: UweUwe am 27 Januar 2019, 11:16:27
2. Will ich nicht HM-Aktor Geräte mit Kanälen eines HM-Schalter schalten, so kann ich entweder über ein notify den Kanal des HM-Schalters direkt abfangen oder den HM-Kanal des Schalters mit der VCCU peeren und über ein notity die Änderung des VCCU Kanals  abfangen und damit z.B. einen nicht HM-Aktor schalten (bevorzugt). Wenn ich über die VCCU gehe, so bekomme ich eine Rückmeldung auf den Schalter. Ich bevorzuge über die VCCU zu gehen.
Die eigentlich bevorzugte Variante ist, die FB mit einen dummy-Kanal der VCCU zu peeren, dann aber in FHEM auf die originalen Events zu reagieren. Man kann dann einen vccu-Kanal für viele Geräte nehmen um die "grüne Rückmeldung" zu bekommen, reagiert aber doch inidividuell auf das eigentliche Event. Sinn macht das Reagieren auf den VCCU-Kanal höchstens, wenn man mit vielen Fernbedienungen stets die gleiche Aktion durchführen will, etwa ein Tor zu öffnen oder zu schließen, für das es ein Dutzend FB gibt (Tiefgarage etc.). Mit geschickter Namensgebung und einem passenden Regex gelingt das im Notify aber auch.

Und: Deine Notifys kranken noch an der richtigen Eventverarbeitung:
Die meisten Beispiele berücksichtigen Short und Long direkt im Trigger. Will man mit einem Notify auf mehrere Varianten reagieren, braucht man eine andere Herangehensweise.

Dein Notifys reagiert zunächst auf alle Events des Buttons, führen die erste Aktion aber nur bei "Short" im Event aus, sonst die zweite.
2019-01-27 18:39:58.637 CUL_HM FB4V2 FB4V2_Btn_02 Short
2019-01-27 18:39:58.818 CUL_HM FB4V2_Btn_02 Short 1_36 (to vccu)
2019-01-27 18:39:58.818 CUL_HM FB4V2_Btn_02 trigger: Short_36
2019-01-27 18:39:58.818 CUL_HM FB4V2_Btn_02 trigger_cnt: 36

Es werden hier bei einem kurzen Tastendruck insgesamt vier Events erzeugt. Die ersten drei matchen auf "Short", das vierte nicht. Die letzte ausgeführte Aktion wird also immer die zweite sein (bei AAA eben disarm). Auf so etws wie "Short 1_36" oder "Short_36" zu triggern klappt auch nicht, weil "36" in diesem Beispiel fortlaufend durchgezählt wird (glaube bis 255 und dann wieder von vorn) - trifft also dann nur in <0,5% aller Tastenbetätigungen zu ...
Ich würde es mal mit dem Event betreffs des Readings Trigger versuchen, das taucht nämlich nur einmal auf und lautet dann entweder auf Short_xxx oder Long_xxx.
Zitatdefine H.Str_Btn_2.N notify H.Str_Btn_02:trigger:.* { if  ($EVENT =~ /Short/) { fhem ("set AAA armed 0")} else {fhem("set AAA disarmed 0 ")}}
Das berücksicht nur Events, bei denen "trigger:" vorkommt (nur noch eines von vieren), und es wird das Event auch ein bisschen anders abgefragt.
Bei mir funktionierts.

/Short/ war für mich auch neu, habe es bei der Suche gefunden. Das Konstrukt "%" =~ "Short" hat bei mir nicht funktioniert.
edit: War das nicht so, dass % in der Eventverarbeitung mittlerweile nicht mehr unterstützt wird? (+typos korrigiert)
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

UweUwe

Hallo,
vielen Dank für die Unterstützung.  :) :)
Ich denke, dass ich meine Gartenleuchte auch auf das kurzem (=ein) und langem (=aus) umbaue. Hintergrund ist, dass ich die Alarme nicht toggeln kann und deshalb auf benachbarten Tasten (2) Alarm (1) Gartenweg unterschiedliche Taster-Verhalten realisiert werden. Mache ich morgen  ;). Werde berichten.
Pfriemler, die Thematik mit dem Dummy Kanal auf der VCCU hatte ich verstanden,danke, habe mich vielleicht nicht gut ausgedrückt, mein Fehler, hier die Realisierung, tuts.  :)
set H.Str_Btn_01 peerChan 0  VCCU_Btn4 single set                                           # peering mit der VCCU (dummy)
define H.Str_1 notify H.Str:H.Str_Btn_01.Short set GARTENWEG_LICHT toggle    # notify mit dem Originalkanal


ZitatUnd: Deine Notifys kranken noch an der richtigen Eventverarbeitung:
Nett ausgedrückt  ;) ;). Eventvereinbarung ist für mich ein Buch mit sieben Siegeln. Es fällt mir sogar schwer, eine vorgegebene Eventbearbeitung nachzuvollziehen.
Ich betrachte mal den "trigger":
short
2019-01-27 22:22:15 CUL_HM H.Str CMDs_done
2019-01-27 22:22:15 CUL_HM H.Str H.Str_Btn_02 Short
2019-01-27 22:22:15 Alarm AAA armed 0
2019-01-27 22:22:15 CUL_HM H.Str_Btn_02 Short 1_73 (to VCCU)
2019-01-27 22:22:15 CUL_HM H.Str_Btn_02 trigger: Short_73
2019-01-27 22:22:15 CUL_HM H.Str_Btn_02 trigger_cnt: 73
long:
2019-01-27 22:24:58 CUL_HM H.Str H.Str_Btn_02 Long
2019-01-27 22:24:58 Alarm AAA level0: disarmed
2019-01-27 22:24:58 Alarm AAA  0 1 2 3 4 5 6 7
2019-01-27 22:24:58 Alarm AAA savedate: 2019-01-27 22:24:58
2019-01-27 22:24:58 at alarm0.disarm.T Next: 22:25:01
2019-01-27 22:24:58 Global global DEFINED alarm0.disarm.T
2019-01-27 22:24:58 CUL_HM H.Str_Btn_02 Long 1_74 (to VCCU)
2019-01-27 22:24:58 CUL_HM H.Str_Btn_02 trigger: Long_74
2019-01-27 22:24:58 CUL_HM H.Str_Btn_02 trigger_cnt: 74
Für mich lautet jetzt die Erklärung:
"trigger:*" schaut nur H.Str_Btn_02 trigger: Short_73 und H.Str_Btn_02 trigger:Long_74 an und missachtet die Events trigger_cnt: . Weiterhin fischt ($EVENT =~ /Short/) aus dem Short_73 die "Short" raus.  Damit funktioniert es und es funktioniert auch.. Spirtze. Danke.
Was mich noch verwundert ist: Die Rückmeldung von der Alarmanlage:
2019-01-27 22:22:15 Alarm AAA armed 0 kommt einige Zeilen vor dem Befehl 2019-01-27 22:22:15 CUL_HM H.Str_Btn_02 trigger: Short_73 für das "armen". Ich schreibe dies aber unterschiedlichen Laufzeiten in der Abarbeitung zu. Korrekt?

Pfriemler

Ergebnis vor Event: Korrekt. Den Effekt kenne ich von DOIFs, deren Ergebnis mitunter vor dem eigentlichen Ereignis erscheint. Habe aufgehört mich darüber zu wundern und nehme es als gegeben hin.
Korrekt: Deine Erklärung dazu auf welche Events das Notify jetzt überhaupt reagiert. Mit "...:trigger.*" (statt trigger:.*, also ohne : ) würde auch trigger_cnt berücksichtigt werden.
Korrekt: die Perl-Funktion =~ prüft ob der zweite String im ersten vorkommt. Das war auch das Verfahren bei"%" =~ "Short".
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Otto123

Edit:
Huch wo ist der Post auf den ich gerade geantwortet habe? Gelöscht? egal ich lasse es mal stehen und rücke es später gerade

Das notify ist richtig. Der Change Wizard mit regExpPart beherrscht nicht alle Konstellationen.  Vor allem wenn man, ein nicht mit dem Wizard erstelltes notify, ändert kann es zu solchen Effekten kommen.
Der senkrechte Strich ist vor allem deswegen ein Problem -> |{
Da ist kein Leerzeichen dazwischen, er erkennt -> REGEXP     H.Str_Btn_03:trigger:.*|{
Damit fehlt im Ausführungsteil die Anfangsklammer.

Ansonsten wäre das "|" wie ein "oder" also sowas wäre korrekt, das würde auf zwei tasten triggern H.Str_Btn_03:trigger:.*|H.Str_Btn_04:trigger:.*

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