Diskussion:Funkfernbedienung: Unterschied zwischen den Versionen
Took (Diskussion | Beiträge) K (ein paar vorläufige Notizen...) |
|||
(19 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
==Notizen zum Protokoll== | ==Notizen zum Protokoll== | ||
Ich fasse hier mal ein paar Notizen zusammen die ich mir beim | Ich fasse hier mal ein paar Notizen zusammen, die ich mir beim Spielen mit der Funksteckdose gemacht habe. Meine Erfahrungen sind vollkompatibel zu dem, was bereits hier im Wiki beschrieben wurde. | ||
* Der Sender-Chip http://www.yggenyk.dk/wiki/HX2262_Remote_encoder_circuit | * Der Sender-Chip http://www.yggenyk.dk/wiki/HX2262_Remote_encoder_circuit | ||
* Der Empfänger http://www.yggenyk.dk/wiki/HX2272_Remote_decoder_circuit | * Der Empfänger http://www.yggenyk.dk/wiki/HX2272_Remote_decoder_circuit | ||
Genaugenommen habe ich hier einen HX2272-L2, d.h. die Geräte-Adresse wird | Genaugenommen habe ich hier einen HX2272-L2, d.h., die Geräte-Adresse wird über die Pins 7, 8, 10 und 11 (A6, A7, A8, A9) am IC gesetzt; Die Pins 12 und 13 (D1 und D0) sind Ausgänge (wobei bei mir Pin 13 (D0) der "Hauptausgang" ist und Pin 12 (D1) offen liegt). | ||
~> Unstimmigkeit: Wo fängt der Gerätecode an, wo hört der Hauscode auf? Laut den Datenblättern haben wir 4 Pins für den Hauscode (Pins 7, 8, 10 und 11 ( | ~> Unstimmigkeit: Wo fängt der Gerätecode an, wo hört der Hauscode auf? Laut den Datenblättern haben wir 4 Pins für den Hauscode (Pins 7, 8, 10 und 11 (A6, A7, A8, A9)) und 6 Pins für den Gerätecode(Pin 1-6 (A0-A5)). Im folgenden betrachten wir aber die ersten 5 Pins (Pin 1-5 (A0-A4)) als Gerätecode und die 5 Pins Pin 6-8, 10 und 11 (A5-A9) als Hauscode. Das ist aber eigentlich auch total egal. Reine Definitionsfrage. | ||
===Byteorder=== | ===Byteorder=== | ||
Offenbar alles MSB (das Bit was am meisten "Wert" ist steht links) | Offenbar alles MSB (das Bit was am meisten "Wert" ist steht links). | ||
===Codierung=== | ===Codierung=== | ||
Wir senden mit einem RFM12-Modul, das eigentlich nur FM kann, in AM indem wir den Sender im passenden Timing ein- und ausschalten. | Wir senden mit einem RFM12-Modul, das eigentlich nur FM kann, in AM, indem wir den Sender im passenden Timing ein- und ausschalten. | ||
Eine "0" wird gesendet indem man zunächst "eine Zeit lang"( | Eine "0" wird gesendet, indem man zunächst "eine Zeit lang" (500-600µs?) den Sender einschaltet und dann die doppelte länge dieser Zeit X den Sender wieder abgeschaltet lässt. | ||
Eine "1" wird gesendet indem man zunächst die doppelte Zeit | Eine "1" wird gesendet, indem man zunächst die doppelte Zeit X lang den Sender ausgeschaltet lässt und dann den Sender für diese Zeit X eingeschaltet lässt. | ||
Also wie bereits an anderer Stelle im Wiki beschrieben wird für | Also wie bereits an anderer Stelle im Wiki beschrieben, wird für jede "1" die Zeichen "110" gesendet und für jede "0" wird "100" gesendet. | ||
===Adressierung=== | ===Adressierung=== | ||
Die Chips werden mit einer 10bit "Hausadresse" und einer 10bit "Geräteadresse" versehen. Auf der Fernbedienung jumpert man den Hauscode. Die Gerätecodes (plus Ein-/Ausschaltbefehl) sind harcodiert den verschiedenen Tasten auf der Fernbedienung zugeordnet. | Die Chips werden mit einer 10bit "Hausadresse" und einer 10bit "Geräteadresse" versehen. Auf der Fernbedienung jumpert man den Hauscode. Die Gerätecodes (plus Ein-/Ausschaltbefehl) sind harcodiert den verschiedenen Tasten auf der Fernbedienung zugeordnet. | ||
Offenbar sind die Gerätecodes der Fernbedienung folgende: | |||
Tasten | Code | |||
--------+----------------- | |||
A | 00 01 01 01 01 | |||
B | 01 00 01 01 01 | |||
C | 01 01 00 01 01 | |||
D | 01 01 01 00 01 | |||
E | 01 01 01 01 00 | |||
Beim Empfänger kann man Haus- und Gerätecode jumpern. Die Tristate-Eingänge Pin 1-6 (A0-A5) für den Hauscode und Pins 7, 8, 10 und 11 (A5, A6, A7, A8) für den Gerätecode sind entweder "offen" oder per Jumper auf Masse ("0") gezogen. Man definiert mit jedem Pin 2 Bit vom Haus-/Gerätecode nach folgender Tabelle: | Beim Empfänger kann man Haus- und Gerätecode jumpern. Die Tristate-Eingänge Pin 1-6 (A0-A5) für den Hauscode und Pins 7, 8, 10 und 11 (A5, A6, A7, A8) für den Gerätecode sind entweder "offen" oder per Jumper auf Masse ("0") gezogen. Man definiert mit jedem Pin 2 Bit vom Haus-/Gerätecode nach folgender Tabelle: | ||
Zeile 37: | Zeile 48: | ||
VCC | 11 | VCC | 11 | ||
Die Werte "11" können also nur | Die Werte "11" können also nicht mit Jumpern sondern nur mit Umlöten erreicht werden. | ||
===Befehle=== | ===Befehle=== | ||
Wir haben bisher nur folgende Befehle ausprobiert: | Wir haben bisher nur folgende Befehle ausprobiert: | ||
Befehl | Funktion | |||
--------+---------- | --------+--------------------------------- | ||
00 01 | | 00 00 | 2ter Ausgang aus, Relais aus | ||
01 00 | | 00 01 | 2ter Ausgang aus, Relais an | ||
01 00 | 2ter Ausgang an, Relais aus | |||
01 01 | 2ter Ausgang an, Relais an | |||
| | |||
D1 D0 | Namen der Pins | |||
===Beispiele=== | |||
==Beispiele== | |||
Von Handsender-Fernbedienung aufgezeichnet: | Von Handsender-Fernbedienung aufgezeichnet: | ||
00 00 00 00 00 00 01 01 01 01 00 01 | HAUSCODE GERÄTECODE COMAND | ||
00 00 00 00 00 00 01 01 01 01 01 | A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D1 D0 | ||
00 00 00 00 00 01 00 01 01 01 00 01 | 00 00 00 00 00 00 01 01 01 01 00 01 - Gerät A on (zweiter unbelegter Ausgang off), Hauscode "all dip's on" | ||
00 00 00 00 00 00 01 01 01 01 01 00 - Gerät A off (zweiter unbelegter Ausgang on), Hauscode "all dip's on" | |||
00 00 00 00 00 01 00 01 01 01 00 01 - Gerät B on (zweiter unbelegter Ausgang off), Hauscode "all dip's on" | |||
====Empfangen==== | |||
Beim Aufzeichen sieht man immer Sequenzen von entweder | Beim Aufzeichen sieht man immer Sequenzen von entweder | ||
* kurz Ruhe, dann 2 Zeiteinheiten | * kurz Ruhe, dann 2 Zeiteinheiten Rauschen (== "0") | ||
oder | oder | ||
* 2 Zeiteinheiten Ruhe und dann kurz | * 2 Zeiteinheiten Ruhe und dann kurz Rauschen (== "1") | ||
Dazu gibt es auf http://ethersex.de/tiki-index.php?page=RFM12_ASK unter "Kangtai Powerswitch" auch schöne Screenshots. | |||
[[Bild:Kangtai_decode.png]] | |||
====Senden==== | |||
Möchte man die Codes senden muss man die Bitfolge noch umrechnen in das Format in der das Tool was man zum senden verwendet die Angaben haben möchte. Wir haben hier erstmal [http://zerties.org/tiki-index.php?page=RF12_PowerSwitch was geschrieben] was 3 Byte als Dezimalzahl entgegennimmt. Diese drei Byte werden wie folgt gebildet: | |||
HAUSCODE GERÄTECODE COMAND | |||
00 00 00 00 00 00 01 01 01 01 00 01 - Gerät A on (zweiter unbelegter Ausgang off), Hauscode "all dip's on" | |||
|-Byte 1 -| |-- Byte 2 --| |-- Byte 3 --| | |||
0 (= 0x00) 5 (= 0x05) 81 (= 0x51) | |||
Ein einfaches Sende-Script könnte dann z. B. so aussehen: | |||
<pre> | |||
#!/bin/bash | |||
case $1 in | |||
a) | |||
key=5 | |||
;; | |||
b) | |||
key=17 | |||
;; | |||
c) | |||
key=20 | |||
;; | |||
*) | |||
echo "no argument" | |||
echo "$0 a|b|c|d ein|aus" | |||
exit 1 | |||
;; | |||
esac | |||
case $2 in | |||
ein) | |||
button=81 | |||
;; | |||
aus) | |||
button=84 | |||
;; | |||
*) | |||
echo "no argument" | |||
echo "$0 a|b|c|d|e ein|aus" | |||
exit 1 | |||
;; | |||
esac | |||
echo "send: $key, $button" | |||
echo "rf12 powerswitch 2272 send 0,$key,$button 76 10"|nc ethersex 2701 -w 1 2>&1 >/dev/null & | |||
</pre> | |||
===RFM12lib raw command?=== | |||
Im Source befindet sich ein Call um die RFM12lib im Rawmodus zu verwenden, allerdings kann ich nirgends die passende Lib mit dieser Funktion finden?! --krisha |
Aktuelle Version vom 7. Januar 2011, 13:36 Uhr
Ja, die Seite ist Aktuell. Warum dieser Tag?
Benutzer:Soeren hat diesen Tag wieder entfernt. --83.135.82.193 21:33, 9. Jul. 2008 (CEST)
Notizen zum Protokoll[Quelltext bearbeiten]
Ich fasse hier mal ein paar Notizen zusammen, die ich mir beim Spielen mit der Funksteckdose gemacht habe. Meine Erfahrungen sind vollkompatibel zu dem, was bereits hier im Wiki beschrieben wurde.
- Der Sender-Chip http://www.yggenyk.dk/wiki/HX2262_Remote_encoder_circuit
- Der Empfänger http://www.yggenyk.dk/wiki/HX2272_Remote_decoder_circuit
Genaugenommen habe ich hier einen HX2272-L2, d.h., die Geräte-Adresse wird über die Pins 7, 8, 10 und 11 (A6, A7, A8, A9) am IC gesetzt; Die Pins 12 und 13 (D1 und D0) sind Ausgänge (wobei bei mir Pin 13 (D0) der "Hauptausgang" ist und Pin 12 (D1) offen liegt).
~> Unstimmigkeit: Wo fängt der Gerätecode an, wo hört der Hauscode auf? Laut den Datenblättern haben wir 4 Pins für den Hauscode (Pins 7, 8, 10 und 11 (A6, A7, A8, A9)) und 6 Pins für den Gerätecode(Pin 1-6 (A0-A5)). Im folgenden betrachten wir aber die ersten 5 Pins (Pin 1-5 (A0-A4)) als Gerätecode und die 5 Pins Pin 6-8, 10 und 11 (A5-A9) als Hauscode. Das ist aber eigentlich auch total egal. Reine Definitionsfrage.
Byteorder[Quelltext bearbeiten]
Offenbar alles MSB (das Bit was am meisten "Wert" ist steht links).
Codierung[Quelltext bearbeiten]
Wir senden mit einem RFM12-Modul, das eigentlich nur FM kann, in AM, indem wir den Sender im passenden Timing ein- und ausschalten.
Eine "0" wird gesendet, indem man zunächst "eine Zeit lang" (500-600µs?) den Sender einschaltet und dann die doppelte länge dieser Zeit X den Sender wieder abgeschaltet lässt.
Eine "1" wird gesendet, indem man zunächst die doppelte Zeit X lang den Sender ausgeschaltet lässt und dann den Sender für diese Zeit X eingeschaltet lässt.
Also wie bereits an anderer Stelle im Wiki beschrieben, wird für jede "1" die Zeichen "110" gesendet und für jede "0" wird "100" gesendet.
Adressierung[Quelltext bearbeiten]
Die Chips werden mit einer 10bit "Hausadresse" und einer 10bit "Geräteadresse" versehen. Auf der Fernbedienung jumpert man den Hauscode. Die Gerätecodes (plus Ein-/Ausschaltbefehl) sind harcodiert den verschiedenen Tasten auf der Fernbedienung zugeordnet.
Offenbar sind die Gerätecodes der Fernbedienung folgende:
Tasten | Code --------+----------------- A | 00 01 01 01 01 B | 01 00 01 01 01 C | 01 01 00 01 01 D | 01 01 01 00 01 E | 01 01 01 01 00
Beim Empfänger kann man Haus- und Gerätecode jumpern. Die Tristate-Eingänge Pin 1-6 (A0-A5) für den Hauscode und Pins 7, 8, 10 und 11 (A5, A6, A7, A8) für den Gerätecode sind entweder "offen" oder per Jumper auf Masse ("0") gezogen. Man definiert mit jedem Pin 2 Bit vom Haus-/Gerätecode nach folgender Tabelle:
Pegel | binär -------+-------- GND | 00 offen | 01 VCC | 11
Die Werte "11" können also nicht mit Jumpern sondern nur mit Umlöten erreicht werden.
Befehle[Quelltext bearbeiten]
Wir haben bisher nur folgende Befehle ausprobiert:
Befehl | Funktion --------+--------------------------------- 00 00 | 2ter Ausgang aus, Relais aus 00 01 | 2ter Ausgang aus, Relais an 01 00 | 2ter Ausgang an, Relais aus 01 01 | 2ter Ausgang an, Relais an | D1 D0 | Namen der Pins
Beispiele[Quelltext bearbeiten]
Von Handsender-Fernbedienung aufgezeichnet:
HAUSCODE GERÄTECODE COMAND A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D1 D0 00 00 00 00 00 00 01 01 01 01 00 01 - Gerät A on (zweiter unbelegter Ausgang off), Hauscode "all dip's on" 00 00 00 00 00 00 01 01 01 01 01 00 - Gerät A off (zweiter unbelegter Ausgang on), Hauscode "all dip's on" 00 00 00 00 00 01 00 01 01 01 00 01 - Gerät B on (zweiter unbelegter Ausgang off), Hauscode "all dip's on"
Empfangen[Quelltext bearbeiten]
Beim Aufzeichen sieht man immer Sequenzen von entweder
- kurz Ruhe, dann 2 Zeiteinheiten Rauschen (== "0")
oder
- 2 Zeiteinheiten Ruhe und dann kurz Rauschen (== "1")
Dazu gibt es auf http://ethersex.de/tiki-index.php?page=RFM12_ASK unter "Kangtai Powerswitch" auch schöne Screenshots.
Senden[Quelltext bearbeiten]
Möchte man die Codes senden muss man die Bitfolge noch umrechnen in das Format in der das Tool was man zum senden verwendet die Angaben haben möchte. Wir haben hier erstmal was geschrieben was 3 Byte als Dezimalzahl entgegennimmt. Diese drei Byte werden wie folgt gebildet:
HAUSCODE GERÄTECODE COMAND 00 00 00 00 00 00 01 01 01 01 00 01 - Gerät A on (zweiter unbelegter Ausgang off), Hauscode "all dip's on" |-Byte 1 -| |-- Byte 2 --| |-- Byte 3 --| 0 (= 0x00) 5 (= 0x05) 81 (= 0x51)
Ein einfaches Sende-Script könnte dann z. B. so aussehen:
#!/bin/bash case $1 in a) key=5 ;; b) key=17 ;; c) key=20 ;; *) echo "no argument" echo "$0 a|b|c|d ein|aus" exit 1 ;; esac case $2 in ein) button=81 ;; aus) button=84 ;; *) echo "no argument" echo "$0 a|b|c|d|e ein|aus" exit 1 ;; esac echo "send: $key, $button" echo "rf12 powerswitch 2272 send 0,$key,$button 76 10"|nc ethersex 2701 -w 1 2>&1 >/dev/null &
RFM12lib raw command?[Quelltext bearbeiten]
Im Source befindet sich ein Call um die RFM12lib im Rawmodus zu verwenden, allerdings kann ich nirgends die passende Lib mit dieser Funktion finden?! --krisha