Inhaltsverzeichnis
Funksteckdosen-Hack
Übersicht
Funksteckdosen aus dem Baumarkt per Mikrocontroller ansteuern.
Benutzung
Seit dem 8.12.2010 ist das Projekt endlich auf dem Shackserver installiert. Es ist erreichbar unter http://rfswitch.shack.
Webinterface
Auf der Seite sieht man alle Funksteckdosen mit Status (ON/OFF), ID und Beschreibung. Durch Klicken auf ON/OFF wechselt man den aktuellen Schaltzustand der entsprechenden Steckdose. That's it.
Steckdosen replatzieren
Sollte die Position/Anwendung einer Steckdose verändert werden, bitte auch die Beschreibung, die im Webinterface angezeigt wird ändern. Dies geschieht im Moment noch manuell, also einfach mir bescheid sagen. Ich werde aber im Webinterface die Möglichkeit einbauen, die Beschreibungen zu ändern.
XMLRPC/Interfaces
Coming soon…
Technische Daten
- Funksteckdosen
- Muss ich noch genauer rausfinden :)
- Controller
- atMega8
- 32 Lines of C-code + uart library
- 1338 Bytes in flash
- USB-RS232-Wandler
- Daemon
- Python
- libraries: socket, python-serial, threading
- 3 classes
- 5 Methods
- Thread 1
- Communication with clients
- Accepts sockets
- TODO: XMLRPC „put“
- Thread 2
- State-Management
- Checks for changes made by Thread 1
- Applies them
- Notifies Thread 3
- Communication with microcontroller (serial interface)
- Refresh every 60 seconds
- Thread 3
- Processes the data for external interfaces
- html-output for the webinterface
- TODO: XMLRPC „get“
- Webserver
- Python-Twisted, module „web“
- index.html - plain html with some JS with some AJAX
- set.rpy - establishes connection to „Thread 1“
- status.html - written by „Thread 3“
TODO
Software
- XMLRPC
- andere interfaces
- Beschreibung ändern im Webinterface
- Gruppen
Hardware
- PS stabilisieren/checken
- Längeres USB-Kabel, sinnvollere Platzierung
- Mehr blinken!
Entwicklung
Der Plan
Per Schieberegister und Optokoppler alle 4 Kanäle mit je 3 Steckdosen durch Simulieren der Tastendrücke an den Fernbedienungen ansteuern. FAIL
Nach einiger weiterer Zeit an reverse-engineering der Fernbedienung entstand dann schließlich die Lösung für den Erfolg:
Der Kanal in der Fernbedienung wird durch eine einfache Brücke festgelegt. Obwohl eine 12V-Batterie eingelegt wird funktioniert die Logik mit nur 5V - direkt ATmega kompatibel –> keine Optokoppler. 4 Pins für die Kanalwahl, 3 Pins für die Steckdosenwahl, 2 pins für an/aus, 1 pin für GND –> 10 Drähte zur Fernbedienung.
Wichtig: Krasserweise unterscheidet der Chip auf der Fernbedienung zwischen High, Low UND tri-state (also kein Kontakt). Man muss mit dem Microcontroller also den Ausgang auf tri-state setzen, anstatt ihn auf low zu ziehen. Laut Datenblatt sind auf diese Weise 310 = 59049 Adressen anwählbar, da aber irgendeine komische zusatzbeschaltung nur 7 Adresspins zulässt haben wir maximal 37 = 2187 Adressen effektiv zur Verfügung. Vorteil: An den Empfängern lassen sich die Brücken auch umlöten, bei Bedarf auch auf Masse um ebenfalls die trinäre Adressierung zu nutzen.
Credits
- Martin für die Idee und die Hardware
- Robert für den Hack, und die Software
- Chris für technischen Beistand, vServer-installation (jaja, Armin auch…)
- Deine Mutter für die Brotbox