so, Endspurt! Endlich erzähle ich euch, wie die iPhone Lichtersteuerung funktioniert
===
In den vorherigen Beiträgen habe ich mein Homecinema vorgestellt. Dabei ging es um die Hardware, die Software und die Steuerung des Vista Mediacenters per iPhone. All diese Dinge findet man in fast jedem Homecinema, sich ein paar Hardwareteile zusammenstecken kann jeder.
Wenn ich mein Mediacenter mit dem iPhone steuern kann, dann will ich auch die Lichter ein und ausschalten oder dem Soundsystem sagen welcher Audiokanal gewählt werden soll. Wenn am Abend meine Lieblingsserie fertig ist, will ich auf einen Knopf drücke und das ganze Homecinema soll sich abschalten.
Solch eine Lösung habe ich mir gebaut, mit zwei verschiedenen Komponenten:
Infrarotsteuerung
Infrarot Befehle sind nichts anderes als eine bestimmte Abfolge von blinkenden Infrarot LEDs. Diese können von einem IR Empfänger aufgenommen werden und über IR LEDs wieder abgegeben werden. Für Linux gibt es eine Software, welche sich LIRC nennt, damit kann mit entsprechender Hardware IR Codes von jeder Fernbedienung aufgenommen und danach wieder versendet werden. Findige Leute haben herausgefunden wie es möglich ist, dem NSLU einen IR Empfänger und Sender zu verpassen. Dafür muss die NSLU geöffnet werden und ein bisschen mit dem Lötkolben gespielt werden. Nun besitze ich an der NSLU einen IR Empfänger und zwei IR LEDs, welche ich direkt vor die IR Empfängern des Receivers und des TVs geleitet habe. Nachdem ich die IR Codes der Fernbedienungen aufgenommen habe, kann ich per Kommandozeile auf dem NSLU jeglichen Code dem Receiver oder dem TV senden, ohne dafür eine Fernbedienung in die Hand zu nehmen.
Da es ziemlich unbequem wäre, sich immer per SSH mit dem iPhone auf die NSLU anzumelden, um dann per Kommandozeile die Befehle abzusenden. Habe ich auf der NSLU einen Webserver installiert um mit einem PHP Script die Kommandozeilen Befehle auszuführen. Diese Webseite wurde natürlich speziell fürs iPhone erstellt, damit diese schön ausschaut, wie genau dies gemacht werden kann, erzähle ich später.
Lichter- Subwoofer- und PC-Steuerung
Die beiden Lampen und den Subwoofer des Soundsystems kann ich leider nicht per Infrarot steuern, so war die einzige Möglichkeit eine Lösung zu suchen, bei denen ich die Stromzufuhr direkt steuern kann. Gefunden habe ich eine solche Lösung mit zwei Entwicklerboards von Velleman. Das erste ist das K8055, dieses habe ich während meiner Ausbildung gebaut und erlebt heute eine Renaissance. Es besitzt fünf digitale und zwei analoge Eingänge und acht digitale und zwei analoge Ausgänge, diese können per USB gesteuert werden. Das beste daran: Es gibt eine Linux Portierung, so kann auch von einem Linux die Eingänge und Ausgänge konfiguriert werden. Damit habe ich es geschafft, das Board über meine NSLU zu betreiben.
Mit den digitalen Ausgängen kann man aber noch keine Lichter steuern, dafür benutze ich das K8056 ebenfalls von Velleman. Dieses Board besitzt acht Relais welche entweder per RS232 oder über acht digitale Eingänge gesteuert werden können, da das K8055 acht digitale Ausgänge besitzt, passen diese beiden Entwicklerboards perfekt zusammen.
Damit ich jedes einzelne Relais schalten kann, musste ich einiges programmieren, denn die Linuxportierung der Software für das K8055 kann über einen 8 Bit Code nur alle Ausgänge gleichzeitig schalten. Damit jeder einzeln geschaltet werden kann musste ich eine Software schreiben, welche zuerst herausfindet, ob das zu schaltende Relais aktuell ein oder ausgeschaltet ist und dann je nach Status alle Ausgänge neu definiert.
Um eine sichere Handhabung mit dem 230V Strom zu besitzen, habe ich die beiden Entwicklerboards in eine Plastikkiste gepackt und dort Steckdosen angebracht. So steuere ich mit den Relais die Steckdosen, an welche ich jegliche Geräte anschliessen kann.
Um den Mediacenter-Computer per Remote zu starten besass ich zuerst zwei Möglichkeiten: Wake-on-LAN oder direkte Steuerung über das Kurzschliessen der Power Kontakte auf dem Mainboard. Da mindestens noch ein Relais auf dem Board frei ist, habe ich die Power Kontakte des Mainbaords an ein Relais geführt. So muss ich nur kurz das Relais einschalten und wieder ausschalten und der Computer fährt entweder hoch oder geht in den Ruhezustand.
Wie auch bei der Infrarotsteuerung können die Relais per Kommandozeile ein- und ausgeschaltet werden. Damit dies schöner und einfacher funktioniert habe ich ein WebGUI für das iPhone programmiert:
iPhone Webseite
Per Apache und PHP ist es sehr einfach Kommandozeilenbefehle auszuführen, damit eine Webseite auch iPhone-like aussieht gibt es einige kleine Frameworks in Javascript welche einem diese Aufgabe abnehmen.
Ich habe mit für iUI entschieden, es bietet die wichtigsten Funktionen wie Listen, Hoch- und Querformat, ON/OFF Buttons an. Ein Beispiel für iUI findet sich hier. In einem Webbrowser sieht das ganze nicht sehr schön aus, hier kann ich iPhoney empfehlen, es emuliert einen iPhone Safari in einem schönen iPhone Screen.
iUI besitzt zwar die Möglichkeit Seiten per AJAX nachzuladen, aber nicht eine Webseite im Hintergrund mit AJAX aufzurufen (z.B. mit einem Kommandozeilenbefehl), sobald auf einen Listeneintrag oder einen ON/OFF Button gedrückt wird. Um diese Fähigkeiten habe ich iUI erweitert, falls jemand Interesse daran hätte, soll er sich bei mir melden. Zusätzlich habe ich die Funktion eingebaut, dass der aktuelle Stand (On oder Off) der Lichter und des Subwoowers, mit den Toggle Buttons ON/OFF angezeigt wird. So weiss ich immer ob das Licht gerade ein oder ausgeschaltet ist, auch wenn ich nicht daneben stehe.
Neben den normalen Ein- und Ausschaltbefehlen für einzelne Komponenten habe ich mir auch ein Script gebaut, welches die wichtigsten Komponenten (Sound, TV, Computer) einschaltet und ein Ausschaltscript, welches alle laufenden Komponenten ausschaltet, so kann man auf dem Weg ins Bett sein Homecinema ausschalten mit nur einem Klick.
Ich werde in den nächsten Tagen ein kleines Video über die Funktionsweise aller Komponenten erstellen, bis dahin gibts leider nur Screenshots.
Fazit
Mit all diesen verschiedenen Hardware und Software Komponenten ist es mir möglich, das gesamte Homecinema per iPhone zu steuern. Zurzeit läuft es noch über einen Webbrowser, sobald die neue iPhone Version mit dem SDK veröffentlicht wurde, werde ich überlegen eine native Software zu programmieren, welche die Geräte-Steuerung und das TouchPad Pro kombiniert.
Wie viele Projekte wird auch mein Homecinema / Mediacenter Projekt nie abgeschlossen sein, immer wieder kommen einem neue Ideen. So plane ich bereits, wie ich die sichtbaren Lautsprecher und den Receiver verschwinden lassen könnte oder die Lichtersteuerung nicht nur auf das Wohnzimmer zu beschränken, sondern eine Steuerung für alle Lichter in der ganzen Wohnung zu bauen, welche dann natürlich per iPhone bedient werden kann.
Ich bin immer offen für neue Ideen und Anregungen, wer gerne eine Live-Vorschau hätte, kann auch gerne vorbeikommen.