miércoles, 18 de julio de 2012

Apagar la luz automáticamente al ver una película

... un poco de magia linuxera

Mucha gente dice: "Domótica ¿para qué? ¿para apagar las luces con un mandito?" Pues nada, voy a darles MÁS envidia a todos aquellos que me han dicho eso alguna vez, hoy os voy a enseñar cómo podemos controlar las luces, de una forma "indirecta". Hasta ahora usábamos el interruptor de la pared, el minimando X10 o bien ejecutábamos un script para este fin. Ahora vamos a apagar las luces del salón cuando le demos al play en una película/serie cuando se reproduzca por DLNA. Ahí es ná ...

Para que esto funcione, tenemos que tener controladas las luces del salón por X10 y el mochad en funcionamiento en el RaspberryPi. Revisemos los superpoderes:

Ahora viene lo fácil, vamos a capturar el evento que se genera cuando se le da al play en una peli:
root@RSPPI:~# incrontab -e
user 'root' is not allowed to use incron
¿yo no había solucionado esto ya? Bueno, arreglemos:
root@RSPPI:~# echo root >> /etc/incron.allow
Y otra vez:
root@RSPPI:~# incrontab -e
añadimos la línea:
/mnt/pelis/ IN_ALL_EVENTS echo "$@/$# $%"
Lo que viene a ser que loguee todos los eventos que se generen en el directorio donde están las películas. Recargamos el incrontab:
root@RSPPI:~# incrontab -d
requesting table reload for user 'root'...
request done
Perfecto!, ahora dejamos un tail -f al syslog:
root@RSPPI:~# tail -f /var/log/syslog
y vamos a la tele y le damos al play, a ver cual es el evento:
Jul 16 16:48:55 RSPPI incrond[946]: (root) CMD (echo "/mnt/pelis//Batman_caballero_oscuro.mkv IN_OPEN")
Jul 16 16:48:55 RSPPI incrond[946]: (root) CMD (echo "/mnt/pelis//Batman_caballero_oscuro.mkv IN_CLOSE_NOWRITE")
Jul 16 16:48:55 RSPPI incrond[946]: (root) CMD (echo "/mnt/pelis//Batman_caballero_oscuro.mkv IN_OPEN")
Jul 16 16:48:55 RSPPI incrond[946]: (root) CMD (echo "/mnt/pelis//Batman_caballero_oscuro.mkv IN_CLOSE_NOWRITE")
Parece que es IN_OPEN, asi que volvemos a editar el incrontab:
root@RSPPI:~# incrontab -e
borramos la linea de antes y dejamos esta otra:
/mnt/pelis/ IN_OPEN /bin/bash /usr/local/bin/x10.sh a4 off
recargamos nuevamente:
root@RSPPI:~# incrontab -d
requesting table reload for user 'root'...
request done
Y probamos:

que bonito ...

4 comentarios:

  1. Buenos días,

    Me interesa mucho la parte de domotica, lo estoy implementando en casa gracias a estos tutoriales. ¿Podías por favor publicar algo de sensores con Zigbee‎ y Arduino?

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola, mis conocimientos en Arduino aún no dan para nada serio y mucho menos para Zigbee, lo siento. Lo tengo en mi "To-Do list" pero con cientos de cosas antes.

      Eliminar