:::: MENU ::::

TIP : Configurer sa télécommande HDMI-CEC avec Kodi

Disposant d’une télé compatible CEC, j’utilise la télécommande de ma TV pour contrôler mon XBMC/Kodi. Il est possible de configurer sa télécommande pour réaliser des actions personnalisées sur certains boutons. Un exemple avec l’activation/désactivation de l’effet de lumière « ambilight » via un simple bouton.

Après avoir installé hyperion pour controller vos ampoules, il est temps de se demander comment désactiver les effets de lumières quand on ne les désire pas.

La cerise sur le gateau serait donc de pouvoir activer et désactiver rapidement les effets « ambilight » via un bouton dédié. La procédure suivante va vous permettre de réaliser ce raccourci.

La procédure suivante s’applique pour XBian, certains liens de fichiers seront à adapter si vous utilisez une autre distribution (RaspBMC par exemple).

Création du script d’activation/désactivation

Pour que le script soit fonctionnel, curl doit être installé sur votre distribution :

sudo apt-get install curl

Création d’un fichier script :

nano /home/xbian/toggleHyperion.sh

Contenu :

#!/bin/bash
 
if [ `sudo /sbin/initctl status hyperion | grep running | wc -l` = 1 ]
then
    curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":1,"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"Hyperion","message":"Disabled","image":"/home/xbian/hyperion.png"}}' http://127.0.0.1:8080/jsonrpc
    sudo /sbin/initctl stop hyperion
 
else
    curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":1,"jsonrpc":"2.0","method":"GUI.ShowNotification","params":{"title":"Hyperion","message":"Enabled","image":"/home/xbian/hyperion.png"}}' http://127.0.0.1:8080/jsonrpc
    sudo /sbin/initctl start hyperion
fi

Via ce script, on va vérifier l’état du service hyperion et l’éteindre ou l’allumer suivant le besoin. Une notification sur XBMC sera également affichée lors de l’opération.

On rend notre script exécutable :

sudo chmod +x /home/xbian/toggleHyperion.sh

On récupère également le logo qui sera utilisé dans la notification XBMC :

wget http://code4pi.fr/ressources/hyperion.png -o /home/xbian/hyperion.png

Mappage du bouton de la télécommande

Copie du modèle de configuration :

cp /usr/local/share/xbmc/system/keymaps/remote.xml /home/xbian/.xbmc/userdata/keymaps/remote.xml

Edition du fichier de configuration :

nano /home/xbian/.xbmc/userdata/keymaps/remote.xml

Dans la première partie du fichier (Sous <keymap><global><remote> ), on modifie la ligne suivante :

<blue>XBMC.ActivateWindow(MyPictures)</blue>

Par la ligne suivante :

<blue>XBMC.System.Exec("/home/xbian/toggleHyperion.sh")</blue>

Dans cette situation, le bouton bleu de ma télécommande va me permettre d’activer/désactiver le service hyperion. Il est possible d’associer une autre touche de votre télécommande en fonction de vos envies/besoins.

Pour que la nouvelle configuration de télécommande soit prise en compte, un redémarrage de la Raspberry est nécessaire :

sudo reboot

 

EDIT 17/11/2015 : Depuis la sortie de Kodi (anciennement XBMC) il est possible que les arborescences de configuration aient changé sur vos différentes distributions. Pour obtenir le nouveau chemin il suffit souvent de remplacer .xbmc  par .kodi .

 

Ressources :

How to: turn Hyperion on/off using your TV remote

A propos de l'auteur :

Passionné par le monde informatique et ses applications dans la vie quotidienne. Chez moi sont hébergées deux RPi, l'une dédié multimédia, l'autre centre domotique. J'ai également conçu une solution de monitoring de chaufferie collective où notre chère carte fruité est le point central.


35 Comments

  • Répondre Maxime |

    Bonjour,

    Je viens encore demander de l’aide…
    Je n’arrive pas à faire exécuter le script. en appuyant sur la touche. J’ai bien tout modifié pour faire fonctionner le tout sous OSMC (normalement), mais en appuyant sur la touche bleue, rien ne se produit.

    Si j’exécute les lignes du script, cela fonctionne (j’ai juste modifié le port en 80, et l’arrêt et lancement de hyperion par sudo service hyperion stop ou start).

    Je vous remercie.

    • Répondre Manu |

      C’est surement au niveau de l’attribution de la touche dans le fichier de configuration de la télécommande qu’il y a un soucis.
      Est-ce que tu as redémarré ton système pour que les modification soient prises en compte ?
      Il est possible également que le chemin vers le fichier de configuration ai subit des modification depuis le passage à Kodi (.xbmc/userdata/keymaps/remote.xml est peut-être devenu .kodi/userdata/keymaps/remote.xml).
      Les autres touches de ta télécommande sont fonctionnelles (croix directionnelle, touche OK…) ?
      Je suis actuellement sous XBian et je n’ai jamais testé OSMC, mais ça ne semble pas être radicalement différent (base Debian).

  • Répondre Maxime |

    Merci encore pour ta réponse.

    Je suis en cours de réinstallation de tout le système suite à quelques mauvaises manips qui ne concernent pas Hyperion.

    A priori l’attribution des touches fonctionnait bien car les touches étaient fonctionnelles, notamment les couleurs qui renvoient vers Images, Musiques etc… J’arrive même à modifier la touche bleue pour lancer ces différents dossiers, et les modifications sont bien prises en compte dans le redémarrage.

    C’est en attribuant la commande System.Exec(« /home/osmc/toggleHyperion.sh ») à la touche que rien ne se passe… Je l’ai pourtant bien rendu exécutable avec sudo chmod +x.

    J’ai bien modifié les chemins des différents fichiers pour l’adapter à OSMC. Existe-t-il un moyen de tester le bon fonctionnement du script sans la touche ? J’arrive à faire fonctionner les lignes du script une à une pour tester que mes chemins modifiés sont bons, mais pas le script entier d’un coup.

    Je te remercie.

    • Répondre Manu |

      Pour tester le script en entier, tu te place dans le dossier qui le contient :
      cd /home/osmc/
      Puis tu exécutes le script via la commande suivante :
      ./toggleHyperion.sh

      Si le script ne fonctionne pas à cette étape alors c’est dans le script qu’il y a un soucis.
      J’ai un vague souvenir concernant des soucis avec l’utilisation de la commande classique : « service hyperion start/stop »
      En effet ça m’avait aussi choqué de ne pas l’utiliser à la place de « /sbin/initctl stop hyperion » et finalement ça ne fonctionnait pas. Ton problème peut donc venir de ta modification.

  • Répondre Maxime |

    Lorsque je teste le script, j’obtiens le message « -bash: ./toggleHyperion.sh : /bin/bash^M : mauvais interpréteur: Aucun fichier ou dossier de ce type ».

    Donc visiblement, j’ai un problème de mauvais retours chariots que je n’arrive pas à corriger…

    Une idée ? Merci

  • Répondre Maxime |

    C’est bon j’ai réussi à tout faire marcher correctement !

    J’ai juste eu à éditer le script directement via le Rpi et à modifier ce qui suit dans le script pour le faire fonctionner avec OSMC (si cela peut servir à certains) :
    – Utiliser « service hyperion start/stop » au lieu de « /sbin/initctl start/stop hyperion »
    – Modifier le port 8080 par 80 (par défaut dans mon cas)
    – Modifier tous les chemins de fichiers en remplaçant xbian par osmique
    – Remplacer « XBMC.System.Exec » par « System.Exec » (je ne suis pas sûr que cela soit nécessaire

    Encore merci pour cette aide !

    J’ai maintenant une autre question (encore ?!)…

    Comment ne pas lancer Hyperion par défaut au démarrage d’OSMC, ou plutôt le démarrer et le désactiver directement en éteignant les lampes pour pouvoir seulement le lancer si besoin à l’aide de la télécommande ?

    Je ne sais pas si cela est possible.

    Merci

  • Répondre Thiio |

    Bonjour,

    Juste un message pour vous dire que ça marche nickel ! Merci pour le tuyau 🙂

  • Répondre Oliv44 |

    bonjour,

    super tuto, mais je ne parvients pas a installer le boutton sur mon OSMC.
    je ne trouve pas le remote.xml !!
    Help 😉

  • Répondre Girlsoda |

    Tout d’abord bonjour et merci pour ce site vraiment intéressant.
    Je débute juste dans le monde du Raspberry, je viens donc de faire l’acquisition d’un Raspberry pi2 et d’un systeme lightberry qui fonctionne avec Hyperion, sous OSMC.
    Tout à fonctionné du premier coup. Et justement je cherche un moyen d’éteindre mon lightberry sans avoir à le débrancher.
    Bon je débute, donc en cherchant, j’avais pensé le faire par requête http, je sais pas comment faire et si cela et possible, via un bouton connecté (flic en l’occurrence).
    Sinon la méthode avec la télécommande est vraiment pas mal, mais dans ce cas serait il possible d’avoir les script pour OSMC et en savoir un peu plus sur la manière de les mettre en place.(est ce que tout se fait par ssh ou si il faut créer un fichier sur son ordi et le mettre ensuite dans un répertoire de OSMC)

    • Répondre Manu |

      Merci pour les compliments. N’étant pas un utilisateur de OSMC il m’est difficile d’apporter des indications précises sur la méthode à suivre. Cependant un précédent lecteur (Maxime) à laissé un commentaire à propos de soucis sur OSMC et à finalement trouvé une solution. Ces commentaires pourront sûrement t’aiguiller dans ta configuration.
      Concernant la méthode pour créer le fichier, il est possible de le faire des deux façons proposées : soit directement en SSH via un éditeur de texte (vim ou nano) ou alors depuis son PC et le transférer vers le Raspberry via FTP par exemple.

  • Répondre Girlsoda |

    Merci, bon j’ai réussi à modifier le fichier le fichier et à la tester via putty, et tout fonctionne.
    Mon problème et que de mon ordinateur quand je vais sur /reseau/OSMC dedans je n’ai que 4 dossiers, music, movies….et Hyperion ainsi que les derniers fichiers créer à savoir « togglehyperion.sh » et les png.
    Comment avoir accès au reste du coup, tout ce qui est Var / bin etc… Car par exemple lorsque je cherche un fichier video depuis le Raspberry je vois ces répertoire.

    • Répondre Manu |

      Pour accéder aux dossiers systèmes (/var, /bin, /etc…) il faut forcément utiliser une connexion SSH via putty par exemple. Impossible d’y accéder directement en partage réseau (samba) comme pour les dossiers « music » ou « movies ».
      C’est comme sur une machine Windows, les partages réseaux servent aux documents, musiques et vidéos, les fichiers systèmes ne sont accessible que depuis une session sur la machine elle-même (dans le cas standard).
      Une alternative à la connexion SSH est de créer son fichier sur sa machine Windows et de le déposer sur le Rapsberry via SCP (WinSCP sur Windows). Ce protocole permet d’établir une connexion via SSH (en utilisant les même identifiant et sans installation supplémentaire sur le Raspberry) pour déposer des fichiers, à la manière d’un client FTP (FileZilla sur Windows).

      Content que tu ai réussi à t’en sortir dans la configuration !

  • Répondre Girlsoda |

    Merci à toi, je touche au but, j’ai installé winscp , j’ai trouver mon fichier remote.xml, mais quand je veux le modifier ou le remplacer , permission insuffisante

    • Répondre Manu |

      Au lieu de se connecter avec le compte osmc il faut utiliser le compte root (super administrateur Linux, désactivé par défaut sur OSMC).
      Pour l’activer il suffit de se connecter en SSH avec le compte osmc et de saisir : « sudo passwd root » pour afin d’activer le compte et de choisir un mot de passe. Ensuite il suffit de se connecter via WinSCP avec le compte root et le mot de passe choisis.

      Tu n’avais pas réussi à modifier le fichier « remote.xml » auparavant ?

  • Répondre Girlsoda |

    Bonjour, hourra j’ai réussit, en fait je suis allé dans les fichiers cachés, » userdata » , du coup je n’ai pas eu besoin d’aller à la racine, et je n’ai pas eu besoin d’autorisation supplémentaire, encore merci.

    • Répondre Manu |

      Je n’ai pas tout compris mais OK. Les fichiers cachés d’accord (tout ce qui commencent par « . » sous Linux sont des dossiers ou fichiers cachés) mais « pas eu besoin d’aller à la racine » je ne vois pas ce que tu veux expliquer.
      Content que ça fonctionne !

  • Répondre Girlsoda |

    Une autre question, ton logo Hyperion apparaît bien avec le thème confluance, lorsque j’active ou désactive hyperion. Par contre, quant je changes de theme, AEON mq6, plus d’icône en bas à droite, mais un bandeau noir en haut avec écris unable ou disable. Une idée.
    Merci

    • Répondre Manu |

      Concernant l’image dans les notifications, ce paramètres n’étant pas obligatoire dans le fonctionnement des requêtes vers kodi, certains thèmes ne l’affichent simplement pas car ils n’ont pas été conçu pour. Si ça marche sur Confluence mais pas sur un autre thème alors le soucis vient du thème en question. Par contre c’est étrange que le titre (« Hyperion ») ne soit pas pris en charge par le thème.

  • Répondre Girlsoda |

    Re, meme en fesant Sudo passwd root, j’arrive bien à changer le mot de passe , et quand je me connecte avec winscp j’ai toujours accès refuser.

  • Répondre Girlsoda |

    Je met donc root en utilisateur, puis le mot de passe créer avec ta commande, mais mot de passe faux, la je comprends pas.

  • Répondre Girlsoda |

    bonjour, serait il possible de faire un second togglehyperion, qui serait donc togglehyperion2 et qui me lancerai la commande « sudo /usr/bin/hyperiond /etc/hyperion.config2.json » pour lancer ma seconde session qui est donc « hyperion.config2.json »

    • Répondre Manu |

      Le script actuel ne fonctionne qu’avec les services. Lors d’un appui sur le bouton il vérifie si hyperion est actuellement lancé : Si non il lance le service // Si oui il le stoppe. Il est possible de créer un script pour un lancement manuel via la commande sudo /usr/bin/hyperiond /etc/hyperion.config2.json mais cela ne permettrai que de le lancer uniquement. Un lancement manuel de cette manière risque également de provoquer des dysfonctionnement du « toggleHyperion » principal : il ne saura pas quel daemon arrêter.
      Le script « toggleHyperion2.sh » serai simplement :
      #!/bin/bash
      sudo /usr/bin/hyperiond /etc/hyperion.config2.json

  • Répondre Girlsoda |

    Super , maintenant tout fonctionne, le lightberry avec arrêt/marche d’hyperion via le bouton vert de ma télécommande et demarrage d’hyperion pour mes deux hue de chaque côté de la télé via le bouton jaune de ma télécommande. Encore merci, grâce à toi j’ai pu tout paufiner.

    • Répondre Manu |

      Je ne suis pas utilisateur de OpenELEC (actuellement je suis sous OSMC), mais je sais que cette distribution ne contient pas de gestionnaire de paquet (donc pas de commande apt-get). Cependant d’après mes quelques recherches il semblerai que le paquet curl soit déjà installé de base, donc pas besoin de le réinstaller via une commande quelconque.

  • Répondre Gotcha |

    Bonjour,
    J’ai suivi les instruction indiquées ainsi que les remarques de l’utilisateur « Maxime » pour adapter à ma configuration et je n’arrive pas à obtenir l’effet escompté.
    Tout ce qu’il se passe c’est l’affichage (sans icône, mais ça apparemment c’est inérant au thème de mon OSMC) du message « Hyperion Enable » et l’Ambilight me fait un bref effet de désactivation pour mieux se réactiver dans la foulée.

    Bref, le service n’arrive pas à s’éteindre.

    Voici le contenu de mon fichier toggleHyperion.sh :

    #!/bin/bash

    if [ `sudo systemctl status hyperion.service ; sudo /etc/init.d/hyperion status ; sudo /sbin/initctl status hyperion | grep running | wc -l` = 1 ]
    then
    curl -v -H « Accept: application/json » -H « Content-type: application/json » -X POST -d ‘{« id »:1, »jsonrpc »: »2.0″, »method »: »GUI.ShowNotification », »params »:{« title »: »Hyperion », »message »: »Disabled », »image »: »/home/osmc/hyperion.png »}}’ http://127.0.0.1:80/jsonrpc
    sudo systemctl stop hyperion.service 2>/dev/null; sudo /etc/init.d/hyperion stop 2>/dev/null ; sudo /sbin/initctl stop hyperion 2>/dev/null

    else
    curl -v -H « Accept: application/json » -H « Content-type: application/json » -X POST -d ‘{« id »:1, »jsonrpc »: »2.0″, »method »: »GUI.ShowNotification », »params »:{« title »: »Hyperion », »message »: »Enabled », »image »: »/home/osmc/hyperion.png »}}’ http://127.0.0.1:80/jsonrpc
    sudo systemctl start hyperion.service 2>/dev/null ; sudo /etc/init.d/hyperion start 2>/dev/null ; sudo /sbin/initctl start hyperion 2>/dev/null

    fi

    Merci pour votre aide 🙂

    • Répondre Manu |

      Bonjour,

      Depuis le tutoriel j’ai migré sous OSMC mais je n’ai pas remis en fonctionnement la partie « Ambilight », ne disposant que des ampoules Hue. Je vais donc essayer d’aider du mieux que je peux.
      Tu indiques avoir suivi les instructions de Maxime mais je vois dans ton fichier que tu n’as pas remplacé « /sbin/initctl start/stop hyperion » par « service hyperion start/stop » comme il a indiqué.
      Il me semble également que la gestion des services a beaucoup évoluée depuis la publication du tutoriel. Tente déjà en remplaçant les commandes suivantes :
      – « /sbin/initctl start hyperion » par « service hyperion start »
      – « /sbin/initctl stop hyperion » par « service hyperion stop »
      – « /sbin/initctl status hyperion » par « service hyperion status »

Laissez un commentaire