viernes, diciembre 14, 2007

Control remoto Marmitek en Linux con LIRC


Primero aclaro que ya tengo bastante experiencia con el tema de lirc, que es un software que basicamente permite ejecutar acciones en un PC usando un control remoto tradicional. Llevo ya 7 años usandolo en casa en mi servidor y hace parte de mi dia a dia ya que el PC funciona entre otras cosas como centro de entretenimiento. La primera vez que use lirc lo hice realmente desde ceros, fabrique mi propio "receptor" de IR (infrarojos) siguiendo unas instrucciones que encontre en Internet para armarlo y conectarlo por el puerto serial y configure un control remoto generico de 5 euros. Con el tiempo fui haciendo cambios aqui y alla, pero basicamente solo cambiaba el control remoto buscando cada vez mas amigabilidad y al final termine usando un control de Sony que por cierto fue muy bueno. Lirc permite diferentes tipos de cosas, como ejecutar comandos al presionar una tecla (ejemplo: ejecutar o cerrar la aplicacion para ver Television, o la de ver DVDs, o la de oir musica, etc) o enviarle comandos directamente a aplicaciones (ejemplo: Adelantar la pelicula que estamos viendo, subirle volumen, darle pausa a un video, etc).

Realmente no tenia pensado cambiar el control remoto, todo funcionaba perfectamente, especialmente cuando vivia en mi apartamento anterior, donde tenia el servidor en mi habitacion la cual era relativamente pequeña, pero hace ya casi dos años me mude a un apartamento mas grande y ahora el servidor esta en la sala, la cual es mas grande. La recepcion comenzo a darme ciertos inconvenientes por la distancia y basicamente porque tenia que apuntar el control remoto hacia el PC y que no hubiesen mayores obstaculos en el camino (como una persona en la mitad). Aunque era un inconveniente menor, podia vivir con el.

Pero hace unas semanas estaba investigando acerca de un nuevo proyecto que tengo en mente para mi proximo apartamento/casa cuando me vuelva a mudar, tengo la idea de instalar un sistema de automatizacion del hogar, esto significa controlar elementos conectados a la red electrica a traves de un control remoto y/o del PC. Por ejemplo, quiero apagar la luz de la sala cuando voy a ver una pelicula, lo haria con un control remoto, quiero cerrar las cortinas electricas (en caso que tenga), lo haria con el control remoto, quiero que a las 9 am todos los dias entre semana el PC verifique que todas las luces esten apagadas y en caso de que haya olvidado apagar alguna antes de salir a trabajar, el PC la apagaria. Esto se hace con una tecnologia llamada X10. Leyendo me encontre con que Linux ya cuenta con todo lo necesario para hacer uso de ella, parece que hay muchos nerds en el mundo usando Linux hoy en dia, lo cual no me sorprende. Cuando quise hacer una lista y evaluar los precios del proyecto, me fui por la marca mas reconocida del mercado, Marmitek y me lleve una sorpresa grandisima, ellos fabrican un control remoto que combina la tecnologia IR (para controlar aparatos tradicionales como televisores, DVD players, etc) con tecnologia RF (radio frecuencia) para comunicarse con un PC. Solo por curiosidad revise si LIRC soportaba este control remoto y no podia creer lo que habia descubierto, el control remoto es plenamente soportado y funciona perfectamente. Ahora lo que realmente sacudio el alma de geek que llevo dentro fue que al leer las especificaciones descubri que por funcionar a traves de RF en modo PC, el control remoto tiene un alcance de hasta 20 metros y no importa que hayan obstaculos de por medio, o sea, atraviesa paredes y lo que sea. Apenas termine de leer esto ya estaba decidido, una busqueda rapida para encontrar el lugar mas barato donde lo pudiese comprar y lo ordene inmediatamente, 20 euros mas 5 por el envio. Cabe anotar que el control remoto ademas soporta X10, asi que cuando implemente mi sistema de automatizacion podre usar el mismo control.

La instalacion fue increiblemente sencilla, el receptor del control es USB, asi que fue cuestion de simplemente conectarlo al PC. Como funciona por RF no hay ningun problema respecto a la ubicacion, asi que lo conecte a un puerto de atras del PC y lo deje escondido.

El siguiente paso fue instalar el driver de LIRC. Sencillo tambien, si se tiene alma de nerd. Hay que escoger el driver "atiusb" y no hay que configurar nada mas (cuando usaba el anterior hecho por mi, debia configurar el IRQ y UART del puerto serial y no recuerdo que mas cosas). Se compila el driver y se instala de la forma tradicional (make ; make install). Un detalle es que la version 0.8.2 de lirc no compila correctamente bajo Ubuntu Dapper, asi que tuve que usar la version anterior 0.8. Cuando los programadores entenderan que las versiones ESTABLES tambien sin importantes?

Hice una busqueda rapida en Google y encontre que esta persona tenia un ejemplo de la configuracion de los botones, el link es este:

http://www.t3i.nl/php/blogdload.php?file=lircd.marmitek.tgz

Yo uso basicamente el control remoto para controlar una aplicacion llamada FREEVO, asi que no queria usar el circulo grande de arriba como mouse (tiene 8 botones direccionales, arriba, abajo, derecha, izquierda, y uno en medio de cada uno de ellos). Freevo se controla facilmente con ARRIBA, ABAJO, IZQUIERDA, DERECHA, PLAY, STOP, asi que por comodidad puse el circulo grande de arriba a comportarse como las flechas de abajo que tienen botones muy pequeños y son incomodas de usar. Complete la configuracion poniendo los botones que emulan los clicks del mouse L y R como STOP y PLAY y ENTER respectivamente. El resto fue carpinteria, otros botones mas como los numericos, los de adelantar, atrasar, pausa, menu, ok, etc.

Si a alguien le interesa, mi archivo de configuracion esta aqui:

http://ciudadmomia.com/linux/lirc/lircd.conf

Finalmente las pruebas de rigor que fueron mas que satisfactorias. La recepcion es excelente, funciona correctamente desde cualquier parte del apartamento (el cual es de dos pisos). Aun no lo he probabo desde fuera del edificio (vivo en quinto y sexto piso), pero estoy seguro de que funciona. No puedo mas que recomendar este control remoto, es lo mejor que he usado hasta el momento. Los unicos inconvenientes es que es relativamente grande y pesado y que usa cuatro pilas AAA y dado que funciona con RF, asumo que duran menos que las de un control normal IR.