Sonos

From Domoticz
Jump to navigation Jump to search

Introduction

A native integration of the Sonos wireless music system in Domoticz is something that I think would be highly appreciated by a lot of Domoticz users. Unfortunately until now there is no hardware support included by default. User m_g_s_g started to work on a native Sonos plugin for a while but unfortunately he abandoned the project. The code is still on GitHub waiting for someone to pick this up and continue his work.

Next to the native plugin there are multiple other solutions available by using scripts. Below the ones that can be found on the forum:

  • Easy Sonos
  • Node Sonos HTTP API
  • Wrapper for PHPSonos
  • Sonos Soco Plugin

Easy Sonos

The instructions below are based on this topic thanks to Marmo

  • Download from https://www.github.com/DjMomo/sonos the file sonos.class.php and copy it to your scripts directory
  • Install PHP and PHP5 curl if it is not installed on your machine. So sudo apt-get install php5-cli php5-curl (in Debian).
  • To do an easy test, create two separate scripts for PLAY (sonos.play.php) and PAUSE (sonos.pause.php), both similar except in the command itself. As follows (only change the IP address to the IP of your Sonos):
#!/usr/bin/env php
<?php
$IP_sonos_1 = "192.168.1.20";
require("sonos.class.php");
$sonos_1 = new SonosPHPController($IP_sonos_1);
$sonos_1 = $sonos_1->Play();
?>
  • chmod u+x the created play and pause files
  • Call them from a virtual switch like this: script:///path to domoticz dir/domoticz/scripts/sonos.play.php

Wrapper for PHPSonos

This works similar to the Easy Sonos solution. The only difference is that you need to have a PHP enabled webserver in order to have this working. User G3rard forked the original wrapper by ThomasTr and improved it a bit for use with Domoticz. This also includes text to speach functionality.

To install this follow the instructions as described here.

Node Sonos HTTP API

Another solution is to use the Node Sonos HTTP API. There is a nice step-by-step guide on the forum made by Holland, it is a bit more extensive than the instructions below, you can find it here

  • If you don't use the Domoticz SD card image first install node.js from the instructions from the link in point 1 here.
  • log into your machine through a shell and go to the home directory (normally one directory higher than the domoticz directory)
  • git clone https://github.com/jishi/node-sonos-http-api node-sonos-http-api
  • cd node-sonos-http-api
  • npm install --production
  • start the server by running npm start
  • Now you can control your system by invoking the following commands:
http://localhost:5005/zones
http://localhost:5005/lockvolumes
http://localhost:5005/unlockvolumes
http://localhost:5005/pauseall[/{timeout in minutes}]
http://localhost:5005/resumeall[/{timeout in minutes}]
http://localhost:5005/preset/{JSON preset}
http://localhost:5005/preset/{predefined preset name}
http://localhost:5005/{room name}/{action}[/{parameter}]
http://localhost:5005/reindex
http://localhost:5005/sleep/{timeout in seconds or timestamp HH:MM:SS or off}

More info can be found here

Sonos Soco Python Module

The Soco is based on Python and therefore requires Python 2.7, or 3.2 or newer. (I have not installed this myself so below is just an educational guess)

  • Log into your machine through a shell and go to the home directory (normally one directory higher than the domoticz directory)
  • Install python and python-pip package and/or python3 and python3-pip
  • git clone https://github.com/SoCo/SoCo SoCo
  • cd SoCo
  • sudo pip install soco
  • sudo pip3 install soco

More info on SoCo here.

Python Plugins

There are some Python plugins created on github but all not recently updated.

https://github.com/gerard33/sonos

https://github.com/Gerard-Oedzes/domoticz-sonos

Forum topics for reference