Se rendre la vie plus facile avec les api de ses services autohébergés

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

1/ 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 retroé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 médiacenter. 

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:

2/ Volumio

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 oeuvre. Et justement on est là pour voir comment l'utiliser.

Prérequis

Connaitre l'ip de sa machine volumio : dans cet exemple ce sera

192.168.1.17

Déroulement

Même principe que précédemment, mais choissisez http comme type de commande.

http://192.168.1.17/api/v1/commands/?cmd=play
http://192.168.1.17/api/v1/commands/?cmd=stop
http://192.168.1.17/api/v1/commands/?cmd=next
http://192.168.1.17/api/v1/commands/?cmd=volume&volume=80
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)

Pour ceux qui connaissent les techniques permettant de parser, ce qui n'ai pas mon cas, il vous est possible de faire des trucs que j'imagine très sympa avec ça. À 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.

3/ kodi

Prerequis

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.

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