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`)