AVR Funksteckdose
Allgemein
Ethersex kann in Verbindung mit einem RFM12 Funkmodul zum Schalten von Funksteckdosen benutzt werden. Neben Anlernbaren Steckdosen von Tevion (Aldi) werden auch noch solche von Intertechno und mit 2272-Funkchip unterstützt. Des weiteren können Funkdimmer mit Chip 1527 (zB. Pollin Funkdimmerset FD-UP003) angesteuert werden. Im Folgenden wird nur die Vorgehensweise für Tevion Steckdosen erläutert, da nur mit diesen eigene parktische Erfahrungen vorliegen. Für die übrigen sei an das Ethersex-Wiki (http://ethersex.de/index.php/RFM12_ASK) verwiesen, auf dem auch die folgenden Punkte basieren.
Tevion Schaltcodes
Die Funksteckdosen werden mittels ECMD-Befehl rfm12 tevion geschaltet. Die Syntax des Befehls lautet folgendermaßen:
rfm12 tevion Hauscode Code Delay Wiederholungen'
Hauscode: 3Bytes durch Komma getrennt. z.B. 77,42,170. Durch unterschiedliche Hauscodes könenn mehr als 4 Funksteckdosen innerhalb der Funkreichweite betriben werden.
Code: 2Bytes durch Komma getrennt.
Die Steckdosen werden mit folgenden Codes ein-/aus geschaltet bzw. gedimmt, bei Steckdosen, die dies unterstützen.
einschalten: Steckdose 1 : 86,86 Steckdose 2 : 150,90 Steckdose 3 : 166,89 Steckdose 4 : 102,85 alle Steckdosen: 170,85
ausschalten: Steckdose 1 : 85,85 Steckdose 2 : 149,89 Steckdose 3 : 165,90 Steckdose 4 : 101,86 alle Steckdosen: 169,86
dunkler: Steckdose 1 : 86,154 Steckdose 2 : 150,150 Steckdose 3 : 166,149 Steckdose 4 : 102,153 alle Steckdosen: 170,153
heller: Steckdose 1 : 85,153 Steckdose 2 : 149,149 Steckdose 3 : 165,150 Steckdose 4 : 101,154 alle Steckdosen: 169,154
Delay: Wartezeit zwischen zwei Wiederholungen. Default 99 für Tevion Steckdosen
Wiederholungen: Um den Schaltvorgang zuverlässiger zu gestalten, empfiehlt es sich, die Schaltbefehle mehrmals zu Wiederholden. Default: 2. Für die DIM- Befehle sollte nur 1 gewählt werden, da ansonsten jeweils meherere Stufen heller oder dunkler gedimmt wird, anstatt nur eine Stufe.
Folgender Befehl schaltet z.B. Funksteckdose 3 mit Hauscode 77,42,170 ein (4 Wiederholungen im Abstand von 99ms):
rfm12 tevion 77,42,170 168,89 99 4
Hauscode
Damit die Funksteckdosen sowohl mit dem Original Handsender, als auch mit Ethersex funktionieren, muss zunächst der Hauscode der Original Fernbedienung ermittelt werden Der Hauscode wird mit Hilfe des sog. ASK Sensing (Amplitude Shift Keying) von Ethersex ermittelt. ASK Sensing muss beim Erstellen der Firmware Konfiguration aktiviert werden (siehe Ethersex konfigurieren). Desweiteren muss Debugging aktiviert sein:
make menuconfig
Folgende Punkte aktivieren:
General Setup |-Enable Debugging | |-Use SYSLOG instead of UART Protocols |-SYSLOG Support | |-SYSLOG-Server IP adress: IP-Adresse eines SYSLOG-Servers, oder alternativ Linux-PC.
Evtl. neu kompilieren und Frimware zum AVR Netio übertragen.
Verbindung via serielle Schnittstelle oder Telnet aufbauen, um ECMD- Befehle abzusetzen (siehe ECMD Interface).
Ethersex SYSLOAG-Ausgaben auf dem SYSLOG-Server beobachten, oder alternativ, falls kein SYSLOG-Server zur Verfügung steht, auf dem Linux-PC ein neues Terminalfenster öffnen und folgenden Befehl eingeben, um die Debugausgaben von Ethersex zu sehen:
nc -l -u -p 514
Folgenden ECMD Befehl in Telnet-Fenster (für Ethersex) bzw. in Terminalprogramm (bei serieller Verbindung) eingeben:
rfm12 ask sense
Eine Taste an der Original Fernbedienung betätigen. Die Ausgabe sollte den Hauscode in Form von 3 Bytes (z.B. 77,42,170) enthalten (neben einer ganzen Reihe weiterer Debugging Ausgaben). Ausgabe z.B.:
rfm12 tevion 78,68,100 101,86 99 4
=> Hauscode=78,68,100
Funksteckdose anlernen
Die Funksteckdosen können mit Hilfe der Weboberfläche angelernt werden, sofern der Hauscode der originalen Fernbeidienung 77,42,170 lautet. Dieser Code wird von der Weboberfläche standardmäßig verwendet. Sollte der ermittelte Hauscode ein anderer sein, wird die Funksteckdose später nur voch via Weboberfläche bzw. ECMD-Befehle ansprechbar sein, aber nicht mehr mit der originalen Fernbedienung.
Um dies zu umgehen, kann die Funksteckdose auf den ermittelten Hauscode mittels ECMD-Befehl angelernt werden. Dazu eine Verbindung via serielle Schnittstelle oder Telnet (siehe ECMD Interface) herstellen.
- Den Code (einschalten) aus obiger Tabelle für die zu schaltende Steckdose ermitteln
- Folgenden ECMD-Befehl eingeben (aber noch nicht Enter betätigen):
rfm12 tevion Hauscode Code 99 1
z.B. für Steckdose 4:
rfm12 tevion 77,42,170 102,85 99 1
- An der zu lernenden Steckdose die Taste Lernen drücken und halten
- Enter-Taste betätigen, um den Lernbefehl abzusetzen.
- Die Funksteckdose4 sollte sich nun einschalten
- Taste Lernen an der Funksteckdose wieder loslassen
Funktionstest
eine Verbindung via serielle Schnittstelle oder Telnet (siehe ECMD Interface) herstellen. Schaltbefehle für die angelernten Funksteckdosen absetzen. Falls es zu Problemen kommen sollte, evtl. die Anzahl der Wiederholungen reduzieren oder erhöhen. Weitere Möglichkeit: Delay-Zeit ändern. Bei eigenen Versuchen stellte sich heraus, dass die verwendeten Tevion Funksteckdosen auf eine Delayzeit von 99ms nicht reagierten. Eine Reduzierung der Delayzeit auf 75ms bis 85ms führte zu einem stabilen Ergebnis, sodass 80ms Verwendung fanden.
Anpassungen für Weboberfläche
Falls sich der ermittelte Hauscode von 77,42,170 unterscheidet bzw. ein anderer Delay-Wert erforderlich ist, dann muss folgende Änderung durchgeführt werden, damit die Steckdosen mittels Weboberfläche schaltbar sind:
cd ~/Dokumente/ethersex gedit embed/rf.ht.m4
Im Bereich Tevion (nach Zeile
Tevion
) in allen Zeilen den Hauscode bzw. Delay in folgender Art und Weise anpassen:
Ursprüngliche Zeile (z.B. für Steckdose 1 OFF):
<a href="javascript:ecmd_set_rf2('tevion','77,42,170','85,85',99,2)">OFF</a>
Bedeutung:
'tevion','77,42,170' : Hauscode 77,42,170 '85,85': Steckdose 1 ausschalten 99: Delay 2: 2 Widerholungen
Zeile abändern z.B. für Hauscode 88,34,180, Delay 80ms:
<a href="javascript:ecmd_set_rf2('tevion','88,34,180','85,85',80,2)">OFF</a>
Linux-Script
Hier soll ein Linux-Script vorgestellt werden, das von einem entfernten Linux-PC aus Schaltbefehle auf elegantere Weise als oben dokumentiert zu erreichen.
sudo gedit /usr/local/bin/funksteckdose
Folgende Zeilen einfügen:
#!/bin/bash #----Konfiguration---- SENDER="192.168.0.90" PORT=2701 DELAY="80" WDH="4" CODE="77,42,170" #----Schaltbefehle---- S_ON[1]="86,86" S_ON[2]="150,90" S_ON[3]="166,89" S_ON[4]="102,85" S_ON[5]="170,85" S_OFF[1]="85,85" S_OFF[2]="149,89" S_OFF[3]="165,90" S_OFF[4]="101,86" S_OFF[5]="169,86" S_DWN[1]="86,154" S_DWN[2]="150,150" S_DWN[3]="166,149" S_DWN[4]="102,153" S_DWN[5]="170,153" S_UP[1]="85,153" S_UP[2]="149,149" S_UP[3]="165,150" S_UP[4]="101,154" S_UP[5]="169,154" #-------------------- Usage() { echo "Usage: $0 <NR (1-4/5=all/all/ALL)> <on/off/up/down>" exit 1 }
if [ $# -eq 2 ] ; then cmd=$2 else Usage fi case "$1" in [1-5]*) nr=$1 ;; all|ALL) nr="5" ;; *) Usage ;; esac case "$cmd" in off) echo "rfm12 tevion $CODE ${S_OFF[nr]} $DELAY $WDH" | netcat -q 1 $SENDER $PORT ;; on) echo "rfm12 tevion $CODE ${S_ON[nr]} $DELAY $WDH" | netcat -q 1 $SENDER $PORT ;; up) echo "rfm12 tevion $CODE ${S_UP[nr]} $DELAY $WDH" | netcat -q 1 $SENDER $PORT ;; down) echo "rfm12 tevion $CODE ${S_DWN[nr]} $DELAY $WDH" | netcat -q 1 $SENDER $PORT ;; *) Usage ;; esac exit 0
Script ausführbar machen:
sudo chmod +x /usr/local/bin/funksteckdose
Anwendung:
/usr/local/bin/funksteckdose Nr Befehl
z.B.
/usr/local/bin/funksteckdose 1 on /usr/local/bin/funksteckdose 2 off /usr/local/bin/funksteckdose 3 up /usr/local/bin/funksteckdose 4 down /usr/local/bin/funksteckdose all on