Une api pour les contrôler tous
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