Wireless Sonos uPnP Control Point
I have a few sonos units in my house and I want to control them from the itouch. I think the itouch will make a much better controller than the sonos wireless controllers. There are several open source projects using PERL, JAVA, and a COM object that communicate with sonos zoneplayers (see sonos digital expert forums for more info).
The sonos uses UPNP. As far as I can tell it's UPNP for the discovery and event objects, and then it uses SOAP over HTTP POST to send commands like play, stop, next track, and for pulling the list of shared music from the sonos.
I found COCOA SOAP libraries and have started tinkering with them in XCODE to see if I can get some basic communication working with the sonos.
Currently, I have this working 2 different ways:
1. as a native app I wrote in cocoa
2. as an AJAX web application
Both methods were done by using Sonosweb (http://purple.org/sonos/).
Sonosweb is a perl app that I have running on my linux server. A nativeapp on the iphone connects to the perl server and sends and receives JSON requests to control the sonos. The ajax version is a template I created for sonsoweb that is formatted for the iphone.
Both methods work pretty good, but it requires you to have a sonos, and a linux server and an itouch. I want to eliminate the need for the linux server. I attempted to run the perl script on the itouch itself, but there are a few modules such as XML Expat that I was unable to compile for arm-darwin.
The new plan is to start from scratch and put together a simple app that lets you browse the shared content tree and select songs for playback with some basic transport controls all using SOAP and UPNP (no sonosweb required). This will be a native app written in cocoa that is able to discover all zoneplayers, and tap into their content directory and control api.
Sonos now supports several music subscription services such as Sirius, Napster, Rhapsody, Audible, Yahoo, and others, and in my opinion is the ultimate music server for both local content and subscription content. Their latest firmware update also adds search making it possible to type in any song and search al of the local music and online subscription services for the tracks. This is not an ad for sonos, but I am a big fan of their product and would like to see more ways of controlling it and integrating it with other home automation devices and consumer electronics.
Please post in this thread if:
-you have a sonos and an itouch and want to see this happen
-you know how to communicate with upnp and soap devices in Cocoa.
-you have figured out a way to cross compile all of the modules needed to make perl run sonosweb on the itouch (XML Expat, etc).
I am just starting to learn cocoa, so I don't know if I will be able to make this work myself... If there are any developers that are interested in taking on this project for real, but don't have the hardware... get in contact with me and I might be able to get some sonos hardware in your hands to begin developing.
These are two open source upnp clients written in C:
Can these be compiled for iphone and used in a gui app?