Home | Diary | Beschreibung | Galerie | Fotoberichte | IRC | Projekte | Gästebuch | Kontakt |
Für Lirc gibt es auch eine Sendefunktion. Damit wird es möglich per Fernbedienung steuerbare Geräte über den Computer zu kontrollieren. Seit vielen Jahren liegen schon die Bauteile eines entsprechenden Senders in einer Schublade herum, doch bisher hatte ich keine Verwendung dafür.
Das einzige Gerät in meinem Zimmer das auf eine Fernbedienung reagiert - abgesehen vom Computer - ist der Verstärker meiner Musikanlage. Hierfür interessant sind nur die Funktionen Lauter/Leiser sowie Power/Standby. Somit könnte ich beispielsweise während ich im Bett liege - von wo aus ich keine Sichtverbindung dorthin habe - via Notebook die Lautstärke regeln wenn die Windowseinstellung nicht ausreicht. Oder wenn ich mich per VNC Fernzugriff von ausserhalb meiner Höhle am Rechner einlogge und nicht möchte daß Sound ertönt so kann ich die Anlage einfach abschalten.
Der 'Improved Transmitter' besteht aus einem großen Kondensator welcher den Einbau in ein kleines Filmdöschen o.ä. verhindert. Als ich mich nach einer passenden Behausung für den Sender umschaute fiel mein Blick auf ein kleines Kleinkinderspielzeugauto 'The Flintstones'. Die Dimensionen passen genau und es ist optisch sicherlich schöner als ein schmuckloser Kasten aus Plastik oder Hartpappe wie ihn mir der hausinterne Architekt vorschlug.
Ich verwende zum Ansteuern der Hardware Lirc auf Gentoo-Linux, als Programm zum Steuern jedoch Girder auf Windows. Girder hat ein Plugin womit 'WinLirc', die Windows-Variante von Lirc, angesprochen werden kann. Für die normale Kommunikationsrichtung (Fernbedienung -> Empfänger -> Lirc -> Girder) funktioniert dies auch problemlos. Ich stellte jedoch fest daß Sendeversuche fehlschlugen.
Es stellte sich heraus daß das verwendete Protokoll von Lirc und Winlirc sich unterscheiden. Lirc erwartet den Kommandostring <directive> <remote> <code> wie man in der Beschreibung (und Source) von irsend sehen kann. directive ist hierbei 'send_once', remote der Name der Fernbedienung und code der gewünschte zu sendende Tastendruck. In meinem Beispiel wäre das send_once rax1 power. Das Girderplugin jedoch schickt <passwort> <remote> <code> <repeat>. Das stellt noch kein unüberwindliches Problem dar, denn repeat ist von irsend nicht unterstützt, jedoch für lircd eine gültige Angabe - und als das von Lirc nicht unterstützte Passwort läßt sich einfach 'send_once' wählen.
Jetzt wird das Kommando richtig gesendet, leider wird jedoch sofort darauf die Verbindung zwischen Girder und Lirc gekappt. Schuld daran ist - wie ich nach einigem Suchen im Source herausfand - daß Girder ein deutlich größeres Packet verschickt als notwendig, welches mit Nullen aufgefüllt ist. Im Sinne von Befehlen als ASCIIZ, d.h. eines mit einem Null-Byte beendeten Strings, würde dies kein Problem darstellen. Jedoch stört sich Lirc daran daß noch Daten vorhanden sind (Nullbytes eben), jedoch keine ganze Zeile mehr. Um dieses Problem zu beheben muß lircd.c gepatcht werden (für Details fragt mich per Mail). Alternativ könnte der Programmautor den offiziellen CVS-Tree anpassen.
Ein paar der Links die ich als recht nützlich empfand |
Girder | sehr nützliches Programm zum Verbinden unterschiedlicher Ereignisquellen mit Aktionsmöglichkeiten, primär gedacht zur Computersteuerung mittels Fernbedienung |
LIRC | LIRC (Linux Infrared Remote Control) dient zum Empfangen der IR-Signale |
Strom über RS232 | Ein paar Informationen zum Betreiben von Schaltungen ohne externe Spannungsversorgung |