header.png
lircwbcontrol

Fernbedienung per Browser vom Smartphone/Tablet
Free Cross Platform Development

Downloads

LircWebControl

/img/lircremote/lircwebcontrol.png
Eine Fernbedienung auf jedem Smartphone und Tablet.

LircWebControl besteht aus 3 Funktionseinheiten, diese werde ich hier am Beispiel des VDR beschreiben.

1. LIRC Client:
Der LIRC Client verbindet sich mit dem LIRC Socket (in der Regel ist das /var/run/lirc/lircd) und empfängt die Tastencodes von LIRC, die bisher direkt vom LIRC Client - VDR empgfangen wurden.
2. LIRC Server:
Der LIRC Client VDR wrd nicht mehr direkt mit LIRC verbunden sondern mit LircWebControl der einen Socket auf z.B. /var/run/lirc/lircwebcontrol bereitstellt. ( Der VDR benötigt dazu den Parameter --lirc=/var/run/lirc/lircwebcontrol ) .
3. Webserver
Über den in LircWebControl eingebauten minimalistischen Webserver kann mit einem beliebigen Webbrowser eine Fernbedienung für LIRC Clients wie z.B. VDR oder XBMC .... als "WebApp" dargestellt und verwendet werden. Auch diese Tastencodes werden an den VDR gesendet.

Die Anordnung der Fernbedienungstasten auf dem Bild ist nur ein einfaches aber funktionierendes Beispiel. Über eine HTML Datei (der Standard ist z.Zeit buttons.html) lässt sich das Design, die Anzahl der Tasten und die gesendeten Tastencodes beliebig ändern.

Erzeugt werden die einzelnen Tasten mit dem HTML Tag input type="image" . der Tastencode wird über den Parameter name="KEY_XYZ" definiert.
<input type="image" name="KEY_UP" src="/img/KEY_UP.png" alt="UP">

Die einzelnen Tasten müssen in einem HTML Formular enthalten sein. Wichtig ist dabei die Angabe METHOD="POST" Hier ein einfaches Beispiel:
<form ACTION="/buttons.html" METHOD="POST">
<div>
   <input class="small" type="image" name="KEY_EPG" src="/img/KEY_EPG.png" alt="EPG">
   <input class="small" type="image" name="KEY_VIDEO" src="/img/KEY_VIDEO.png" alt="VIDEO">
   <input class="small" type="image" name="KEY_TIMER" src="/img/KEY_TIMER.png" alt="TIMER">
   <input class="small" type="image" name="KEY_IMAGES" src="/img/KEY_IMAGES.png" alt="IMAGES">
</div>
</form> 

Installation

Die Standard Installation (vom .deb Paket oder von make install) kopiert das Programm lircwebcontrol und das Startscript startwebcontrol (nicht ganz Linux konform) nach /usr/bin. Ein Beispiellayout wird in ~/EasyApps/lircwebcontrol angelegt. Das ist dann auch der Basisordner für den eingebauten Webserver.
Achtung Bug: die Beispieldateien werden unter "root" angelegt und sind für den normalen User dann nicht änderbar.

Programm Parameter

LIRC stellt seinen Dienst üblicherweise über den Socket /var/run/lirc/lircd bereit, kann aber auch über TCP (mit dem Standardport 8765) verwendet werden. Deshalb bietet auch LircWebControl beide Möglichkeiten an.
lircusbcontrol [options]
  Input: Connection  to an existent LIRC host address or local socket
     --host_in=addr|file     for example 192.168.1.30 or /var/run/lirc/lircd
     --port_in=port          for example 8765 or 0 (0 if a local socket is used)
  Output: Read with your app/client from this address range or local socket via LIRC protocol
     --host_out=addr|file    for example 192.168.1.0/24 or /var/run/lirc/lircd
     --port_out=port         for example 8765 or 0 (0 if a local socket is used)
  Webserver: Accept connections from a browser 
     --host_web=addr range   for example 192.168.1.0/24 
     --port_web=port         for example 8080
  connect a network port to a local socket.
  : 
     --host_in|--host_out=socketname like /tmp/ipremote
     --host_in|--host_out=ipAddress like 127.0.0.1
     --port_in|--port_out=IP port no
  : 
  Example: connect lirc from a local socket to an other local socket
       lircusbcontrol --host_in=/var/run/lirc/lircd --port_in=0 --host_out=/tmp/lircwebcontrol --port_out=0 --host_web=192.168.1.0/24 --port_web=80

Script startwebcontrol
#!/bin/bash
SOCKET_IN=/var/run/lirc/lircd
SOCKET_OUT=/tmp/webcontrol
WEBHOSTS=192.168.1.0/24
WEBPORT=8080
fuser $SOCKET_OUT
if [ $? -eq 0 ]; then
   echo "Socket $SOCKET_OUT is in use"
   exit 1
fi
rm $SOCKET_OUT
lircwebcontrol --host_out=$SOCKET_OUT --port_out=0 --host_in=$SOCKET_IN --port_in=0 --host_web=$WEBHOSTS --port_web=$WEBPORT