A.G.E.S. Live - Arcade Machine SystemA.G.E.S. Live - Arcade Machine System Arcade Genuine Entertainment System (A.G.E.S.) es un pequeño pero potente Live de Ubuntu, enfocado a un uso exclusivo en máquinas arcade. El objetivo es tener un sistema mínimo pero usable que permita...

Leer más

OpenPPJoy Actualizado!OpenPPJoy Actualizado! Con todo esto de recuperar AGES anoche me quité un par de horas de sueño para actualizar OpenPPJoy a su versión 0.4z que soporta por fin el Kernel 2.6.38, las gracias a VeS que además corrigió la...

Leer más

IrisManager v1.2IrisManager v1.2 "Hermes is a messenger from the gods to humans, sharing this role with Iris." - Wikipedia IrisManager is a port of HermesManager based on PSLIGHT, Tiny3D, PS3Soundlib and OpenPS3FTP, is a completly...

Leer más

Ultracargas en Amstrad CPCUltracargas en Amstrad CPC Todo empezó este puente con la visita del viejo amigo de Dantoine, Vampire. Nos dedicamos una tarde a cacharrear (+) y probando juegos en el MSX, apareció una rom de Ghostbusters que rápidamente pusimos...

Leer más

feb
12
2010

Unificando Hardware – Final Stage!

Envios al blog

Retomamos un poco el hilo del XBMC+Servidor, uno de los inconvenientes que he tenido al querer usar la misma máquina tanto de servidor como de reproductor ha sido que XBMC aunque no lo uses está ahí y gastando un 12% de CPU (tengo un skin muy bonito XD). Por tanto, nos consume luz y proceso que podríamos aprovechar o ahorrar.

Mi idea es apagar XBMC automaticamente sino se usa, pero poder iniciarlo de nuevo pulsando el mando a distancia.
¡Vamos al tajo! Smiley: Muy contento!

Lo primero que pensé fué aprovechar lirc y que mejor que montarlo rápidamente con un pequeño demonio hecho en python (thx pyLirc). Dicho y hecho aqui os dejo el demonio:

#!/usr/bin/python

# pyServiceHandleXBMC - Almost taken from pyLirc Doc
#                       and modded by D_Skywalk
# version 110210 (1.a)
import pylirc, time, os
blocking = 0;
#
if(pylirc.init("pylirc", "/usr/local/etc/lircrc.ServiceHandleXBMC", blocking)):

   print "pyService XBMC using Lirc is Waiting..."
   code = {"config" : ""}

   while(code["config"] != "quit"):

      if(not blocking):
         time.sleep(1)

      # Read next code
      s = pylirc.nextcode(1)

      while(s):

         # Print all the configs...
         for (code) in s:

            print "Command: %s, Repeat: %d" % (code["config"], code["repeat"])

            if(code["config"] == "run"):
               # Read last code
               s = pylirc.nextcode(1)
               pylirc.exit()
               os.execl("/usr/local/bin/runXBMCservice", "")

         # Read next code?
         if(not blocking):
            s = pylirc.nextcode(1)
         else:
            s = []

   # Clean up lirc
   pylirc.exit()

El código es básicamente el ejemplo del uso de lirc con python, añadiendo la llamada al pequeño script en bash que lo único que hace es ejecutar “service xbmc-live start”
¿por que no lo hice directamente de ahí? por que python me protestaba… mejor no preguntar XD

Para usarlo vais a necesitar un fichero lircrc, algo asi (adaptarlo a vuestro mando si no es el de XBOX)

begin
    prog = pylirc
    button = 5
    config = quit
end

begin
    prog = pylirc
    button = DISPLAY
    config = run
end

Podéis usar o añadir los botones que teneis en /etc/lirc/… tengo puesto que con 5 cierra el demonio para depurar y tal me venia bien, sino lo necesitais con borrar ese boton lo tenéis Smiley: contento!

Para arrancar el demonio al cerrar XBMC añadid la llamada a /usr/bin/runXBMC en:

...
	if [ -e /tmp/noRestartXBMC ] ; then
		screen -A -m -d -S xbmcREMOTE /usr/local/bin/pyServiceLircHandleXBMC #linea a añadir
		rm /tmp/noRestartXBMC
...

Uso screen para mandarlo a segundo plano y tener mejor control del proceso, pero sino queréis usarlo supongo que podreis usar también nohup y demás…
Finalmente y sin cerrar este fichero debéis quitar el argumento –standalone de la llamada a xbmc, para que os permita cerrar XBMC sin apagar todo el sistema.

Bien, no se si entre el público habrá algún día otro pijo-linuxero con el mismo problema, pero quizás lo más importante de este envio es la facilidad de crear un programa a tu medida con python en un par de ratos y sin dolores de cabeza, que lujo de lenguaje a ver si me lo empollo un poquito más Smiley: guay!

Un Saludo!

¿Que te ha parecido esta entrada?
Amazing  Interesante  Útil 

Compartir esta entrada

twitter   menéame   facebook   buzz

Dejar tu comentario debes...