Desde hace tiempo tenía la idea de poder controlar cualquier cosa de las que tengo configuradas en Domoticz desde el mando a distancia que uso para la TV.Os explico básicamente en que consite el proyecto. Lo primero es tener un sensor de infrarojos conectado a nuestra Rasberry. Vereis por la red que recomiendan poner un consensador de 4,7 micro faradios para filtrar ruido, yo no tenía y le he puesto uno de 47 microfradios y parece que no me da problemas(cuando pueda probaré con el de 4,7 para ver si hay alguna diferencia en la respuesta). La verdad es que en la mayoría de tutoriales no ponen ese condensador, yo he seguido el datasheed de mi sensor
conexion sensor ir |
Los pasos son sencillos:
os recomiendo antes de instalar hacer esto:
_____________________
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot
______________________
Yo lo instalé sin esta actualización y tuve algún problema. Después de esto si que instalamos el paquete:
_______________________
sudo apt-get install lirc
_______________________
Una vez instalado, hay que hacer una serie de modificaciones en ciertos ficheros:
Editamos /etc/modules:
_________________________
sudo nano /etc/modules
______________________
y añadimos estas lineas:
lirc-dev
lirc-rpi gpio-in-pin=22
En este caso el pin 22 es el que conectaré la pata 1 del sensor. Cuando instale el emisor de IR lo conectaré al pin 23 y tendré que añadir tb ese pin (.... ,gpio-out-pin=23). De momento todavía no he instalado la parte de emisión. Cuando lo haga lo comentaré en otra entrada del blog.
Seguimos editando ficheros, en este caso el /boot/config.txt
___________________________
sudo nano /boot/config.txt
___________________________
añadimos esta linea:
dtoverlay=lirc-rpi,gpio_in_pin=22
También he añadido la informacion de estos pines en Domoticz.sh, aunque no tengo muy claro que de momento fuese necesario, para el uso que le estoy dando hasta ahora. No obstante lo que he modificado es /etc/init.d/domoticz.sh
como siempre:
____________________________
sudo nano /etc/init.d/domocticz.sh
____________________________
añadiendo estas lineas al final del script:
#Run export Gpio Raspberry
/usr/local/bin/gpio mode 23 out
/usr/local/bin/gpio mode 22 in
Cambiamos tambien datos del fichero /etc/lirc/hardware.conf
___________________________________
sudo nano /etc/lirc/hardware.conf
___________________________________
Hay que dejar esta información:
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
Bueno llegados a este punto reinciamos el sistema con
_______________
sudo reboot
_______________
Ya ahora probamos que estÉ funcionando todo correctamente:
___________________________
sudo /etc/init.d/lirc stop
___________________________
con esto paramos el servicio de lirc
___________________________
mode2 -d /dev/lirc0
___________________________
con esto iniciamos el programa para leer las señales de IR
Deberíamos ver en el terminal una serie de datos del tipo
pulse xxxx
space xxxx
pulse xxxx
space xxxx
...
Si no veis esto.. chungo , algo ha fallado. Pero seguro que no os pasa y todo va como la seda ;)
Ahora llega el momento de leer vuestro mando a distancia. Es posible que no sea necesario porque se pueden encontrar configuración de multitud de mandos aquí : http://lirc.sourceforge.net/remotes/
Tanto si procedemos a grabar un mando como a copiar una configuracion que encontremos en este enlace, lo que hay que hacer es incluirlo en el archivo de configuracion /etc/lirc/lirccd.conf
Para leer y grabar un mando, primero hay que tener en cuenta que solo se puede poner a cada botón del mando uno de los nombres que podeis ver ejecutando:
______________________________
irrecord --list-namespace
______________________________
Os recomiendo copiarlo e imprimirlo en una hoja y pensar que nombre de los que figuran ahí le pondreis a cada botón de vuestro mando.
Luego solo hay que ejecutar
____________________________________
irrecord -d /dev/lirc0 ~/lircd.conf
____________________________________
Siguiendo las instrucciones que se van poniendo en el terminal. Con esto tendremos en el directorio raiz de nuestro sistema , en mi caso /home/pi un fichero lircd.conf
Este fichero tiene que trasladarse hasta "su sitio" en /etc/lirc
para esto lo movemos
_________________________________________
sudo mv ~/lircd.conf /etc/lirc/lircd.conf
_________________________________________
Es recomendable editar este fichero y poner un nombre a vuestro mando que sea más "recordable", vereis algo así y en lugar de name SHARP (que es el nombre que he puesto yo) tendreis algo asi como name /home/pi/lircd.conf
.....
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Fri Oct 28 17:50:55 2016
#
# contributed by
#
# brand: /home/pi/lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name SHARP
.......
Llegados a este punto es interesante ver si realmente está todo funcionando como esperamos.
iniciamos el servicio
________________________________
sudo /etc/init.d/lirc start
________________________________
y ejecutamos una orden para "escuchar" nuestro mando
_______________
irw
_______________
Si todo está bien irá saliendo en el terminal la información de la tecla que estais presionando.¡¡¡¡Enhorabuena!!! lo habeis conseguido, es como mágico.
Pero no nos relajemos, con esto no conseguimos encender ninguna luz de nuestra casa. Para eso tenemos que configurar mas cositas. En este caso un fichero que tendremos en /etc/lirc/ y que se llamará lircrc. Al parecer tambien podemos ponerlo en la raiz del sistema /home/pi pero en ese caso con el nombre de .lircrc
Yo lo he dejado donde os comento /etc/lirc/ ,bueno realmente antes de que me funcionara lo he probado en estos dos sitios y en muchos otros. Ya sabeis que todo parece fácil hasta que empiezas y se complica.
No os cuento todas las opciones de configuración de este fichero, podéis verlas en la página del desarrollador muchísimo más completas y mejor explicadas. Lircrc
Yo en este inicio de proyecto lo único que he configurado son dos acciones asociadas a dos botones de mi mando SHARP , KEY_SCROLLDOWN Y KEY_SCROLLUP
Al pulsar la tecla que bauticé como KEY_SCROLLDOWN enviamos una orden json. En la wiki de domoticz podeis ver muchas opciones de configuracion para controlar distintos dispositivos. API/JSON_URL's
En mi caso me fije en el idx del interruptor que quería controlar con el mando
en este caso el número 52.
La orden que tengo que ejecutar será:
http://192.168.1.29:8080/json.htm?type=command¶m=switchlight&idx=52&switchcmd=On
http://192.168.1.29:8080/json.htm?type=command¶m=switchlight&idx=52&switchcmd=Off
Según quiera encender o apagar esta luz.
El fichero de configuracion /etc/lirc/lircrc quedaría en mis caso así:
__________________________________________________________
begin
prog= irexec
remote = SHARP #nom de votre telecommande dans le fichier lircd.conf
button = KEY_SCROLLUP #nom du bouton appuyé
config = curl -s "http://192.168.1.29:8080/json.htm?type=command¶m=switchlight&idx=52&switchcmd=On" #Commande à exécuter
repeat=0
end
begin
prog = irexec
remote = SHARP #nom de votre telecommande dans le fichier lircd.conf
button = KEY_SCROLLDOWN #nom du bouton appuyé
config = curl -s "http://192.168.1.29:8080/json.htm?type=command¶m=switchlight&idx=52&switchcmd=Off" #Commande à$
repeat = 0
end
____________________________________________________________
He puesto repeat=0 para que no se tenga en cuenta si se pulsan varias veces el botón.
Espero que si alguien se anima lo pruebe. La verdad es que las posibilidades como siempre son enormes. Solo depende de la imaginación de cada uno.
Cuando configure la emision de IR para controlar aire acondicionado, TV y equipo música lo publicaré.
Si teneis algun problema comentádmelo a ver si puede solucionarlo ;)