Control your Sonos players from command-line. Uses Sonos Control API to control Sonos groups.
Using Homebrew
on OSX:
brew tap bwilczynski/tap
brew install sonos-cli
Using pip
(requires Python 3):
pip install sonos-cli
$ sonos [OPTIONS] COMMAND [ARGS]
Setup integration with Sonos API
and run sonos config
to provide
your application's Client ID and Client Secret.
Make sure that:
- Redirect URI is set to: http://localhost:5000
- YOUR_CLIENT_ID: set to your Key (and not key name)
- YOUR_CLIENT_SECRET: set to your Secret
Alternatively set the following environment variables before running sonos
:
export SONOS_CLIENT_ID={YOUR_CLIENT_ID}
export SONOS_CLIENT_SECRET={YOUR_CLIENT_SECRET}
Login to your Sonos service (opens a web browser sending user to Sonos login service):
$ sonos login
Set active household:
$ sonos set household
For usage and help content, pass in the --help
parameter, for example:
$ sonos --help
$ sonos get --help
$ sonos get [groups | households | playlists | tracks]
Format displayed result using --output
option:
$ sonos get groups --output table
coordinatorId id name playbackState
------------------------ ----------------------------------- ---------------- ----------------------
RINCON_B8E937E6D36202100 RINCON_B8E937E6D36202100:23 Bedroom. PLAYBACK_STATE_PAUSED
RINCON_B8E937E6D40E02100 RINCON_B8E937E6D40E02100:128 Bathroom PLAYBACK_STATE_IDLE
RINCON_B8E937DA7E6802100 RINCON_B8E937DA7E6802100:17 Bathroom 2. PLAYBACK_STATE_PAUSED
RINCON_347E5C90FA9502100 RINCON_347E5C90FA9502100:4142323492 Living Room PLAYBACK_STATE_PLAYING
$ sonos get groups --output json
[
{
"coordinatorId": "RINCON_B8E937E6D36202100",
"id": "RINCON_B8E937E6D36202100:23",
"name": "Bedroom",
"playbackState": "PLAYBACK_STATE_PAUSED",
...
}
...
}
$ sonos play
$ sonos pause
$ sonos next
$ sonos prev
$ sonos set [group | household]
$ sonos status
$ sonos volume
20
$ sonos volume 25
The volume can also be set relative to its current value by prefixing it with
+
or -
. To avoid the parameter being treated as a flag when setting
a negative value, using --
before.
$ sonos volume +5
$ sonos volume -- -5