AVR Funksteckdose

Aus Wiki
Zur Navigation springen Zur Suche springen

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