Internet of Things

Intertechno Funksteckdosen mit Raspberry Pi steuern

Wer sein Zuhause automatisieren möchte, benötigt sogenannte Aktuatoren, die in der Lage sind „Nicht-Smarte“-Geräte ein- und auszuschalten. Am einfachsten lassen sich dazu herkömmliche Funksteckdosen (z.B. von Intertechno) verwenden, die mit einem Raspberry Pi angesteuert werden. In dieser Anleitung wird Schritt für Schritt dargestellt, wie dieses funktioniert.

Überblick

Um beispielsweise normale Lampen für die gemütliche, indirekte Beleuchtung in eurem Smart Home steuern zu können, benötigt es eigentlich ein W-LAN- oder Zigbee-fähige Zwischensteckdose, die das eingestöpselte Gerät per App ein- und ausschalten kann. Solche Produkte gibt es einsatzfertig zu kaufen, als Beispiel seien die Osram Lightify Plug* oder die AVM FRITZ!DECT 200* genannt. Damit wird die Nachrüstung eines vorhandenen Haushaltes aber nicht unbedingt kostengünstig – ohne Frage handelt es sich bei beiden Modellen jedoch um gute Produkte. Um jedoch dem Anspruch des „Selbermachens“ gerecht zu werden, ist es ebenso gut möglich, herkömmliche 433-MHz-Funksteckdosen zu nutzen und diese mithilfe eines Gateways in das Smart Home einzubinden. Das Gateway muss dabei die Übersetzungsarbeit von IP zu 433 MHz Funk übernehmen. Was bietet sich hierfür also besser an, als ein Raspberry Pi 3* Mini-Computer? 🙂

Die Steckdosen

Als Funksteckdosen lässt sich mittlerweile nahezu jedes Modell verwenden, was so in deutschen Baumärkten zu finden ist. Eine sehr aktive Community entschlüsselt unermüdlich die Codesequenzen der einzelnen Funksteckdosenfabrikate und entwickelt daraus universelle Protokolle. Ich persönlich setze seit Jahren (also schon weit vor dem Smart Home Zeitalter) auf Funksteckdosen der Marke Intertechno. Je nach zu schaltendem Verbraucher habe ich eine Vielzahl von Intertechno IT-1500 Steckdosen* im Einsatz, welche bis zu 1500 Watt belastbar sind. Für zwei leistungshungrigere Geräte kommt jeweils ein Intertechno ITLR-3500 Funk-Zwischenstecker* zum Einsatz, auf der Terrasse ist außerdem ein Intertechno GRR-3500 Outdoor-Stecker* verbaut. Die beiden letzten Produkte sind zugegebenermaßen nicht wirklich günstig, ich habe jedoch noch keine Alternative mit gleicher Qualität gefunden. Bei Leistungen größer 2 kW gehe ich immer auf Nummer sicher.

Nicht smarte Intertechno 433 MHz Funksteckdose

Das Ziel

Ziel dieser Anleitung ist es, Funksteckdosen mithilfe der Software pilight über einen Raspberry Pi 3 Computer zu steuern. Dabei kommt zwischen Funksteckdose und Raspberry Pi 3 eine 433-Mhz-Funkverbindung zum Einsatz, der Rapsberry Pi 3 kommuniziert seinerseits per W-LAN mit dem Smart Home Hub (in unserem Fall Home Assistant). Wie du pilight und Home Assistant zusammen zum Laufen bekommst, habe ich ich meinem Artikel Funksteckdosen mit Pilight in Home Assistant integrieren beschrieben.

Was wird also alles benötigt? Im Folgenden eine kurze Liste der verwendeten Komponenten:

Zum Probieren und Testen sind – unabhängig von diesem Projekt – ein Breadboard* und ein paar Kabelbrücken* ein ungemeiner Komfortgewinn. Wer regelmäßig Schaltungen bastelt, hat so etwas aber wohl ohnehin zu Hause.

Für den weiteren Verlauf des Tutorials gehe ich davon aus, dass auf eurem Raspberry Pi 3 die neuste Version von Raspbian installiert ist, Zugriff via SSH-Konsole besteht und das Gerät im lokalen W-LAN hängt.

Das Funkmodul verbinden und konfigurieren

Im ersten Schritt müssen wir den Raspberry Pi 3 mit den 433-Mhz-Sender verbinden. Das Modul hat drei Pins: DATA, VCC (Pluspol 5V), GND (Masse). Diese müssen mit dem Raspberry Pi 3 GPIO-Panel verbunden werde. Die Belegung der einzelnen GPIO-Pins sind gut im Elektronik Kompendium beschrieben. In der folgenden Übersicht habe ich die Belegung zusammengefasst.

  • GND (Sender) -> GND (Raspberry Pi 3)
  • DATA (Sender) -> GPIO 17 (Raspberry Pi 3 = PIN 11)
  • VCC (Sender) -> 5V (Raspberry Pi 3)

Damit ist auf Seite der Hardware (fast) alles getan.

433 MHz Funkmodul Raspberry Pi Pilight

Die Antenne

In der oberen rechten Ecke des Funkmoduls erkennt ihr außerdem ein Loch mit der Beschriftung ANT. Hier lässt sich eine Drahtantenne anlöten, um den ansonsten sehr beschränkten Sendebereich zu erweitern. Bei einer Frequenz von 433 MHz genügt es hier einen sauber abgemessenen Kupferdraht mit einer Länge von 17 cm anzulöten. Damit hat das kleine Modul eine sehr ordentliche Reichweite.

Die Software

Im nächsten Schritt geht es darum, unser System zum Laufen zu bekommen. Gehen wir also Schritt für Schritt die nötigen Einstellungen durch. Der verwendete GPIO17 Pin ist von Haus aus aktiviert, hier benötigen wir keine weitere Konfiguration.

Wir können also direkt mit der Installation der Software pilight beginnen. Diese ermöglicht die Steuerung der Funksteckdosen über 433-MHz-Funk. Sie stellt auch einen einfachen Web-Client bereit, mit dem sich theoretisch die eingebundenen Funksteckdosen steuern lassen. Da wir aber eine integrierte Lösung in Home Assistant anstreben, benötigen wir pilight nur als Gateway.

Im ersten Schritt binden wir das Repository in Raspian ein, um pilight herunterladen zu können. Die folgenden Schritte müssen daher als sudo-Nutzer  ausgeführt werden:

sudo su

Danach ergänzen wir das Repository-File mit den pilight-Daten:

echo "deb http://apt.pilight.org/ stable main" > /etc/apt/sources.list.d/pilight.list

Da das pilight-Repository signiert ist, müssen wir zusätzlich die entsprechenden Schlüssel installieren. So ist ein sicherer Austausch zwischen Repository und eurem Raspberry Pi 3 sichergestellt.

wget -O - http://apt.pilight.org/pilight.key | apt-key add -

Nachdem das Repository hinzugefügt wurde, müssen wir den Paketliste aktualisieren:

apt-get update

Update 11. August 2019: Wer unter Raspbian Buster arbeitet, muss sich manuell noch folgenden Paket in ein vorher erstelltes Temp-Verzeichnis laden und ausführen. Ansonsten schlägt der im folgenden Schritt ausgeführte Install-Befehl fehl.

cd /tmp
wget http://apt.pilight.org/pool/stable/main/l/libmbedx509-0/libmbedx509-0_2.6.0-1_armhf.deb
wget http://apt.pilight.org/pool/stable/main/l/libmbedtls10/libmbedtls10_2.6.0-1_armhf.deb
wget http://apt.pilight.org/pool/stable/main/l/libmbedcrypto0/libmbedcrypto0_2.6.0-1_armhf.deb
dpkg -i libmbed*.deb

Anschließend kann mit dem folgenden Befehl die eigentliche Installation von pilight gestartet werden:

apt-get install pilight

Jetzt dauert es, je nach Anbindung, ein wenig. Gebt dem kleinen Raspberry Pi 3* ein wenig Zeit. Die Installation sollte ohne Fehler durchlaufen. Treten Fehler auf, prüft bitte, ob Raspbian auf dem neusten Stand ist. Weitere, detailliertere Schritte zur Installation findet ihr direkt auf der pilight Website.

pilight wird so installiert, dass es bei jedem Start des Rapsberry Pi automatisch gestartet wird. Solltet ihr den Service einmal neu starten oder beenden wollen (z.B. um Änderungen zu übernehmen), genügen folgenden Befehle:

Stopp:

service pilight stop

Start:

service pilight start

Soweit so gut. Nun habt ihr schon einmal pilight installiert und am Laufen. 🙂

pilight mit Funksteckdosen sprechen lassen

Im nächsten Schritt müssen wir dafür sorgen, dass unsere Intertechno IT-1500 Funksteckdosen* auf die Signale des Rapsberry Pi mit pilight reagieren. Im Falle von Intertechno muss die Steckdose dazu auf das Signal des Raspberry Pi angelernt werden. Sobald man die Funksteckdose mit dem Stromnetz verbindet, blinkt die rote Status-LED für einige Sekunden. In dieser Zeit lauscht die Steckdose nach neuen Sendersignalen mit denen sie sich paaren kann.

Raspberry Pi 3 mit 433 Mhz Modul

Der Staub sei mir verziehen – mein Raspberry Pi 3* wohnt unter dem Schuhschrank. 🙂

Damit diese Timing-Angelegenheit funktioniert, empfehle ich die Steckdose nahe eures SSH-Zugangs in eine schaltbare Mehrfachsteckdose zu stecken. So lässt sich der Lernmodus der Intertechno-Steckdose schnell und einfach aktivieren, in dem die Merhfachsteckdosenleiste* eingeschaltet wird. Natürlich müssen Funksteckdosen und Funkmodul im Reichweite sein. Es bietet sich an, das Ganze räumlich nah beieinander einzurichten.

Das Intertechno-Protokoll hat dabei zwei Variablen, die eine Steckdose eindeutig identifizieren. Die Schaltgruppe (unit) und die Nummer (id) der Steckdose.

Wichtig zu verstehen: Im Gegensatz zu anderen Funksteckdosen, lernen die Intertechno Produkte die Codes aktiv. Ihr könnt also Unit und ID frei vergeben. Andere Hersteller limitieren euch hier auf die Codes die direkt an der Steckdose (z.B. über Räder oder Switches) eingestellt worden sind.

Der Befehl zum Anlernen der Steckdose mit der Gruppe „3“ und der Nummer „100“ sieht demnach wie folgt aus:

pilight-send -p kaku_switch -i 100 -u 3 -t -l

Der Befehlt „-t“ steht für „einschalten“, analog dazu würde „-f“ ausschalten bedeuten. Der Zusatz „-l“ versetzt pilight in den Andernmodus. In diesem werden mehrere Codefolgen hintereinander verschickt. Das entspricht dem längeren Drücken eines Knopfes auf der Intertechno-Fernbedienung.

  • Schritt 1: Steckdose mit Spannung versorgen (LED blinkt)
  • Schritt 2: Obigen Befehl sofort absenden.

Die Steckdose quittiert den Empfang und die erfolgreiche Codierung mit einigen Malen Ein- und Ausschalten. Fertig. 🙂 Die Prozedur muss nun mit einer einzigartigen ID für alle eure Intertechno Steckdosen wiederholt werden. Notiert die ID am besten auf einem kleinen Stück Klebeband direkt auf der Steckdose.

Steckdose per SSH schalten

Um die Steckdose* nun via Raspberry Pi einzuschalten oder zu deaktivieren, verwendet ihr in unserem obigen Beispiel folgende Befehle:

Einschalten:

pilight-send -p kaku_switch -i 100 -u 3 -t

Ausschalten:

pilight-send -p kaku_switch -i 100 -u 3 -f

Ta da! Die „un“-smarte Steckdose ist nun eine Smart-Steckdose!

Nun ist das Schalten mit einem SSH-Befehl nicht wirklich komfortabel. Daher empfiehlt es sich, die Steckdosen als Schalter („Switch“) in Home Assistant zu registrieren damit sie dort für alle Arten der Hausautomatisation zur Verfügung stehen. Dazu habe ich eine weitere Anleitung geschrieben. Viel Spaß beim Basteln!

Du hast einen Kommentar oder eine Frage? Gerne her damit! 🙂 Weiter geht es mit einigen Tricks zur Fehlerbehebung, die ich in langen Nacht-Sessions recherchiert und via Trial-and-Error herausgefunden habe.

Fehlerbehebung

(Aktualisiert am 11.08.2019)

Sollte es bei der Ausführung der pilight-send Befehle zu Fehlern kommen, hier einige Dinge, die ggf. noch zu erledigen sind. In jedem Fall, wenn du mit pilight 8 arbeitest.

Fehler 1:

Job for pilight.service failed because the control process exited with error code. See "systemctl status pilight.service" and "journalctl -xe" for details.

Dieser Fehler tritt auf, wenn die pilight-Config Datei noch nicht angepasst worden ist. Als root kannst du diese ganz einfach bearbeiten. Wechsle zunächst in das Verzeichnis:

cd /etc/pilight/

Öffne die config.json mit nano:

nano config.json

Du siehst nun die Standardkonfiguration vor dir. Wie du pilight konfigurierst, steht in der pilight Dokumentation gut beschrieben. Ich hab meine config.json noch angehängt, vielleicht hilft sie jemanden.

Inhalt meiner config.json:

{
        "devices": {},
        "rules": {},
        "gui": {},
        "settings": {
                "port": 5000,
                "log-level": 6,
                "pid-file": "/var/run/pilight.pid",
                "log-file": "/var/log/pilight.log",
                "standalone": 0,
                "webserver-enable": 0,
                "webserver-root": "/usr/local/share/pilight/webgui",
                "webserver-http-port": 80,
                "webserver-https-port": 5002,
                "webserver-cache": 1,
                "whitelist": "",
                "gpio-platform": "raspberrypi3"
        },
        "hardware": {
                "433gpio": {
                        "sender": 0,
                        "receiver": 1
                }
        },
        "registry": {
                "webserver": {
                        "ssl": {
                                "certificate": {
                                        "location": "/etc/pilight/pilight.pem"
                                }
                        }
                },
                "pilight": {
                        "version": {
                                "current": "8.1.5"
                        }
                },
                "hardware": {
                        "RF433": {
                                "mingaplen": 4420,
                                "maxgaplen": 72900,
                                "minrawlen": 26,
                                "maxrawlen": 400
                        }
                }
        }
}

Wichtige Anpassungen:

Unter Settings:

  • „standalone“: 0,
  • „gpio-platform“: „raspberrypi3“
  • „webserver-enable“: 0, –> Ich greife via Home Assistant auf pilight zu, der integrierte Webserver mit Steuerungsoberfläche kann daher deaktiviert werden.
  • „port“: 5000 –> Nur nötig wenn du einen fixien Port benötigst, auf dem der pilight-daemon lauscht. Zum Beispiel, um pilight und Home Assistant zu verbinden.

Unter Hardware:

            "433gpio": {
                    "sender": 0,
                    "receiver": 1
            }

Nötig, um den GPIO-Pin zu aktivieren.

Notiz an mich selbst: Wenn pilight mal wieder nichts mehr ansteuern will: Prüfen, ob es den Code unter Hardware wieder aus der config.json geworfen hat.

Und immer dran denken: Wenn du deine config.json bearbeitest, den pilight-daemon vorher beenden mit:

killall pilight-daemon

Sonst wird die config-Datei sofort wieder von dem laufenden Programm überschrieben.

Fehler 2:

Beim zweiten Fehler ist mir immer wieder die folgenden Meldung begegnet, als ich einen pilight-send Befehl ausführen wollte:

NOTICE: no pilight ssdp connections found

Dieser Fehler wird durch eine falsche /fehlende IP-Tables Konfiguration seit pilight 8 ausgelöst. Folgende Dinge habe ich daher geändert:

Hinweis: Ich gehe davon aus, dass euer RBPi nicht aus dem Internet erreichbar ist. Ansonsten bitte dies folgenden Einstellungen noch einmal genau prüfen.

sudo nano /etc/network/iptables

Folgende Filter setzen (bei mir war die Datei leer):

*filter
 :INPUT DROP [159:12505]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [140:13492]
 -A INPUT -i lo -j ACCEPT
 -A INPUT -p icmp -j ACCEPT
 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
 -A INPUT -s 127.0.0.1 -j ACCEPT
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 COMMIT

Außerdem müssen die Interface Einträge noch angepasst werden:

sudo nano /etc/network/interfaces

Hier einfach folgendes unter ggf. bereits bestehende Einträge ergänzen

auto lo
iface lo inet loopback

Danach den Pi neustarten und schon läuft alles – zumindest bei mir 🙂

Hinweis: Mit Sternchen (*) markierte Links sind Affiliate-Links / Partnerlinks. Mit einem Kauf über diesen Link erhalten wir als Seitenbetreiber eine Verkaufsprovision. So kannst du das Projekt ganz einfach unterstützen. Mehr Informationen dazu findest du hier.

9 Gedanken zu „Intertechno Funksteckdosen mit Raspberry Pi steuern

  • Hi Nils,
    eine super Anleitung 🙂
    Allerdings bekomme ich pilight nicht installiert. In den Pilight Foren habe ich bisher auch keine weitere Hilfe gefunden.
    hast du hier eine Idee?

    pilight : Hängt ab von: libwiringx (>= 2.0) ist aber nicht installierbar
    E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.

    Danke für die Hilfe 🙂
    Viele Grüße
    Thomas

    Antwort
      • Hallo Nils,

        danke für die Antwort 🙂
        Hab schon lange nicht mehr draufgeschaut, aber mich heute mal wieder damit beschäftigt.
        Nun geht es auch wieder 🙂

        Super Anleitung. Vielen Dank dir.

        Vg Thomas

        Antwort
  • Danke erstmal für die tolle Anleitung, ich habe jedoch das Problem, das sich die Steckdosen jedes mal wenn der Strom aus ist sich den Code nicht mehr merkt und nicht mehr angeschaltet werden kann.

    Danke erstmal

    LG Johannes

    Antwort
    • Hallo Johannes,

      danke für deinen Kommentar.

      Das heißt du kannst die Steckdose korrekt steuern (an / aus), aber sobald du sie aus der Steckdose ziehst sind alle Codes weg? Das habe ich auch noch nicht gehabt / gehört.

      Geh mal bei Intertechno (ich nehmen an du hast Steckdosen von dieser Marke) und suche die Anleitung zu deinem Modell. Dort gibt es eine Prozedur, wie man die Steckdose alle Codes vergessen lässt, sie also in gewisser Weise zurücksetzt.

      Das hat bei mir mal bei einer Funksteckdose geholfen, die einen bestimmten Code einfach nicht mehr vergessen wollte (also genau das Gegenteil von deinem Problem).

      Viele Grüße und viel Erfolg,
      Nils

      Antwort
  • Hallo,

    ich habe parallel zu den anlernbaren Intertechno-Steckdosen auch welche mit fest einstellbarem Hauscode (über ein Drehrad). Können diese auch angesteuert werden?

    Antwort
  • Habe mit der Anleitung vor zwei Jahren den alten intertechnos wieder neues Leben eingehaucht. Lief alles problemlos bis gestern die SD Karte voll war. Grandios finde ich vor allem, dass der Artikel wohl upgedated wurde mit den iptables?! Hatte ich zumindest beim ersten installieren nicht gebraucht, nun wars aber der Schlüssel zum Licht. Vielen Dank!

    Antwort
    • Hallo Alex,

      freut mich, dass dir der Artikel schon das zweite Mal geholfen hat. Genau, ich habe den Inhalte damals aktualisier – hatte nämlich eine ähnliche Herausforderung zu meistern. 🙂

      Viele Grüße,
      Nils

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert