Se rendre la vie plus facile avec les api de ses services auto-hébergés.

Une api pour les contrôler tous

Sommaire

Un article qui vise à faire le point sur les api que j’utilise pour piloter les différents services installés chez moi. J’ai fais le choix d’utiliser Jeedom pour ma domotique, cela dit les url donnés ici pourront aussi servir dans tous navigateurs web, sur son téléphone (avec des applis comme http shortcut), dans un terminal avec la commande curl, ou tout autre système capable de faire des requêtes http.

Cet article abordera le contrôle: - d’un lightpack - de volumio - de kodi

Lightpack

Objectif: Je souhaite piloter le Lightpack installé derrière la télé de mon séjour. Plus précisément, j’ai veux que lorsque Kodi lance un film “le rétroéclairage” se fasse, et qu’il s’éteigne tout seul lorsque la séance termine. Avec jeedom, c’est possible facilement en utilisant le plugin Kodi de sarakha qui domotise le célèbre mediacenter.

Prérequis:

  • Installer prismatik: le soft est disponible pour ubuntu 13,14 et 16.
  • Installer le plugin script dans jeedom (pour ceux qui utilisent jeedom).
  • Ouvrir la communication sur le réseau dans les paramètres de l’appli.
  • Récupérer votre clé api toujours dans l’appli: dans cet exemple ce sera ogilg564-gds4-4gt56-4u45-156544658463.
  • Connaitre l’ip du pc qui fait tourner prismatik, dans cet exemple ce sera: 192.168.1.1.

Déroulement: créez deux fichiers exécutables que Jeedom va appeler sur demande afin de commander le Lightpack du pc qui fait tourner Prismatik:

nano /var/www/html/plugins/script/core/ressources/prismatik-on.sh
      #!/bin/bash
      telnet 192.168.1.1 3636 <<EOF
      apikey:{ogilg564-gds4-4gt56-4u45-156544658463}
      lock
      setstatus:on
      unlock
      exit
      EOF

      { echo "apikey:{ogilg564-gds4-4gt56-4u45-156544658463}"; sleep 1; echo "lock"; echo "setstatus:on"; echo "unlock"; echo "exit"; } | telnet 192.168.1.1 3636

      exit
nano /var/www/html/plugins/script/core/ressources/prismatik-off.sh
      #!/bin/bash
      telnet 192.168.1.1 3636 <<EOF
      apikey:{ogilg564-gds4-4gt56-4u45-156544658463}
      lock
      setstatus:off
      unlock
      exit
      EOF

      { echo "apikey:{ogilg564-gds4-4gt56-4u45-156544658463}"; sleep 1; echo "lock"; echo "setstatus:off"; echo "unlock"; echo "exit"; } | telnet 192.168.1.1 3636

      exit

Rendre ses scripts exécutables par Jeedom:

chown a+x /var/www/html/plugins/script/core/ressources/prismatik-off.sh
chown a+x /var/www/html/plugins/script/core/ressources/prismatik-on.sh
chown 755 /var/www/html/plugins/script/core/ressources/prismatik-off.sh
chown 755 /var/www/html/plugins/script/core/ressources/prismatik-on.sh

Configurer jeedom pour lui donner les clés de vos scripts:

Volumio

Prérequis: Connaitre l’ip de sa machine volumio, dans cet exemple ce sera 192.168.1.17.

Objectif: Je souhaite disposer de multiroom chez moi. J’ai utilisé quelques temps lms, mais je suis entrain de l’abandonner pour assurer le pilotage de mes enceintes connectées. Je ne crois pas que le système squeezebox ait un avenir, et j’ai donc opté pour volumio. Pour quelles raisons? Il y a selon moi une forte dynamisme de la communauté d’utilisateur de volumio, et l’interface web de contrôle de l’appli est très propre. Seulement il y a un problème: à cette date il n’y a pas d’appli jeedom (mais ça pourrait changer), mais il y a une api très simple à mettre en œuvre. Et justement on est là pour voir comment l’utiliser.

Déroulement: Même principe que précédemment, mais choisissez http comme type de commande.

Play

http://192.168.1.17/api/v1/commands/?cmd=play

Stop

http://192.168.1.17/api/v1/commands/?cmd=stop

Suivant

http://192.168.1.17/api/v1/commands/?cmd=next

Volume à 80%

http://192.168.1.17/api/v1/commands/?cmd=volume&volume=80

Playlist

http://192.168.1.17/api/v1/commands/?cmd=playplaylist&name=Rock

Pour la commande playlist, l’api permet de lancer toutes playlist (ici c’est Rock) que vous voudrez bien créer dans l’interface web de votre volumio (mp3 locals, spotify ou radio)

À noter qu’une api web socket existe aussi, mais je ne me suis pas penché dessus, ayant répondu à mes besoins avec l’api simple.

Kodi

Prérequis: Connaitre l’ip de sa machine kodi (osmc, librelec etc…), dans cet exemple ce sera 192.168.1.3.

Objectif: J’utilise osmc pour ma chambre pour balancer du youtube (avec des liens mis en favori dans wallabag ou seefoss dont je caste le flux par le biais de kore sur ma tv), ainsi que des radios.

Déroulement: Voici les url que j’ai pêché sur internet. Je confesse ne pas maîtriser plus que ça la grammaire, j’ai bidouillé pour réussir. À vous d’aller plus loin si voulu.

Lire une url radio

http://192.168.1.3/jsonrpc?request={"jsonrpc":"2.0", "id":1, "method": "Player.Open", "params":{"item":{"file":"http://direct.fipradio.fr/live/fip-midfi.mp3"}}}

Volume

http://192.168.1.3/jsonrpc?request={"jsonrpc":"2.0","method":"Application.SetVolume","params":{"volume":10},"id":1}

Volume +

http://192.168.1.3/jsonrpc?request={"jsonrpc":"2.0","method":"Application.SetVolume","params":{"volume": "increment"},"id":1}

Volume -

http://192.168.1.3/jsonrpc?request={"jsonrpc":"2.0","method":"Application.SetVolume","params":{"volume": "decrement"},"id":1}

Stop

http://192.168.1.3/jsonrpc?request={"jsonrpc": "2.0", "method": "Player.Stop", "params": { "playerid": 0 }, "id": 1}

Happy api