Commandez vos enceintes Sonos depuis Domoticz

Standard

L’intégration de Sonos avec Domoticz permet de déclencher des scenarii  de démarrage pour le réveil du matin ou de mise en veille lorsque la maison est vide. Voici comment intégrer Sonos à Domoticz avec un exemple simple des actions Pause et Play sur une zone Sonos.

Node JS Sonos HTTP API

Tout d’abord, il nous faut installer node-sonos-http-api disponible sur GitHub : https://github.com/jishi/node-sonos-http-api

L’installation de ce module node est un jeu d’enfant. Il faut bien entendu une version de Node supérieure à la 0.10.

$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb 
$ sudo dpkg -i node_latest_armhf.deb

Pour tester que Node est bien installé :

$ node -v

Télécharger node-sonos-http-api depuis GitHub ou simplement faites un clone si vous avez Git déjà installé :

$ git clone https://github.com/jishi/node-sonos-http-api.git

Puis, depuis la racine du dossier node-sonos-http-api executez les commandes pour effectuer l’installation :

$ cd node-sonos-http-api/
$ npm install

L’installation terminée, il suffit de lancer le serveur :

$ node server.js

Vos enceintes Sonos peuvent maintenant être commandées en HTTP en appelant simplement les URLs suivantes :

http://localhost:5005/zones
http://localhost:5005/next
http://localhost:5005/previous/
http://localhost:5005/pauseall/
http://localhost:5005/<nom de la zone>/play
http://localhost:5005/<nom de la zone>/pause
http://localhost:5005/<nom de la zone>/next
http://localhost:5005/<nom de la zone>/previous
http://localhost:5005/<nom de la zone>/sleep/
...

Intégration avec Domoticz

L’intégration avec domoticz peut se faire très simplement avec un bouton Media Player pour allumer ou éteindre la musique dans une pièce. Cliquez sur l’onglet « Interrupteurs », puis sur le bouton « Ajout manuel ».

Configuration d'un bouton Media Player

Ajoutez le dispositif puis rendez-vous dans l’onglet interrupteurs.

Dans les script en position On et Off configurez les appels HTTP.

configuration-media-player-2En position ON : http://localhost:5005/<nom de la zone>/play
En position OFF : http://localhost:5005/<nom de la zone>/pause

Pour les espaces et les caractères spéciaux, convertissez les en entités HTML. Le plus simple pour cela c’est de taper l’URL avec espace dans Firefox, elle sera convertie automatiquement.

widget-media-playerEt voilà, le bouton est prêt à l’emploi.

Démarrer le serveur node-sonos-http-api en tant que service Linux

Pour que le server.js démarre au démarrage de Linux et il faut tout d’abord installer pm2. Pour l’installer :

$ sudo npm install pm2 -g

Le démarrage du server en tant que service ce fait comme ceci (ne pas oublier l’option -x correspondant au mode fork, dans le cas contraire le process consommera 100% du CPU) :

$ pm2 -x start node_modules/node-sonos-http-api/server.js --name "node-sonos"

[PM2] Spawning PM2 daemon

[PM2] PM2 Successfully daemonized
[PM2] Starting node_modules/node-sonos-http-api/server.js in fork_mode (1 instance)
[PM2] Done.
┌────────────┬────┬──────┬──────┬────────┬─────────┬────────┬────────────┬──────────┐
│ App name   │ id │ mode │ pid  │ status │ restart │ uptime │ memory     │ watching │
├────────────┼────┼──────┼──────┼────────┼─────────┼────────┼────────────┼──────────┤
│ node-sonos │ 0  │ fork │ 9361 │ online │ 0       │ 5s     │ 6.250 MB   │ disabled │
└────────────┴────┴──────┴──────┴────────┴─────────┴────────┴────────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

Pour vérifier que le processus tourne bien :

$ pm2 list