rcswitch

Das Plugin sendet RC-Switch-Kommandos, mit denen 433-MHz-Funksteckdosen aus SmartHomeNG heraus geschaltet werden können. Es unterstützt zwei Betriebsarten: Der 433-MHz-Sender ist entweder direkt an die Maschine angeschlossen, auf der SmartHomeNG läuft, oder er befindet sich auf einer anderen Maschine und wird von SmartHomeNG per SSH angesprochen.

Voraussetzungen

Benötigte Hardware

  • RaspberryPi oder ein anderes Board mit digitalem GPIO

  • 433-MHz-Sender

  • 433-MHz-gesteuerte Funksteckdose, z.B. Brennenstuhl RCS 1000 N

Die VCC-Leitung des Senders wird an einen 5V-Ausgangspin des Boards angeschlossen, GND an einen Massepin und DATA an einen GPIO-Pin (im Folgenden wird Pin 17 verwendet). Eine (lange) Antenne am ANT-Pin des Senders erhöht die Reichweite.

Benötigte Software

Auf der Maschine, an die der 433-MHz-Sender angeschlossen ist, werden wiringPi und rcswitch-pi benötigt. Falls SmartHomeNG den Sender über das Netzwerk anspricht, werden zusätzlich ssh und sshpass auf der SmartHomeNG-Maschine sowie ein SSH-Server auf der Sender-Maschine benötigt.

wiringPi installieren:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core
cd /usr/local/bin
sudo git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build

rcswitch-pi installieren:

cd /usr/local/bin
sudo git clone https://github.com/r10r/rcswitch-pi.git

Vor dem Build muss in send.cpp der verwendete GPIO-Pin eingetragen und wiringPiSetup() durch wiringPiSetupSys() ersetzt werden, z.B.:

int PIN = 17;
...
if (wiringPiSetupSys() == -1) return 1;

Anschließend wird rcswitch-pi gebaut:

cd rcswitch-pi
make

Nicht-root-Zugriff und Test

Für einen ersten Test kann Schreibzugriff auf den GPIO-Pin für Nicht-root-Benutzer freigegeben werden:

gpio export 17 out

Eine Funksteckdose mit Code 11111 und Adresse 2 (=B) wird dann so eingeschaltet:

./send 11111 2 1

Schaltet die Funksteckdose an dieser Stelle nicht, sollte die Ursache geklärt werden, bevor mit der Plugin-Konfiguration fortgefahren wird.

Da die GPIO-Freigabe einen Neustart nicht übersteht, sollte sie dauerhaft eingerichtet werden. Dazu die Datei /usr/local/scripts/exportGPIO17 anlegen:

#!/bin/sh
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
chmod 666 /sys/class/gpio/gpio17/value
chmod 666 /sys/class/gpio/gpio17/direction

Die Datei ausführbar machen und beim Systemstart aufrufen, indem folgende Zeile in /etc/rc.local vor dem exit 0 eingefügt wird:

/usr/local/scripts/exportGPIO17

Zusätzlich muss der Benutzer, unter dem SmartHomeNG läuft, Mitglied der Gruppe gpio sein:

sudo usermod -aG gpio smarthome
sudo reboot

ssh und sshpass installieren (nur bei Fernzugriff):

apt-get update
apt-get upgrade
apt-get install ssh sshpass

Konfiguration

Die Informationen zur Konfiguration des Plugins sind unter Plugin ‚rcswitch‘ Konfiguration beschrieben.

Beispiel

Basement:
    LivingRoom:
        RCpowerPlug:
            TV:
                switch:
                    type: bool
                    rc_code: 11111
                    rc_device: 2