--
You received this message because you are subscribed to the Google Groups "CommandFusion Software" group.
To view this discussion on the web visit https://groups.google.com/d/msg/commandfusion/-/Fr-vshW8tTsJ.
To post to this group, send email to comman...@googlegroups.com.
To unsubscribe from this group, send email to commandfusio...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/commandfusion?hl=en.
Whilst I don't really want to rewrite the code just to get around the current release issue, I will give a bit of thought as to an easy way to give a discovery or hard code option as the later would allow working over a VPN which Sonos itself can't without some network traffic fiddling as UDP would not naturally traverse the VPN. Might be useful for me to allow remote development and testing of the app.
Simon
--
You received this message because you are subscribed to the Google Groups "CommandFusion Software" group.
To view this discussion on the web visit https://groups.google.com/d/msg/commandfusion/-/aJusEDqO01EJ.
Simon
--
Simon
Simon
Are you technical enough to wireshark? If so run wireshark and then run your Sonos app and look for the UDP MSearch messages and post a copy of this packet if you can. I will also try changing the UPNP search to make it non-Sonos specific, I.e return all UPNP devices, and then filter only Sonos devices. This is less efficient but it will prove whether there is a Sonos naming issue.
Simon
ok, well in this case its actually probably easier if you can tell me the changes you made and then i can edit the gui files and the join numbers, is that possible?
Simon
As part of working on the Sonos module for CF I am trying to get information from Spotify. I am using the code below. I get a response of Error 400 with an error of what I think is unrecognised SOAPACTION. However if I cut and paste the exact same SOAPAction and SOAPBody into Fiddler with the same host/url etc and fire it directly at Sonos I get the expected response gzip encrypted. Anyone see anything I am doing wrong? I have removed the tag 'sessionID' in the code below so this will not work if you try and cut and paste into Fiddler as the sessionID is my Spotify account so would give anyone access to my account through Sonos if this probelm is solved! BTW this function worked previously although it would appear Sonos modified their Spotify handling in their latest release (this output is taken by looking at the Wireshark traffic in the new Sonos version)Simonself.retrieveMusicFromSpotify = function (callback, DeviceID, DeviceProvider, SessionID, ItemID, StartingIndex, RequestedCount) {var host = "http://spotify.west.sonos-ws-eu.com";var url = '/smapi';var SOAPAction = "http://www.sonos.com/Services/1.1#getMetadata";var SOAPBody = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><credentials xmlns="http://www.sonos.com/Services/1.1"><deviceId>00-0E-58-28-3B-D4:8</deviceId><deviceProvider>Sonos</deviceProvider><sessionId>removed</sessionId></credentials></s:Header><s:Body><getMetadata xmlns="http://www.sonos.com/Services/1.1"><id>root</id><index>0</index><count>100</count></getMetadata></s:Body></s:Envelope>';var url = host + url;CF.log("url is: " + url);CF.log("SOAPAction is : " + SOAPAction);CF.log("SOAP Body is: " + SOAPBody + "\r\n");CF.request( url, 'POST', {'SOAPAction': SOAPAction}, SOAPBody, function(status, headers, body) {if (status == 200) {//CF.log("Spotify response is: " + body)callback( body )}else {CF.log('POST failed with status ' + status);}});}
--
Simon
Simon
--
Have not written search to do radio yet. Can look to add the local buttons back although you can get to the equivalent through the radio menus I believe. Will check as to why it is not showing default album art as the code is there to do it!! The white box does nothing. A hang over from the subpage I stole from the JRiver GUI. Have been focused on code rather than aesthetics mainly as I am useless at aesthetics.
Simon
Thanks
As regards changes to the GUI, where a few but best way to find out is to use a diff tool on the XML.
Simon
--
Have no time at the moment to work on the module. Not sure why it would loose sync although it will loose sync after 3 hours. Have not yet bothered to right the code to refresh its notification registration (Sonos has a 360 minute maximum time that you can register to receive notifications from the players). What is not syncing? Queue info or the now playing info (different message types)? There does not seem to much community interest in supporting the module and I am a bit busy at the moment.
Simon
Simon
I am not a Sonos user but a user of LMS, Logitech Music Server, aka SqueezeServer/SqueezePlayer/....
When I was doing Pronto development I developed the equivalent of what you are doing for the CF iPad for the Pronto PRO and LMS. It was all in Javascript with great graphics and excellent reliability/capability. I sold about 400 copies worldwide for $29.95 per.
When I switched to the CF iPad I was going to port the system over to the iPad but found an already done app called SqueezePad which was as good as what I developed if not better for $10. SqueezePad had a URL schema so switching to it from my CF iPad app was a single button press. Getting back was a little harder since a return mechanism was not implemented. It took two button presses; one to get out of SqueezePad (it went to background with the music still playing) and one to bring back my CF iPad app which was in background.
The developer of the SqueezePad app recently contacted me as he is just putting his Sonos app into beta testing and asked me if I would want to join the test team. I had to decline as I do not own any Sonos gear so testing would be a real challenge.
He informed me that he has implemented a return mechanism which I am assuming requires the app being returned to, to have a URL schema. I suspect the return URL Schema is passed as a parameter of the URL Schema which brings his app up. He also indicated that once it is fully working in the Sonos app, he will retrofit the SqueezePad app with the same capability.
Don't get me wrong. I am not advocating any cessation of the Sonos development; in fact if I had a Sonos system I would be right there with you. I just want to call the teams attention to what is out there (or soon to be).
Does the CF iViewer have a URL schema so it can be referenced and dynamically loaded?
--
As part of working on the Sonos module for CF I am trying to get information from Spotify. I am using the code below. I get a response of Error 400 with an error of what I think is unrecognised SOAPACTION. However if I cut and paste the exact same SOAPAction and SOAPBody into Fiddler with the same host/url etc and fire it directly at Sonos I get the expected response gzip encrypted. Anyone see anything I am doing wrong? I have removed the tag 'sessionID' in the code below so this will not work if you try and cut and paste into Fiddler as the sessionID is my Spotify account so would give anyone access to my account through Sonos if this probelm is solved! BTW this function worked previously although it would appear Sonos modified their Spotify handling in their latest release (this output is taken by looking at the Wireshark traffic in the new Sonos version)Simonself.retrieveMusicFromSpotify = function (callback, DeviceID, DeviceProvider, SessionID, ItemID, StartingIndex, RequestedCount) {var host = "http://spotify.west.sonos-ws-eu.com";var url = '/smapi';var SOAPAction = "http://www.sonos.com/Services/1.1#getMetadata";var SOAPBody = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><credentials xmlns="http://www.sonos.com/Services/1.1"><deviceId>00-0E-58-28-3B-D4:8</deviceId><deviceProvider>Sonos</deviceProvider><sessionId>removed</sessionId></credentials></s:Header><s:Body><getMetadata xmlns="http://www.sonos.com/Services/1.1"><id>root</id><index>0</index><count>100</count></getMetadata></s:Body></s:Envelope>';var url = host + url;CF.log("url is: " + url);CF.log("SOAPAction is : " + SOAPAction);CF.log("SOAP Body is: " + SOAPBody + "\r\n");CF.request( url, 'POST', {'SOAPAction': SOAPAction}, SOAPBody, function(status, headers, body) {if (status == 200) {//CF.log("Spotify response is: " + body)callback( body )}else {CF.log('POST failed with status ' + status);}});}