PILOTER VOTRE MUSIQUE A LA VOIX

Dans cet article, je vous indique ma façon de piloter sa musique avec le logiciel médiacenter KODI installé sur un raspberry PI 3 (Stretch), mis à jour dans mon exemple.

Je pars du principe que KODI est installé et fonctionnel. Il faut simplement paramétrer KODI pour qu’il puisse être commandé de l’extérieur dans les réglages de KODI. Choisissez un port, le nom de user et le mot de passe.

Le principe est le suivant :

Google Assistant active une requête HTTP qui pilote KODI.

Pour cela, j’utilise l’appli IFTTT sur mon téléphone car je n’ai pas de Google Home.

Dans l’appli IFTTT, créer une nouvelle applet
Pour IF : choisissez Google Now : entrer une phrase de commande simple : ex : Mute le son
Pour THEN : choisissez  Webhooks : coller la requête http qui correspond à mute le son que je vous expliquerai ci-dessous.

Ces requêtes sont un travail de recherche qui m’a pris quelques heures pour récupérer toutes les commandes utiles de KODI. J’espère qu’elles vous plairons.

 

Pour comprendre, voici un exemple générique de requête :

http://user_kodi:mot_de_passe_kodi@ip:port_ecouté/jsonrpc?request={« jsonrpc »: »2.0?, »method »: »Xxxxx.XxxxXxx », « params »:{« xx »: »xx », »xx »:x}, »id »:1}

Toutes les requêtes doivent contenir ces informations et être correctement écrite pour fonctionner !!!

Dans toutes les requêtes suivantes, j’ai coupé le début pour éviter la répétition. De plus, une fois bien paramétré, avec le bon user,mdp,ip et port, vous pouvez faire un copier-coller pour les utiliser facilement.

Dans KODI, Il y a deux lecteurs pour le son 0 ou 1 à modifier suivant le lecteur utilisé.

Lecteur 0 : Commande de musique venant directement de m’interface
Lecteur 1 : Commande musique venant de l’externe.

Pour connaitre le lecteur actif, coller la requête, suivante, une fois complété de la 1ere partie dans votre navigateur:

{« jsonrpc »: « 2.0 », « method »: « Player.GetActivePlayers », « id »: 1}

Réponse : playerid:1 ou playerid:0

Voici la liste des commandes raccourcies :

STOP
{« jsonrpc »: »2.0?, »id »:1, »method »: »Player.Stop », »params »:{« playerid »:1}}

PLAY/PAUSE
{« jsonrpc »: « 2.0 », « method »: « Player.PlayPause », « params »: { « playerid »: 0 }, « id »: 1}

VOLUME+
{« jsonrpc »: »2.0?, »id »:1, »method »: »Application.SetVolume », »params »:{« volume »: »increment »}, »id »:1}

VOLUME-
{« jsonrpc »: »2.0?, »id »:1, »method »: »Application.SetVolume », »params »:{« volume »: »decrement »}, »id »:1}

MUTE
{« jsonrpc »: « 2.0 », « method »: « Application.SetMute », « params »: {« mute »: »toggle »}, « id »: 1}

MET LE SON A 10
{« jsonrpc »: « 2.0 », « method »: « Application.SetVolume », « params »: {« volume »:10}, « id »: 1}

RETOUR 30s
{« jsonrpc »: « 2.0 », « method »: « Player.Seek », « params »: [1, »smallbackward »], »id »:1}

AVANCE 30s
{« jsonrpc »: « 2.0 », « method »: « Player.Seek », « params »: [1, »smallforward »], »id »:1}

CLEAN MEDIATHEQUE
{« jsonrpc »: »2.0?, »method »: »AudioLibrary.Clean », »params »:[true], »id »:1}

SCAN LIBRAIRIE
{« jsonrpc »: »2.0?, »method »: »AudioLibrary.Scan », »params »:{« showdialogs »:true}, »id »:1}

ALEATOIRE ON
{« jsonrpc »: »2.0?, »method »: »Player.SetShuffle », »params »:{« playerid »:0, »shuffle »:true}, »id »:1}

ALEATOIRE OFF

{« jsonrpc »: »2.0?, »method »: »Player.SetShuffle », »params »:{« playerid »:0, »shuffle »:false}, »id »:1

REPEAT ALL
{« jsonrpc »: « 2.0 », « method »: « Player.SetRepeat », « params »: { « playerid »: 1, « repeat »: « all » }, « id »: 1} — repeat all

REPEAT OFF
{« jsonrpc »: « 2.0 », « method »: « Player.SetRepeat », « params »: { « playerid »: 1, « repeat »: « off » }, « id »: 1} — repeat off

CHANSON SUIVANTE
{« jsonrpc »: « 2.0 », « method »: « Player.GoTo », »params »:{« playerid »:0, »to »: »next »}, »id »:1}

CHANSON PRECEDENTE
{« jsonrpc »: « 2.0 », « method »: « Player.GoTo », »params »:{« playerid »:0, »to »: »previous »}, »id »:1}

LANCER UNE PLAYLIST NOMINATIVE + OPTION REPEAT ALL
{« jsonrpc »: »2.0?, »id »:1, »method »: »Player.Open », »params »:{« item »:{« file »: »special://profile/playlists/music/reggae.m3u »}, »options »:{« repeat »: »all »}}}

PLAYLIST PARTY MODE
{« jsonrpc »: »2.0?, »id »:1, »method »: »Player.Open », »params »:{« item »:{« partymode »: »music »}}} »

LANCER RADIO (ex url de NOVA)
{« jsonrpc »: »2.0?, »id »:1, »method »: »Player.Open », »params »:{« item »:{« file »: »http://statslive.infomaniak.ch/playlist/radionova/radionova-high.mp3/playlist.m3u »}}}

CLEAR PLAYLIST LECTEUR 0
{« jsonrpc »: »2.0?, »method »: »Playlist.Clear », »params »:{« playlistid »:0}, »id »:1}

NAVIGUEZ DIRECT A MUSIC
{« jsonrpc »: »2.0?, »method »: »GUI.ActivateWindow », »params »:{« window »: »music », »parameters »:[« musicdb »]}, »id »: »1?}

VUE DIRECT MUSIQUE/ALBUMS
{« jsonrpc »: « 2.0 », »id »:1, « method »: « GUI.ActivateWindow », « params »: { « window »: « music », « parameters »: [ « Albums » ] }, « id »: 1 }

VUE DIRECT MUSIQUE/GENRES
{« jsonrpc »: « 2.0 », »id »:1, « method »: « GUI.ActivateWindow », « params »: { « window »: « music », « parameters »: [ « Genres » ] }, « id »: 1 }

NAVIGUER DIRECT A GENRES ELECTRO (3)
{« jsonrpc »: »2.0?, »method »: »GUI.ActivateWindow », »params »:{« window »: »music », »parameters »:[« musicdb://genres/3?]}, »id »: »1?}

NAVIGUEZ DIRECT A GENRE 4 /HIP HOP/RAP chez moi
{« jsonrpc »: »2.0?, »method »: »GUI.ActivateWindow », »params »:{« window »: »music », »parameters »:[« musicdb://genres/4?]}, »id »: »1?}

# LE NUMÉRO APRES « GENRES/x » EST A TESTER AU CAS PAR CAS POUR VOIR A QUOI IL CORRESPOND, JE NE SAIS PAS COMMENT C’EST ATTRIBUE PAR KODI.

VUE DIRECT A ARTISTE n°57
http://kodi:azerty@192.168.0.9:8383/jsonrpc?request={« jsonrpc »: »2.0?, »method »: »GUI.ActivateWindow », »params »:{« window »: »music », »parameters »:[« musicdb://artists/57?]}, »id »: »1?}

INFO thumbnail
http://kodi:azerty@192.168.0.9:8383/jsonrpc?request={« jsonrpc »: »2.0?, »method »: »Player.GetItem », »params »:{« properties »:[« thumbnail », « fanart »], »playerid »:0}, »id »: »AudioGetItem »}

INFO LECTURE EN COURS
http://kodi:azerty@192.168.0.9:8383/jsonrpc?request={« jsonrpc »: « 2.0 », « method »: « Player.GetItem », « params »: { « properties »: [« title », « album », « artist », « duration », « thumbnail », »fanart », « streamdetails »], « playerid »: 0 }, « id »: « VideoGetItem »}

INFO VOLUME SON
http://kodi:azerty@192.168.0.9:8383/jsonrpc?request={« jsonrpc »: « 2.0 », « method »: « Application.GetProperties », « params »: {« properties »: [« volume »]}, « id »: 1}

PLAYSLIST LECTEUR 1 INFO SUR LE CONTENU
« jsonrpc »: « 2.0 », « method »: « Playlist.GetItems », « params »: { « properties »: [« title », « album », « artist », « duration »], « playlistid »: 1 }, « id »: 1}

INFO SUR LE MEDIA EN COURS
« jsonrpc »: « 2.0 », « method »: « Player.GetItem », « params »: { « properties »: [« title », « album », « artist », « season », « episode », « duration », « showtitle », « tvshowid », « thumbnail », « file », « fanart », « streamdetails »], « playerid »: 1 }, « id »: « VideoGetItem »}

INFO PLAYLIST
« jsonrpc »: « 2.0 », « id »: 1, « method »: « Playlist.GetPlaylists »}

FLÈCHE DROITE
« jsonrpc »: « 2.0 », »method »: »Input.Right », »id »:1}

FLÈCHE HAUT
« jsonrpc »: « 2.0 », »method »: »Input.Up », »id »:1}

ACCUEIL PAGE
jsonrpc »: »2.0?, »method »: »Input.Home », »id »:1}

OK/VALIDER
jsonrpc »: »2.0?, »method »: »Input.Select », »id »:1}

RETOUR
jsonrpc »: »2.0?, »method »: »Input.Back », »id »:1}

CONTEXT MENU
jsonrpc »: »2.0?, »method »: »Input.ContextMenu », »id »:1}

Voilà, après bien sur il existe encore d’autres commandes et variantes, mais avec celles-ci on a les plus importantes.

Après cela, j’ai crée des scénario dans Jeedom afin de créer des commandes complexes qui n’existe pas nativement.

De nombreux tuto traitent des scénarios dans Jeedom, je ne l’expliquerais pas ici.

Regardez la vidéo qui suit pour voir le résultat, c’est un peu flou, mais on entend/voit bien les commandes.

Références :

http://kodi.wiki/view/JSON-RPC_API

Laisser un commentaire

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

Résoudre : *
28 × 8 =