Funknetz Server-/Client-Software
Features:
Client:
* Steuern der Funksteckdosen mittels grafischer Oberfläche über das Netzwerk.
* Vergeben von eigenen Bezeichnungen für die einzelnen Geräte.
* Zeitsteuerung der einzelnen Geräte mittels selbst erzeugter Zeitereignisse.
* Störsender, um einen bestimmten Kanal zu stören.
* Plattformunabhängig dank Java.
Server:
* Empfang von Steuerungsbefehlen über das Netzwerk.
* Autonome Verwaltung von Zeitereignissen und Jammer-Aufträgen, auch bei Beenden des Clients.
* Kommunikation mit der Platine von Michael M. (www.marxcomputer.de --> Bastelecke --> Funksteckdosen)
* Lauffähig auf Windows, Linux, Sun Solaris 2.8 und MacOSX
* Kann sowohl im grafischen (GUI) als auch nicht-grafischen (Konsole) Modus gestartet werden.
* Bequeme Auswahl des Serial-Ports über das GUI-Interface.
Quick Download
Bauanleitung für die Steuerungsplatine
Screenshots
Sourceforge Projektseite
** NEWS **
02.
November 2009: Version 0.3 steht nun zum Download bereit! Es gibt zwar
nicht, wie versprochen, ein neues Feature, dafür wurde das Client- und
Server-GUI überarbeitet und sieht nun um einiges besser aus. Ab jetzt
werde ich mich wieder um neue Features kümmern!
30.
Oktober 2009: Es existiert jetzt ein SVN-Repository, erreichbar über
die Sourceforge-Projektseite. Dort findet sich auch ein SVN-Browser,
mit dem man sich den Sourcecode bequem im Browser anschauen kann. Dies
funktioniert auch ohne sourceforge.net-Account, also ganz anonym.
Durch die Einrichtung von SVN erhöht sich die Transparenz des
Sourcecodes ungemein, da dieser somit viel schneller und einfacher zur
Verfügung steht. Der Sourcecode steht jedoch auch weiterhin im
tar.gz-Format in der Download-Sektion bereit.
30. Oktober 2009: Version 0.2.1 wurde released! Dies ist hauptsächlich
ein Bugfix-Release, liefert aber auch ein neues Feature. Es traten
Probleme auf, wenn zur selben Zeit mehrere Events ausgeführt werden
sollten, dies funktioniert nun einwandfrei. Es kann jedoch zu
Verzögerungen kommen, da die FunknetzBox nur einen Befehl auf einmal
senden kann, so wie auf der Fernbedienung auch nicht zwei Tasten auf
einmal gedrückt werden können. Würden also theoretisch mehr als ~60
Events zur selben Minuten zur Ausführung freigegeben werden, so könnte
es passieren, dass manche dieser Events erst eine Minute nach dem
ursprünglich angesetzten Zeitpunkt ausgeführt werden. Da aber nur
maximal 12 Geräte mit der FunknetzBox angesteuert werden können,
sollte dies eigentlich keine Rolle spielen, da nie mehr als 12 Events
pro Minute existieren sollten.
Das neue Feature ist ein "Jetzt!"-Button im Zeitsteuerungs-GUI, der die
Werte für ein neues Event auf den jetzigen Zeitpunkt einstellt. Dies
beschleunigt ungemein die Erstellung neuer Events für den Endnutzer. Es
war teilweise sehr mühselig den Wecker fuer den nächsten Tag
einzustellen, wenn man erst 5 Drop-Down-Boxen einstellen musste.
27.
Oktober 2009: Version 0.2 ist nun fertig. Ich war sehr beschäftigt mit
meinem Studium und hab lange nicht am Funknetz-Projekt
weitergearbeitet. Nun habe ich mir ein Herz gefasst und Version 0.2
vervollständigt. Neben einigen Bugfixes ist die Zeitsteuerung nun
vollständig integriert und hoffentlich weitgehend bugfrei: per
GUI-Interface können Zeitereignisse in einer Tabelle angelegt,
bearbeitet und gelöscht werden. Diese kann an den Server übertragen
bzw. vom Server empfangen werden. Wird ein Zeitereignis ausgeführt,
wird es gleichzeitig aus der Liste entfernt. Die Ausführung erfolgt auf
die Sekunde genau und kommt es zum Serverabsturz, so wird die zuletzt
aktuell gehaltene Liste wiederhergestellt. Weiterhin wurde die
Jammer-Steuerung aus dem Server entfernt und in den Client integriert.
Für die nächste Version
werde ich das GUI überarbeiten um das Erscheinungsbild und die
Benutzerfreundlichkeit zu erhöhen. Neue Features sind geplant
aber ich habe einfach zu viele Ideen um mich jetzt schon festlegen zu
wollen: mal sehen für was ich mich am meisten begeistern kann.
11.
Juli 2009: Ich habe der Serversoftware einen Störsender (Jammer)
hinzugefügt. Dieser ist wieder, wie der Server selbst auch, sowohl
grafisch als auch über Konsole steuerbar, zudem gab es einige Bugfixes.
Zudem gibt es den Server jetzt für viele weitere Betriebssysteme.
11. Juli 2009: Ich habe die Box erfolgreich mit einem Serial->USB Adapter getestet.
Über diese Software:
Funknetz
Server-/Client ist eine Software für die Fernsteuerung von
Funksteckdosen der Firma REV, welche als Set mit 3 Steckdosen und
einer Fernbedienung in vielen Baumärkten und im Internet bereits für
15,00 € erhältlich ist. Die Fernsteuerung funktioniert mittels einer
von Michael M. entwickelten Platine, welche mit der
Fernbedienung von REV verlötet wird. Die Platine wird mittels RS-232
Schnittstelle mit dem PC verbunden. Eine Konstruktionsanleitung für die
Platine ist auf http://www.marxcomputer.de unter "Bastelecke" --> "Funksteckdosen" zu finden.
Dokumentation
CLIENT
Der Startbildschirm
Der Startbildschirm des Client bietet Zugriff auf die Module
(Fernsteuerung, Jammer und Zeitsteuerung), sowie die Möglichkeit über
"Einstellungen" die Bezeichner der Geräte und Kanäle zu setzen. Im
Abschnitt rechts wird die IP-Adresse und der Port des Servers gesetzt.
Die anderen Module versuchen die Verbindung mit diesen Parametern
herzustellen.
Der Fernbedienung
Da Fernbedienungs-Modul bietet die Möglichkeit, wie mit der
normalen Fernbedienung auch, Geräte Ein- und
Auszuschalten. Die Funknetzbox hängt dabei natürlich am Server. Über
"Einstellungen" im Haupt-GUI können zusätzlich die Bezeichnungen der
einzelnen Kanäle und Schalter (Geräte) geändert werden. Bevor die
Fernbedienung benutzt werden kann, muss zuvor im Haupt-GUI eine
IP-Adresse und ein Port gesetzt werden.
Der Jammer
Nach der Wahl
des Kanal und Schalters (Gerätes), kann er mit einem Klick auf den
Start-Button gestartet bzw. mit einem Klick auf den Stop-Button wieder
gestoppt werden. Der Client kann hierbei jederzeit geschlossen werden
und der Jammer läuft dennoch weiter, da der Server solange mit der
Störung fortfährt, bis er vom Client wieder ein Stopsignal bekommt.
Hierbei wird im Abstand von einer Sekunde zuerst ein "ON"- und dann ein
"OFF"-Befehl gesendet, sodass das betroffene Gerät permanent mit
Befehlen überflutet wird.
Die Zeitsteuerung
Zu Beginn oder bei einem Druck auf den
"Einlesen"-Button, wird die Liste mit Zeitereignissen vom Server
abgefragt und die Serveruhr synchronisiert. Analog wird bei einem Klick
auf "Uebernehmen", die aktuell in der Tabelle gehaltene Liste mit
Zeitereignissen an den Server übertragen. Zeitereignisse können bequem
per GUI erstellt und optional auch mit einem Intervall "T" (tägliche
Ausführung) oder "W" (wöchentliche Ausführung) versehen werden. Der
Client kann jederzeit geschlossen werden und der Server verwaltet die
Zeitereignisse autonom. Beim Start des Servers wird die zuletzt
gehaltene Tabelle mit Zeitereignissen von der Festplatte
wiederhergestellt. Diese schreibt der Server bei jeder noch so kleinen
Tabellenänderung sofort neu.
SERVER
Der Server kann sowohl grafisch, als auch auf der Konsole gestartet
werden (siehe FAQ). Er bietet bis auf die Einstellung des Ports und
Serialports keine weiteren Funktionen, unterrichtet aber in Textform
über alle Geschehnisse.
Motivation für diese Software:
Der ursprüngliche Autor des Projekts hat zwar eine Software entwickelt, mit deren Hilfe die Platine
angesteuert werden kann, diese ist jedoch nur für Windows erhätlich. Da
ich ausschließlich Linux nutze, begann ich beim Nachbau der Platine
auch mit der Entwicklung einer eigenen Software in Java, welche auf
vielen Systemen lauffähig ist.
Über das Software-Design:
Die
Software ist, wie bereits erwähnt, vollständig in Java geschrieben. Da
viele neuere APIs benutzt wurden, wird Java SE 1.5 für den Betrieb
benötigt. Für die Kommunikation zwischen der Platine und dem PC benutze
ich die freie API RXTXcomm (www.rxtx.org), mit deren Hilfe die Kommunikation über Serial- oder
Parallelport auf vielen Systemen möglich ist. Momentan unterstützt
werden Linux (32- und 64bit), Windows (32bit), MacOSX und Solaris (32-
und 64bit).
Download:
Auf http://www.sourceforge.net/projects/funknetz/files
kann sowohl Client als auch Server bezogen werden. Manchmal wird aus
unbekannten Gründen unter Linux das RXTXcomm Paket benötigt, da die JVM
dieses nicht findet. Die Ursache hierfür ist noch ungeklärt aber hängt
vielleicht mit den Class-Path Einstellungen im Betriebssystem zusammen.
Es sollte sichergestellt werden, dass "." (also der aktuelle Ort) im
Class-Path enthalten ist. Dieser
Fehler tritt jedoch nur sporadisch auf. Sollte er auftreten, so kann
das RXTXcomm Package auf vielen Linuxdistributionen (z.B. Ubuntu)
direkt über den Paketmanager installiert werden. Sollte dies nicht
verfügbar sein, so kann man die Binaries oder den Source Code von http://www.rxtx.org herunterladen und gemäß der beiliegenden Installationsanleitung installieren.
Zukunft:
Für
Version 0.4 sind neue Module geplant, welche genau steht noch nicht
fest. Denkbar wäre etwa ein spezielles "Kaffee"-, "Licht"-, oder
"Wecker"-Modul.
FAQ:
F: Beim start des Programms über die grafische Oberfläche (z.B. Windows: "doppel-klick") geschieht augenscheinlich nichts.
A:
Dies ist ein sporadisch auftretendes Problem und liegt vermutlich an
der Art und Weise wie ihr Betriebssystem versucht das .jar zu starten, vorallem mit welchen Classpath-Einstellungen.
Starten Sie es einfach über die Konsole mit "java -jar
FunknetzClient.jar" bzw. "java -jar FunknetzServer.jar".
F: Kann der Server auch auf Betriebssystemen ohne grafische Oberfläche, also ausschließlich auf der Konsole genutzt werden?
A:
Ja. Hierzu muss der Server einfach mit den Argumenten <port> (der
TCP/IP Port, auf dem der Server laufen soll) und <serial_port>
(die betriebssystem-spezifische Bezeichnung des Serial-Ports an dem die
Platine angeschlossen ist) gestartet werden - z.B. "java -jar
FunknetzServer.jar 5000 /dev/ttyS0" (Linux) oder "java -jar
FunknetzServer.jar 5000 COM1" (Windows). Der Server startet dann im Konsolenmodus.
F: Wie kann die Software mit einem Serial->USB Adapter genutzt werden?
A:
Hierzu muss lediglich die richtige Serialportbezeichnung eingegeben
werden. Unter Linux z.B. /dev/ttyUSB0 oder unter Windows 2000: COM3.