Utiliser une télécommande IR pour exécuter des commandes Linux

Dans un article précédent, je vous expliquais comment brancher un récepteur infra-rouge sur les GPIO du raspberry pour contrôler XBMC avec une télécommande IR. Mais sachez que l’utilisation du récepteur IR n’est pas limitée à XBMC seul, puisqu’il est possible de mapper les commandes IR avec n’importe quelle commande Linux.

Pour cela, on va utiliser le programme irexec, qui a priori est déjà installé sur votre distribution (il fait partie du paquet lirc).

Identification du bouton à mapper

Dans un premier temps, on va commencer par identifier le nom du bouton et celui de son dispositif, d’après lirc. Lancez irw puis appuyez sur le bouton auquel vous souhaitez affecter une action. Vous aurez un truc dans ce genre :

00000000000ffba3 00 KEY_ENTER TelecommandeIR

Le « KEY_ENTER » correspond au nom du bouton donné dans le fichier /etc/lirc/lircd.conf, et « TelecommandeIR » est le nom de la télécommande, donné à la ligne « name » de ce même fichier.

Affectation d’une commande

Maintenant que l’on connaît le nom du bouton et de son dispositif, reste à lui affecter une commande. Pour cela il vous faut éditer le fichier home/xbian/.lircrc (à adapter en conséquence pour les autres distros).  Celui-ci doit donc ressembler à ça :

begin
	prog = irexec
	remote = <nom de la télécommande>
	button = <nom du bouton>
	config = <commande à exécuter>
end

Exemple complet

Mettons que je veuille prendre une photo avec le module caméra du raspberry à chaque fois que j’appuie sur le bouton ENTER de ma télécommande ; alors le fichier de configuration ressemblera à ça :

begin
	prog = irexec
	remote = telecommandeIR
	button = KEY_ENTER
	config = /opt/vc/bin/raspistill -o /home/xbian/Camera/`date +%y-%m-%d_%T`.jpg
end

Il est préférable de mettre le chemin complet de l’exécutable (si vous ne le connaissez pas, un coup de whereis vous aidera). Bien sûr, si la commande à exécuter est un peu longue, rien ne vous empêche d’écrire un script .sh, et de l’appeler dans le fichier .lircrc.

A propos de ma commande

Ici, j’utilise la commande raspistill pour prendre une photo. Cette commande nécessite un nom de fichier de sortie. Pour éviter d’écraser les photos précédentes, celles-ci sont nommées en fonction de la date (année-mois-jour_heures :minutes :secondes.jpg), voir ici pour plus de détails.

Lancement de irexec

Pour pouvoir exécuter notre commande, il faut bien sûr lancer la commande irexec. Il est possible de lancer irexec en tant que daemon, c’est-à-dire en arrière plan :

irexec -d

Lancer irexec au démarrage du Raspberry

Si vous voulez que irexec soit lancé automatiquement au démarrage de la framboise, créez un fichier dans le dossier /etc/init.d/ (par exemple irexec.sh), qui contient :

#! /bin/bash
sudo -u root irexec -d /home/xbian/.lircrc

Ensuite, il faut mettre à jour la liste de scripts de démarrage :

sudo update-rc.d irexec.sh defaults

Et voilà !

14-12-13_17:52:10