Du kennst Dich mit Freetz und mit der Buildumgebung aus? Dann guck Dir bitte die zwei Fragen unten in diesem Posting an. Vielleicht hast Du einen guten Tipp. Danke.
Getestet für die FritzBox 7390, Freetz Revision 8893,
Telldus Tellstick
Es sollte auf jeder FritzBox laufen, die über einen USB Anschluss verfügt und auf der mindestens der Kernel v2.6.14 läuft.
Anleitung:
1. Aktuelle Freetz-Sourcen auschecken (getestet mit Revision 8893).
2. In den Freetz-Ordner (trunk) wechseln
3. Anhang (
Anhang anzeigen telldus-patch_rev_8893.diff.gz) in das Projekt patchen (
zcat telldus-patch_rev_8893.diff.gz | patch -p0)
4. "
chmod 755 make/telldus-core/files/root/etc/init.d/rc.telldus-core" ausführen (ich weiss nicht, an welcher Stelle im makefile es aufgerufen werden muss, dafür ist mir zurzeit die Buildumgebung zu dynamisch und komplex)
5. "
make menuconfig" ausführen
6 a. Package Selection --> Testing --> [x] telldus-core
<---ab hier sollte alles automatisch eingestellt werden --->
6 b. Advanced Option --> Kernel Modules --> Drivers --> [X]usbserial.ko
6 c. Advanced Option --> Kernel Modules --> Drivers --> [X]ftdi_sio.ko
<--- --->
Nachdem das Image auf die FritzBox gespielt und diese neugestartet wurde, sollte beim Booten das Skript "
/etc/init.d/rc.telldus-core" automatisch ausgeführt werden.
Das Skript führt folgende Operationen automatisch durch.
7. Erstellt automatisch eine default-Konfigurationsdatei "
/mod/etc/tellstick.conf" , wenn die Datei noch nicht vorhanden ist. Diese Datei kann dann über die Freetz GUI konfiguriert werden.
8. Registriert die Konfigurationsseite "
telldus-core" und ordnet diese der Datei "
/mod/etc/tellstick.conf" zu. Nun kann man die Konfigurationsdatei über die Freetz GUI rebootsicher ändern.
9. Das Modul "
ftdi_sio" wird geladen.
10. Es wird versucht, das USB Device, an dem der Telldus Tellstick hängt, anhand der Ausgabe von "
dmesg" herauszufinden. Daraufhin wird ein neues Device (ein Softlink!) "
/dev/tellstick" angelegt. So kann man in der Konfiguration "
deviceNode = "/dev/tellstick"" angeben und somit sollte man sich keine Gedanken darüber machen müssen, wenn weitere Geräte an die FritzBox angeschlossen wurden. Es handelt sich aber um einen ziemlich dreckigen Hack, eigentlich müsste man das mit dem Paket "
udev" realisieren. Auch weiss ich zurzeit nicht, wie es sich verhält, wenn man weitere Geräte anschliesst, die dieselbe Ausgabe in "
dmesg generieren (z.B. ein zweiter TellStick oder ein weiteres USB Device mit einem identischen Chipsatz).
11. Nun muss man nur noch über die Freetz GUI die Funksteckdosen, Funkschalter, Funkdimmer etc. konfigurieren! (siehe
Konfiguration)
Code:
deviceNode = "/dev/tellstick"
device {
id = 1
name = "Funksteckdose 1"
protocol = "arctech"
model = "codeswitch"
parameters {
house = "A"
unit = "1"
}
}
device {
id = 2
name = "Funksteckdose 2"
protocol = "arctech"
model = "codeswitch"
parameters {
house = "A"
unit = "2"
}
}
12. Testen: "
tdtool --on 2" ausführen
13. Überprüfen ob sich das Garagentor des Nachbarn öffnet :mrgreen: oder die ausgewählte Steckdose aktiviert wurde.
Code:
root@fritz:/var/mod/root# tdtool --on 2
Turning on device 2, Funksteckdose 2 - Success <-- Kommunikation mit dem Tellstick funktioniert
Ich hoffe, ich habe nichts vergessen.
Ach ja, alles ohne Gewähr und mit Haftungsausschluss!
Eine weitere Möglichkeit neben einem SHELL Kommando den Telldus Tellstick anzusprechen wäre zum Beispiel das Paket "
knockd".
Beispielkonfiguration für
knockd:
Code:
[options]
logfile = /var/log/knockd.log
[wohnzimmer_on]
sequence = 7081:udp,7083:udp,7085:udp
seq_timeout = 5
command = /usr/bin/tdtool --on 1
tcpflags = syn
[wohnzimmer_off]
sequence = 7085:udp,7083:udp,7081:udp
seq_timeout = 5
command = /usr/bin/tdtool --off 1
tcpflags = syn
Führt man nun einen "Knocking Client" aus, dann kann man zum Beispiel Steckdosen übers Klopfen an Ports steuern.
Code:
X:\PortableApps\Knock>knock XXX.XXX.XXX.XXX 7081:udp 7083:udp 7085:udp <--- schaltet die Steckdose ein
X:\PortableApps\Knock>knock XXX.XXX.XXX.XXX 7085:udp 7083:udp 7081:udp <--- schaltet die Steckdose aus
Nun habe ich noch zwei Fragen an die Entwickler unter Euch, die sich mit Freetz, dem GUI Framework und mit der Buildumgebung besser auskennen. Vielleicht habt Ihr ein paar Tipps.
1. Da ich zurzeit den trunk von Freetz patche, besitzt das Startskript nicht das executable-Flag. An welcher Stelle meines Makefiles "
telldus-core.mk" kann ich sinnvoll ein "
chmod 755 make/telldus-core/files/root/etc/init.d/rc.telldus-core" einfügen, damit es im richtigen Moment gesetzt ist und das Skript ausführbar ins Image gepackt wird ?
2. Ich möchte eine Seite über die Freetz GUI zur Verfügung stellen, die eine Datei vom tdtool auswertet und dann An/Aus Schalter generiert, über die man dann die Funksteckdosen steuern kann (sprich ein Kommando auf der Shell ausführen kann). Leider habe ich gerade mal geschnallt, wie man config Seiten mit einem "Übernehmen" Button erstellt. Ich habe mir auch schon zwei/drei Pakete angesehen, wo Seiten paketspezifisch sind, aber entweder finde ich diese Seiten nicht oder die sind so komplex, dass ich da nicht ganz durchsteige und das Gefühl habe, an der falschen Stelle zu suchenn. Habt Ohr irgendwelche Tipps, Ideen oder Beispiele? Ich würde gerne das Freetz Framework verwenden.
Viele Grüsse
Fred