HM-RC-12 Funkfernbedienung 12 Tasten: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
|||
Zeile 113: | Zeile 113: | ||
attr HMvirtual hmClass receiver | attr HMvirtual hmClass receiver | ||
attr HMvirtual subType switch</nowiki> | attr HMvirtual subType switch</nowiki> | ||
Bei der Vergabe der | Bei der Vergabe der HMID ist zu beachten, dass der code 6stellig hexadezimal ist. Werden Buchstaben als Bestandteil der HMID gewählt, müssen diese als Großbuchstaben angegeben werden. | ||
==== Pairing des Remote-Buttons ==== | ==== Pairing des Remote-Buttons ==== |
Version vom 30. Januar 2018, 22:54 Uhr
HomeMatic Fernbedienung mit 12 Tasten, auch in schwarz als HM-RC-12-B .
Fernbedienung mit 5 Tastenpaaren mit beleuchteten Beschriftungsfeldern. Das sechste Tastenpaar liegt etwas versteckt rechts neben dem 4. und 5. Tastenpaar.
Die Fernbedienung verfügt außerdem über eine Status-LED, die in den Farben Grün, Rot und Orange leuchten bzw. blinken kann.
Bedeutung der LED-Farben und -Sequenzen / Fehlercodes
Siehe Homematic-Link
Anbindung der Fernbedienung an fhem
Wie alle HomeMatic-Komponenten wird die Fernbedienung durch das Modul CUL_HM angebunden. Die Funkverbindung ist mittels einer HomeMatic-CCU, eines HMLAN Konfigurator oder eines CUL/CUNx/COC etc. im HM-Mode möglich. Im Weiteren wird 'HMLAN Konfigurator' synonym für alle diese Devices verwendet.
Anlernen der Fernbedienung an fhem
- Sicherstellen, dass autocreate aktiv ist.
- HMLAN Konfigurator in den Pairing-Modus bringen durch hmPairForSec oder hmPairSerial .
- Den Anlerntaster an der Rückseite der Fernbedienung drücken (bei Verwendung von hmPairForSec innerhalb der angegebenen Zeitspanne). In fhem wird nun die Fernbedienung als device angelegt. Bevor die Tasten angelernt werden, sollte man zunächst
- das fhem-device umbenennen durch Verwendung des Befehls
rename
, im Beispiel ist der neue NameHMremote
. - In Betracht ziehen, das autocreate von Filelogs (nicht gesamt) zu deaktivieren. Es werden sonst im nächsten Schritt 12 FileLogs (eines je Taste) angelegt, deren Definition bei JEDEM fhem-event geprüft wird - was nicht ohne Auswirkung auf die perofrmance bleiben kann. Alternativ kann man die FileLogs auch nach Anlage löschen.
- Erst nach dem Umbenennen den Anlerntaster an der Fernbedienung ein weiteres mal drücken. Daraufhin werden die 12 Tasten-Kanäle als weitere (Sub)devices in fhem angelegt. Diese werden mit dem Namen des bei Schritt 3 erzeugten bzw. in Schritt 4 umbenannten devices gefolgt vom Zusatz Btn_x angelegt.
Die 12 Kanäle heissen in fhem also <NameDesDevice>Btn_1 .. <NameDesDevice>Btn_12.
Im device sind diese 12 Subdevices/Kanäle verlinkt über die Attribute channel01 .. channel0C (0C hex = 0x0C = 12dez) In fhem.cfg sieht das folgendermassen aus:
define HMremote CUL_HM 11477B attr HMremote devInfo 0C0000 attr HMremote firmware 1.1 attr HMremote hmClass sender attr HMremote subType remote attr HMremote loglevel 5 attr HMremote model HM-RC-12-B attr HMremote serialNr xxxxxxxxxx attr HMremote channel_01 HMremoteBtn_1 attr HMremote channel_02 HMremoteBtn_2 attr HMremote channel_03 HMremoteBtn_3 attr HMremote channel_04 HMremoteBtn_4 attr HMremote channel_05 HMremoteBtn_5 attr HMremote channel_06 HMremoteBtn_6 attr HMremote channel_07 HMremoteBtn_7 attr HMremote channel_08 HMremoteBtn_8 attr HMremote channel_09 HMremoteBtn_9 attr HMremote channel_0A HMremoteBtn_10 attr HMremote channel_0B HMremoteBtn_11 attr HMremote channel_0C HMremoteBtn_12 define HMremoteBtn_1 CUL_HM 11477B01 attr HMremoteBtn_1 chanNo 01 attr HMremoteBtn_1 device HMremote .... define HMremoteBtn_12 CUL_HM 11477B0C attr HMremoteBtn_12 chanNo 0C attr HMremoteBtn_12 device HMremote
Besonders zu beachten ist die HMid (im Beipiel 11477B). Beim primären Device ist diese 6stellig hexadezimal. Bei den Tasten/Kanälen wird der HMid der zweistellige hexadezimale Kanal angehängt (im Beipiel 11477B01). Diese HMid bzw HMid+ChannelNo sind in allen ein- und ausgehenden Funktelegrammen zu sehen bzw. bei allen raw-Messages zu verwenden.
Pairing
Das pairing der remote an fhem kann auf unterschiedlichen Ebenen vorgenommen werden. Folgend eine Übersicht der Alternativen:
Tasten/Kanäle nicht gepaired
Wenn die einzelnen Tasten, also die Kanäle, noch nicht gepaired sind, sind Tastendrücke bereits in fhem sichtbar, als Empfänger erscheint dann (to broadcast):
2012-10-29 21:57:18.580 CUL_HM HMremoteBtn_7 Short (to broadcast)
Nach einem Tastendruck leuchtet die LED an der Fenbedienung kurz orange, um das Senden einer Nachricht zu signalisieren. Wie bei allen HM-Geräten kann jeder Kanal mit 1..n Kanälen an anderen devices geapired werden.
Pairing an physischen HM-Aktor
Eine RC12 hat zwölf Tasten. Diese sind aus Sicht der Fernbedienung IMMER einzelne Kanäle und kennen sich gegenseitig nicht. Es gibt aber einen Modus in dem die Tasten paarweise verwendet werden - also Taste1 = on, Taste2 = off. Die Fernbedienung weiss davon nichts, sondern nur der Aktor. Der hat dann zwei Peers auf einem Kanal. Wenn er einen Trigger vom ersten Peer bekommt (Taste 1) wird Aktion 1 ergriffen (also z.B. on). Wenn er trigger von Taste2 bekommt macht er etwas anderes (also z.b. off)
Einfacher Lichtschalter:
Pairing an HMLAN Konfigurator
Durch das Pairing der Fernbedienung an einen HMLAN Konfigurator wird erreicht, dass der erfolgreiche Empfang der Nachricht durch den HMLAN Konfigurator mit einem ACK an die Fernbedienung bestätigt wird. Die LED an der Fernbedienung leuchtet nach einem Tastendruck erst orange (Senden des Funktelegramms), dann grün (ACK erhalten) oder rot (NACK bzw. missing ACK). Da die Fernbedienung in fhem als 'CUL_HM' läuft, der HMLAN Konfigurator aber als 'HMLAN', ist ein Pairing der beiden Devices in fhem nicht über einen set-Befehl möglich, da es sich um unterschiedliche Device-Typen handelt. Das pairing muss daher per raw-Befehl vorgenommen werden.
set HMremote raw ++A0017853C311477B01017853C30100
Der Aufbau der raw-message im Einzelnen: (Erklärung unter Vorbehalt und noch unvollständig) ++A001<fhemId><RCId><BtnNo>01<fhemId><Chn>00 fhemId= HMId Zentrale (HMLAN Konfigurator/CUL) z.B.123456 Chn = Channel der Zentrale 01 oder 02... 0A RCId = HMID remote control BtnNo = Rc channel (sprich button) in hex: 01 02 03 oder 0A - bei RC12 max 0C
++A0013333334444440C013333330100 # Button 12 erhaelt peer HMLAN (333333) channel 01
ueberpruefen mit
set <rcButtonName> getdevicepair
Pairing an FHEM-dummy
Ziel ist, die remote nicht an einen HMLAN Konfigurator vom Typ HMLAN , sondern an ein virtuelles Device (dummy) in FHEM anzulernen. Dadurch kommen die Nachrichten von der Fernbedienung direkt auf diesem Device an, ausserdem kann gesteuert werden, ob mit ACK oder NACK geantwortet wird, wodurch wiederum die Farbe der LED-Bestätigung gesteuert werden kann. Der Schaltvorgang auf den virtuellen FHEM Device kann per notify abgehorcht und für indirekte Schaltvorgänge o.Ä. verwendet werden.
Anlegen des virtuellen Device
Zunächst muss das virtuelle (Dummy)-Device in fhem erzeugt werden:
define HMvirtual CUL_HM ABC123 attr HMvirtual hmClass receiver attr HMvirtual subType switch
Bei der Vergabe der HMID ist zu beachten, dass der code 6stellig hexadezimal ist. Werden Buchstaben als Bestandteil der HMID gewählt, müssen diese als Großbuchstaben angegeben werden.
Pairing des Remote-Buttons
Im Beispiel wird Button2 an das virtuelle Device HMvirtual gekoppelt:
set HMremoteBtn_2 devicepair 0 HMvirtual single set remote
Erzeugen der ACK-Nachricht (work in progress)
Zum Versenden des ACK wird ein notify definiert:
define HManswer notify HMremote.* { HManswer("%") }
das folgende Routine zB in 99_myUtils.pm aufruft (das geht auch viel kürzer - ist bewusst als lange Version dargestellt, um den Zusammenhang zwischen eintreffender Nachricht und Struktur des zu sendenden raw-ACK zu verdeutlichen):
## HM Anrufbeantworter für Button2 sub HManswer($) { my ($cmdval) = @_; if ($cmdval =~ m,Btn_2,) { my $raw = $defs{HMremote}{HMLAN_RAWMSG}; my $msgnr = substr($raw,30,2); # Nummer der eingehenden Nachricht my $flag = substr($raw,32,2); # flag der eingehenden Nachricht my $mtyp = substr($raw,34,2); # type der eingehenden Nachricht my $src = substr($raw,36,6); # Sender der eingehenden Nachricht my $dst = substr($raw,42,6); # Adressat der eingehenden Nachricht my $chnl = substr($raw,48,2); # Kanal der eingehenden Nachricht my $stat = substr($raw,50,2); # Status der eingehenden Nachricht my $rsp = $msgnr."80"."02".$dst.$src."00".$chnl."000000"; # ACK-message zusammenbauen Log 1, "in : ".substr($raw,30,22); # Log nur zum Testem Log 1, "rsp : $rsp"; # Log nur zum Testem fhem "set HMvirtual raw $rsp"; # Senden der response (ACK) } }
Einschränkungen: - Das timing der Funkkommunikation ist sehr fragil. Teilweise akzeptiert die remote das gesendete ACK (angezeigt durch grünes LED-Signal) nur, wenn HMLAN hmProtocolEvents <3 hat, zeitweise nur dann, wenn hmProtocolEvents auf 3 steht. Dies ist noch näher zu untersuchen. - HMvirtual bekommt seinerseits ein missing ACK, das man einfach ignorieren muss - Vmtl. auf Grund desselben timing-Problems funktioniert das Quittieren nicht, wenn der nächste button-press bereits erfolgt, bevor das missing ACK von HMvirtual abgewartet wurde.