Initial contribution of the Sonos 2.0 binding

Signed-off-by: Karel Goderis <karel.goderis@me.com> (github: kgoderis)
It is used to fetch meta data for radiostations, so that you can see what radioshow or song is currently playing. This is - as far as I think - external to Sonos, but they might be using this or similar as well for their own software. The partner id is one I found on the web ;-), and so far it did work without anyone including tunein.com <http://tunein.com/> complaining. So, making this configurable: yes, but where?

> On 24 Oct 2014, at 18:14, Kai Kreuzer <notifications@github.com> wrote:
> 
> In addons/binding/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/handler/ZonePlayerHandler.java:
> 
> > +			String resultString = null;
> > +			String artist = null;
> > +			String album = null;
> > +			String title = null;
> > +
> > +			if(currentURI.contains("x-sonosapi-stream")) {
> > +				//TODO: Get partner ID for openhab.org
> > +
> > +				String stationID = StringUtils.substringBetween(currentURI, ":s", "?sid");
> > +				String previousStationID = stateMap.get("StationID");
> > +
> > +				if(previousStationID == null || !previousStationID.equals(stationID) || lastOPMLQuery ==null || lastOPMLQuery.plusMinutes(1).isBeforeNow()) {
> > +
> > +					this.onValueReceived("StationID", stationID,"AVTransport");
> > +
> > +					String url = "http://opml.radiotime.com/Describe.ashx?c=nowplaying&id=" + stationID + "&partnerId=IAeIhU42&serial=" + getMACAddress();
> What exactly is this opml query exactly good for? Is this the Sonos cloud-API? I so far thought that the Sonos binding only does local communication. Could this functionality be made somehow configurable/optional? Especially the partner id would need to be configurable - and I doubt that we can get one that is made publicly available in the openHAB repo...?
> 
> —
> Reply to this email directly or view it on GitHub <https://github.com/openhab/openhab2/pull/20/files#r19348146>.
>