Scénario Jeedom : contrôlez vos ampoules connectées Mi-Light grâce à Kodi

2

Je ne sais pas pour vous, mais après une bonne journée au boulot, j’ai envie de passer une soirée où je suis peinard et bien calé dans mon canapé pour me visionner un film ou une série. Bien évidemment en bon geek que je suis le MacBook Pro n’est pas très loin. Vous êtes d’ailleurs peut-être dans ce cas-là ;-) Il m’arrive (pour ne pas dire fréquemment) d’avoir les mains occupées sur mon clavier et c’est précisément dans mon salon même que m’est venue l’idée d’automatiser mon ampoule connectée Mi-Light.

Quand je regarde la TV, je ne la regarde ni dans le noir complet, ni avec une lumière trop intense, juste un compromis entre les deux car j’aime bien avoir un minimum de luminosité dans ma pièce (surtout si je suis derrière un autre écran). Une ampoule connectée du style Philips Hue ou son clone chinois Mi-Light est capable de faire cela. Ces dernières ampoules sont tout bonnement géniales car en plus d’être d’un très bon rapport qualité/prix on peut y appliquer n’importe quelle couleur de l’arc-en-ciel, les éteindre ou les allumer à partir d’une télécommande ou un contrôleur Wi-Fi, gérer l’intensité, etc…

J’ai donc décidé d’automatiser la baisse de l’intensité de la lumière en tamisant à 50% mon ampoule connectée Mi-Light de mon salon, ceci uniquement lorsque je démarre un film ou une série sur mon média center «Kodi».

Il faut pour cela fonctionner en plusieurs étapes :

  • L’installation du plugin « Script » sur Jeedom
  • Etudier l’API fournie par « Kodi » pour récupérer l’information disant qu’un média est en cours de lecture
  • Créer un script récupérant cette information pour la stocker sur Jeedom et l’exploiter dans un scénario
  • Télécharger et paramétrer un script existant permettant de contrôler une ampoule Mi-Light par le biais de son contrôleur Wi-Fi
  • Réaliser un scénario exploitant l’information de « Kodi » pour tamiser l’ampoule à 50% ou la rallumer complètement

I. Les scripts dans Jeedom

Allez on commence par le plus simple: l’installation du plugin Script.

scenario_jeedom_kodi_milight_1Si vous ne connaissez pas le plugin Script pour Jeedom, sachez que vous loupez quelque chose. Ce plugin permet d’héberger et d’exécuter vos propres scripts fait maison. En clair, vous pouvez développer tout ce que vous souhaitez et qui n’existe pas dans les fonctionnalités de Jeedom. Si vous maitrisez un langage de programmation tel que shell, ruby, python, PHP, alors vous serez capable d’exécuter tout ce que vous souhaitez. Bien évidemment, nous ne verrons pas dans cet article comment coder un script mais comment en utiliser un déjà tout fait. Mais avant ça, installez le plugin, activez-le… et c’est tout !

Pour réaliser cet automatisme, il faut ensuite récupérer une information capitale de «Kodi»: savoir si un film est en cours de lecture ou non. Sachez que tout ce qui peut être fait ou vu par l’interface graphique de «Kodi» l’est aussi par son API.

L’API de «Kodi» peut être contactée par le protocole HTTP sur le port 80 par défaut. Vous devez l’avoir activée sur « Kodi » préalablement. Cédric a rédigé un article pour l’installation de votre média center et aborde ce point en expliquant comment faire.

Revenons à ce que nous recherchons. Dans la documentation de l’API de «Kodi» et plus précisément dans les «InfoLabels» le paramètre nommé «Player.Filename» permet de récupérer le nom du média en cours de lecture. Si aucun média n’est en cours une valeur vide est rendue. Nous pouvons récupérer la valeur via l’API de «Kodi» qui utilise au passage du JSON-RPC pour l’interpréter à notre guise. Il faut donc respecter une certaine syntaxe dans la requête HTTP pour obtenir le résultat.

C’est là que le plugin « Script » entre en jeu. Pour récupérer l’information voulue de «Kodi», nous allons construire la requête JSON-RPC via un script PHP qui sera lancé par le plugin « Script ». N’ayez crainte, je ne vais pas vous demander de coder le script puisque je vous le fournis. Rendez-vous dans le plugin « Script » et créez-en un nouveau que vous nommerez par exemple «Kodi Salon» :

scenario_jeedom_kodi_milight_2On va paramétrer tout de suite la tâche cron en la lançant aussi souvent que possible, c’est-à-dire toutes les minutes :

scenario_jeedom_kodi_milight_3N’oubliez pas de cocher la case « Activer » et « Visible » pour que votre script puisse fonctionner.

Cliquez ensuite sur l’onglet « Commandes » pour créer notre fameux script et cliquez sur «Ajouter une commande»:

scenario_jeedom_kodi_milight_4Cliquez sur le bouton «Nouveau» et donnez un nom à votre script:

scenario_jeedom_kodi_milight_5Vous tombez sur une page «Editer» où l’on peut taper du texte pour créer du code et formaliser le script:

scenario_jeedom_kodi_milight_6Voici le script à copier-coller dans votre fenêtre: télécharger le script.

Dans ce script, il y a cette ligne:

DEFINE(‘IP_KODI’,’192.168.1.40′);

Dans mon cas, le media center de mon salon sous «Kodi» a comme IP 192.168.1.40. A vous de changer cette IP par la vôtre. C’est tout ce que vous devez changer dans le script que je vous fournis. Enregistrez le script et donnez le nom «En lecture» à la ligne qui lancera votre script PHP. Vous devriez avoir quelque chose qui ressemble à ça:

scenario_jeedom_kodi_milight_7Cliquez ensuite sur le bouton «Sauvegarder». Après avoir fait ça, un bouton «Tester» va apparaître sur la ligne:

scenario_jeedom_kodi_milight_8Cliquez sur le bouton «Tester», une fenêtre apparaîtra en indiquant «oui» si vous avez un film en cours de lecture sur votre média center au moment où vous cliquez :

scenario_jeedom_kodi_milight_9Dans le cas contraire, vous aurez comme résultat «non»:

scenario_jeedom_kodi_milight_10Si lorsque vous lancez un film, votre résultat est toujours «non» c’est soit parce que:

  • votre média center n’est pas correctement configuré pour qu’il puisse être joignable par l’API
  • l’IP que vous avez renseignée dans le script n’est pas la bonne

Si vos tests sont concluants, cliquez de nouveau sur le bouton «Sauvegarder» et on passe à la suite. Jeedom est désormais capable de récupérer l’information pour savoir si un média est en cours de lecture ou non sur votre «Kodi».

Toutes les ampoules installées dans ma maison sont des ampoules Mi-Light, j’ai donc réalisé ce système sur la base de ces ampoules. A vous de rechercher sur Internet comment communiquer par le biais de Jeedom avec d’autres types d’ampoules comme les Philips Hue (un plugin existant déjà pour ces dernières).

Pour pouvoir piloter des ampoules Mi-Light en Wi-Fi, il faut que vous ayez le contrôleur Wi-Fi Mi-Light qui ressemble à ça:

scenario_jeedom_kodi_milight_11Il y a 2 façons de paramétrer l’ampoule avec le contrôleur Wi-Fi:

  • Soit en passant par l’application Mi-Light disponible sur le Google Play Store et sur l’Apple Store
  • Soit en passant par l’interface web disponible en tapant l’IP dans son navigateur

Je vous invite donc à procéder au paramétrage de vos ampoules avant de continuer. Vous trouverez facilement les informations sur la toile.

Nous allons maintenant faire un script pour pouvoir communiquer avec une ampoule Mi-Light.

Un script déjà tout fait existe sur le market de Jeedom. Pour le récupérer, il suffit de se rendre sur le dashboard du plugin «Script», l’écran vous affichant tous les scripts que vous avez créés, et de cliquer sur «Market»:

scenario_jeedom_kodi_milight_12Recherchez «milight» dans la barre de recherche et cliquez dessus puis sur le bouton «Installer»:

scenario_jeedom_kodi_milight_13La personne ayant mis à disposition ce script explique comment l’implémenter sur ce lien.

Nous n’aurons pas besoin de tout ce qu’il est possible de faire donc nous allons nous concentrer que sur ce que nous aurons besoin. Créez un nouveau script et nommez le «Mi-Light»:

scenario_jeedom_kodi_milight_14N’oubliez pas de cocher «Activer» et «Visible». Il n’est pas nécessaire de paramétrer une tâche cron puisque ce script sera exploité par un autre. Cliquez sur «ajouter une commande de script» et renseignez les valeurs suivantes:

scenario_jeedom_kodi_milight_15Nommez la ligne «white», choisissez «Script» pour la colonne «Type script» et «Action», «Message» pour la colonne «Type».

Choisissez enfin le script que vous avez téléchargé «milight.php» et rajoutez à la suite du lien qui se remplira automatiquement ceux-ci : white/setGroup=#title#/#message#. Ce qui donne de façon complète:

/usr/share/nginx/www/jeedom/plugins/script/core/ressources/milight.php

white/setGroup=#title#/#message#

Ajoutez de nouveau une ligne et nommez là «rgbw»:

scenario_jeedom_kodi_milight_16Choisissez de nouveau le script que vous avez téléchargé «milight.php» et rajoutez à la suite du lien qui se remplira automatiquement ceux-ci : rgbw/setGroup=#title#/#message#. Ce qui donne de façon complète:

/usr/share/nginx/www/jeedom/plugins/script/core/ressources/milight.php

rgbw/setGroup=#title#/#message#

Cliquez enfin sur le bouton «Sauvegarder».

Petite explication : Quelle est la différence entre «white» et «rgbw» ? La réponse est le type d’ampoule. Mi-Light englobe différents types d’ampoules. J’utilise personnellement des GU10 (spot) et des E27 (ampoule à gros culot). Il faut savoir que les GU10 utilisent la ligne «white» et les E27 la ligne «rgbw». Suivant ce que vous utilisez, l’une ou l’autre sera à choisir dans votre scénario.

II. Réalisation du scénario Jeedom pour gérer l’éclairage

On arrive à la finalité de ce que l’on souhaite à savoir que Jeedom détecte que Kodi a un média en cours de lecture et qu’il donne l’instruction à la lampe de tamiser son intensité de 50%. Pour ce faire, créez un nouveau scénario et nommez le par exemple «Contrôle Mi-Light par Kodi». Pour le mode du scénario choisissez «Provoqué» et comme événement votre script «Kodi Salon»:

scenario_jeedom_kodi_milight_17 scenario_jeedom_kodi_milight_18Ajoutez un bloc « Si » à votre scénario:

scenario_jeedom_kodi_milight_19L’instruction est simple:

  • SI notre script «Kodi Salon» renvoie «oui»
  • ALORS on exécute une commande du script «Mi-Light»  en lui donnant comme valeur «1» à «Titre» et «OnWhite/OnMid» en message. En clair, on demande à avoir une lumière blanche (OnWhite) et tamisée à 50% (OnMid)
  • SINON on exécute la même ligne à l’exception qu’on remplace «OnMid» en «OnMax» pour remettre l’intensité de la lampe au maximum.

Vous vous demandez peut-être à quoi correspond la valeur «1» dans «Titre» ? C’est le numéro de la zone où mon ampoule est configurée sur le contrôleur Wi-Fi. Les contrôleurs Wi-Fi possèdent 4 zones maximum. Suivant votre configuration, vous devez choisir la valeur «1», «2», «3», «4» ou encore «0» qui reprend les 4 zones si vous souhaitez tamiser toutes vos lampes.

J’ai choisi la ligne «rgbw» de mon script «Mi-Light» car l’ampoule de mon salon est une E27. Si vous avez des GU10, utilisez «white».

J’ai fait une petite vidéo de démonstration du scénario (on voit la pièce s’assombrir à 30 secondes et la lampe s’intensifier à 100% à la fin de la vidéo):

III. Conclusion

Grâce à ce scénario, votre lampe changera d’intensité automatiquement en fonction de ce que vous regardez sur votre TV. Vous pouvez bien évidemment adapter à votre guise ce que je vous ai mis en avant. Si vous préférez que votre lampe s’éteigne tout simplement au lieu de se tamiser c’est tout à fait possible avec Mi-Light.

Cet exemple nous a permis de nous familiariser un peu avec le plugin Script, très puissant, qui nous a permis de répondre à notre besoin, ceci gratuitement. Si vous préférez le côté « plug and play », et n’êtes pas à quelques euros, vous avez également la possibilité de passer par le plugin Kodi (dans ce cas pas besoin de scripts). Celui ci est extrêmement complet et bien réalisé, mais payant, et surtout surdimensionné par rapport au besoin que nous avions ici. Mais ca reste une autre possibilité.

Amusez-vous bien !

Partager

2 commentaires

  1. Salut. Pour info le plugin « Kodi » permet aussi de récupérer l’état sans le script (« Titre » comme tu le suggères ou « Status nb » pour une gestion plus fine).

    Je m’en sers pour allumer mes enceintes quand Kodi joue un media. Quand le media s’arrête, mes enceintes se coupent pour économiser de l’énergie. Le même scenario allume les enceintes quand mon décodeur TV s’allume (via le plugin Bbox TV).

    En tout cas cet article me donne envie d’acheter quelques ampoules pour faire le même effet tamisé :)
    ++

  2. Le plugin « Kodi » permet quasiment de tout faire :) mais dans ce scénario j’avais besoin que d’une information et je me voyais mal vous faire acheter un plugin juste pour celà.

    Le but de l’article est de montrer que si vous avez des connaissances en programmation, il vous ait possible de pouvoir effectuer ses choses par vous même sans passer par la case achat.

    Ravi de t’avoir donné envie de vouloir faire de même ^^

Laisser une réponse

Ne ratez plus aucune news !

Inscrivez vous à notre newsletter, et recevez chaque mois toute l'actualité du blog pour ne plus rien louper: actualité, guides, tutoriaux, concours !

Merci pour votre inscription !