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 .
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.
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).
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.
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.
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
Je n’ai jamais rencontré ce soucis et pourtant je travaille sur mes Raspberry depuis des machines aux OS variés (Terminal depuis MacOS, Terminal depuis Ubuntu, Putty depuis Windows).
La solution semble être ici, à voir si le paquet existe pour Raspbian : http://www.it-connect.fr/resoudre-lerreur-mauvais-interpreteuraucun-fichier-avec-dos2unix/
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
Bonjour,
Juste un message pour vous dire que ça marche nickel ! Merci pour le tuyau 🙂
bonjour,
super tuto, mais je ne parvients pas a installer le boutton sur mon OSMC.
je ne trouve pas le remote.xml !!
Help 😉
Bonjour,
Sur une distribution OSMC le fichier remote.xml doit se trouver dans le dossier
Si le dossier est vide ou le fichier n’existe pas il est possible d’utiliser ce modèle : https://github.com/xbmc/xbmc/blob/master/system/keymaps/remote.xml
En espérant avoir répondu à ton interrogation !
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)
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.
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.
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 !
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
Il faut utiliser le compte « root » si les droits actuels ne sont pas suffisants.
Ok mais comment fait tu
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 ?
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.
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 !
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
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.
Ok merci, je vais regarder ça, mais bon ce n’est que du chipotage car tout fonctionne.
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.
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.
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 »
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
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.
Bonjour,
comment faire pour installer curl sous openelec, il n’y a pas de commande apt-get…
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.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 🙂
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 »