mumbi Funksteckdosen (selbstlernend ohne DIP) mit fhem steuern

Eingetragen bei: Allgemein, FHEM, Hausautomation | 4

Bevor überhaupt das Thema Hausautomatisierung aufgekommen ist, hatte ich ein paar Funksteckdosen von mumbi (Amazon Link) gekauft und damit rumgespielt.

img_5183

Nachdem ich dann während des Hausumbaus über Funk-Jalousien, Funk-Lichtschalter und deren Ansteuerung nachgedacht hatte, kamen mir diese Dosen auch wieder in den Sinn. Ich nutze momentan fhem (Link) mit einem Raspberry PI und bin wirklich mehr als zufrieden. (Bei Tests mit openHAB (Link) bin ich zu keinem für mich vernünftigen Ergebnis gekommen).

Zu fhem möchte ich an dieser Stelle nicht allzu viel sagen. Es ist ein Projekt von Rudolf König zur Hausautomatisierung über Perl. Nach der wirklich simplen Installation auf einem Raspberry PI können (sofern man die passenden Adapter und Sender/Empfänger angeschlossen hat) so ziemlich alle Hausautomatisierungssysteme kombiniert werden. Sei es Homematic, FS20 oder andere Protokolle mit 433 oder 868 MHz.

 

Funksteckdosen

Normale Funksteckdosen, die nicht, wie Komponenten von z.B. Homematic deren Status ob an oder aus zurückmelden, funken mit 433 MHz.
Die Protokolle sind in der Regel sehr simpel aufgebaut und enthalten einfache Bit-Folgen, die einen Haus- und Gerätecode sowie eine Funktion wie an/aus enthalten.
Simples Beispiel:
 0001   0100    01
(Haus) (Gerät) (an)

Nun ist das Einbinden solcher Steckdosen unfassbar einfach in fhem (Link) umzusetzen. Der Haken kommt leider bei den so genannten selbstlernenden Funksteckdosen, deren Haus- und Gerätecode nicht per DIP-Schalter eingestellt, sondern beim Betätigen einer der Tasten auf der Fernbedienung angelernt werden. Hier gibt es auch Systeme, die einen einfachen Code schicken, aber auch wiederum Systeme (dazu zählt das von mumbi und aber auch elro oder flamingo) welche irgendwelche Bitfolgen senden. Mit den eingebauten Plugins von fhem funktioniert das Ganze nicht, dafür wird leider etwas mehr Arbeit benötigt. Und darum soll es im Folgenden gehen.

Hier schonmal ein Beispiel für eine mumbi Bitfolge:
Schaltet man mit Fernbedienung 1 den Kanal A an, so werden 4 Bitfolgen zu je 28 Bits verschicken
001001 001001100011 0010 0111 10
001001 100011001101 1001 0101 10
001001 010111111100 1001 1101 10
001001 011110110011 1001 1000 10
Aus vom selben Kanal bewirkt folgende 4 Bitfolgen
001001 110110001100 1110 0011 10
001001 110101101000 1001 0110 10
001001 001010100100 1001 1110 10
001001 100111100111 0111 0001 10
Unschwer zu erkennen, dass in den Bitfolgen auf den ersten Blick kein Haus- und Gerätecode versteckt ist. Ich werde in einem anderen Beitrag noch etwas genauer auf diese Bitfolgen und das was einige Benutzer aus dem Arduino-Forum und ich herausgefunden haben eingehen.

Tja, wie findet man nun diese Codes raus, um diese in fhem einzubinden.

 

Auslesen der Codes aus der Fernbedienung

An dieser Stelle schon einmal alle benötigten Dateien in einer ZIP-Datei: (mumbi_tutorial)

Zu allererst wird ein Arduino-Board mit einem 433MHz-Empfänger benötigt. Die gibt es zusammen mit Sender (braucht man dann eh für fhem) bei eBay und Co. für ungefähr 5 Euro. (Link)
Dann wird der grandiose Flamingo-Switch Sketch von Karl-Heinz Wind (Github) benötigt. Ich habe es für meine Zwecke umgeschrieben (ist in der mumbi_tutorial.zip enthalten), da wir ja für jeden Kanal 4 Codes benötigen, die Library aber alle Codes (es werden sogar Bitfolgen mit 24 Zeichen gesendet) und davon immer nur einen anzeigt. Die Library habe ich noch einmal für die neuere Arduino-Version in die mumbi_tutorial.zip gepackt.

Angeschlossen wird der Receiver an PIN 3 (IRQ PIN 0) am Arduino Board, sowie an 5 V (VCC) und GND.

img_2220

Jetzt kann der Sketch hochgeladen und ausgeführt werden. Nach dem Öffnen der Konsole (9600 Baud) kann durch mehrmaliges Drücken einer Taste auf der Fernbedienung getestet werden, ob Signale ankommen.

Wenn etwas ankommt, so lange die selbe Taste (bitte keine andere) drücken, bis unter dem Satz Bin Data: genau 4 Zeilen mit Binärwerten stehen. Diese bitte inkl. gedrückter Taste notieren.

Den Sketch beenden und neu starten und für die übrigen 7 Tasten der Fernbedienung wiederholen.

bildschirmfoto-2016-09-23-um-20-52-50

 

Installation der benötigten Skripte in fhem

Bitte zuerst dieses feine Tutorial befolgen (falls noch nicht geschehen) (Link).

Danach müssen zwei Anpassungen im Dateisystem gemacht werden.

  1. Die Dateien aus dem Ordner /opt/rc-switch/rcswitch-pi/ sichern und mit dem Inhalt von send.tar.gz ersetzen

  2. Datei (00_GenShellSwitch.pm) nach /opt/fhem/FHEM kopieren (habe das Skript auch etwas angepasst!)

Nun lassen sich die Funksteckdosen wie folgt in fhem einbinden:

define Lampe_Test GenShellSwitch /opt/rc-switch/rcswitch-pi/send 0010011111111000110010011110 0010011111111111001001110110 0010011111111100111001100010 0010011111111111011001010110 0010011111111111110111000110 0010011111111111001001111010 0010011111111010001001011010 0010011111111111001110001110 310
attr Lampe_Test comment Stehlampe
attr Lampe_Test group Licht
attr Lampe_Test room Wohnzimmer
attr Lampe_Test webCmd toggle:on:off
attr Lampe_Test devStateIcon on:light_light_dim_100@#1c7efb off:light_light_dim_100@black

wobei der Befehl folgendermaßen aufgebaut wird:

define [device] GenShellSwitch /opt/rc-switch/rcswitch-pi/send [4 on codes] [4 off codes] [delay - bei mir hat 310 geklappt - dieser Wert muss ggfls. angepasst werden]

Das müsste es gewesen sein.

Ich hoffe ich habe an dieser Stelle nichts vergessen und es klappt auf Anhieb. Ansonsten bitte gerne einen Kommentar hinterlassen.

Viel Spaß beim Ausprobieren!!!

4 Antworten

  1. Wäh! Und ich habe meine Funksteckdosen gerade bei Kleinanzeigen verkauft. Jetzt bekomme ich gleich wieder Lust zum basteln.

  2. Hallo.
    Habe zur Zeit nur diese TEVION Funksteckdosen mit GS-9000, aber die bekomme ich am Pi nicht zum laufen.
    Am Arduino geht es, wenn ich auf die rc-switch Library verzichte, und das „manuell“ mache (code ist nicht von mir)

    //Der Code fuer ‚0‘
    digitalWrite(rc_pin,HIGH);
    delayMicroseconds(1000);
    digitalWrite(rc_pin,LOW);
    delayMicroseconds(500);
    return;
    }
    case ‚1‘:
    { //Der Code fuer ‚1‘
    digitalWrite(rc_pin,HIGH);
    delayMicroseconds(500);
    digitalWrite(rc_pin,LOW);
    delayMicroseconds(1000);
    return;
    }
    case ‚x‘:
    { //Der Code fuer x(sync)
    digitalWrite(rc_pin,HIGH);
    delayMicroseconds(3000);
    digitalWrite(rc_pin,LOW);
    delayMicroseconds(7000);
    }

    Leider gibt es auf dem PI anscheinend nur diese rc-switch Library. Da ich nun langsam die Nase voll habe, werde ich mir wohl günstige neue Funksteckdosen besorgen, die dann aber direkt mit dem nanoCUL laufen. Noch mal einen Sender am Pi möchte ich eigentlich nicht. Der CC1101 sendet auch viel besser, als diese billig Sender/Empfänger.
    Funksteckdosen von Intertechno IT-1500 funktionieren direkt „out-of-the-box“ mit FHEM, oder ?

    Aber noch kurz was hierzu:
    Ich habe das so gemach twie hier steht, Dateien ausgetauscht, 433Mhz Sender an GPIO 17, noch mal make ausgeführt (hatte alles noch mal gelöscht zwischendurch)
    Nun sagt mir FHEM so was:

    sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
    2016.09.24 13:49:52 0: GenShellSwitch set -1
    2016.09.24 13:49:52 2: GenShellSwitch set Lampe_Test toggle
    2016.09.24 13:49:52 3: GenShellSwitch command line: cat error_send.txt | sudo /opt/rc-switch/rcswitch-pi/send 0010011111111000110010011110 0010011111111111001001110110 0010011111111100111001100010 0010011111111111011001010110 310
    2016.09.24 13:49:52 0: GenShellSwitch set cat error_send.txt | sudo /opt/rc-switch/rcswitch-pi/send 0010011111111000110010011110 0010011111111111001001110110 0010011111111100111001100010 0010011111111111011001010110 310
    cat: error_send.txt: Datei oder Verzeichnis nicht gefunden

    Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
    Regeln erklärt hat. Normalerweise läuft es auf drei Regeln hinaus:

    #1) Resprektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

    sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
    2016.09.24 13:49:52 0: GenShellSwitch set -1
    2016.09.24 13:49:52 2: GenShellSwitch set Lampe_Test toggle

    Tolle Fehlermeldung 😀
    Ist da irgend was mit den rechten nicht in Ordnung ?
    Habe aus einem anderen Tutorial das hier gemacht:

    sudo mv send /usr/bin/send
    sudo chown root:root /usr/bin/send
    sudo chmod u+s /usr/bin/send

    Woran kann das liegen ?

  3. Oh sehe gerade das der Ordner /opt/rc-switch verwendet wird.
    Mein rc-switch ist aber unter home.
    Habe es nun geänder auf /home/pi/rcswitch-pi
    aber geht trotzdem nicht

    • Hi,

      die Rechte:Gruppe bei mir stehen auf
      fhem:dialout.

      Ggfls. müsstest Du auch per
      sudo visudo
      erstmal fhem root-Rechte geben

      fhem ALL=(ALL:ALL) NOPASSWD:ALL

      Testen kannst Du vorher mit


      sudo /home/pi/rcswitch-pi [4 * code an oder aus] [310]

      Wobei es sein kann, dass Du an der 310 rumspielen musst.
      Wenn das geht, dann sollte es nur am Recht (s.o.) liegen.

Hinterlasse einen Kommentar