Contrôler Kodi avec votre assistant Google
Aujourd’hui, nous allons réunir deux sujets qui me tiennent à cœur. Si vous avez suivi les articles précédents, vous avez compris que nous utilisons Google Home et son assistant pour contrôler l’ensemble de la maison à la voix : lumières, volets, musique…
Il y a un point non exploité qui m’intéressait de contrôler : mon centre multimédia Kodi. Mais à quoi cela sert ?
Il est vrai que tout le monde a une télécommande et qu’elle est efficace. Le problème est qu’elle l’est beaucoup moins dès le moment où la bibliothèque multimédia commence à être bien fournie. Il est par exemple difficile de trouver un film en particulier au milieu de plusieurs centaines d’éléments et la recherche sur Kodi est dans ce cas peu ergonomique à la télécommande.
J’ai également été déçu par la nouvelle version de Kodi qui s’annonçait compatible avec Google Assistant. La seule chose qu’il est possible de faire est la recherche dans les médias Kodi à travers l’interface d’Android TV, rien de bien sexy.
Ici, nous allons donc voir une méthode pour contrôler ce lecteur multimédia à la voix, et les avantages que cela peut apporter.
Commençons par la configuration :
Configuration de Kodi
Commençons par configurer Kodi. Pour cela, rendez-vous dans les paramètres du logiciel, puis dans « Services ». Dans la partie « Serveur web », autorisez alors le contrôle à distance. Entrez un mot de passe et autorisez le contrôle à distance.
Cela va avoir pour conséquence d’exposer une application web sur votre réseau local vous permettant de contrôler Kodi à partir de votre navigateur.
Pour vérifier que tout fonctionne, récupérez l’adresse IP de la machine où est installé Kodi. Pour cela, vous pouvez vous rendre dans les paramètres dans la partie « Infos sur le système ».
Ouvrez alors un navigateur sur votre PC ou smartphone et tapez cette adresse IP. Si votre serveur est bien configuré, vous devriez voir l’interface web permettant de contrôler votre lecteur multimédia.
Si tout est OK, amusez vous un peu avec le contrôle de Kodi avant de passer à la suite.
Présentation de l’application GoogleHomeKodi
Il s’agit d’une application Node.js permettant le contrôle de Kodi à travers des API confectionnées pour fonctionner avec Google Assistant et IFTTT. Alors oui sur le papier, ça paraît un peu complexe. Nous allons voir point par point à quoi cela correspond :
- Nous avons déjà parlé de Node.js qui est une plateforme de développement basée sur le langage JavaScript. Cela permet de réaliser rapidement des applications web.
- Cette application expose des API (Application Programming Interface), c’est à dire des interfaces auxquelles une application tierce tel que IFTTT va pouvoir se brancher.
- IFTTT utilise ces API pour connecter divers services entre eux — c’est sa spécialité. Et comme nous avons vu précédemment, il est capable de brancher une commande vocale Google Assistant à un appel API.
Installation de GoogleHomeKodi
Tout est clair pour vous, attaquons avec le téléchargement du projet GitHub. Pour cela, utilisez le bouton « Clone or download » sur la page du projet ou utilisez la commande « git clone » dans un terminal.
Installez ensuite un serveur Node.js permettant de déployer notre application. Pour cela plusieurs possibilités :
- Installer Node (Node 6 minimum) sur une machine locale. Cela peut être sur un PC Windows, un Raspberry Pi, un NAS Synology…
- Installer Node.js dans un conteneur Docker
- Déployer l’application sur Glitch(qui permet d’héberger des applications)
Chaque méthode à son lot d’avantages et d’inconvénients, dans notre cas, nous allons nous intéresser à une installation locale. Vous pouvez consulter la documentation si vous souhaitez mettre en place les autres méthodes.
Si vous ne possédez pas Node sur votre machine, installez le via la page de téléchargement.
Pour continuer, vous devez posséder un gestionnaire de dépendance pour récupérer les bibliothèques nécessaires au bon fonctionnement de l’application. Vous pouvez utiliser npm (node package manager) qui est installé par défaut dans l’installation de Node.
Une fois cette étape faite, il vous suffit de lancer la ligne de commande « npm install » dans le dossier de l’application. Les dépendances du projet seront alors téléchargées dans le dossier « node_modules ».
Configuration de GoogleHomeKodi
Dans le répertoire de l’application, copiez-collez le fichier « kodi-hosts.config.js.dist » présent à la racine du dossier et renommez le en « kodi-hosts.config.js ».
Éditez ensuite le nouveau fichier tel que :
Entrez les informations relatives à votre instance de Kodi (adresse IP, port, utilisateur, mot de passe). Remarquez que l’application peut gérer plusieurs instances de Kodi. Nous nous intéresserons qu’à une seule dans le cadre de notre exemple.
Dans la partie « globalConfig », vous pouvez définir la clé d’authentification qui sera à reporter dans IFTTT, le port de l’application ainsi que la clé d’utilisation de Youtube (si vous utilisez les commandes liées à Youtube).
Lancez l’application avec la ligne de commande « node server.js ». Si tout se passe bien, un message vous indiquera le port sur lequel votre application est déployée.
Testez-la en démarrant un navigateur et en entrant localhost:le-port. Vous devriez voir cette interface :
Cette page vous permet de tester les API et le lien jusqu’à Kodi. Vérifiez la connexion avec la route « /koditestconnection » et testez l’une des commandes par exemple la recherche de film avec la route « /playmovie?q=exempledefilm ».
Tout fonctionne ? Passons à l’étape suivante
L’ouverture à l’extérieur
Nous avons déjà abordé ce point à maintes reprises. Pour que votre application locale soit accessible de l’extérieur de chez vous, il est nécessaire de configurer votre routeur de tel sorte qu’il accepte les échanges directs avec le serveur Node. Pour cela, vous devez :
- Connaître votre adresse IP externe ainsi que l’adresse IP interne du serveur de l’application
- Créer des règles NAT pour rediriger les échanges avec ces adresses
- Si votre IP n’est pas fixe, il vous faudra passer par un service de dynDNS
Je vous laisse consulter l’article Installez Home-assistant sur lequel ces points ont déjà été abordés.
Configuration de IFTTT
Encore une fois, nous sommes sur du redit ici. Je vais passer rapidement, donc n’hésitez pas à consulter nos articles sur IFTTT avant. Dans notre cas, créez un nouvel applet qui prend une commande Google Assistant en entrée et permet l’appel à une API en sortie (Webhooks).
Je vous conseille de placer l’ingrédient $ (le paramètre) à la fin de la phrase. J’ai pu avoir quelques surprises en plaçant le $ au milieu.
Essayez une API de votre choix, par exemple, celle pour jouer un film (playmovie). Le paramètre TextField permet d’insérer le nom du film que Google Assistant aura transmis à IFTTT. Utilisez la méthode POST et le contenu json. Dans le corps de la requête, pensez bien à mettre le token que vous avez défini dans la configuration de l’application.
Utilisation
Testez votre applet. Si tout fonctionne sur cet exemple, vous pouvez implémenter d’autres applets selon ce que vous souhaitez contrôler dans Kodi comme lancer l’épisode suivant d’une série, mettre en pause…. Le choix est vaste et le travail de création d’applet peut être fastidieux.
Vous retrouverez toutes les possibilités de l’application ci dessous :
- Jouer un film, un genre de film, un film aléatoire d’une certaine année
- Reprendre un film
- Jouer le prochain épisode non vue d’une série
- Reprendre le dernier épisode en cours d’une série
- Binge watch une série
- Démarrer un épisode aléatoire ou particulier d’une série
- Jouer un nouvel épisode de séries
- Lancer une chanson, un album, un artiste, un genre de musique
- Contrôle du lecteur : pause, stop, couper le son, changer le volume du son, navigation
- Contrôle de Kodi : activer, arrêt, veille, hibernation, redémarrer
- … et plus encore
Certaines commandes peuvent s’avérer utiles, les commandes de bases pour la navigation sont — je pense — peu intéressantes.
À partir de cela, de nombreux scénarios peuvent venir se greffer notamment à partir de Google Home, comme nous avons pu le voir dans cet article.
Il est également intéressant de pouvoir démarrer Kodi grâce au HDMI CEC lorsque ce dernier est en veille. Cela est bien prévu par l’application et un plugin Kodi, mais cela n’a pas fonctionné pendant mes tests.
Enfin, le contrôle vocal prend toute sa dimension lorsque l’on possède une box Android TV avec un micro intégré à la télécommande. C’est le combo parfait pour naviguer au plus vite dans votre bibliothèque multimédia.
Quelques inconvénients
Ce système peut aussi avoir quelques inconvénients. Le système devient en effet complexe avec 3 applications nécessaires pour passer une commande vocale. Et cela se ressent lorsque l’on rencontre des problèmes.
Par exemple, si votre serveur est éteint ou que vous rencontrez un problème, Google vous répondra OK sans pour autant exécuter l’action. IFTTT agit en effet bêtement en tant que relayeur. Je vous conseille donc d’avoir un œil sur les logs de l’application au début pour vérifier chacune de vos commandes.
Conclusion
Les possibilités sont grandes quand au contrôle de Kodi et encore une fois, la création des scénarios dépend plus de votre imagination que des limitations techniques.
Cela peut être intéressant en attendant que Kodi intègre complètement Google Assistant.
Si vous rencontrez des problèmes, n’hésitez pas à consulter la documentation (en Anglais), elle est très bien réalisée.
Expert technique en développement web et mobile, je suis passionné par les nouvelles technologies et plus particulièrement par la domotique, les environnements web et mobile et les systèmes intelligents.
Bonjour,
Est-il possible de faire la même chose avec une application IPTV sur kodi. Et de lancer par exemple « ok google, lance TF1 » ou « Ok google, met le film … »
Bonjour,
s’il s’agit d’un plugin IPTV, je ne pense pas. Vous pouvez uniquement démarrer une extension à la voix.
Il est également possible de contrôler le changement des chaînes PVR (lance tf1, mais je ne pense pas d’indiquer un film du guide tv).
A tester donc selon votre cas.
Bonjour j ai pas tout compris sur l installation sur un sysnology que dois je installer exactement
Bonjour Stéphane,
pour l’installation sur un NAS Synology, il faut commencer par installer Node.js puis vérifier que l’application se lance bien, avant de créer un script pour lancer l’application au démarrage du NAS. Je vous conseille de regarder des exemples sur Google ou cette vidéo : https://www.youtube.com/watch?v=tkbu3TT5LT8
bonjour jérémy merci pour ton tuto !
j’ai juste une question, comment je peux avoir l’adresse ip du serveur node que je dois renseigner dans ifttt ?
merci d’avance pour ta réponse
olivier
Bonjour gruson,
cela dépend, si votre serveur node est hébergé sur votre réseau local. Si c’est le cas, il faut connaître votre IP publique (http://www.mon-ip.com/). Il faut ensuite déclarer une règle NAT dans votre routeur permettant d’accéder directement au serveur depuis l’extérieur (ouverture de ports). Bon courage.
Bonjour Jérémy,
Merci pour ton tuto très intéressant mais de la même manière est il possible de contrôler Kodi sur une Xiaomi MiBox TV?
Merci d’avance pour ta réponse.
Bonjour Franck, merci pour votre message. Oui il est tout à fait possible de contrôler Kodi sur une box Xiaomi Mi box TV. C’est d’ailleurs ce que je fais dans la vidéo de démonstration.
Bonjour. Le sujet n’est pas récent mais j’aurais aimé savoir si vous pouviez m’aider. J’ai kodi installé sur une Android box relié à ma livebox et j’ai le serveur node sur mon PC windows 10 pro. Lorsque je tape mon adresse ip externe avec le port 8099, j’ai bien une page qui s’ouvre et lorsque j’exécute le test de connexion, celui ci marche (message sur mon écran de tv). Seulement lorsque je veux lancer un film en appelant le Google home, j’ai un message d’erreur sur IFTTT : soit Error Ehostunreach avec adresse ip externe:8099 lorsque j’ouvre le port 8099 avec l’adresse IP de mon ordi, soit j’ai un message Error Econnrefused lorsque j’ouvre le port 8099 avec l’adresse ip de mon Android box. Pouvez vous m’aider ? Avez-vous une solution ?
J’ai oublié de préciser, je mets l’adresse externe dans ma configuration d’ifttt