Readme.markdown in sonos-0.2.1 vs Readme.markdown in sonos-0.3.0
- old
+ new
@@ -2,10 +2,12 @@
Control Sonos speakers with Ruby.
Huge thanks to [Rahim Sonawalla](https://github.com/rahims) for making [SoCo](https://github.com/rahims/SoCo). This gem would not be possible without his work.
+[![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/soffes/sonos) [![Dependency Status](https://gemnasium.com/soffes/sonos.png)](https://gemnasium.com/soffes/sonos)
+
## Installation
Add this line to your application's Gemfile:
``` ruby
@@ -34,11 +36,12 @@
```
``` ruby
require 'rubygems'
require 'sonos'
-speaker = Sonos.discover
+system = Sonos::System.new # Auto-discovers your system
+speaker = system.speakers.first
```
Now that we have a reference to the speaker, we can do all kinds of stuff.
``` ruby
@@ -54,59 +57,68 @@
speaker.clear_queue
```
### Topology
-`Sonos.discover` finds the first speaker it can. We can get all of the Sonos devices (including Bridges, etc) by calling `speaker.topology`. This is going to get refactored a bit. Right now everything is nested under speaker which is kinda messy and confusing.
+`Sonos.discover` finds the first speaker it can. We can get all of the Sonos devices (including Bridges, etc) by calling `Sonos.system.devices`. To get the groups, call `Sonos.system.groups`.
+All of this is based off of the raw `Sonos.system.topology`.
+
### CLI
-There is a very limited CLI right now. You can run `sonos discover` to get the IP of one of your devices. Run `sonos discover --all` to get all of them.
+There is a very limited CLI right now. You can run `sonos devices` to get the IP of all of your devices.
+You can also run `sonos pause_all` to pause all your Sonos groups.
+
## To Do
### General
-* Refactor all of the things
-* Nonblocking calls with Celluloid::IO
-* List other speakers
* Handle errors better
* Handle line-in in `now_playing`
-* Better support for stero pairs
+* Detect fixed volume
+* Detect stereo pair
* CLI client for everything
+* Nonblocking calls with Celluloid::IO
### Features
-* Alarm clock
+* Manipulating groups doesn't update `System#groups`
* Pause all (there is no play all in the controller, we could loop through and do it though)
-* Group management
- * Party Mode
- * Join
+* Party Mode
* Line-in
* Toggle cross fade
* Toggle shuffle
* Set repeat mode
-* Scrub
* Search music library
* Browse music library
* Add songs to queue
* Skip to song in queue
+* Alarm clock
* Sleep timer
+* Pandora doesn't use the Queue. I bet things are all jacked up.
+* CONNECT (and possibly PLAY:5) line in settings
+ * Source name
+ * Level
+ * Autoplay room
+ * Autoplay include grouped rooms
### Maybe
If we are implementing everything the official Sonos Controller does, here's some more stuff:
* Set zone name and icon
* Create stero pair
-* Support for BRIDGE
+* Support for SUB
* Support for DOCK
+* Support for CONNECT:AMP (not sure if this is any different from CONNECT)
* Manage services
* Date and time
* Wireless channel
* Audio compression
* Automatically check for updates (not sure if this is a controller only preference)
* Local music servers
+* Add component
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)