Raspberry Pi : Dupliquer sa télécommande IR

Bonjour à tous comment allez-vous? Aujourd’hui au programme, je vais vous montrer comment dupliquer votre télécommande IR avec un Raspberry Pi comme je l’ai fait avec un Arduino dans l’article précédent. Je vous préviens tout de suite, c’est un article plutôt long qui vous attend, préparez-vous un café… 😇

Si vous suivez ce blog depuis un petit moment, vous savez maintenant qu’il est possible de faire beaucoup de choses avec un Raspberry Pi… Comme beaucoup de personnes aiment l’article sur la caméra que l’on peut visualiser depuis son téléphone portable je me suis dit qu’il pouvait être intéressant d’aller un peu plus loin dans le concept… 😺

Je me suis donc demandé comment il était possible de faire mieux en intégrant un peu de domotique sur ce principe de caméra, mais toujours sans ce ruiner. Ainsi j’ai écrit les articles sur le Pi noir (http://anderson69s.com/2014/08/09/pi-noir-camera-module/) et sur le Lisiparoi (http://anderson69s.com/2014/11/20/lisiparoi-raspberry/) qui permettent de très bien voir dans le noir du moment que l’espace à éclairer n’est pas trop vaste… 😖

Mais comme je vous ai présenté les rubans LED que j’utilise à la maison pour m’éclairer (http://anderson69s.com/2015/01/25/ruban-led/) je me suis rendu compte qu’il était intéressant de travailler sur le sujet vu leurs faibles prix. Surtout qu’il n’y avait pas besoin de faire de montage de puissance, on duplique uniquement un signal IR, on n’ouvre même pas l’appareil… Ainsi j’ai fait une rapide introduction sur l’Infra-Rouge grâce aux modules IR de Grove sur la plate-forme Arduino, mais aujourd’hui on va aller plus loin… 😈

Je vais vous montrer ma technique pour piloter mes rubans de LED à distance à faible prix et donc comment faire de la domotique légère, « open source » à la maison. Je profite de ce paragraphe pour faire un petit appel. Je suis en train d’essayé pas mal de solutions domotiques basées sur un serveur Raspberry Pi et des actionneurs à base d’Arduino le tout communiquant en 433MHz ou en 2,4GHz si vous en connaissez, utilisez ou développez ce genre de solutions n’hésitez pas à commenter l’article et à m’en faire part car toutes aides dans mes tests et essais est la bienvenue…

Premier intérêt de ma technique?

Vous pouvez toujours piloter vos rubans avec la télécommande IR à domicile. Mais lorsque vous êtes en vadrouille et/ou que la luminosité ne vous permet pas de voir (la nuit par exemple) chez vous. Il vous suffit alors de vous connecter en SSH à votre Raspberry Pi au travers votre DNS personnel (personnellement j’utilise http://www.noip.com/) pour envoyer une simple commande SSH qui va permettre de simuler un appui sur la télécommande. Comme si vous étiez chez vous grâce à un module IR… Vous permettant donc de vérifier si tout va bien même s’il fait sombre…

Second intérêt?

Sachant que cette technique marche sur la plupart des appareils disposant d’une télécommande IR, je vous laisse imaginer la quantité de choses que vous pouvez déjà piloter chez vous à distance… Tout cela sans changer vos équipements ou en acheter d’autres qui sont coûteux. Effectivement, si vous possédez déjà d’un Pi chez vous avec une caméra et un ruban LED, il ne vous reste plus qu’à réaliser une des solutions proposées par le site lirc.org ou utiliser les modules grove qui ne sont pas bien chers :

1 – Materiel :

  • Un Raspberry Pi (peu importe le modèle) avec alimentation et carte SD tournant sur Raspbian que vous pilotez via un écran ou via SSH
  • Une Raspicam ou une vieille webcam que vous visualisez à distance grâce à Motion si vous voulez un retour image (http://anderson69s.com/2014/06/28/raspberry-pi-picam-camera-de-securite/)
  • Un appareil disposant d’une télécommande IR (dans mon cas les rubans LED)
  • Les deux modules IR de Grove ou une solution maison basée sur les schémas fournit par le site http://lirc.org/.

Si vous n’avez pas de caméra et de rubans LED, mais juste un Raspberry Pi et un appareil qui dispose d’une télécommande IR cela marche aussi, mais vous n’aurez pas de retour d’images et ce n’est pas la lumière que vous piloterez…

Dernier cas, si vous ne voulez pas acheter ces modules IR les schémas sont pour réaliser un montage équivalent sur une breadboard sont facilement trouvable sur le web.

Maintenant, on va brancher nos modules IR sur le Raspberry Pi :

rpi_ir_schemaComme d’habitude, je vous laisse :

  • Formater votre carte SD
  • Mettre votre Pi sous tension
  • Réaliser les réglages de Raspbian propre à votre installation (clavier, sortie vidéo, changer les mots de passe, etc..)
  • Vous connecter à l’aide de votre identifiant et de votre mot de passe
  • Réaliser un sudo apt-get update
  • Réaliser un sudo apt-get upgrade

2 – Configuration de LIRC

Il est temps de passer à la configuration de tout ce matériel… La première chose à faire est d’installer LIRC : Linux Infrared Remote Control (http://lirc.org/) grâce à la commande :

sudo apt-get install lirc

rpi_ir_install_lircUne fois cela fait, il va vous falloir vous rendre dans le fichier /etc/modules pour définir lirc_dev & lirc_rpi. Pour cela ouvrez le fichier /etc/modules grâce à la commande :

sudo nano /etc/modules

Et rajoutez à la fin :

lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22

Sauvegardez, puis allez dans /etc/lirc/hardware.conf pour régler les paramètres de LIRC :

sudo nano /etc/lirc/hardware.conf

Remplacez tout le texte présent par celui-ci :

########################################################
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"
# Don't start lircmd even if there seems to be a good config file
# START_LIRCMD=false
# Don't start irexec, even if a good config file seems to exist.
# START_IREXEC=false<
#Try to load appropriate kernel modules
LOAD_MODULES=true
# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
########################################################

Enregistrez et quitter nano. Pour que le module du kernel soit chargé au démarrage, il nous faut rajouter une commande dans le fichier /boot/config.txt grâce à la commande :

sudo nano /boot/config.txt

et ajoutez cette ligne à la fin :

dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22

Dernier point, il faut vérifier que le Device Tree soit activé pour cela il faut vous rendre dans raspi-config :

sudo raspi-config

rpi_ir_sudo_raspiconfigPuis suivez ces photos pour trouver facilement le réglage Device Tree :

Redémarrez le Raspberry Pi afin que les changements soient bien pris en compte. Une fois le Pi redémarré, il va falloir maintenant créer un fichier de configuration pour notre télécommande. Pour cela LIRC a très bien conçu les choses et propose un programme qui permet de quasiment tout faire…

Mais avant cela, vérifions que tout fonctionne automatiquement au démarrage :

sudo /etc/init.d/lirc stop

rpi_ir_lirc_stopPour vérifier si lircd (le daemon c’est bien démarrer) et l’arrêter afin de libérer /dev/lirc0. Pour vérifier que l’on capte bien les signaux, appuyez sur des boutons de votre télécommande en direction du récepteur après avoir exécuté :

mode2 -d /dev/lirc0

Si vous voyez apparaître quelque chose qui ressemble à la photo suivante, vous êtes en bonne voie :

rpi_ir_mode2Il vous faut alors taper CTRL+C pour sortir de ce « mode d’exploration ».

3 – Enregistrement des télécommandes

Une fois l’enregistrement de la télécommande finit, il vous faudra attribuer chaque bouton à un argument. Avant de lancer la procédure d’enregistrement, prenez connaissance des noms que vous pouvez attribuer aux boutonx grâce à la commande :

irrecord --list-namespace

Comme le montrent les photos suivantes, il y a beaucoup de noms que vous pouvez donner aux boutons :

Garder bien ces noms sous le coude, car ils vont nous servir sous peu…

Chose importante avant de commencer à enregistrer la télécommande, la plupart des appareils ne réagissent à aucune commande IR tant qu’ils n’ont pas reçu l’ordre de s’allumer via IR!!!! Donc si votre appareil ne réagit pas à vos commandes, mais que vous ne l’avez pas allumé avant il est certain que rien ne ce passera…

Pensez donc bien à prévoir une touche spéciale facilement utilisable pour allumer et éteindre votre appareil. Dans mon tuto, j’utiliserai BTN_0 .

Passons au décodage de notre télécommande. On va utiliser irrecord (contenu dans le paquet lirc). Dans le dossier /home/pi exécutez :

irrecord -d /dev/lirc0 ~/out.conf

Ce qui va lancer irrecord sur le device /dev/lirc0 et sortir un fichier de configuration nommé out.conf dans home/pi. La série de photos suivantes va me permettre de vous expliquer plus facilement le déroulement de l’opération :

rpi_ir_irrecord_1Cette première page indique que ce programme existe depuis 1999 😮. Il faut appuyer sur Entrée pour continuer.rpi_ir_irrecord_2Première étape, une fois après avoir appuyer sur Entrée une nouvelle fois, il vous faudra appuyer une seconde environ sur plusieurs des boutons de votre télécommande en direction du récepteur. Chaque appui ne doit pas générer plus de 10 points. rpi_ir_irrecord_3Une fois une première ligne de points généré en appuyant sur les boutons de votre télécommande, irrecord peut commencer à reconnaître des similitudes dans les signaux qu’il reçoit.rpi_ir_irrecord_4Au bout de la seconde ligne de point, irrecord a normalement récupérer toutes les informations dont il a besoin. Il vous indique alors le résultat comme le montre la photo ci-dessus. Il vous demande alors un nom de bouton mais lequel choisir? Surtout qu’il n’accepte rien à part : LES REFERENCES QUE L’ON OBTENU EN UTILISANT –LIST–NAMESPACE!!!!!!!rpi_ir_irrecord_5Une fois le bon nom de bouton tapé, faites Entrée et appuyez sur le bouton de votre télécommande que vous voulez associez à ce nom. Sur la photo précédente, j’appuie sur le bouton power pour lui donner le nom BTN_0.rpi_ir_irrecord_6Refaites la même chose pour les différents boutons de votre télécommande que vous voulez simuler. Une fois les boutons assignés pour sortir et valider, il faut lorsque irrecord vous demande un nouveau nom de bouton, ne rien taper et appuyer directement sur Entrée :rpi_ir_irrecord_7Il faudra alors, appuyer sur un bouton de façon répétitive et aussi vite que possible en s’assurant de bien appuyer sur le même bouton et de ne pas le tenir appuyer constament. Chaque point doit correspondre à un appui de bouton.

rpi_ir_irrecord_8Normalement, irrecord vous générera un fichier de configuration nommé out.conf dans /home/pi. Pour l’ouvrir afin de voir ce qu’il contient faites :

nano /out.conf

rpi_ir_irrecord_outOn voit qu’il contient toutes les informations de la télécommande. Le fichier est bien structuré ce qui facilite grandement ça lecture…

‼️Attention, le fichier est case sensitive, ce qui veut dire que tous les espaces même vides comptent…‼️

La première chose à faire étant de changer le nom de la télécommande juste après name :

Puis il faut tout copier sauf ce qui ce trouve après des # et sortir de ce fichier out.conf en utilisant CTRL+X et vous rendre dans le fichier lircd.conf :

sudo nano /etc/lirc/lircd.conf

Copier le contenu de out.conf dans /etc/lirc/lircd.conf

Pensez à sauvegarder le fichier /etc/lirc/lircd.conf en quittant.

Sinon si vous n’avez qu’une télécommande, vous pouvez remplacer directement lircd.conf par out.conf en utilisant :

sudo cp /home/pi/out.conf /etc/lirc/lircd.conf

Si vous avez plusieurs télécommandes, répétez l’opération d’enregistrement pour chaque télécommande en changeant le nom de fichier de sortie :

irrecord -d /dev/lirc0 ~/telecomande1.conf
irrecord -d /dev/lirc0 ~/telecomande2.conf
irrecord -d /dev/lirc0 ~/telecomande3.conf

Rentrez dans chaque fichier telecommandeX.conf pour changer le nom de télécommande. Puis copier/coller le contenu de chaque télécommande dans le fichier /etc/lirc/lircd.conf.

‼️Attention chaque télécommande doit avoir un nom unique…‼️

‼️Attention toutes les informations concernant une télécommande doivent être encadrées de begin remote et end remote…‼️

‼️Après chaque modification dans /etc/lirc/licrd.conf il faut redemarré le daemon pour que les changements soient pris en compte‼️

Pour cela vous pouvez utiliser :

sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start

Une fois l’enregistrement des télécommandes terminées, vous pouvez déconnecter le dispositif qui reçoit les signaux IR nous n’en aurons plus besoin.

4 -Envoyer une commande SSH pour générer un signal IR

Et maintenant? Comme tout est bien configuré, tout doit normalement fonctionner, mais nous n’avons utilisé que le récepteur IR. Comment vérifier que l’émetteur marche bien? C’est assez simple, le plus simple est de redémarrer votre pi pour faire prendre en compte tous les changements que nous avons fait précédement.

Une fois connecté après le redémarrage, pour tester vos réglages, exécutez la commande suivante pour allumer votre appareil:

irsend SEND_ONCE LED BTN_0

Quelques explications :

  • irsend est un petit programme comme irrecord, mais au lieu d’enregistrer et décoder des signaux IR il les génèrent comme son nom l’indique.
  • SEND_ONCE est un argument de irsend d’autres sont disponibles, mais dans notre cas je ne vois pas l’intérêt d’envoyer plusieurs fois le même signal…
  • LED est le nom de la télécommande que nous voulons utiliser et que nous avons défini dans notre fichier de configuration (/etc/lirc/lircd.conf).
  • Enfin BTN_0 est le nom du bouton d’allumage que nous avons enregistré et assigné plus haut. Souvenez vous ma mise en garde, rien ne ce passera si vous n’allumez pas l’appareil…

Et si tout va bien MAGIE, mon ruban LED s’allume… Si je veux changer de couleur, je peux utiliser :

irsend SEND_ONCE LED BTN_1
irsend SEND_ONCE LED BTN_2
irsend SEND_ONCE LED BTN_3

rpi_ir_irsendSi vous avez plusieurs télécommandes, il est très facile de les utiliser voici un exemple de commandes possibles :

irsend SEND_ONCE telecommande1 BTN_3
irsend SEND_ONCE telecommande2 BTN_2
irsend SEND_ONCE telecommande3 BTN_1

Je vous ai fait une petite vidéo pour vous montrer le résultat :

Nous voici arrivé au bout de ce roman.

Vous pouvez maintenant émuler les télécommandes IR depuis votre Raspberry Pi est ainsi piloter vos appareils depuis une fenêtre terminal dans votre canapé ou depuis l’autre bout du monde via DNS. ✅

@Bientôt Anders

52 réponses sur “Raspberry Pi : Dupliquer sa télécommande IR”

  1. Super tuto, merci !
    Est-ce que ça marche avec toutes les télécommandes IR ?
    Exemple : télécommande d’ouverture de portail par exemple ?

    1. Bonjour Vincent,

      Normalement LIRC reconnaît quasiment tous les protocoles IR. Mais à ma connaissance il y a très peu de portails qui fonctionne sur le protocole IR et surtout je vous le déconseille au niveau de la sécurité car les protocoles IR ne sont pas sécurisées du tout… Qui plus est si vous possédez un portail qui ce pilote avec une télécommande IR je vous conseille de le changer au plus vite…

      La seule chose d’une peu nuisible que l’on peut faire avec cette technique c’est le TV-B-Gone de Mitch Altman, aussi célèbre pour la création du hackerspace de San Francisco en 2008, voici des liens si vous voulez en savoir plus :

      https://fr.wikipedia.org/wiki/TV-B-Gone
      https://fr.wikipedia.org/wiki/Mitch_Altman

      @+ Anders

    1. Bonjour Jérôme, comment allez-vous?

      Pour répondre à votre question, des câbles de prototypages conviennent très bien pour brancher un module grove au Raspberry. Mais il vaut mieux prendre des femelles/femelles car le RPI à des sorties mâles tout comme les modules Grove.

      Cordialement, Anders

    1. Bonjour Marcus, comment allez-vous?

      Si je comprends bien votre question, vous désirez savoir si il est possible d’envoyer une commande IRSEND via http? Je ne peux malheureusement pas vous répondre, car je me suis toujours servi du ssh pour piloter IRSEND… Je ne sais même pas si cela est possible…

      Désolé de ne pas pouvoir plus vous aider…

      Cordialement, Anders

      1. Ce que tu peux faire c’est « transformer » ta raspberry en serveur, qui lors d’une réception d’une requette http exécute la commande IRSEND, c’est facilement faisable oui

        1. alors j’ai pas vraiment regardé pour cet exemple précis, mais si ton serveur te permet d’utiliser du PHP, tu peux utiliser la fonction system() qui te permet d’envoyer une commande système lors – par exemple – de l’appui d’un bouton sur ta page (oui, oui, je sais que la question date d’il y a presque deux ans, mais comme ça, si quelqu’un recherche également la réponse… ^^)

  2. Cool Merci pour votre réponse Anderson.
    J’utilise actuellement Openelec 6.0.0 or ce dernier n’intègre pas lirc d’origine et n’autorise pas l’ajout de logiciels.
    Pouvez-vous m’aiguiller votre config soft de départ ?

    1. Rebonjour Marcus,

      Je peux vous conseiller OSMC ou Xbian qui fonctionnent sur le même principe que OpenElec mais qui permettent d’installer des programmes. Je crois même bien qu’ils intègrent LIRC maintenant en plus. Si vous pouvez me le confirmer, je ne suis pas contre…

      Tenez-moi au courant, Anders

  3. Bonsoir Anderson69s,
    Merci pour ce retour d’info et Grand merci pour ce tuto hyper bien fait !
    Cela fait un moment que l’on cherchait avec le fiston comment centraliser les commandes IR des appareils.
    On va ré-installer la carte SD et tenter d’appairer les appareils au courant de la semaine.
    Nous reviendrons probablement vers vous plus tard pour le mode de pilotage à distance.

    1. Bonjour Marcus,

      Merci pour vos compliments 😉

      LIRC est une très bonne solution pour piloter une multitudes d’appareils disposant d’une télécommande IR. Aucun problème pour répondre à vos futures questions 🙂

      ++ Anders

  4. Bonjour Anders,

    Bonne nouvelle, on a réussi à faire marcher le système IR sous Xbian non sans peine.

    Avantages : OS opensource autorise toutes les modif de config et installations.
    LIRC étant en plus déjà installé, nous n’avons eu qu’à configurer les télécommandes et centraliser tout cela dans lircd.conf grâce à tes indications.

    Inconvénients : L’OS Xbian est super lent. XBMC que nous utilisions déjà (pour écouter radios, mp3, div’x, ….) est impacté par la lenteur du système. Quand on se promène dans les menus, le son est saccadé.

    Nous avons donc tenté d’appliquer le tuto sous OSMC ou OPENELEC. Là on s’est d’abord heurté au problème d’accès écriture, les systèmes sont protégés. En fouinant un peu, on a trouvé le code pour autoriser l’écriture et reporté les modifications de config. dans les fichiers
    Cependant LIRC n’est pas installé d’origine et l’OS n’autorise pas l’install… malgré l’autorisation d’écriture.
    Bref beaucoup d’heures pour le moment pour un résultat mitigé.
    Le problème se situe autour des Os qui sont capricieux.

    Y aurait-il un moyen de booster Xbian?

    1. Bonjour Marcus, je vois que vous allez bien 🙂

      Je me suis permis de modifier votre message pour rectifier votre erreur (Xbian / Raspbian) et ainsi éviter les commentaires inutiles. Dites moi si il faut le modifier de nouveau.

      Effectivement Xbian utilise pas mal de puissance sur le Pi… OpenElec ne permet pas de prendre les droits roots pour installer d’autres programmes… Mais OSMC semblerait parfaitement convenir à vos besoins…

      Sachez également que le Pi n’est pas un monstre de puissance… J’ai l’habitude de l’utiliser via un accès SSH pour tester des configurations. La GUI consomme beaucoup de ressources…

      Alléger Raspbian est assez facile, par contre alléger Xbian sera beaucoup plus complexe je pense… Mais normalement avec OSMC vous devriez trouver votre bonheur 😉

      ++ Anders

  5. Bonjour Anderson69s,

    Merci pour votre retour. Pas de problème par rapport à la retouche de msg…
    Etant donné la problématique de consommation, nous souhaiterions en effet rester sur OSMC qui est très stable et peu gourmand en ressources.
    Il y a cependant ce fameux hic, nous arrivons à forcer les droits en utilisant la fonction « sudo -s » ce qui nous permet de modifier les fichiers de config.

    - sudo nano /etc/modules
    - nano /etc/lirc/hardware.conf
    - nano /boot/config.txt

    Mais lorsqu’on lance les commandes :

    - sudo /etc/init.d/lirc stop
    - sudo /etc/init.d/lirc start

    le système nous indique ne pas connaître LIRC.
    Lorsque nous essayons de l’installer, via sudo apt-get install lirc, ce dernier commence le téléchargement et puis affiche :

    osmc@Cave:~$ sudo -s
    root@Cave:/home/osmc# sudo apt-get install lirc
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    You might want to run 'apt-get -f install' to correct these:
    The following packages have unmet dependencies:
     lirc : Depends: libftdi1 (>= 0.20) but it is not going to be installed
            Depends: liblircclient0 (>= 0.6.4)
     rbp1-device-osmc : Depends: armv6l-remote-osmc but it is not going to be installed
    E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

    D’après nous les droits par la fonction sudo -s ne suffisent pas.
    C’est hyper frustrant, on est presque au bout mais là, on sèche…
    Un tuyau ?

    1. Bonjour Marcus, ne vous inquiétez pas, pour le moment vous êtes frustré mais quand vous aller réussir vous aller découvrir d’autres sentiments bien plus agréables 😉

      Si vous voulez faire la même chose que moi pour afficher du code, il faut encadrer votre texte comme ce-ci :

      < pre > mon texte < /pre > en enlevant les espaces superflûts donnera :

      mon texte

      Le problème ici ne vient de vos droits root. Il manque des dépendances car OSMC est basé sur Jessie avec des repos propres je crois bien et j’ai fais mon tuto sur Raspbian Wheezy. Pour remédier à cela, essayez :

      - sudo apt-get update
      - sudo apt-get install libftdi1 liblircclient0
      - sudo apt-get -f install lirc

      Par contre pour le paquet rbp1-device-osmc je ne sais pas à quoi il sert… Ce qui est étonnant, c’est que lirc ne soit pas directement intégré directement à OSMC.

      ++ Anders

  6. Bonjour
    Merci pour votre tuto.
    J’ai un petit soucis: je n’ai pas le menu d’activation Device Tree dans le rasp-config.

    Quand je lance:
    pi@raspberrypi:~ $ mode2 -d /dev/lirc0
    mode2: could not get file information for /dev/lirc0
    mode2: default_init(): No such file or directory

    Dans mon boot.txt, j’ai remarqué:
    # Uncomment some or all of these to enable the optional hardware interfaces
    #dtparam=i2c_arm=on
    #dtparam=i2s=on
    dtparam=spi=off

    Pourriez-vous m’aider svp? Merci.

    Conditions de test:
    Raspberry B+
    Raspbian Noobs (tout neuf, sans rien d’autre, mise à jour fait)

    1. Bonsoir Christophe, comment allez-vous?

      Je suppose que vous utiliser Raspbian Jessie non? Le tuto a été rédigé sur Raspbian Wheezy ce qui forcément ne peut pas toujours fonctionner vu que pas mal de choses ont changés dans le système… Surtout sur ce sujet…

      Toutefois, comme j’aime apprendre, j’ai pris le temps de creuser votre problème… Et voici l’explication et sûrement la solution 😉

      Il est normal que vous n’arriviez pas à activer le Device Tree sur Jessie car celui-ci est utilisé par défaut et il est impossible de le désactiver… Ce qui n’était pas le cas sur Wheezy… Vous n’avez donc rien à faire…

      Sur Wheezy, les modules du kernel étaient chargés au démarrage d’une façon, sur Jessie c’est complètement différent…

      Sans parler du passage de launchtcl à systemd…

      Donc sur Jessie, le plus simple pour activer lirc qui est pré-compilé sur xbian, osmc et raspbian reste la technique suivante :

      sudo nano /boot/config.txt

      décommentez les lignes suivantes :

      # Uncomment this to enable the lirc-rpi module
      #dtoverlay=lirc-rpi
      
      # Uncomment this to override the defaults for the lirc-rpi module
      #dtparam=gpio_out_pin=16
      #dtparam=gpio_in_pin=17
      #dtparam=gpio_in_pull=down

      Normalement la commande :

      mode2 -d /dev/lirc0

      Devrait fonctionner et vous devriez pouvoir finir de configurer vos télécommandes 😉

      Si vous voulez plus d’informations sur le sujet je vous conseille ces trois liens (attention en anglais) :
      http://filter-failure.eu/2015/11/raspberry-pi-2-lirc-with-an-active-low-ir-receiver-with-raspbian-jessie/
      https://www.raspberrypi.org/forums/viewtopic.php?t=94179&p=656130
      https://www.raspberrypi.org/documentation/configuration/device-tree.md

    1. Bonjour Christophe,

      Super nouvelle si tout fonctionne… Je n’ai pas encore pu tester cette solution personnellement, car je n’ai pas assez de temps libre…

      Cordialement, Anders

  7. Bonsoir Anderson,

    J’utilise un Rpi3 avec Raspbian Jessie pour tenter de réaliser votre tuto.

    En lisant les commentaires, j’ai remarqué qu’en effet la syntaxe du fichier config.txt avait changé pour cette configuration.

    J’ai donc adapté et j’utilise maintenant cette syntaxe :
    # Uncomment this to enable the lirc-rpi module
    dtoverlay=lirc-rpi

    # Uncomment this to override the defaults for the lirc-rpi module
    dtparam=gpio_out_pin=22
    dtparam=gpio_in_pin=23

    Malgré cela, j’ai toujours le message d’erreur suivant au démarrage du Rpi3 :
    « failed to start load kernel modules »

    Et lorsque j’essaye d’executer la commande suivante :
    mode2 -d /dev/lirc0
    Le terminal ne me renvoi rien et ne réagi pas à ma télécommande IR.

    Je suis un novice dans le domaine. J’ai bien compris que le Device Tree n’était pas géré de la même manière dans ma configuration mais je ne sais pas bien à quoi il est destiné.

    Merci d’avance si vous pouvez m’apporter de l’aide.

    Cordialement,

    Thibault

  8. Bonjour Anderson,

    J’ai bien progressé sur le projet de télécommande IR.

    Premièrement, si la commande mode2 ne fonctionnait pas chez moi, c’est parce que j’avais mal branché mon récepteur.
    Je branchais le NC sur le port GPIO au lieu du RX. J’avais bêtement suivi ta photo et mes ports son inversés par rapport à ton image…

    Cependant, bien évidement, cela n’a pas résolu le problème de chargement des modules.
    C’est peut-être ce que tu expliquais dans les précédents commentaires mais la commande « lirc_rpi gpio_in_pin=23 gpio_out_pin=22 » ne semble pas nécessaire dans le fichier modules sous Raspberry Jessie. La mise à jour du fichier config.txt doit suffire.

    J’ai poursuivi ton tuto. Le convertisseur de LIRC a très bien fonctionné pour la télécommande de mon vidéoprojecteur mais ce n’est pas pour cet appareil que je réalise ce projet. En revanche, concernant mon sèche serviette, LIRC s’est trouvé bien incapable de passer l’étape des deux lignes de point. Je me suis acharné un petit peu mais je n’ai jamais passé la moitié d’une ligne. Je finissais toujours par stagner.

    Concernant ce sèche serviette, je n’ai besoin de connaitre que la commande d’allumage et d’extinction. Je me suis donc orienté vers une solution n’utilisant pas LIRC et je suis tombé sur ce tuto de Brian Schwind : https://blog.bschwind.com/2016/05/29/sending-infrared-commands-from-a-raspberry-pi-without-lirc/

    Voilà synthétiquement le processus qu’il utilise :
    – Décodage du signal via un programme Python simple,
    –> Un signal infrarouge correspond à une succession de « temps à 1 », « temps à 0 » sur une fréquence d’environ 38kHz.
    – Utilisation d’une librairie C pour recréer ce signal :
    –> http://abyz.co.uk/rpi/pigpio/index.html
    –> L’utilisation d’un script Python (langage interprété) ne permet apparemment pas d’obtenir à coup sur une fréquence de 38kHz.

    Grâce à ce processus, j’ai découvert que mon signal IR ne semblait respecter aucun protocole IR classique (NEC, RC5 …). Disons que le fabricant du sèche serviette n’a pas dû vouloir trop s’embêter sachant que dans une salle de bain peu de signaux IR doivent pouvoir venir interférer.
    Là où les protocoles classiques utilisent des temps de l’ordre de 1ms ou moins, mon sèche serviette utilise des temps de l’ordre de 200ms.
    Ainsi, la commande d’allumage prend prêt d’une seconde ! Pour un sèche serviette, on s’en fiche un peu mais pour une TV, ça peut vite devenir agaçant.
    Ces éléments expliquent peut-être pourquoi LIRC n’a pas réussi à décoder le signal.

    Grâce à cet autre tuto, j’ai donc pu compiler un programme C « allumer_seche_serviette » et un autre « eteindre_seche_serviette » qui fonctionnent à merveille. Il ne reste plus qu’à interfacer tout ça.

    Merci beaucoup à vous deux.

    Bonne continuation,

    Thibault

    1. Bonjour Thibault, j’espère que vous allez bien.

      Cela fait quelque temps que je n’ai pas démarré une instance LIRC. Mais avec tous les derniers changements qu’a subis Raspbian, je ne suis pas trop surpris que vous ayez du mal.

      Je suis content que vous ayez trouvé une solution, cela m’évite pour le moment à creuser un peu plus le problème…

      Cordialement, Anders

    1. Bonjour Micka, j’espère que vous allez bien.

      Malheureusement, il faut que la personne qui teste pour vous possède exactement le même modèle de clim pour vérifier le bon fonctionnement. L’appli en elle-même ne devrait pas poser de problème particulier car il y a des milliers d’applications SSH

      Tenez-moi au courant

      ++ Anders

      1. Bonjour Anderson

        Finalement j’ai réussi (depuis!)
        La difficulté vient du fait que les télécommande de clim n’envoient pas des commandes séparées mais tout d’un bloc, par ex : FAN: MAX, MODE : COOL, TEMP: 24°C etc…., en gros avec Lirc, j’ai sniffé deux configurations « type » HIVER et ETE, et j’ai réussi à les piloter avec SSH Button sous android 🙂
        C’est parfait ! Merci encore pour le tuto !

        1. Bonsoir Micka, j’espère que vous allez bien.

          Je suis content que vous soyez arrivé au résultat que vous vouliez. Je suis également ravi de découvrir cette particularité des climatiseurs…

          Avez-vous fait un tour sur l’article concernant Domoticz afin d’avoir une solution domotique globale et ne plus devoir envoyer de requête SSH pour effectuer une action?

          ++ Anders

          1. Je prévois de me lancer dans le même type d’automatisation de mes clims (planification et centralisation de la mise en marche et arrêt). Le module Wifi du fabriquant n’est pas compatible avec mes splits un peu ancien. Donc je vais me lancer mais je pensais utiliser un Pi 3 (cerveau) et 3 Raspberry Pi Zero WH (le prix étant moitié moins cher qu’un Pi 3)

            Avez-vous connaissance de limitations quant-à l’utilisation des Pi 0WH ? (puissance, …)

            Deuxième question, savez vous la portée de la led IR du Grove ?

            1. Bonjour Romain, j’espère que vous allez bien.

              Je n’ai pas connaissance de limitation avec des Pi 0WH pour ma part, ils fonctionnent très bien. Mais si les Raspberry sont chers pourquoi ne pas utiliser des ESP12E avec un serveur Domoticz comme décrit ici : https://anderson69s.com/2017/03/18/domoticz-domotique-diy/3/

              Pour la seconde question, je dirais au moins 3m de portée minimum, mais si rien ne vient obstruer le chemin optique je pense que l’on peut monter à 10m sans trop de problèmes.

              @Bientôt Anders

              1. Merci beaucoup. Je viens de commander le matériel nécessaire pour ce tuto. Et je prends note de Esp12e qui semble être une bonne alternative quand j’aurai réussi l’étape 1 (ce tuto)

                Je me pose quand même une question. Dans votre autre tutoriel vous utilisez un Arduino pour décoder le signal IR qui vous donne accès au protocole IR de votre ruban. Ce protocole est ensuite renvoyé à l’ESP. Est il possible de récupérer le protocole avec le raspberry et lirc ?

                1. Bonjour Romain, j’espère que vous allez bien.

                  Je suis désolé pour ma réponse tardive je n’ai pas eu une minute ces derniers temps.

                  Lirc et un Raspberry sont capables de lire une télécommande sans problème, mais il faudra peut-être un peu chercher dans les fichiers de config pour trouver les codes à rentrer sur l’ESP12E. L’arduino à l’avantage de tout afficher sur une liaison serial.

                  C’est un peu plus long, mais pas réalisable.

                  @Bientôt Anders

                  1. Premier montage fait en utilisant le raspberry. C’était plus compliqué que prévu. Je m’explique.

                    Tout d’abord, je suis sur pi3 avec stretch. Beaucoup de choses changent niveau configuration avec cette nouvelle version d’OS. Via les différents commentaires de ce forum j’ai pu bidouiller un peu la configuration mais ça ne fonctionnait toujours pas correctement (mode2 me retournait des erreurs).
                    J’ai trouvé ce tuto très succinct qui explique étape par étape les choses a faire.

                    https://gist.github.com/prasanthj/c15a5298eb682bde34961c322c95378b

                    Moralité: il sera peut être intéressant de refaire une version du tutoriel pour stretch tant les différences sont notables, ou d’avoir des sections bien établies suivant les versions (je peux donner un coup de main si tu veux)

                    Ensuite …
                    Le signal de ma climatisation est trop long (il envoie l’état complet de la clim à chaque fois). C’est apparemment le cas pour beaucoup de climatisations. Du coup irrecord n’est pas capable d’enregistrer le signal. 2 choix se posait à moi: recompiler lirc en augmentant la taille maximale du message ou chercher plus loin. J’ai tenté d’abord de recompiler mais cela occasionnait beaucoup plus de problèmes.

                    J’ai donc continué à fouiller sur internet et je suis tombé sur le tuto ci dessous qui se résume en: utiliser mode2 (qui est un mode de test), pour enregistrer les codes IR et générer manuellement le fichier de configuration de lirc basé sur ces codes. C’est finalement tout aussi facile et rapide qu’avec irrecord.

                    https://www.cnx-software.com/2017/03/12/how-to-control-your-air-conditioner-with-raspberry-pi-board-and-anavi-infrared-phat/

                    J’ai implémenté tout ça avec Domoticz et cela fonctionne très bien. Seul feedback négatif (mais peut être plus lié à la clim qu’autre chose) : le système est très directionnel. Si la diode émettrice n’est pas exactement dans l’axe du récepteur ça ne fonctionne pas. C’est aussi le cas avec la télécommande du climatiseur d’ailleurs.

                    Prochaine étape: remplacer le raspberry par un ESP8266, afin de pouvoir multiplier l’installation pour toute mes pièces a faible coût, trouver et/ou fabriquer des boîtiers pour tout ce petit monde.

                    1. Bonjour Romain, j’espère que vous allez bien.

                      Merci pour cette réponse claire et très détaillée. Cela aidera sûrement d’autres personnes.

                      L’infrarouge est très directionnel si vous avez également le problème avec la télécommande il faut donc améliorer la réception sur le climatisateur. Ce n’est pas forcément évident, mais cela peu aider.

                      Je suis également de votre avis, je sais que certains tutos sont dépassés et mériteraient une nouvelle version, mais en ce moment je n’ai vraiment pas le temps de me lancer dans un projet de cette taille…

                      Encore merci pour ces informations 🙂

                      @Bientôt Anders

                    2. Bonjour Anders
                      Il n’est pas nécessaire de refaire tout le tutoriel, mais une section dédiée de ce dernier pourrait être intéressante car les branchements restent identiques. Et finalement parler de la version manuelle (avec mode2) peut être intéressantes pour d’autres applications. Si vous le souhaitez je peux essayer de compiler un article pour vous, tant que les informations sont fraîches dans ma tête.

                      Sinon j’ai fini ma phase #2 : utiliser des ESP-12E et je vous en fait part aussi car il y a eu un bon lot de rebondissement encore coté logiciel.

                      J’ai donc acheté sur Ali express 4 esp-12e nodemcu, cables et chargeurs. Effectivement le prix n’a rien a voir avec un raspberry (2,50 euros par puce). Et ensuite j’ai suivi votre autre tutoriel.

                      Flash de la puce. Je ne pouvais pas utiliser le .exe fourni avec les binaires car étant sur linux. J’ai donc du récupérer les sources du projet ESPEasy Mega (v2) et me le compiler à la mano. Impossible de réussir sur Arduino IDE surement car le nouveau projet est fait pour PlateformIO (plugin de visual studio code). Donc je suis passé sur cet éditeur qui fonctionne parfaitement.
                      En trifouillant partout j’ai réussi à mettre les bons paramètres de compilation afin d’avoir les librairies IR activées dans le build.

                      Bon point pour la méthode manuelle. Il est possible de pré-configurer le Wifi et l’IP fixe. Donc après flash l’esp est directement configuré. C’est un très bon point surtout si on veut multiplier les puces.

                      C’est là que çà se corse. Un effet les signaux de la clim sont très long, et les librairies IR que vous utilisez dans le tuto ne fonctionne pas du tout avec. J’ai cherché plein de moyen en RAW, etc et impossible de contrôler cette clim. Après une multitude de recherche j’ai réussi à trouver une librairies dédiée aux pompes à chaleur dans le playground de espeasy (https://github.com/letscontrolit/ESPEasyPluginPlayground). Il gère une bonne quantité de marques de clims donc la mienne. j’ai donc rajouté cette libraries à mon projet, fixé tout les problèmes de compilation et chargé tout ceci. Et finalement BIIIIP le split a réagit à ma commande.

                      Petite note sur la configuration des puces dans ESPEasy. A partir de la version Mega (v2) il n’est pas nécessaire de spécifier l’IDX pour tous les émetteurs. C’est le cas par exemple pour l’emetteur IR ou Heatpump.

                      Le plus dur était fait. Ensuite l’intégration dans Domoticz est un jeu d’enfant.
                      Juste un petit mot sur Domoticz. Je veux pouvoir avoir un mode Off, Auto (géré par un planning) et Forcé et avoir un commutateur Chaud / Froid global pour toutes les clims. Je n’ai donc pas pu utiliser le plannificateur des switch et je suis passé par des scripts LUA pour faire ceci.

                      Prochaine étape : acheter ou faire des boitiers dignes de ce nom. Si vous avez des idées je suis preneur.

                      Voilà
                      Bonnes fêtes

                    3. Bonjour Romain, j’espère que vous allez bien.

                      Merci pour vos explications claires, je pense que cela va aider pas mal de personnes. Je vais avoir besoin sous peu de dupliquer des télécommandes. Je vous dirai si cela a été un parcourt du combattant ou non…

                      @Bientôt Anders

  9. Bonjour à tous ! Bah, moi j’ai tout suivi à la lettre, mais j’ai un message pas bon du tout : irsend : hardware does not support sending !! pourtant tout à l’air bon, y compris mes soudures. Une idée ?

    1. Bon, je n’avais qu’à lire jusqu’au bout ! En fait, la réponse se trouve plus haut mais avec AUSSI un RASPBERRY PI 2 et Jessie :

      taper : sudo nano /boot/config.txt

      décommentez les lignes suivantes :

      # Uncomment this to enable the lirc-rpi module
      #dtoverlay=lirc-rpi

      # Uncomment this to override the defaults for the lirc-rpi module
      #dtparam=gpio_out_pin=16
      #dtparam=gpio_in_pin=17
      #dtparam=gpio_in_pull=down

      là c’est mieux, plus de message inquiétant !

      En tout cas merci pour ce tuto et à l’expérience de chacun !

      Bonne continuation
      Domotifan

      1. Bonjour Domotifan, j’espère que vous allez bien.

        Content que vous ayez trouvé une solution et que vous la partagiez ici

        Le tuto est un peu obsolète alors un petit update ne fait pas de mal : MERCI

        @Bientôt Anders

  10. Bonjour Anderson69s
    C’est un bon travail que vous avez réalisé.j,ai un problème avec la commande irsend
    irsend SEND_ONCE key xxx « irsend command failed » « irsend unknown remote: »LED »

    Merci

    1. Bonsoir Roger, j’espère que vous allez bien.

      Il me semble que votre problème provienne du nom de la télécommande utilisée. Lorsque vous enregistrez votre télécommande avec irrecord dans la partie 3, il vous faut regarder le nom définit en face de NAME dans votre fichier *.conf.

      De mémoire, par défaut irrecord définit le NAME sur l’arborescence du fichier *.conf. Dans notre cas, le nom de votre télécommande aura de grande chance d’être : /home/pi/nom_de_votre_fichier.conf

      Donc votre commande irsend devrait ressembler plus à cela : irsend SEND_ONCE /home/pi/nom_de_votre_fichier.conf BTN_0

      J’espère que cela vous éclaire un peu. N’hésitez pas à poser d’autres questions même si elles peuvent sembler être idiotes, je me ferai un plaisir de répondre et qui sait cela servira sans doute à quelqu’un d’autre 😉

      @+ Anders

  11. Bonjour, si tu cherches toujours des solutions pour le 433Mhz et la domotique.
    Un émetteur directement relié sur les GPIO du raspberry pi et node red pour l’interface. Et si tu es vraiment chaud le projet jarvis pour la commande vocale

    1. Bonjour Alexandre, j’espère que vous avez passé une bonne journée.

      Je ne suis pas spécialement fan des puces à bas coût en 433Mhz, tous mes essais ont surtout mis en avant un parasitage monstrueux de la bande…

      Je dois avouer que j’ai fait le flemmard pour ma domotique et que le RFLink était la solution toute faite. Mais je ne regrette vraiment pas mon achat, un plaisir à configurer et sans ce casser la tête à écrire une ligne de code…

      @Bientôt Anders,

  12. Bonjour,
    je suis en phase te test et apprentissage de votre tuto.
    Mais j’ai un petit soucis.
    En effet, après avoir lancer « irrecord -d /dev/lirc0 ~/out.conf » puis « appuyer sur entrer  » et lancer la lecture avec l’affichage de « points » je me retrouve a avoir un point presque toutes les minutes.
    Et appuis environ 1 seconde sur chaque bouton de ma télécommande mais ça avance pas, ou très peu.
    Est-ce normal?
    D’avance merci.

    1. Bonsoir Willy, j’espère que vous allez bien.

      Je suis désolé pour ma réponse un peu tardive, mais j’ai profité d’un beau week-end dans le Tarn…

      Pour répondre à vos questions, je me souviens qu’il faut bien être en face de la LED IR réceptrice et ne pas hésiter à tenir la touche enfoncée. Une fois que quelques points sont apparus, passer à la touche suivante et maintenez la enfoncée etc…

      Le processus peu être rapide ou long tout dépend du codage que la télécommande utilise.

      Avez-vous pût avancer de votre côté?

      @Bientôt Anders

      1. Bonjour,
        j’ai pu enfin réussir a lire les télécommandes.
        Malheureusement, je n’arrive pas à les renvoyer maintenant.
        « irsend SEND_ONCE TV KEY_POWER » ou autre, rien.
        En faisant « irw », j’arrive « 00000000e0e040bf 00 KEY_POWER TV ».
        Merci encore de votre aide.

        1. Bonsoir Willy, j’espère que vous allez bien.

          Effectivement votre problème est peu courant. Le fait que vous arriviez à recevoir et lire le signal de votre télécommande est une bonne chose. Mais si cela se trouve, votre LED IR émettrice ne fonctionne peut-être pas, ou peut-être que la TV ne reçoit pas le signal émis depuis le Raspberry…

          Il peut y avoir pas mal de raisons il va donc falloir procéder par étapes. Dites-moi ce que vous avez essayé s’il vous plaît.

          @Bientôt Anders

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Traduction :