[English version]
Für die billige Haus-Automatisierung möchte ich hier heute meine frisch geschriebene Arduino Libary für „433MHz Baumarkt Funksteckdosen“ vorstellen. Weil Conrad aber näher als Max Bahr ist und ich auch lieber bei Conrad shoppe, habe ich für knapp 10 EUR die hier gekauft.
In der Fernbedienung schlummert ein SC5262 Chip (Datenblatt), welcher je nach gedrücktem Knopf ein digitales Datentelegram erzeugt und an den eigentlichen Funksender weitergibt. Nach intensivem Studium des Datenblatts und verschiedenen anderen Quellen (1) (2) (3) mit ähnlichen Projekten habe ich es auch tatsächlich auch wie folgt geschafft, die Steckdose mit einem einzigen Datenkabel am Arduino zu steuern.
Theorie
Wenn man weiss wie die Datentelegramme aussehen müssen, kann man die auch selbst mit dem Mikrocontroller erzeugen und somit auf den Encoderchip aus der Fernbedienung verzichten. Im Datenblatt steht folgendes:
Ein Code Bit besteht aus zwei An/Aus-Zuständen, wichtig ist hierbei die zeitliche Länge dieser Zustände, kann man sich so ähnlich vorstellen wie Morsezeichen. Es gibt insgesamt drei mögliche Code Bits, nämlich „0“, „1“ und „F“. Darüber hinaus gibt es noch ein Sync. Bit (ich nenn‘ es mal „S“).
"0" Bit => 1/8 Taktlänge An, 3/8 Taktlängen Aus, 1/8 Taktlänge An, 3/8 Taktlängen Aus -...-...
"1" Bit => 3/8 Taktlängen An, 1/8 Taktlänge Aus, 3/8 Taktlängen An, 1/8 Taktlänge Aus ---.---.
"F" Bit => 1/8 Taktlänge An, 3/8 Taktlängen Aus, 3/8 Taktlängen An, 1/8 Taktlänge Aus -...---.
"S" Bit => 1/8 Taktlänge An, 31/8 Taktlängen Aus -...............................
Ein Code Word besteht aus 9 Adress Code Bits, 3 Data Code Bits und einem Sync Bit und repräsentiert quasi den Befehl welche Steckdose (Adress Bits) was machen soll (Daten Bits).
Ein Code Frame besteht aus 4 Code Words, also im Grunde genommen wird jeder Befehl 4x wiederholt.
Die Conrad Steckdosen sind dabei folgendermaßen Codiert:
4 Bits Gruppenadresse + 4 Bits Steckdosenadresse + 1 ungenutzter Adress Bit + 1 ungenutzer Daten Bit + 2 Daten/Befehls Bits + 1 Sync Bit
Gruppenadresse I = "0FFF"
Gruppenadresse II = "F0FF"
Gruppenadresse III = "FF0F"
Gruppenadresse IV = "FFF0"
Steckdose 1 = „0FFF“
Steckdose 2 = „F0FF“
Steckdose 3 = „FF0F“
Steckdose 4 = „FFF0“
Ungenutze Datenbits = egal, also „F“ oder „0“
Befehl An = „FF“
Befehl Aus = „F0“
Wenn ich also die 3. Steckdose aus der 4. Gruppe ausschalten möchte, muss ich ein „FF0FFFF0FFF0S“ senden.
Hardware / Fernbedienung anzapfen
Fernbedienung öffnen, am DOUT Pin ein Kabel und zwei weitere für die Stromversorgung anlöten. DOUT kann an jeden beliebigen I/O Pin vom Arduino, den Strom kann man auch vom Arduino abzapfen (5V und GND), denn obwohl da eigentlich eine 12V Batterie drin war funktioniert das ganze auch wunderbar mit 5V.
Software
RCSwitch.zip runterladen und im Arduino/Libaries Verzeichnis entpacken. Der folgende Sketch ist eigentlich selbsterklärend 🙂
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch(11); // Sender is connected to Pin #11
void setup() {
}
void loop() {
mySwitch.switchOn(1, 1); // Switch 1st socket on
delay(1000);
mySwitch.switchOff(1, 1); // Switch 1st socket off
delay(1000);
}
Updates
- Die Libary liegt jetzt bei Google Code
- Steckdosen mit DIP-Switches (in der Regel mt HX2262 oder PT2262 Encoder in der Original Fernbedienung) können auch angesteuert werden (Anleitung).
- Billiger: Bei Praktiker gibt es 3er Sets mit etwas Glück für 6,99 EUR im Sonderangebot (thx @ Reinhard); ich persönlich habe inzwischen zur Erweiterung die Steckdosen von Pollin (9,99 EUR 3er Set)genommen.
- Version 0.7 kann jetzt auch Codes einer Fernbedienung empfangen und decodieren
- Einfacher: Wer nicht löten möchte, sollte sich ein fertiges Modul kaufen. Gibt es ab 5 EUR. Am billigsten inclusive Versand von Händlern aus Hong Kong/China bei eBay (Suche nach „433 Arduino“ oder „RF Link“). Ansonsten hier eine Liste mit Bezugsquellen.
- Unterstützung von Intertechno Steckdosen (thx @ Holger)