Mit 433Mhz Funksender mit Raspberry Pi & openHAB Funksteckdosen schalten

Um den Raspberry und auch openHAB etwas genauer kennen zu lernen soll openHAB nun in einem ersten Schritt mit 433 MHz Funksteckdosen kommunizieren können, welche schon seit längerer Zeit mit Funkfernbedienung ihre Dienste gut leisten.

Die Funksteckdosen von ELRO und waren bisher für ein paar schwer zugängliche Lichter genutzt, welche per Fernbedienung geschalten wurden.  Diese sollen nun per openHAB steuerbar werden.

Den Rasbperry Pi mit Funksender versehen

Als Funksender habe ich einen billigen 433MHz-Sender und Empfänger für knapp 5 € bei Amazon bestellt (Link zum Artikel).

Das linke ist der Sender, das rechte (mit den vier Pins) ist der Empfänger. Letzteren brauchen wir aktuell nicht.

Via female-femaile-jumper-Kabel habe ich die Pins wie folgt verbunden:

  • Pin ATAD (Daten) auf 11-GPIO17 (linke Reihe, sechster Pin von oben)
  • Pin GND (Masse) auf 6-GND (rechte Reihe, dritter Pin von oben
  • Pin VCC (Versorgung mit Spannung) auf 4-+5V (rechte Reihe, zweiter Pin von oben)

Da die bestellten Antennen noch unterwegs sind, habe ich mir als Antenne einfach mit einem Draht beholfen. Laut mikrocontroller.net ist die optimale Antenne 17 cm lang.
Ich habe mir vorerst mit einer längeren, aufgebogenen Büroklammer beholfen, die ich an den Antennen-Kontakt gelegt habe, da auf die schnelle kein anderer Draht da war. Sieht komisch aus, funktioniert aber tadellos – auch über das Stockwerk hinweg ins andre Eck des Hauses:

Raspberry Pi mit 433 MHz-Sender
Raspberry Pi mit 433 MHz-Sender

Sieht erst mal komisch aus, funktioniert aber tadellos.

Das Anbringen der Komponente sollte natürlich bei ausgeschaltetem Pi passieren.

Bei der Schaltung und Pin-Belegung hat mir dieser Beitrag  ganz gut geholfen, hier ist die Belegung der Pins auch noch etwas besser bildlich aufbereitet, allerdings wird dort mit der Softwareinstallation etwas anders verfahren.

Funksteckdose von Shell aus ansteuern

Zuerst sind ein paar benötigte Pakete zu installieren. Das Exec-Binding erlaubt das Ausführen beliebigen Codes aus openHAB  heraus. Für das Fernsteuern von 433MHz-Sendern benötigen wir wiringpi und dieses werden wir dann per exec ansteuern.
Zum Nutzen von wiringpi wird raspberry-remote benötigt, welches wir per git beziehen können.

sudo apt-get install openhab-addon-binding-exec wiringpi git-core

Nun benötigen wir noch raspberry-remote.

cd
git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
make send
cd
sudo mv raspberry-remote /opt/raspberry-remote

Um im Exec-Binding von openHAB später auch send-Kommandos absetzen zu können ist es notwendig, dass der Benutzer openhab sudo für das send-tool – ohne Eingabe eines Passworts – ausführen darf. Hierzu müssen wir die sudoers-Datei anpassen:

sudo mcedit /etc/sudoers

# User privilege specification
 root ALL=(ALL:ALL) ALL
 openhab ALL=NOPASSWD: /opt/raspberry-remote/send*

Nun testen wir das Senden von Kommandos. Ein Blick auf die Einstellmöglichkeit der Funksteckdose zeigt zuerst den Hauscode (1-5) und dann die „Dose“.

DIP-Schalter der ELRO-Funksteckdose
DIP-Schalter der ELRO-Funksteckdose

Das send-Tool erwartet drei Parameter, jeweils Zahlenwerte:
– Hauscode (5-stellig)
– Nr. der Dose (1-stellig)
– Kommando (An oder Aus, einstellig)

Pin oben bedeutet beim Hauscode „1“ und Pin unten „0“.
Bei der „Dose“ kann nur ein Pin oben sein. „A“ bedeutet „1“, „B“ bedeutet „2“ usw.
Das Kommanto für „an“ ist „1“ und für „aus“ ist es „0“.

Die Dose im Bild ist mit folgendem Code anschaltbar:

sudo ./send 11111 1 1

..und mit folgendem Code ausschaltbar

sudo ./send 11111 1 0

…und das Ganze kann bequem per Shell getestet werden.

Einbindung in openHAB

Nun geht es an die Einbindung in openHAB

Mittels des bereits installierten exec-bindings können wir nun die einzelnen Dosen als item definieren und hier den Code zum an- und ausschalten hinterlegen:

Switch funkdose_1 "Dose 1" {exec=">[OFF:sudo /opt/raspberry-remote/send 11111 1 0] >[ON:sudo /opt/raspberry-remote/send 11111 1 1]"}
Switch funkdose_2 "Dose 2" {exec=">[OFF:sudo /opt/raspberry-remote/send 11111 2 0] >[ON:sudo /opt/raspberry-remote/send 11111 2 1]"}
Switch funkdose_3 "Dose 3" {exec=">[OFF:sudo /opt/raspberry-remote/send 11111 3 0] >[ON:sudo /opt/raspberry-remote/send 11111 3 1]"}
Switch funkdose_4 "Dose 4" {exec=">[OFF:sudo /opt/raspberry-remote/send 11111 4 0] >[ON:sudo /opt/raspberry-remote/send 11111 4 1]"}

In der Sitemap binden wir die Items dann als Switch, also als an-aus-Schalter ein.

Frame label="Funkdosen" {
        Switch item=funkdose_1
        Switch item=funkdose_2
        Switch item=funkdose_3
        Switch item=funkdose_4
        Switch item=funkdose_5
    }

Nun sind die Dosen alle per openHAB-Interface steuerbar.

Das schöne an den ELRO-Dosen ist, dass diese sich den Zustand merken, für den Fall eines Stromausfalls. D.h. wenn der Strom kurz weg ist – nach Anschalten der Sicherung ist er erst einmal gleich wieder da und es bleibt nicht dunkel.

Update 12/2017:

Zwischenzeitlich gab es durch rpi-updates hervorgerufene Inkompatibilitäten beim Senden.

Beim Start von gpio -r erhielt ich folgenden Fehler:

Unable to determine hardware version. I see: Hardware : BCM2835
,
– expecting BCM2708 or BCM2709.

Geholfen hat es, die Firmware-Version wieder etwas herunterzufahren:

sudo rpi-update 52241088c1da59a359110d39c1875cda56496764

(Danke hier an https://www.domoticz.com/forum/viewtopic.php?t=16852)

6 Antworten auf „Mit 433Mhz Funksender mit Raspberry Pi & openHAB Funksteckdosen schalten“

  1. Hallo,
    vielen Dank für dieses gut beschriebene Tutorial.
    Leider klappt das bei mir nicht so:

    ich habe die .item Datei und die . sitemaps Dateien ganz genau gleich wie Sie. Ich nutze auch die Raspberrypi-Remote und in der Shell funktioniert das An und Abschalten wunderbar, in der App wird zwar alles richtig dargestellt, aber es tut sich einfach nichts.

    Was nicht funktionierte bei der Konfiguration ist:

    sudo apt-get install openhab-addon-binding-exec wiringpi git-core

    und

    sudo mcedit /etc/sudoers. Diesen Befehl hier habe ich mit sudo nano /etc/sudoers ausgeführt — passt das ?

    Den Befehl oben hab ich leider nicht ausführen können.
    Ich benutze OpenHAB 2 auf meinem Pi3 mit Rasbian.

    Ich würde mich wirklich freuen, wenn Sie mir weiterhelfen könnten.

    Danke

    1. Hallo Dominik

      Danke für das Feedback. Das Problem ist nun wohl zum Teil, dass das Tutorial für openhab1 geschrieben wurde.

      Vielleicht helfen aber folgende Punkte:

      1. openhab2 benötigt nicht nur sitemap und items, auch „things“ werden benötigt. Hier am besten etwas in die Konfiguration von openhab2 auf den openhab-Seiten einlesen.

      2. bezüglich der Fehler beim Ausführen der Befehle: Hier weiß ich nicht genau, welche Fehler kamen, aber das Paket openhab-addons-binding-exec ist auch die openhab1-Variante. Wenn das Paket grundsätzlich nicht gefunden wird (und man auch das openhab1-Paket will) wäre die sources.list von Raspbian abzugleichen. Siehe hierzu die entsprechenden Installationsanleitungen auf den openhab-Seiten

      3. Bezüglich des Editors: Ich bevorzuge einfach mcedit, letztlich ist es aber völlig egal, mit welchem Editor die Veränderungen vorgenommen wurden

      Grundsätzlich: Dass es auf shell-Ebene funktioniert, ist schon mal prima! Das Problem ist nun nur noch das Verknüpfen von Item mit entsprechendem Befehl des Exec-Bindings. Hier sollten die Logfiles von openhab (/var/log/openhab oder var/log/openhab2 – je nach Version) beim Ausführen der Tests im Auge behalten werden. Dort stehen immer wieder gute Meldungen und Fehlermeldungen.

      Viel Erfolg noch!

  2. Also ich habe alle Funksteckdosen Schaltbefehle, je einen für an und einen für aus, in ausführbare Shells gepackt und diese funktionieren auch alle schön über den Terminal.

    Wenn ich jetzt aber eben diese in Things bei openHAB packe, sagt der mir:
    __________________________________________________________
    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
    __________________________________________________________

    ich habe nun die Berechtigungen in visudo alle voll aufgemacht, soll heißen das openhab statt nur dem Pfad ALL bekommen hat.
    Aber die Meldung bleibt unverändert.

    Was mache ich falsch?

    1. Versuche es einmal aus der Shell heraus als openhab-Benutzer zu starten (via su / sudo zum Benutzer wechseln oder/und temporär in /etc/shadow auch eine Login-Shell zuweisen / erlauben) und prüfe die Ausgaben. Mit der Konfiguration des Artikels sollte es eigentlich problemlos funktionieren. Läfut openhab auch wirklich als user „openhab“? Nicht, dass hier ein Fehler vorliegt.

Schreibe einen Kommentar

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