Teken Posted February 10, 2017 Posted February 10, 2017 Hello, I would like to hear from those who own a Sonos player if this devices volume output can be manipulated via the ISY Series Controllers Network Resources. If so can you offer the required Network Resource (NR) to accomplish the same. I am in the midst of selecting a whole house PA system for my voice announcement system which you can see the details here: http://forum.universal-devices.com/topic/21106-brultech-green-eye-monitor-has-a-sexy-voice/ I was really hoping to find a hardwired speaker solution that offered tight integration with the ISY Series Controller and that which didn't exceed my modest budget. The project goals are to deploy several networked speakers such as the Sonos variety through out the home and property. The aim is to allow me to preset lower volume output for the sleeping hours for such things as when the refrigerator / freezer go into defrost mode. Currently my test bench has a very modest USB speaker directly attached to the RPi which handles the reactive Julie U.S. voice announcements. Unfortunately, its cranked wide open to allow me and the family to hear the voice messages which isn't ideal during sleeping hours. The girl friend was startled a few times when Julie U.S. started speaking in the wee hours. The ensuring result is she went into security mode and placed the entire home in lock down. Better safe than sorry for sure but it high lighted the fact people are not expecting to hear strange voices at 3:25 AM in the morning! Any insight as to the Sonos volume question is greatly appreciated. Also, if others know of a comparable (cheaper) network speaker system that has been field proven to be integrated with the ISY Series Controller please do let me know. I have no preference over one or the other and simply went this route because it was common, well supported, and had mass adoption from the HA enthusiasts. I must stress the network speaker must fall with in the Sonos price point or below along with having the ability to be connected in unison to send the same broadcast message.
andyf0 Posted February 10, 2017 Posted February 10, 2017 The are two Sonos packages on the Wiki for Network Resources. I'm pretty sure I saw volume up and down in one of them. I only use Mute & Unmute functions in my ISY.
Bumbershoot Posted February 10, 2017 Posted February 10, 2017 (edited) Yes, you can. Here's a snip of the NR for volume up: Port:1400 Timeout:500 Mode: Raw text POST /MediaRenderer/RenderingControl/Control HTTP/1.1 Host: 192.168.0.29:1400 Connection: Close Content-Type: text/xml; charset="utf-8" Content-Length: 333 SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetRelativeVolume" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:SetRelativeVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"> <InstanceID>0</InstanceID> <Channel>Master</Channel> <Adjustment>15</Adjustment> </u:SetRelativeVolume> </s:Body> </s:Envelope> Just set the <Adjustment> value to a negative # for volume down: <Adjustment>-15</Adjustment> Edited February 10, 2017 by Bumbershoot
Teken Posted February 10, 2017 Author Posted February 10, 2017 Bumbershoot, Excellent, please correct me if I am wrong since all of the speakers have an assigned IP address. I can assign what ever speaker(s) to play what ever WAV file along with setting its independent volume, correct? The initial plan(s) are to define quiet hours for less important announcements with a lower volume so its broadcast-ed to all zones speakers. Any important voice announcements would be set to the volume of choice say fire, co, weather, etc.
kohai Posted February 10, 2017 Posted February 10, 2017 Bumbershoot, Excellent, please correct me if I am wrong since all of the speakers have an assigned IP address. I can assign what ever speaker(s) to play what ever WAV file along with setting its independent volume, correct? The initial plan(s) are to define quiet hours for less important announcements with a lower volume so its broadcast-ed to all zones speakers. Any important voice announcements would be set to the volume of choice say fire, co, weather, etc. Sonos can't store audio files but you can tell it to play a file that is located somewhere on your network. I do that for my doorbell. I wish it were more straight forward. I have installed the polyglot for sonos but haven't tried delving into how I can get it to play an audio file.
Teken Posted February 10, 2017 Author Posted February 10, 2017 Sonos can't store audio files but you can tell it to play a file that is located somewhere on your network. I do that for my doorbell. I wish it were more straight forward. I have installed the polyglot for sonos but haven't tried delving into how I can get it to play an audio file. Understood, I wasn't trying to store the audio files as so much as assigning zoned speakers to play specific files when required. The bulk of this conditional logic would of course be embedded into the ISY Series Controller and relies on me crafting the appropriate programs to meet this need. I just wanted to make sure each speaker could be addressed individually or as a group when and where required. This will be the next step in my home automation system which seems to have taken years to accomplish. I rather ask all the relevant questions to those who know so I can do this right the first go round. Rather not waste time, money, and resources in something that won't meet my current and future needs. As an aside there have been a few network PA speakers in the security field from Axis which initially caught my eye. If only they made this thing smaller and visually more pleasing it would have been my go to product. They also have a larger ceiling speaker that is POE and network enabled out of the box - but again it was too huge for my current project. I may consider this option later down the line but it also requires a 24/7/365 PC to be running which totally counters my energy conservation goals.
Bumbershoot Posted February 10, 2017 Posted February 10, 2017 Bumbershoot, Excellent, please correct me if I am wrong since all of the speakers have an assigned IP address. I can assign what ever speaker(s) to play what ever WAV file along with setting its independent volume, correct? The initial plan(s) are to define quiet hours for less important announcements with a lower volume so its broadcast-ed to all zones speakers. Any important voice announcements would be set to the volume of choice say fire, co, weather, etc. You can have any speaker play with an independently set volume. I haven't tried to play a specific file, but the following NR will allow you to play a Sonos Playlist: POST /MediaRenderer/AVTransport/Control HTTP/1.1 Host: 192.168.0.29:1400 Connection: Close Content-Type: text/xml; charset="utf-8" Content-Length: 801 SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#StartAutoplay" <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:StartAutoplay xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> <ProgramURI>file:///jffs/settings/savedqueues.rsq#2</ProgramURI> <ProgramMetaData><DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upup="urn:schemas-upnp.org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><itemid="SD:2" parentID="SD"</ProgramMetaData> <Volume>8</Volume> <IncludeLinkedZones>0</IncludeLinkedZones> <ResetVolumeAfter>8</ResetVolumeAfter> </u:StartAutoplay> </s:Body> </s:Envelope> The magic is in this line: <ProgramURI>file:///jffs/settings/savedqueues.rsq#2</ProgramURI> If you edit "savedqueues.req#2" to request another queue: "savedqueues.req#3" could allow you, conceptually, to create playlists with one file in them, and create a distinct NR for each one. I believe that Sonos sequentially creates a new savedqueues.req# for each playlist, though I haven't definitively discovered the relationship between these numbers and each playlist. I don't believe that deleted playlist numbers are reused by Sonos, to if you've fooled with your playlists extensively, this may be become difficult. There must be a better way, though I don't know what it is at the moment.
Teken Posted February 10, 2017 Author Posted February 10, 2017 Bumbershoot, Really appreciate the over view and detailed NR's for future use. I am quite sure this same information will help those who already have a Sonos player in place. Right now I am still on the fence about laying out all this expanse for multi-room speaker (PA) system. Just trying to justify the real world cost(s) of moving forward with this or any speaker solution. There are probably more pros' vs con's spinning around my little head right now and the only single one is just plain cost. I was really hoping after five years the market would have released something like the Sono's. The major stumbling blocks I seem to run into is either no open network API, no zoning, grouping, to what I consider basic no need for a 24-7-365 PC! I am sure once all of the relevant competitor products that I am reviewing are done. It will more than likely be the Sono's players given it meets all of the requirements and ease of access etc. Thank You Sir!
chrishick Posted February 10, 2017 Posted February 10, 2017 (edited) Teken, As already stated, you can increase/decrease volume or set a specific level of 0-100. You can also group or ungroup speakers. I have no experience with playing specific sound file from the network. If you use the speakers for other things such as music, they will interrupt play for your announcements and not resume. This was a deal breaker for me. Another cheaper and more flexible option would be a RasPi with OpenElec, WiFi adapter and a cheap powered speaker. This is what I use for voice announcements and it works very well. I hid the whole setup in a decorative box in the corner of the living room. Should be less than $100 total. The only drawback would be no grouping. Edit: On further thought, I think the ideal solution would be in ceiling speakers with a central amplifier. You could hook a Pi to each zone, but again, no grouping. I wonder if someone makes some type of network addressable audio switcher that could turn channels on/off as needed prior to each announcement. Maybe an IOLinc for each channel attached to a relay of some sort. Edited February 10, 2017 by chrishick
Teken Posted February 10, 2017 Author Posted February 10, 2017 Teken, As already stated, you can increase/decrease volume or set a specific level of 0-100. You can also group or ungroup speakers. I have no experience with playing specific sound file from the network. If you use the speakers for other things such as music, they will interrupt play for your announcements and not resume. This was a deal breaker for me. Another cheaper and more flexible option would be a RasPi with OpenElec, WiFi adapter and a cheap powered speaker. This is what I use for voice announcements and it works very well. I hid the whole setup in a decorative box in the corner of the living room. Should be less than $100 total. The only drawback would be no grouping. Edit: On further thought, I think the ideal solution would be in ceiling speakers with a central amplifier. You could hook a Pi to each zone, but again, no grouping. I wonder if someone makes some type of network addressable audio switcher that could turn channels on/off as needed prior to each announcement. Maybe an IOLinc for each channel attached to a relay of some sort. Can you offer a little more insight to the high lighted portion. Was the deal breaker a pro vs con for you? As I see great benefit in *Cutting In* when an alert message is present. I have no problem using a smart application to resume audio . . . RE: RPI, I have considered going the central amplifier route already and may entertain this if a viable and straight forward solution is present. I won't lie to anyone at this juncture trying to balance *Time Suck* projects with life is something that drives much of the projects I have undertaken. I love to learn and take on new endeavors but sometimes the amount of time to learn, read, and accomplish the same just takes away the joy I'm after. I fully realize lots of this requires work, effort, and resources but right now my life is at that tipping point. Like others have said before me - Sometimes you just have to throw money at it! My problem is trying to accomplish that on a KD (Kraft Dinner) budget . . . LOL . . .
chrishick Posted February 10, 2017 Posted February 10, 2017 For instance watching a great movie using my Sonos Playbar, an announcement comes through, the movie keeps playing but no sound. I've got to fumble around to find my phone, open the app and resume play. Too annoying for me but YMMV Sent from my iPhone using Tapatalk
MWareman Posted February 10, 2017 Posted February 10, 2017 Tonight (when I get home), I'll find my .PHP script. I have built an API that calls the Google TTS service and references an mp3, saving the mp3 for future use. It then directs Sonos to play it. I'll see if it can be modified to be call specific mp3 files directly. I do everything thru a single zone currently though. I gave not looked into multi-zone announcements (yet)
Teken Posted February 10, 2017 Author Posted February 10, 2017 For instance watching a great movie using my Sonos Playbar, an announcement comes through, the movie keeps playing but no sound. I've got to fumble around to find my phone, open the app and resume play. Too annoying for me but YMMV Sent from my iPhone using Tapatalk Ah got it - Sadly, I won't be using the Sonos for such a use case so the *Cut In* will be more than fine in this application. For me its trying to find a network speaker that allows tight integration with the ISY Series Controller to alter the volume when and if required. Bumbershoot has already offered this critical piece of information so unless someone can offer a comparable alternative system it may very well be the Sono's is the speaker of choice.
MWareman Posted February 10, 2017 Posted February 10, 2017 For instance watching a great movie using my Sonos Playbar, an announcement comes through, the movie keeps playing but no sound. I've got to fumble around to find my phone, open the app and resume play. Too annoying for me but YMMV Sent from my iPhone using Tapatalk True. I use MythTV, and when MythTV is playing something I opt for network screen pop-ups instead. Much less distracting.
Teken Posted February 10, 2017 Author Posted February 10, 2017 (edited) Tonight (when I get home), I'll find my .PHP script. I have built an API that calls the Google TTS service and references an mp3, saving the mp3 for future use. It then directs Sonos to play it. I'll see if it can be modified to be call specific mp3 files directly. I do everything thru a single zone currently though. I gave not looked into multi-zone announcements (yet) Michael, Your contribution to this effort is also greatly appreciated - more the merrier I say! I should add the bulk of this deployment is *Local First* as I'm trying to reduce my reliance on other outside factors like a loss of Internet, 3rd party services, etc. Edited February 10, 2017 by Teken
chrishick Posted February 10, 2017 Posted February 10, 2017 And the Pi was super simple if I remember right. I know nothing about Pi's but I loaded the OpenElec image to an sd card and plugged it into the Pi. It auto boots into OpenElec. I think I had to load driver for WiFi dongle and set fixed IP address. Load the audio files onto the sd card and you're done. Network call to play audio file or set volume. Sent from my iPhone using Tapatalk
kohai Posted February 11, 2017 Posted February 11, 2017 https://github.com/kohai-ut/sonos-isy/blob/master/sonos-isy.py In my script, I try to track where the sonos was in the playlist so that I can try to resume after playing my networked wav file. This script doesn't use polyglot which is what I want to use... I wrote this before the sonos polyglot was available.
MWareman Posted February 11, 2017 Posted February 11, 2017 I have my sonos directly play a .mp3 stored on my NAS with this network resource: POST /MediaRenderer/AVTransport/Control HTTP/1.1 Host: <ip.of.sonos>:1400 Connection: Close Content-Type: text/xml; charset="utf-8" Content-Length: 486 SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> <CurrentURI>x-file-cifs://<ip.of.nas>/announcements/alarm_set_to_arm_away_in_5_minutes.mp3</CurrentURI> <CurrentURIMetaData></CurrentURIMetaData> </u:SetAVTransportURI> </s:Body> </s:Envelope> Change <ip.of.sonos> to the IP of the sonos zone device, and <ip.of.nas> to the IP of the storage. The storage must have a share set to allow 'Everyone' read access (since the sonos will not authenticate). This way - you can define many network resources, each pointing at a separate .mp3. The permissioning of the share on the nas was very finicky though.... 1
Teken Posted February 11, 2017 Author Posted February 11, 2017 Michael, Much Thanks ! ========================= The highest calling in life is to serve ones country faithfully - Teach others what can be. Do what is right and not what is popular. 1
Outlander Posted February 11, 2017 Posted February 11, 2017 I have my sonos directly play a .mp3 stored on my NAS with this network resource: POST /MediaRenderer/AVTransport/Control HTTP/1.1 Host: <ip.of.sonos>:1400 Connection: Close Content-Type: text/xml; charset="utf-8" Content-Length: 486 SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> <CurrentURI>x-file-cifs://<ip.of.nas>/announcements/alarm_set_to_arm_away_in_5_minutes.mp3</CurrentURI> <CurrentURIMetaData></CurrentURIMetaData> </u:SetAVTransportURI> </s:Body> </s:Envelope> Change <ip.of.sonos> to the IP of the sonos zone device, and <ip.of.nas> to the IP of the storage. The storage must have a share set to allow 'Everyone' read access (since the sonos will not authenticate). This way - you can define many network resources, each pointing at a separate .mp3. The permissioning of the share on the nas was very finicky though.... I did manage to get this working and it was easier than I had thought. No problems with permissions as I copied the file to the "Public" section on a WD My Book Live. The only hiccup I had was that I had to tell Sonos to "Play" with another network resource after the file loaded into the queue. I will test and experiment more with this later. Thanks again for your help on this. 1
MWareman Posted February 11, 2017 Posted February 11, 2017 (edited) I did manage to get this working and it was easier than I had thought. No problems with permissions as I copied the file to the "Public" section on a WD My Book Live. The only hiccup I had was that I had to tell Sonos to "Play" with another network resource after the file loaded into the queue. I will test and experiment more with this later. Thanks again for your help on this. Ahhh, yes. Sorry. Forgot about the 'Play' resource. I have my ISY program queue the resource then send play. Sorry about that! Play: POST /MediaRenderer/AVTransport/Control HTTP/1.1 Host: <ip.of.sonos>:1400 Connection: Close Content-Type: text/xml; charset="utf-8" Content-Length: 266 SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> <Speed>1</Speed> </u:Play> </s:Body> </s:Envelope> Edited February 11, 2017 by MWareman
Michel Kohanim Posted February 12, 2017 Posted February 12, 2017 Hi all, Has anyone tried our Polyglot version? http://forum.universal-devices.com/topic/18643-polyglot-sonos-nodeserver/ With kind regards, Michel
Teken Posted February 12, 2017 Author Posted February 12, 2017 Looking forward to using the Polyglot Node Server for such an integration. Is there a general ETA when the Beta release will be seen this year? In the provided link you offered there was talk about stream lining the whole (Polyglot) process. Has someone started on the path to create a RPi image where all a person needs to do is change a few network parameters? I can't stress enough investing the time and resources to get such a thing done will surely increase and speed the adoption rate of such frame work. After reading countless threads with some of the smartest people having basic to advanced issues just to get the system up and running. Isn't something I would consider plug and play which ultimately affects public adoption for the average user.
Bumbershoot Posted February 13, 2017 Posted February 13, 2017 I was hoping I could stash an audio file in the web space on my ISY and somehow cajole a NR and Sonos to play the file from there. I haven't figured out how to configure an http resource to have Sonos grab the file, as Sonos always coughs up a "permission denied" response. Maybe this can't be done, as I haven't found a shred of documentation on what that NR would look like. I'd like to eliminate the NAS on my network, and just let the ISY web server serve up the audio file. If anybody has an idea on how to make this work, I'd love to hear it! Ahhh, yes. Sorry. Forgot about the 'Play' resource. I have my ISY program queue the resource then send play. Sorry about that! Play: POST /MediaRenderer/AVTransport/Control HTTP/1.1 Host: <ip.of.sonos>:1400 Connection: Close Content-Type: text/xml; charset="utf-8" Content-Length: 266 SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play" <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> <Speed>1</Speed> </u:Play> </s:Body> </s:Envelope Hi all,Has anyone tried our Polyglot version?http://forum.universal-devices.com/topic/18643-polyglot-sonos-nodeserver/With kind regards,Michel I'm waiting for this bug, noted in the 5.0.7 release notes to be resolved: Cannot recreate reported problems: 0000314 – Node server disappears after restart I've got Polyglot running anyway, and Sonos, Nest, Camera and Nodelink items all appear in my logs, but there's nothing in the ISY Admin Console that allows me access to the devices. I loved it when it worked!
Michel Kohanim Posted February 13, 2017 Posted February 13, 2017 Hi Teken, 1. Unfortunately no ETA since each and every release depends on the bugs we find 2. Yes, Polyglot has been refined and many contribute to it and especially einstein.42 With kind regards, Michel
Recommended Posts