Low cost Funksteckdosen + Arduino


[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)


Flattr this

86 Gedanken zu “Low cost Funksteckdosen + Arduino

  1. Ich habe es versucht nachzubauen, weil ich die Idee genial finde und habe mir auch die gleichen Steckdosen im Conrad gekauft, die Kabel angelötet, und deine Klasse benutzt, jeddoch scheint es nicht zu funktionieren. Ich habe ein Arduino Uno.. Die LED auf der Fernbedienung fängt auch an zu blinken, jeddoch keine Reaktion von den Steckdosen.

    • Oh, das ist blöd. Mögliche Ansätze:

      – Könnte ein Timingproblem sein. Die gesendeten Bits haben eine Länge von 8*469 Mikrosekunden, wobei ich die 469 bei mir gemessen und nur an einer einzigen Steckdose ausprobiert habe – vieleicht war das ja ein Messfehler und eine besonders tolerante Steckdose…

      Die Länge kann man optional im Konstruktor ändern. Kannst Du vieleicht mal folgendes durchtesten?

      RCSwitch mySwitch = RCSwitch(11, 300);
      RCSwitch mySwitch = RCSwitch(11, 320);
      RCSwitch mySwitch = RCSwitch(11, 330);
      […]
      RCSwitch mySwitch = RCSwitch(11, 440);

      – Ich hatte bei mir im Laufe des Rumexperimentierens das Kabel nicht nur einfach rangelötet, sondern auch den Pin vom SC5262 tatsächlich getrennt (wobei ich mir ziemlich sicher bin, dass es auch verbunden ging).

  2. Also ich habe den Pin schon getrennt, weil ich mir vllt. dachte, dass es hätte daran liegen können. Hatte da schonmal rumprobiert, aber in anderen Schritten. Es werden auch Daten gesendet: wenn alles verbunden ist, dann blinkt die LED auch wie bei einem normalen Tastendruck. Feedback folgt.

    PS: geiles und wirklich nützliches Projekt 🙂

    • Also es funktioniert jetzt 🙂 Waren 2 Fehler:
      1) ungenau gelötet => hab es jetzt an den out-Pin vom Chip direkt gelötet, da war mehr Platz ^^ und du hattest Recht, es geht auch mit verbundenem Chip
      2) bei mir springt die Steckdose bei ~680 Mikrosekunden auf das Signal an

      Danke 🙂

      LG Dennis

      • Qua i commenti stanno diventando VM18. E anche peogSg!iono andato sul blog di Beatrice di due commenti sopra… senza parole!Sono troppo pudico! Torno sul post precedente a parlare male della Chiesa!!

  3. Hallo,
    habe nach deiner Anleitung eine Beschaltung für ein Funksteckdosenset vom Praktiker (im Sonderangebot für 6,99 !! für 3 Steckdosen mit Sender) vorgenommen. In der Fernbedienung ist ein HX2262 im Einsatz, der kompatibel mit dem SC5262 ist. In meiner Beschaltung musste ich den Ausgangspin des HX2262 vom Rest der Schaltung trennen. Da ich mit 5V statt 12V arbeite, habe ich den Serienwiderstand zwischen Chip und Oszillator von 20k auf 8,2k verkleinert. Die optimale Einstellung für die Delay ist in meinem Fall 320us.
    Nachdem alles mit meinem Arduino Mega lief, habe ich eine Variante mit einem Attiny13 aufgebaut als Temperaturregler. Die Temperatur wird gemessen über einen KTY81 und die Steckdose wird bei definierten Temperaturwerten aus- und mit Hysterese wieder eingeschaltet. Das Programm dafür ist keine 700 Byte groß.
    Vielen Dank für deine super Anleitung.
    Gruß aus Köln
    Reinhard

    • Auf so elektrotechnische Details bin ich als Programmierer ja (noch) so gar nicht sensibilisiert 🙂 Der neue Widerstand müsste nach dem Ohmschen Gesetz R(neu) = U(neu) * R(alt) / U(alt) berechnet werden, oder? Ich werd‘ das bei Gelegenheit in die Anleitung aufnehmen. Danke 🙂

    • Hallo Reinhard,
      genau das Funksteckdosen-Set habe ich auch.
      Mein Problem ist die kurze Reichweite.
      Meine Elektronikkentnisse sind dermassen rudimentär bis nicht vorhanden, sodass ich gern wüsste, welchen Serienwiderstand du wo und wie verkleinert hast?
      Danke schomal!

      @sui: tolles Projekt und super Anleitung, danke dafür!

      Viele Grüße
      Michael

  4. Hallo Reinhard,
    danke für die ausführliche Beschreibung, ich werde schauen, ob ich das mit meinen Fähigkeiten gebacken bekomme 🙂
    Gruß
    Michael

  5. Hallo,
    funktioniert die Variante von Reinhard jetzt? Wie gut ist die Reichweite? Habe auch einen HX 2262 aber kann nur über eine Entfernung von weniger als 2 cm senden…

    • Hallo Patrick,
      geht mir genauso, reichweite < 2cm.
      Die lösung, die Reinhard oben gepostet hat, habe ich leider noch nicht probiert.
      Aber es wird ja auch gesagt, dass die fernbedienung ohne die modifikationen an der fernbedienung (widerstände raus/ leitungen brücken) ca. 3m reichweite hat.

      • Sobald du die Variante von Reinhard probiert hast gib mir bitte bescheid….Ich bin mit meinem Latein am Ende, hab keinen Plan wie ich das lösen soll…
        Grüße

  6. Hi,

    ich habe die Variante von Reinhard mit der 10€ Baumarktschaltung und HX2262 gerade zum laufen gebracht. Funktioniert toll, übrigens auch mit einem 10k Widerstand, kleinere hatte ich gerade nicht da. Eine tolle Anleitung.

  7. Hi,
    benutze die Steckdosen von von Intertechno samt Fernbedienung. Leider funktionieren diese nicht mit deiner Library. Hab keine Ahnung ob die ne andere Codierung der Signale verwenden, habe leider keinen Empfänger zur Hand. Vielleicht hat ja jemand Ahnung wie ich die Intertechno Dosen zum funktionieren überreden kann??

    • Ah, cool. Das Intertechno Protokoll ist wohl ziemlich ähnlich, aber da ich selber keine besitze, kann ich das auch nicht unter Garantie sagen. Sag‘ bescheid wenn folgendes funktioniert, dann würde ich nämlich gerne noch eine einfach zu benutzende Methode für die Intertechno Steckdosen in die Libary packen.

      Aus Familiencode + Gerätegruppe + Gerätenummer + An/Aus-Befehl musst du einen 12 Bit String basteln, dann jeden einzelnen Bit doppelt schreiben (also statt 1 => 11, statt 0 => 00) und mit dem jetzt 24 Bit Code sollten die Dosen gesteuert werden können:

      [edit: war fehlerhaft, richtige codierung siehe etwas weiter unten]

      • Hmm,
        funktioniert leider nicht bei mir. Habe beide Möglichkeiten für An ausprobiert. Nichts. Was kann ich noch ausprobieren?

      • Hab´s rausbekommen…

        Genau spiegelverkehrte binäre schreibweise (von rechts nach links schreiben) des Codes:

        Familiencode:
        a = 0000
        b = 1000
        c = 0100
        d = 1100
        e = 0010
        f = 1010
        g = 0110
        h = 1110
        i = 0001
        j = 1001
        k = 0101
        l = 1101
        m = 0011
        n = 1011
        o = 0111
        p = 1111

        Gruppe / Gerät:
        1 / 1 = 0000
        1 / 2 = 1000
        1 / 3 = 0100
        1 / 4 = 1100
        2 / 1 = 0010
        2 / 2 = 1010
        2 / 3 = 0110
        2 / 4 = 1110
        3 / 1 = 0001
        3 / 2 = 1001
        3 / 3 = 0101
        3 / 4 = 1101
        4 / 1 = 0011
        4 / 2 = 1011
        4 / 3 = 0111
        4 / 4 = 1111

        Befehl:
        An = 0111
        Aus = 0110

        Beispiel:
        Familie b (1000), Gruppe 3 / Gerät 2 (1001) / An (0111) = 100010010111
        Da die einzelnen Bits immer hinter einer 0 gesendet werden = 010000000100000100010101
        mySwitch.send(„010000000100000100010101″);

      • Großartig 🙂 Werde das im laufe der naechsten Tage in eine eigene Funktion packen.

      • Hi,
        gerade getestet, geht aber leider nicht. sicher, dass du die richtige codierung verwendest? Geschrieben jeweils von links nach rechts!

        Familiencode:
        a = 0000 =>gesendet werden muss 00000000
        b = 1000 =>01000000
        c = 0100 =>00010000
        d = 1100 =>01010000
        e = 0010 =>00000100
        f = 1010 =>01000100
        g = 0110 =>00010100
        h = 1110 =>01010100
        i = 0001 =>00000001
        j = 1001=>01000001
        k = 0101=> 00010001
        l = 1101=>01010001
        m = 0011=>00000101
        n = 1011=>01000101
        o = 0111=>00010101
        p = 1111=>01010101

        Gruppe / Gerät:
        1 / 1 = 0000 => entspricht 1 auf der Steckdose
        1 / 2 = 1000 => 2
        1 / 3 = 0100 => 3
        1 / 4 = 1100 => 4
        2 / 1 = 0010 => 5
        2 / 2 = 1010 => 6
        2 / 3 = 0110 => 7
        2 / 4 = 1110 => 8
        3 / 1 = 0001 => 9
        3 / 2 = 1001=> 10
        3 / 3 = 0101=> 11
        3 / 4 = 1101=> 12
        4 / 1 = 0011=> 13
        4 / 2 = 1011=> 14
        4 / 3 = 0111=> 15
        4 / 4 = 1111=> 16

        Gruppe / Gerät:
        1 / 1 = 0000 =>gesendet werden muss 00000000
        1 / 2 = 1000 =>01000000
        1 / 3 = 0100 =>00010000
        1 / 4 = 1100 =>01010000
        2 / 1 = 0010 =>00000100
        2 / 2 = 1010 =>01000100
        2 / 3 = 0110 =>00010100
        2 / 4 = 1110 =>01010100
        3 / 1 = 0001 =>00000001
        3 / 2 = 1001=>01000001
        3 / 3 = 0101=> 00010001
        3 / 4 = 1101=>01010001
        4 / 1 = 0011=>00000101
        4 / 2 = 1011=>01000101
        4 / 3 = 0111=>00010101
        4 / 4 = 1111=>01010101

        An:0111=> 00010101
        Aus:0101=> 00010001

      • Jetzt geht es ohne Probleme, hab mal querdurch getestet! Super Arbeit.

        Vielen Dank
        Holger

  8. Wo finde ich eigentlich den wiederstand in der Conrad Vernbedienung denn ich anpassen muss damit die Reichweit erhöht wird.
    Irgendwie blick ich das nicht so ganz.Hab hier noch einen der dann ja passende müsste mit 8,2kOhm rumliegen.

    Wäre sehr erfreut wenn mir jemand helfen könnte ?

    • Der DOut Pin am Chip ist der zweite von rechts oben (siehe Pfeil auf Foto im Blogeintrag). Folge der Leiterbahn an dem Pin, die sollte irgendwo an einem Widerstand enden (der andere Pfeil auf dem Foto, ich hab‘ das Kabel an der Stelle angelötet weil ich nicht am Chip rumlöten wollte). Wenn Du den Widerstand ersetzen möchtest, musst Du den neuen natürlich am Lötpunkt auf der anderen Seite als abgebildet anlöten. Der neue Widerstand sollte folgenden Wert haben:

      R(neu) = U(neu) * R(alt) / U(alt)

  9. Danke für deine Antwort.
    Nur zum verständniss WENN ich einen neuen Wiederstand einlöten würde könnte ich ihn hinter das element mit der nummer 334(auf dem foto oben zu sehen) löten, und vor diesen wiederstand das signal kael vom arduino richtig ?

    Deute ich deine antwort so das ich das kabel auch erst einfach mal an die selbe stelle wie du anlöten soll und es so testen kann?

    • Ja, so ist das. Wobei ich zugeben muss, dass ich von Elektrotechnik nicht soo die Ahnung habe, weshalb ich das selbst tatsächlich ohne Austauschwiderstand einfach nur links rangelötet habe, was bei mir auch wunderbar funktioniert hat.

  10. Edit: an meiner fernbedienung ist garkein weißes kabel dran ob wohl es die selbe von Conrad ist , hast du dieses Kabel dort angebracht ?

  11. Ich werde es heute abend mal testen. Werde dann hier mal bescheid geben wie es mit reichweite und Co. aussieht.

    Übrings: Super Blog , gut geschrieben nette Software ^^ finde ich echt nicht schlecht weiter so !

  12. Hab es gestern mal aufgebaut.
    Ohne den neuen Wiederstand geht gar nix ( max. reichweite <2cm) mit wieder stand war alles super 😀

    Vielen dank noch mal

  13. Mmh, kann das sein, dass bei neuen Modellen die Antenne fehlt?

    Ich habe auch kein weißes kabel. Die Platine sieht aber identisch aus.
    Könntest du freundlicherweise ein foto von der rückseite mit reinstellen, falls du eines zur verfügung hast?

    • Die abgebildete Fernbedienung hat leider das Zeitliche gesegnet als ich sie auch praktisch in zwei Hälften sägen wollte… Bei anderen Sendern wird oft auch eine Leiterbahn mit entsprechender Länge auf dem PCB als Antenne verwendet.

  14. Hallo,

    wie funktioniert das den mit dem RF link Sender? Einfach an den Arduino anschließen und schon gehts? Wirklich so einfach?

    Gruß Patrick

  15. Das mit dem RF link Sender funktioniert einwandfrei, auch mit 5 Volt ist die Rechweite > 20 Meter. einfach an den Arduino-Ausgang hängen und fertig.

    Grüße Patrick

  16. du glaubst gar nicht wie sehr du machinaex.de den arsch gerettet hast mit diesem tutorial und der library. dankeschön!!!

  17. Hallo, ich hab da nochmal ne Verständnisfrage:
    Ich bastel seit kurzen mit der Fernbedienung (Modell ganz oben wie sui77 (Conrad))rum.
    Ziel ist es die Fernbedinung wieder mit 12V zu betreiben (Batterie oder Netzteil), aber die Daten (grünes Kabel) vom Arduino zu senden. Kann ich einfach den Plus-u.Minuspol an 12V anstöpseln und die Daten weiterhin vom Arduino steuern (grünes Kabel an Arduino, rot u. schwarz an Batterie oder externes Netzteil)? Oder himmelt da irgendetwas?

      • Hi, ich hab’s tatsächlich hinbekommen. Der Widerstand an dem grünen Kabel hat 117k. Einfach wie oben beschrieben neu berechnet (48k) u. ersetzt. Schon stimmt die Reichweite wieder.
        Wirklich toller Blog, der auch Newbies wie mir hilft! Danke nochmal.

  18. xconnected :
    Kann ich dieses Projekt auch mit einem RFM12b als Sender realisieren?

    Würde mich auch interessieren, sind ja unheimlich günstig die Teile.

  19. Hallo,
    erstmal ein fettes Lob für diese geniale Bastelanleitung!!
    Mit der RSL366T Fernbedienung von Conrad (oben im Bild) habe ich die Erfahrung emacht, daß dort ein 330K Widerstand zwischen DOUT und dem Oszillator verbaut war. Funktioniert hat es erst, nachdem ich einen 220K Widerstand parallel eingelötet hatte.

    • hallo guenter, ich glaub isch stell mich zu glatt an, kannst du mal nen foto posten wo du welchen widerstand eingeloetet hast?

    • Hi Probono,

      ich habe es mit dem gleichen receiver wie du probiert, jedoch konnte ich keine meiner Fernbedinungen („Home easy”, “Intertechno“ & „no-name“) lesen. Mit einem weiteren Receiver von Watterott schon.

      Hast du irgendwas (Hardware / Software) anpassen müssen damit es ging? Mit welcher Fernbedienung hat es bei geklappt?

      Danke für Deine Rückmeldung.

  20. Und ein 13 cm Draht als Antenne erhöht die Reichweite ungemein! Mit dem Hong Kong Modul reichen so 3,3V, um im ganzen Haus zu schalten.

  21. Ich versteh es nicht. Bei mir funktioniert gar nichts. Habe es genauso gemacht, wie in dem Video hier: http://www.youtube.com/watch?v=KMdVuv3pGKc&feature=youtube_gdata_player

    Ich habe nämlich die selbe Fernbedienung.

    Die LED blinkt schön, aber es passiert gar nichts. Wenn ich wieder alles abstöppsel und die Batterie nehme, geht es per Hand.

    Lötstellen sind super in Ordnung, Dip-Einstellungen stimmen mit denen im Code überein… Passt alles.

    Habt ihr eine Ahnung, was das sein kann?

  22. Basti, nimm am besten so ein Hongkongmodul, funktioniert geil und ist kein Gefummel. Der Originalfernbedienung reichen die 5V vom Arduino nicht, beim Hongkongmodul reichen sogar schon 3,3V …

  23. Klingt gut. Es war nämlich tatsächlich die Spannung, die für die Outdoor Variante des Steckdosen Sets nicht gereicht hatte … Wo bekomme ich denn diese Hongkongmodule?

  24. Wo kommt denn die „Antenne“ dran?

    Danke für den Blog.

    probono :
    Und ein 13 cm Draht als Antenne erhöht die Reichweite ungemein! Mit dem Hong Kong Modul reichen so 3,3V, um im ganzen Haus zu schalten.

  25. Hi,

    I just read your post because i’m actually trying to send data over the SC5262 Chip, exactly as you did.

    But i currently only can receive data (with the ReceiveData_demo project for the Arduino IDE), i dunno how to send it to switch on a light.

    I used this code, using the informations that the receiveDemo_Advanced project gave me :

    #include

    RCSwitch mySwitch = RCSwitch();

    void setup () {

    Serial.begin(9600);

    mySwitch.enableTransmit(2);
    mySwitch.setRepeatTransmit(20);

    delay(700);

    }
    void loop () {

    mySwitch.send(5526871, 24); // i used the „decimal“ output from the ReceiveDemo_Advanced project

    delay(1000);

    }

    What is wrong with this code ?

    I hope you could help me 🙂

  26. Hallo,
    wenn ich die Version 0.7 überpfrüfe erscheinen beim kompilieren Fehlermeldungen. Ich bin noch recht neu in diesem Thema. Ich möchte mit einer Funksender über Arduino meine Rolladen steuern. Um die Fernbedienung auszulesen, habe ich eine Empfänger an dem Arduino angeschlossen. Folgende Meldungen werden ausgegebn:
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:22:22: error: WProgram.h: No such file or directory
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‚String‘ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‚void RCSwitch::switchOn(int, int)‘ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:33: error: with ‚void RCSwitch::switchOn(int, int)‘
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‚String‘ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‚void RCSwitch::switchOff(int, int)‘ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:34: error: with ‚void RCSwitch::switchOff(int, int)‘
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:38: error: ‚String‘ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:47: error: ‚String‘ does not name a type
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:48: error: ‚String‘ does not name a type

    Ist dieser Sktech überhaupt für alle Fernbedienungen gedacht. Danke schon mal für deine Hilfe.

  27. Sven :
    Hallo,
    wenn ich die Version 0.7 überpfrüfe erscheinen beim kompilieren Fehlermeldungen. Ich bin noch recht neu in diesem Thema. Ich möchte mit einer Funksender über Arduino meine Rolladen steuern. Um die Fernbedienung auszulesen, habe ich eine Empfänger an dem Arduino angeschlossen. Folgende Meldungen werden ausgegebn:
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:22:22: error: WProgram.h: No such file or directory
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‘void RCSwitch::switchOn(int, int)’ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:33: error: with ‘void RCSwitch::switchOn(int, int)’
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‘void RCSwitch::switchOff(int, int)’ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:34: error: with ‘void RCSwitch::switchOff(int, int)’
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:38: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:47: error: ‘String’ does not name a type
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:48: error: ‘String’ does not name a type
    Ist dieser Sktech überhaupt für alle Fernbedienungen gedacht. Danke schon mal für deine Hilfe.

    Den Fehler mit WProgram.h habe ich gelöst 😉

  28. Sven :

    Sven :
    Hallo,
    wenn ich die Version 0.7 überpfrüfe erscheinen beim kompilieren Fehlermeldungen. Ich bin noch recht neu in diesem Thema. Ich möchte mit einer Funksender über Arduino meine Rolladen steuern. Um die Fernbedienung auszulesen, habe ich eine Empfänger an dem Arduino angeschlossen. Folgende Meldungen werden ausgegebn:
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:22:22: error: WProgram.h: No such file or directory
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‘void RCSwitch::switchOn(int, int)’ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:33: error: with ‘void RCSwitch::switchOn(int, int)’
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‘void RCSwitch::switchOff(int, int)’ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:34: error: with ‘void RCSwitch::switchOff(int, int)’
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:38: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:47: error: ‘String’ does not name a type
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:48: error: ‘String’ does not name a type
    Ist dieser Sktech überhaupt für alle Fernbedienungen gedacht. Danke schon mal für deine Hilfe.

    Den Fehler mit WProgram.h habe ich gelöst

    Jetzt erscheint:

    core.a(main.cpp.o): In function `main‘:
    D:\arduino-1.0.1\hardware\arduino\cores\arduino/main.cpp:11: undefined reference to `setup‘
    D:\arduino-1.0.1\hardware\arduino\cores\arduino/main.cpp:14: undefined reference to `loop‘

  29. Sven :
    Dein Kommentar muss noch moderiert werden.

    Sven :

    Sven :
    Hallo,
    wenn ich die Version 0.7 überpfrüfe erscheinen beim kompilieren Fehlermeldungen. Ich bin noch recht neu in diesem Thema. Ich möchte mit einer Funksender über Arduino meine Rolladen steuern. Um die Fernbedienung auszulesen, habe ich eine Empfänger an dem Arduino angeschlossen. Folgende Meldungen werden ausgegebn:
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:22:22: error: WProgram.h: No such file or directory
    In file included from ReceiveDemo.cpp:1:
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:35: error: ‘void RCSwitch::switchOn(int, int)’ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:33: error: with ‘void RCSwitch::switchOn(int, int)’
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:36: error: ‘void RCSwitch::switchOff(int, int)’ cannot be overloaded
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:34: error: with ‘void RCSwitch::switchOff(int, int)’
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:38: error: ‘String’ has not been declared
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:47: error: ‘String’ does not name a type
    D:\arduino-1.0.1\libraries\RCSwitchdecodier/RCSwitch.h:48: error: ‘String’ does not name a type
    Ist dieser Sktech überhaupt für alle Fernbedienungen gedacht. Danke schon mal für deine Hilfe.

    Den Fehler mit WProgram.h habe ich gelöst

    Jetzt erscheint:
    core.a(main.cpp.o): In function `main’:
    D:\arduino-1.0.1\hardware\arduino\cores\arduino/main.cpp:11: undefined reference to `setup’
    D:\arduino-1.0.1\hardware\arduino\cores\arduino/main.cpp:14: undefined reference to `loop’

    Entschuldige bitte falschen Sketch geladen. Die akutelle Ausgabe von RecieveDemo:

    sketch_aug03a:3: error: no matching function for call to ‚RCSwitch::RCSwitch(int)‘
    D:\arduino-1.0.1\libraries\RCSwitch/RCSwitch.h:42: note: candidates are: RCSwitch::RCSwitch()
    D:\arduino-1.0.1\libraries\RCSwitch/RCSwitch.h:39: note: RCSwitch::RCSwitch(const RCSwitch&)
    sketch_aug03a.cpp: In function ‚void setup()‘:
    sketch_aug03a:7: error: no matching function for call to ‚RCSwitch::enableReceive(int, void (&)(long unsigned int, unsigned int, unsigned int, unsigned int*))‘
    D:\arduino-1.0.1\libraries\RCSwitch/RCSwitch.h:55: note: candidates are: void RCSwitch::enableReceive(int)
    D:\arduino-1.0.1\libraries\RCSwitch/RCSwitch.h:56: note: void RCSwitch::enableReceive()
    Schlechte Fehlerzeile: -1

  30. hy leute erstmals gibts großen Respekt an euch alle, die so super Projekte ins Internet bringen und testen!!! So mein Problem hab auch den HX2262, ersten 5 Dipschalter (ON ON ON ON ON) die zweiten 5(ON OFF OFF OFF OFF) hab die Versorgung an die 9V des Arduinos gelegt und den Data-Pin auf die 11

    Quellcode:
    #include

    RCSwitch mySwitch = RCSwitch();

    void setup() {

    // Transmitter is connected to Arduino Pin #10
    mySwitch.enableTransmit(11);

    // Optional set pulse length.
    // mySwitch.setPulseLength(320);

    }

    void loop() {

    // Switch on:
    // The first parameter represents the setting of the first 5 DIP switches.
    // In this example it’s ON-ON-OFF-OFF-ON.
    //
    // The second parameter represents the setting of the last 5 DIP switches.
    // As only one of these must be ON, it’s the number of the DIP switch which
    // is ON. In this example the last 5 DIP switches are OFF-ON-OFF-OFF-OFF.
    mySwitch.switchOn(„11111“, 1);

    // Wait a second
    delay(1000);

    // Switch off
    mySwitch.switchOff(„11111“, 1);

    // Wait another second
    delay(1000);

    }
    was mach ich falsch bitte um eure Hilfe

    LG

  31. Hallo,
    Ich habe als Sender einen 433 von Ebay genommen und würde gerne jetzt mit dem Arduino und der Fernbedienung arbeiten, aber irgendwie geht die Fernbedienung nicht mehr wenn der Arduino Strom hat. Irgendeine Lösungsidee?

  32. probono :
    Funktioniert hervorragend mit diesem Sender von eBay für 1,88 EUR inkl. Versand aus Hong Kong: http://www.ebay.de/itm/251074244515 (“1Pcs New 433Mhz RF transmitter and receiver link kit for ARM/MCU WL”)

    Probiere schon ewig mit dem Modul aber leider ohne Erfolg. Könntest Du mal ein Beispiel posten?
    Danke,
    Stefan.

  33. Hi,
    ich möchte ein ähnliches Projekt starten bei dem ich viele verschieden Glühbirnen bzw Lampen mit vielen Fernbedienungen ein ausschalten will. Im Moment denke ich so an 60 Birnen und 60 Fernbedienungen. Jeweils eine Fernbedienung soll eine Birne an- und ausschalten können.

    Ist das möglich mit nur einem Arduino? Sind bei so einer Schaltung die Interrupts von Bedeutung und reichen dafür die zwei Interrupts des unos?

    Ich hoffe du kannst mir helfen. Schonmal danke im Voraus

    • fuer due benutzer: mit pin0 und pin1 funktioniert der code. funktioniert tadellos mit dem china reciever und transmitter. gibt es eine moeglichkeit die reichweite zu erhoehen?

  34. Ich bekomme beim Hochladen immer folgende Fehlermeldung:

    sketch_sep09a:3: error: no matching function for call to ‚RCSwitch::RCSwitch(int)‘
    C:\Users\Familie Weltz\Documents\Arduino\libraries\RCswitch/RCSwitch.h:59: note: candidates are: RCSwitch::RCSwitch()
    C:\Users\Familie Weltz\Documents\Arduino\libraries\RCswitch/RCSwitch.h:56: note: RCSwitch::RCSwitch(const RCSwitch&)

    Ich bekomme keine fehlermeldung bei dieser Kombination. Dann wird aber auch kein Signal gesendet.

    #include

    RCSwitch mySwitch = RCSwitch(); // 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);
    }

  35. Ich bekomme keine fehlermeldung bei dieser Kombination. Dann wird aber auch kein Signal gesendet.
    #include
    RCSwitch mySwitch = RCSwitch(); // Sender is connected to Pin #11
    void setup() {
    }

    in der setup-Methode fehlt noch

    mySwitch.enableTransmit(1);

  36. Hey

    DANKE!!
    Bist Du der Programmer der Bilblithek von RC_SWITCH?
    Gelötet, programmiert, funktioniert
    GENIAL!
    DANKE!!!
    läuft ab demnächst in einer leckeren Bar mit Funksteckdose im Nebenraum als Klingelsignal.

    Martin
    Berlin

  37. Hallo

    Echt toll das Projekt von dir. Ich hab aber Probleme es umzusetzen.
    Ich hab deinen Beispielcode

    #include

    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);
    }

    in Verbindung mit dem RF Link Sender

    http://www.watterott.com/de/RF-Link-Sender-434MHz

    versucht zu testen. Bekomme aber immer den Fehler

    Arduino: 1.5.8 (Windows 8), Board: „Arduino Yún“

    sketch_mar13a.ino:3:32: error: no matching function for call to ‚RCSwitch::RCSwitch(int)‘
    sketch_mar13a.ino:3:32: note: candidates are:
    In file included from sketch_mar13a.ino:1:0:
    C:\Users\ap_al_000\Desktop\Arduino\Programme\IDE und Teiber fuer Windows 8 64\arduino-1.5.8\libraries\RCSwitch/RCSwitch.h:59:5: note: RCSwitch::RCSwitch()
    RCSwitch();
    ^
    C:\Users\ap_al_000\Desktop\Arduino\Programme\IDE und Teiber fuer Windows 8 64\arduino-1.5.8\libraries\RCSwitch/RCSwitch.h:59:5: note: candidate expects 0 arguments, 1 provided
    C:\Users\ap_al_000\Desktop\Arduino\Programme\IDE und Teiber fuer Windows 8 64\arduino-1.5.8\libraries\RCSwitch/RCSwitch.h:56:7: note: RCSwitch::RCSwitch(const RCSwitch&)
    class RCSwitch {
    ^
    C:\Users\ap_al_000\Desktop\Arduino\Programme\IDE und Teiber fuer Windows 8 64\arduino-1.5.8\libraries\RCSwitch/RCSwitch.h:56:7: note: no known conversion for argument 1 from ‚int‘ to ‚const RCSwitch&‘
    Fehler beim Übersetzen

    Kannst du mir bitte weiterhelfen ?

    Danke
    Peter

  38. Thank you for the lib. It is a pretty good approach but I struggle in my project. I hope someone can help me trouble shooting the issue.

    I bought the RF receiver from Watterott to decode a RF signal from a remote. I wired everything correctly and tried „ReceiveDemo_Simple“ but I can only receive an old no-name remote. A „Home easy“ and a „Intertechno“ one doesn’t show a serial output.

    I also tried it with sheep a RF receiver (MX-05V) form eBay, but that I didn’t receive anything.

    Any suggestions?

  39. Hallo,
    bekomme leider für diesen Beispielcode:

    #include

    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);
    }

    folgende Fehlermeldung:

    Arduino: 1.6.6 (Windows 7), Board: „Arduino/Genuino Uno“

    sketch_nov15b.ino.ino:3: error: no matching function for call to ‚RCSwitch::RCSwitch(int)‘

    RCSwitch mySwitch = RCSwitch(11); // Sender is connected to Pin #11

    ^

    C:\Users\Maximilian\Desktop\Aquariumcomputer\sketch_nov15b\sketch_nov15b.ino\sketch_nov15b.ino.ino\sketch_nov15b.ino.ino.ino:3:32: note: candidates are:

    In file included from C:\Users\Maximilian\Desktop\Aquariumcomputer\sketch_nov15b\sketch_nov15b.ino\sketch_nov15b.ino.ino\sketch_nov15b.ino.ino.ino:1:0:

    C:\Users\Maximilian\Documents\Arduino\libraries\RCSwitch/RCSwitch.h:59:5: note: RCSwitch::RCSwitch()

    RCSwitch();

    ^

    C:\Users\Maximilian\Documents\Arduino\libraries\RCSwitch/RCSwitch.h:59:5: note: candidate expects 0 arguments, 1 provided

    C:\Users\Maximilian\Documents\Arduino\libraries\RCSwitch/RCSwitch.h:56:7: note: constexpr RCSwitch::RCSwitch(const RCSwitch&)

    class RCSwitch {

    ^

    C:\Users\Maximilian\Documents\Arduino\libraries\RCSwitch/RCSwitch.h:56:7: note: no known conversion for argument 1 from ‚int‘ to ‚const RCSwitch&‘

    C:\Users\Maximilian\Documents\Arduino\libraries\RCSwitch/RCSwitch.h:56:7: note: constexpr RCSwitch::RCSwitch(RCSwitch&&)

    C:\Users\Maximilian\Documents\Arduino\libraries\RCSwitch/RCSwitch.h:56:7: note: no known conversion for argument 1 from ‚int‘ to ‚RCSwitch&&‘

    exit status 1
    no matching function for call to ‚RCSwitch::RCSwitch(int)‘

    Kann mir bitte jemand helfen!
    Danke!

    Gruß

  40. Super Idee.
    Kann man die Steckdosen auch ohne Arduino schalten, möchte(müsste) dies nur über einen Digitaleingang (I/0) berwerkstelligen. Danke

  41. Hallo Martin,

    Martin :
    Super Idee.
    Kann man die Steckdosen auch ohne Arduino schalten, möchte(müsste) dies nur über einen Digitaleingang (I/0) berwerkstelligen. Danke

    Martin,
    wenn Du direkt an die Steckdosen gehen willst, also einen „digitalen“ Zugang per Kabel, ist zunächst der Witz gemordet, einen Verbraucher aus der Ferne zu schalten,
    und vor allem ist das Innere der Steckdosen absolut humorlos!
    Netzspannung 240V drohen.

  42. Ich wollte mich noch bedanken!
    Super Arbeit!
    Hatte heute meine bestellten 433MHz Sender und Empfänger bekommen und gleich, als Test, einen der Empfänger am Arduino Duemilanove mit der „Receive_Demo_Advanced“ Sketch in Betrieb genommen.
    Musste die beiden getrennten „output.ino“ und „helperfunctions.ino“ einkopieren, irgendwo war da noch eine schließende Klammer „}“ verloren gegangen …
    aber dann lief der Kompiliervorgang durch und das Sache läuft einfach!

    Danke!

    Manfred

  43. Sehr nützliche Library! Habe die Fernbedienungs-Signale eines NoName-Steckdosensets ausgelesen und dokumentiert, dann per RF-Sender am Arduino die gleichen Signale an die Dose geschickt. Funktioniert auf Anhieb und einwandfrei. Vielen Dank!

  44. Das Thema ist schon ewig alt und nicht sicher wer von den ursprünglichen Verfassern diesen Thread noch liest, aber Vielen Dank für die Arbeit und die Library!! Ich hab die Steckdose von Goobay bei Amazon bestellt. Im Library Wiki war sie als kompatibel angegeben, aber mit relativ wenig information. Die angegebenen Ein/Ausschalte Codes funktionieren aber auf Anhieb mit der mySwitch.send(code, length) Funktion und length=24. Ich bin happy. 🙂

Hinterlasse eine Antwort zu Bernhard Antwort abbrechen