FANDOM


Objet, limites et applications

Cette page décrit la réalisation de requêtes http GET pour contrôler KODI media center. il existes d'autres manières de contrôler Kodi via Python TCP HTTP POST et Websocket, celles-ci sont décrites sommairement dans la page du wiki Kodi sur JSONRPC[1]. A mon goût, l'avantage des requêtes GET est qu'elles tiennent en une seule ligne et qu'on peut les lancer depuis un navigateur web par exemple.

Dans la présente page, je me limite à la version 6 de l'API. cette version 6 concerne les versions suivantes de XBMC/KODI :

  • XBMC v12 Frodo (en partie aparement car l'API était en transition v5/v6)
  • XBMC v13 Gotham
  • KODI v14 Helix

A noter qu'à l'heure actuelle je n'ai pas trouvé d'infos sur la possible compatibilité dans KODI v15.

Ces requêtes GET peuvent être utilisées dans Domoticz, en particulier dans le champ "Action On" des interrupteurs.

Prérequis

La liste des prérequis est la suivante :

  • Avoir une des version de XBMC ou Kodi ci-dessus
  • Avoir activé le contrôle de Kodi via Http :
    • Aller dans "Paramètres" / "Services" / "Serveur Web"
    • Cocher la case "Permettre le contrôle de Kodi en HTTP"
    • Modifiez si besoin est le port et le nom d'utilisateur (vous pouvez également ajoutez un mot de passe si vous le souhaitez)
    • Dans Télécommande, cochez les deux cases.
  • Connaitre l'adresse IP de la machine sur laquelle vous exécutez Kodi :
    • Le plus simple : pour ceux qui ont le thème Confluence (thème par défaut) d'activé, aller dans "système" puis "informations", vous trouverez l'IP dans la page "Sommaire"
  • Pour les tests, avoir un ordinateur sur le même réseau local disposant d'un navigateur Web (testé pour ma part avec Chrome)
  • Que votre Domoticz soit sur le même réseau local que la machine exécutant Kodi

Format des requêtes

Les requêtes sont de la forme suivante :

Si vous avez défini un mot de passe :

http://utilisateur:motdepasse@ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Nom.Methode","params":[Paramètres],"id":1}

Si vous n'avez pas défini de mot de passe : (l'utilisateur par défaut est xbmc mais si le mot de passe n'est pas défini pas besoin de mettre d'utilisateur dans la requête)

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Nom.Methode","params":[Paramètres],"id":1}

On ne modifie que ce qui est en gras.

Ce qui donne par exemple :

http://192.168.1.90:8080/jsonrpc?request={"jsonrpc":"2.0"2,"method":"Application.SetMute","params":[true],"id":1}

Tester une requête depuis un navigateur web (Chrome)

Très simplement en copiant l'URL ci-dessus et en personnalisant IP et port, cette requête coupe le son et fait apparaître le logo Mute dans Kodi.

Json

Requête Mute JsonRPC depuis Chrome vers XBMC 13

Pour désactiver Mute, il suffit de mettre "false" en lieu et place de "true".

Certains navigateurs "encodent" l'URL, de sorte que le symbole " devient %22 (et espace devient %20). Normalement ça ne pose pas plus de problèmes qu'une lisibilité réduite pour les humains :-)

Lancer une Requête depuis Domoticz

Prérequis

  • Créer un interrupteur virtuel (Via Dummy) de type Push On Button (Malheureusement on ne peut pas (encore?) choisir l'icône de ce type de bouton)
  • Dans les propriétés du bouton mettre la requête dans Action On

Liste des requêtes testées

Muet / Couper le son

pour cette fonction, créez plutôt un bouton On/Off et utilisez a requête d'activation (qui coupe le son) en Action On et la requête de désactivation (qui réactive le son) en Action Off

Activer

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Application.SetMute","params":[true],"id":1}

Desactiver

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Application.SetMute","params":[false],"id":1}


Play/pause

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Player.PlayPause","params":[1],"id":1}


Stop

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Player.Stop","params":[1],"id":1}

Retour Rapide

Petit saut (par défaut 30sec)

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Player.Seek","params":[1,"smallbackward"],"id":1}

Grand saut (par défaut 10min)

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Player.Seek","params":[1,"bigbackward"],"id":1}

===
Avance Rapide ===

Petit saut (par défaut 30sec)

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Player.Seek","params":[1,"smallforward"],"id":1}

Grand saut (par défaut 10min)

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Player.Seek","params":[1,"bigforward"],"id":1}

===
Droite ===

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Right","id":1}

===
Gauche ===

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Left","id":1}

Haut

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Up","id":1}

Bas

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Down","id":1}

Ok / Valider

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Select","id":1}

Retour

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Back","id":1}

Retour à la page d'accueil

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Home","id":1}

Informations du média

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"Input.Info","id":1}

Mettre en veille prolongée

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"System.Hibernate","id":1}

Mettre en veille

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"System.Suspend","id":1}

Ne marche que pour les systèmes qui gèrent la mise en veille (Windows, Ubuntu)

Notification

http://ip:port/jsonrpc?request={"jsonrpc":"2.0","method":"GUI.ShowNotification","params":["titre","message","URLIMAGE"],"id":1}

Permet d'envoyer une notification sur l'écran : l'image ne sera pas prise en charge par tous les thèmes (fonctionne avec confluence)

Références

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