Erweiterung eines Funk-Schalters (Senders) um einen Doppel- und einen Lang-Klick

Im Folgenden wird beschrieben, wie man mit Raspberry PI die Funktionalität einer gewöhnlichen 433MHz Funkschaltung (Intertechno, Elro, usw…) erweitern kann. Danach kann man mit einem einfachen Ein/Aus-Schalter nicht nur das "normale" Ein und Aus nutzen, sondern man hat zusätzlich:

  • Doppel-Klick-Ein
  • Doppel-Klick-Aus
  • Lang-Klick-Ein
  • Lang-Klick-Aus

Am besten beschreibe ich es mit einem Beispiel:

Ich hatte 15-Jahre lang das Licht auf meiner Nachtkonsole mit einem Ein-Aus-Funk-Schalter von der Firma Intertechno ein- und ausgeschaltet. Dank der Erweiterung kann ich nun zusätzlich:

  • Mit einem Doppelklick das Licht auf der Nachtkonsole von meiner Frau ein und ausschalten.
  • Mit einem Langklick schalte ich sämtliche Beleuchtung im Schlafzimmer (2 x  Nachtkonsole, Hauptlicht und Schrankbeleuchtung) auf einmal ein- bzw. aus.

Das Prinzip der Lösung

Der Raspberry Pi überwacht den 433MHz-Funkverkehr. Das heißt der Pi empfängt die Funksignale und analysiert sie. Dabei werden die Doppel- und Lang-Klicks erkannt. Die Erkennung eines Klicks löst speziell für diesen Fall hinterlegte Aktionen. Das können  beliebige Pi-Kommandos sein. Insbesondere können dabei Signalle an andere Funkempfänger gesendet werden.

Benötigte Hart- und Software

Die hier beschriebene Lösung ist eine Ergänzung zu dem Open Source Projekt „pilight“ von https://www.pilight.org. Man braucht also „piligth“ mit allem was dazu gehört: Raspberry Pi, eine Schaltung mit 433MHz Sender, usw. Alle Details können Sie der Hompage des Projektes entnehmen. Eine gute Beschreibung auf Deutsch finden Sie unter:  https://www.forum-raspberrypi.de/Thread-tutorial-pilight-433mhz-funksteckdosen-funkdimmer-und-mehr-schalten-und-darstellen
Außerdem braucht auch einen guten 433MHz Empfänger. Ich benutze „3400RF 433Mhz Superheterodyne Transmitter and Receiver Module Link Kit Arduino“ für 7,50 Euro (inklusive Sender) und habe damit gute Erfahrungen gemacht.

Schaltplan

raspberry pi, pilight, Funkschalter, Doppel-Klick

Raspbery Pi mit 3400RF 433Mhz Superheterodyne Transmitter and Receiver Module Link Kit Arduino

Installation

  1. Zuerst müssen sie „pilight“  installieren und starten. Hinweise dafür entnehmen sie den oben angegebenen Links
  2. Testen Sie, ob folgende Komandos funktioniere
        sudo pilight-receive
        sudo pilight-send –p … -u … -i …
  3. Laden sie die Datei  click-ski.pl  herunter.
  4. Speichern Sie die Datei an einem Ort (~ im einem Verzeichniss), dass Sie sich merken können.

Inbetriebnahme - Konfiguration

  1. Öffnen Sie ein Terminal
  2.  Geben Sie folgendes Komando ein

        perl click-ski.pl
     
  3. Auf dem Bildschirm erscheint folgende Text:

        #######################
        #  piski.webnode.com       #
        #######################
        click-ski.pl is running

     
  4. "Spielen" Sie nun mit einem Funk-Schalter. Versuchen Sie einen Doppel- bzw. Lang-Klick zu erzeugen. Denken Sie dran "ein Funkschalter ist keine Computermaus". Das System ist wesentlich Träger. Die "Pause" beim  Doppel-Klick braucht ca. 1 Sekunde. Auf dem Bildschirm erscheinen nun die Ereignisse die sie durch das "spielen" verursachen z.B.:


        LongClick signal="rev1_switch 14 F14 off"
            dem Signal "rev1_switch 14 F14 off" ist keine Aktion zugeordnet


        LongClick signal="arctech_switch_old 3 2 on"
            dem Signal "arctech_switch_old 3 2 on" ist keine Aktion zugeordnet

        DoublClick Signal="rev1_switch 14 F14 off"
            dem Signal "rev1_switch 14 F14 off" ist keine Aktion zugeordnet


        DoublClick Signal="arctech_switch_old 3 2 on"
            sudo pilight-send -p intertechno_old -u 3 -i 0 -t


    Manche Schalter senden Signale in mehreren Protokollen, deswegen kann es vorkommen, dass ein Doppel- bzw. Lang-Klick mehrere Ereignisse auslösen. Das ist nicht schlimm. Lassen Sie sich bei dem "Spielen" Zeit. Machen Sie zwischen den einzelnen Versuchen ausreichend lange Pausen. Im "echten" Betrieb schalten Sie auch nicht öfters als 1-mal in 10 Sekunden.

  5. Nun können Sie den ausgewählten Ereignissen Aktionen zuordnen. Am besten erkläre ich das an einem Beispiel:

    Sie wollen, dass nach einem dem Ereignis:
        LongClick signal="arctech_switch_old 3 2 off"    (= Lang-Klick auf "Aus")
    Pi folgende Kommandos aufruft:
        sudo pilight-send -p intertechno_old -u 3 -i 0  -f
        sudo pilight-send -p intertechno_old -u 3 -i 1  -f

    Öffnen Sie dafür die Datei click-ski.pl in einem Text-Editor. Gehen sie zu dem Abschnitt:

       #########################################################################
        # Hier können Sie eigene Reaktion auf ein Lang-Klick definieren                                 #
        # Einige Beispiele stehen unten                                                                                #
        #                                                                                                                            #
        #########################################################################
        elsif($signal eq "arctech_switch_old x y on")                                                              
        {                                                                                                                           
            syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 0 -t");                              
            syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 1 -t");                               
            syscomand ("sudo pilight-send -p intertechno_old -u 1 -i 0 -t");          
        }                                                                     
        elsif($signal eq "arctech_switch_old x y off")                 
        {                                                                     
            syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 0 -f");
            syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 1 -f");
            syscomand ("sudo pilight-send -p intertechno_old -u 1 -i 0 -f");
        }                                                                  
        elsif($signal eq "arctech_switch_old i k on") 
        {                                       
            syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 0 -t");
            syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 1 -t");
            syscomand ("sudo pilight-send -p intertechno_old -u 1 -i 0 -t");
        }               
                                
        #########################################################################


    Sie sehen hier mehrere elsif-Blöcke, die als Vorlage für Sie gedacht sind. Sie können  diese verändern und weitere elsif-Blöcke hinzufügen.
    In unserem Beispiel sieht der elsif Block so aus:

          elsif($signal eq "arctech_switch_old 3 2 off")
         {
              syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 0  -f")
             syscomand ("sudo pilight-send -p intertechno_old -u 3 -i 1  -f")
         }


    Übrigens, für die "Doppel-Klick" Ereignisse gibt es in dem Script click-ski.pl einen ähnlichen Abschnitt, wie für den "Lang-Klick"
     

  6. Nach dem Editieren muss der Script neu gestartet werden:

    Stop mit:  Strg-C
    Start mit:  perl click-ski.pl
     
  7. Nun können Sie Testen, ob Ihre Änderungen funktionieren. Nach einem Lang-Klick auf dem Schalter sollte das Script folgenden Text ausgeben.

    LongClick signal="arctech_switch_old 3 2 off"
        sudo pilight-send -p intertechno_old -u 3 -i 0  -f
        sudo pilight-send -p intertechno_old -u 3 -i 1  -f


    Diese Ausgabe bestätigt, dass Pi die Signalle gesendet hat.

Wenn Sie Fragen oder Probleme haben. Ich freue mich auch Ihre Meldungen im Gästebuch.