Funksteckdosen mit dem Raspberry PI steuern

Funksteckdosen mit dem Raspberry PI steuern

Mit dem in einem anderen Artikel vorgestellten RaspyRFM Modul ist es möglich verschiedene Funksteckdosen vom Raspberry PI aus anzusprechen. Es gibt eine Vielzahl unterschiedlicher Funksteckdosen, die mit unterschiedlichen Funkprotokollen arbeiten. Für die verbreitetsten Typen gibt es Pythonskripte, mit denen die Funksteckdosen geschaltet werden können. Eine (unvollständige) Übersicht aller Funksteckdosen die mit dem RaspyRFM und den verfügbaren Skripten gesteuert werden können findet man in diesem Artikel.

Funksteckdosen mit dem Protokolltyp I (HX2262 / PT 2262 & Kompatible auf 434 MHz) steuern

Viele Funksteckdosen arbeiten mit dem IC HX2262 oder Kompatiblen. Das IC hat 12 Dateneingänge (A0-A11), wobei jeder Eingang auf Low, High oder offen gelegt werden kann. Eine 0 an einem Eingang erzeugt zwei kurze Impulse, eine 1 zwei lange Impulse und ein offener Eingang einen kurzen Impuls gefolgt von einem Langen.

hx2262-high-low-float

Ein gesamtes Packet besteht dann aus 24 Impulsen (12 Bit á 2 Impulse) gefolgt von einem Synchronisationsimpuls. Um nun diese Daten mit einem OOK-fähigen Modul mit FIFO wie dem RFM69CW aussenden zu können, müssen noch die langen und kurzen Impulse konvertiert werden. Die kürzeste Zeit die in den Impulsen vorkommt sind 350 µs für den kurzen Impuls. Wenn das Funkmodul nun auf 2857 bit/s OOK eingestellt wird, kann damit ein kurzer Impuls ausgesendet werden in dem die Bitfolge „1000“ in den FIFO geschrieben wird. Eine lange Bitfolge entspricht dann „1110“. In hexadezimaler Schreibweise entspricht das 0x8 bzw, 0xE. So wird also für jeden Datenpin, also insgesamt 12x, jeweils der Wert 0x88 für Low, der Wert 0xEE für high und 0x8E für einen offenen Eingang ans Funkmodul übergeben. Solch ein Packet wird mit einem Synchronisationsimpuls abgeschlossen, welches mit dem Wert 0x80000000 auf dem FIFO generiert werden kann.

  • Bit“0″ -> 0b1000, 0b1000 -> 0x88
  • Bit“1″ -> 0b1110, 0b1110 -> 0xEE
  • Bit“f“ -> 0b1000, 0b1110 -> 0x8E

Es gibt ein allgemeines Skript welches Funktelegramme für diesen Protokolltyp sendet. Die Kodierung hängt von der Verschaltung im entsprechendem Handsender ab und ist bei den verschiedenen Herstellern unterschiedlich:

sudo ./xx2262.py 000000000FFF

Intertechno

Ältere Intertechnosteckdosen mit Kodierrädern haben eine bekannte Verschaltung, so dass man mit dem Intertechno-Hilfsskript direkt Hauscode, Gruppe und Kanal angeben kann. Aufrufparameter: <Hauscode> <Group> <Channel> on|off

sudo ./intertechno.py A 1 3 on

Brennenstuhl RCS 1000

Auch für diese Brennenstuhlsteckdose gibt es ein Hilfsskript in dem direkt die DIP Schalter angegeben werden können. Das Skript erzeugt den Protokollcode wie folgt:

  • 5x DIP-Schalter ein „0“-Bit für einen aktivierten, ein „f“-Bit für einen deaktivierten Kodierschalter
  • 4x Bit für die Tasten („0“ für gedrückt, „1“ für nicht gedrückt)
  • 1x fest Bit „f“
  • Bit“0″ – Bit“f“ für „Taster on“, Bit“f“- Bit“0″ für „Taster off“

Aufrufparameter: <DIP switches> <channel> on|off

sudo ./rcs1000.py 00110 2 on

RSL366

2015-08-27 10.35.132015-08-27 10.35.212015-08-27 10.36.23

Am Sender befindet sich ein Schiebeschalter, mit dem einer der ersten 4 Datenleitungen auf GND gelegt wird. Die nächsten 4 Datenleitungen werden von den Tasten auf low gezogen, dann folgen 3 ungenutzte Eingänge (also Bit“f“), und der letzte Eingang wird jeweils für die „OFF“-Tasten auf GND gezogen.

  • 4 Doppelimpulse, davon genau einer entsprechend des Schiebeschalters Bit“0″, der Rest Bit“f“
  • 4x für jede gedrückte Taste ein Bit“0″, für jede nicht gedrückte Bit“f“
  • 3x fest Bit“f“
  • 1x Bit“0″ für „OFF“, Bit“f“ für „ON“

Funksteckdosen mit dem Protokolltyp II (Intertechno neu)

Alle selbstlernenden Intertechno-Funksteckdosen verwenden diesen Protokolltyp. Dabei werden folgende Symbole benutzt:

  • Bit 0: 1 Schritt high, 1 Schritt low, 1 Schritt high, 5 Schritte low
  • Bit 1: 1 Schritt high, 5 Schritte low, 1 Schritt high, 1 Schritt low
  • Sync: 1 Schritt high, 11 Schritte low
  • Pause: 1 Schritt high, 39 Schritte low

Die Schrittweite beträgt ca. 275 µS. Ein Telegram besteht aus einem Syncsymbol, 32 Datenbits und einem Pausesymbol. Ein Telegram wird für eine Aussendung 4x wiederholt. Das Datenfeld ist folgendermaßen aufgebaut:

  • 26 Bits Systemcode
  • 1 Bit Gruppe (0=einzeln, 1=Gruppe)
  • 1 Bit an/aus
  • 4 Bit Kanal (0000 = 0, 0001 = 1, …)

Senden:

sudo ./intertechno 11110000111100001111000011 0 0000 on

Die Hamafunksteckdosen HAMA 00121938 verwenden ebenfalls dieses Protokoll, allerdings mit einer Schrittweite von 250 µS und die 4 Kanalbits müssen invertiert werden.

Funksteckdosen mit dem Protokoll III (Voltcraft/Silvercrest Sender TR502MSV, Steckdose RC30ADX)

Bald mehr darüber…

Logilight Funksteckdosen (434 MHz)

Zu den Logilight-Funksteckdosen gibt es einen eigenen Artikel in dem deren Protokoll besprochen wird.
Empfang:

sudo ./logilightrx.py
RFM69 found!
INIT COMPLETE
Systemcode 415166 onoff 0 ch 7
Systemcode 415166 onoff 0 ch 7
Systemcode 415166 onoff 0 ch 5
Systemcode 415166 onoff 0 ch 5

Senden:


sudo ./logilighttx.py 415166 1 7 4
RFM69 found!
INIT COMPLETE

Außerdem gibt es einen Conair-Emulator für das RaspyRFM, mit dem mit Hilfe der App Power Switch eine große Anzahl an Steckdosentypen angesteuert werden kann.

 

4 Gedanken zu “Funksteckdosen mit dem Raspberry PI steuern

  1. Wie kann ich die Hama-Steckdosen ansteuern? Bitte vervollständigen 🙂
    Schaffe es bisher nur die Codes Auszulesen.

    Kann ich auch mehr als 3 Steckdosen ansteuern?

    Gruß Stephan

    • Die Hamasteckdosen werden fast wie die selbstlernenden Intertechnosteckdosen angesprochen, nur dass die Zeitbasis 250 µS beträgt und dass die 4 Bits für die Kanalnummer invertiert üertragen werden.

  2. Hallo Herr Seegel,

    es ist aktuell für mich nicht erkennbar, ob Sie noch aktiv sind und die Module weiterhin bei Ihnen erworben werden können.

    Bitte hierzu eine kurze Nachricht, wie ggfs. Artikel bestellt werden können.

    Danke
    M. Volkens

Schreibe einen Kommentar