Low-Cost IP Steckdose
Moin,
wie schon vor ein paar Monaten angekündigt, arbeite ich an einer IP Steckdose auf Basis einer LaFonera und OpenWrt. Nun bin ich soweit, dass die ersten Tests beginnen können.
Jeder der schon mal einen Fonera geflasht hat, weiß, dass dieser auf seinem seriellen Port nicht nur die Meldungen des Bootloaders ausgibt, sondern auch die komplette Textkonsole des Linux Systems. Möchte man den seriellen Port nun für andere Dinge missbrauchen (so wie ich es getan habe), dann muss die serielle Konsole in der Firmware deaktivieren. Wie dies geht wird u.A. hier beschrieben.
Hat man dies getan braucht man “nur” noch die Firmware aus den Sourcen neu bauen, ein Linux Betriebssystem (via VMWARE geht auch) mit Buildumgebung ist hierbei Pflicht.
Wenn man nun seine neue Firmware hat, kann man diese auch nach diesem Howto einspielen.
So weit, so gut, schauen wir uns nun an wie der Fonera den µC anspricht. Als µC wird ein 16F819 der Firma Microchip genutzt. Das Ansprechen ist an sich ist es recht easy, zum setzten eines Ports bekommt der µC 3 Bytes zugeschickt. Das erste gibt an das er einen Port setzten soll (S=Set), das zweite gibt an welchen Port und das letzte gibt den Zustand an (0 o. 1).
Bekommt der µC z.B. folgende Zeilenfolge,
SB1
so würde er den Port2 des µC auf 5V (logisch 1) setzten.
Als Kommando in der Konsole des Fonera würde der Befehl so aussehen:
echo “S”>>/dev/ttyS0;echo “B”>>/dev/ttyS0;echo “1″>>/dev/ttyS0
Da alle Zustände der Ports im µC gespeichert sind und nicht im Fonera selbst, benötigen wir auch noch einen Befehl zum auslesen des EEPROM bzw. des Portstatus unseres µCs.
Dies läuft wie folgt ab, bekommt der µC ein ‘G’ als Zeichen geschickt (G=Get), so antwortet er mit den Zuständen seiner Ports und quittiert den Datenverkehr von seiner Seite aus wieder mit einem ‘G’.
Schematisch sieht das Auslesen also so aus:
Sende ‘G’
Solange Empfang != ‘G’
Schreibe Empfang in Datei
wiederhole
Als Bashscript:
echo “G”>>/dev/ttyS0
while [ "$LINE" != "G" ]
do
read LINE < /dev/ttyS0
echo $LINE >>output
done
An sich müssen wir diese Steuerung nur noch in ein Webinterface verpacken und wir sind Foneraseitig fertig. Anfangs hatte ich das ganze auf PHP Basis gebastelt nur leider ist es ein Krampf einem Fonera PHP beizubringen…
Da ich das Ganze nun ins WebIf² eingebaut habe, konnte ich ebenfalls wieder mit Bashscripten arbeiten, da der mitgebrachte Parser vom WebIf diese interpretieren kann.
Den Quelltext zum Webinterface und weitere Modifikationen der Standarddateien findet ihr in diesem Archiv.
Nun muss unser µC unsere Befehle auch noch interpretieren können. Den µC habe ich in C programmiert, als Compiler nutze ich CC5. Eine recht gute Seite zu CC5 ist: http://www.cc5x.de Von dieser Seite hab ich auch viele meiner Funktionen. (Delay, Uart, EEPROM…).
Den Quelltext zur Firmware findet ihr hier, die Firmware selbst gibt es hier.
Kommen wir nun zu den Funktionen. Neben den zusätzlichen Funktionen für die IP Steckdose, behält die LaFonera natürlich alle ihr alten Funktionen die OpenWrt bereits zur Verfügung stellt. Was kann so eine LaFonera mit angeschlossenem µC denn nun alles?
1. An/Ausschalten eines Pin des µC welcher über ein Solid State Relais einen 230V schaltet.
2. Individuelle Beschreibung eines Ports innerhalb des Webinterface (z.B. Server1, NAS….)
3. Resetfunktion eines Ports
4. Speicherung der Portzustände bei Stromausfall
5. Keep Alive Funktion
Da Bilder viel mehr sagen als Worte hier zwei kleine Videos die euch die Funktionen erklären.
Grundfunktionen
Keep Alive
Wie in den Videos zu sehen ist, ist die extra Hardware (µC) recht einfach gehalten. Den Schaltplan dazu findet ihr hier. Auch habe ich inzwischen die Hardware mal auf eine Lochrasterplatine aufgebaut, dies könnt ihr hier. Zur Zeit schalte ich nur LEDs, diese kann man aber auch ohne weiteres gegen Solid State Relais tauschen.
Nun zum Schluss noch das FW Image für die LaFonera in der sowohl mein Webinterface für die Zusatzfunktionen als auch das WebIF² enthalten sind.
openwrt-atheros-root.squashfs
openwrt-atheros-vmlinux.lzma
In diesem Verzeichnis http://matze.efreun.de/openwrt/powercontrol/0.01/ findet ihr alle von mir verlinkten Dateien und außerdem ein paar weitere Screenshots von älteren Versionen und div. andere Bilder.
Wer noch ein paar weitere Informationen haben möchte, kann sich gerne mal den Thread im Vallstedt Forum anschauen, dort habe ich das Projekt von Anfang an offen gelegt.
Bei Interesse einfach hier oder im Vallstedt Forum fragen, ich suche immer noch Leute die Lust zum Basteln haben und dies Projekt mal nachbauen.
Wir riechen uns später
LG Matze
4 Responses to “Low-Cost IP Steckdose”
Leave a Reply
You must be logged in to post a comment.
Heyhey,
geile Sache das. Muss ich mir demnächst mal live bei dir ansehen
.
Grüße,
Februar 26th, 2009 at 14:00Andreas
Hi hab versucht dir nen Mail zu schreiben – kam aber immer wieder zurück als wär die Mail Adresse im Impressum falsch…
Bin gerade dabei was ganz ähnliches zu bauen:
Fonera mit uC als Ip-Funksteckdose mit IR-Sender/Empfänger
als uC hab ich nen R8C13 von Renesas
der soll bei mir auch noch die IR Sachen steuern.
Hab in deinem YouTube Video gesehen, dass du den SD-Card Mod an deiner Fonera hängen hast?
Läuft das bei dir richtig?
Stehe gerade vor nem treiber problem – welche hast du verwendet? phrozen.org oder die kmod-mmc die im wrt drin sind?
Bekomme bei den phrozen immer nen Fehler – denke, dass die für nen älteren Kernel sind – bin aber bis jetzt zu faul gewesen die neu zu kompilieren weil ich momentan keine Linux umgebung habe.
Bei den kmod sehe ich garnix im dmesg…
Ich denke du hast auch x-wrt kamikaze 8.09 laufen oder? Versionsangabe fehlt auf deiner Website glaube ich?!
Ach ja und hast du die C142-145 entfernt (für den SDMod)? Mir war noch nicht ganz klar ob das unbedingt notwendig ist.
Wäre dankbar für deine Hilfe.
Mail@bad.bone€gmx.de
Mai 11th, 2009 at 20:56In der FW Version habe ich die SD-Card Module nicht mit eingebaut. Als ich das vor 1,5 Jahren mal getestet habe, waren es meine ich die Module von phrozen.org und die liefen damals recht gut.
Mai 12th, 2009 at 09:55Die FW Version die auf dem Fonera läuft ist eine aus dem SVN ausgecheckte und selbst kompilierte Kamikaze Version, ich müsste mal schaun, welche Revision das war…
Die Kondensatoren mussten meine ich raus, warum weiß ich nicht mehr genau. Auf jeden Fall lief es bei mir mit Kondensatoren nicht
[...] vorbei schauen. Der gute Herr bietet da nämlich eine sehr gute Bastelanleitung für eine Low-Cost IP Steckdose auf Basis eines Fonera Routers. Das Grundvideo von ihm zeigt schon deutlich welches Potential seine [...]
April 1st, 2010 at 00:18