Jump to content

Insteon and Sonos with ISY-994i


jonathanud

Recommended Posts

Posted

yVdDWQ7l.jpg

 

All of what I assembled here came from other forum posts and the posted sonos.zip network resources.

It took me a while to get it all together, but I was very pleased with the results.

 

The ISY is one of the best appliances I have ever owned. I purchased it exclusively to drive my lighting, which it does masterfully: timers and adjustments matched to sunset, sunrise, and my routine. I love what it does, but I never expected it to bridge additional systems as it is now doing with Sonos. Had I known I could do this, I would have invested in Sonos sooner.

 

Thanks to you forum contributors for teaching me how to leverage it, and thank you, UD Sales for giving me a discount on the Network Module in exchange for my contribution to the community. That kind of partnership is really nice to see.

 

Objective: Living room Insteon controls for Sonos

Play/Pause button

Volume Up/Down button

Previous track button

Next track button

 

Equipment

ISY-994i with Network Module

Insteon 2486D 6 Button Control

Sonos ZP100

 

Variable

sonos_lr_play - Sonos doesn't have a play/pause toggle function, so we cheat with a variable.

 

Buttons

PLAY/PAUSE - toggle on only

VOLUME - toggle on/off to use fade up and fade down controls

PREVIOUS - toggle on only

NEXT - toggle on only

 

PLAY/PAUSE can also be used as toggle on/off, and the indicator light while match whether music is playing. As long as you use no other Sonos controls (ios app, computer, etc.), this works, but the indicator cannot be guaranteed to match the play mode when other controls are used. I opted just to have a permantently lit toggle and let my ears determine the status.

 

PROGRAMS

 

Sonos LR Next

If Control NEXT is switched On
Then Resource 'sonos.lr.next'

 

Sonos LR Pause

button1 and button2 pause the music as part of other scenes; PLAY/PAUSE is the in-room toggle button

If Control button1 is switched On
Or Control button2 is switched On
Or (Control PLAY/PAUSE is switched On
 And $sonos_lr_play = 1)
Then
Resource 'sonos.lr.pause'
$sonos_lr_play = 0

 

Sonos LR Play

If Control PLAY/PAUSE is switched On
And $sonos_lr_play = 0
Then
Resource 'sonos.lr.play'
$sonos_lr_play = 1

 

Sonos LR Previous

If Control PREVIOUS is switched On
Then
Resource 'sonos.lr.previous'

 

Sonos LR VolumeDown

Button is held, volDown repeats until button is released.

If Control VOLUME is switched Fade Down
And Control VOLUME is not switched Fade Stop
Then
Repeat 25 times
 Resource 'sonos.lr.volDown'

 

Sonos LR VolumeUp

Button is held again, volUp repeats until button is released.

If Control VOLUME is switched Fade Up
And Control VOLUME is not switched Fade Stop
Then
Repeat 25 times
 Resource 'sonos.lr.volUp'

 

 

NETWORK RESOURCES

 

sonos.lr.next

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 265
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Next"




0



 

sonos.lr.pause

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 267
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Pause"




0



 

sonos.lr.play

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 285
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"




0
1



 

sonos.lr.previous

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 273
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Previous"




0



 

sonos.lr.volumeDown

I played with the adjustments a bit to find a good speed, found that I preferred the volume decrease a little quicker than increase. Volume must change sufficiently before the Insteon button enters pairing mode.

POST /MediaRenderer/RenderingControl/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 356
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetRelativeVolume"




0
Master
-7



 

sonos.lr.volumeUp

POST /MediaRenderer/RenderingControl/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 355
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetRelativeVolume"




0
Master
6



 

Attachments

isy994i network resources sonos.zip

  • Like 3
  • Thanks 1
  • 2 weeks later...
Posted

Thanks so much for the post and resources, it was a snap to set up.

 

My wife loves going to sleep (well sleep in general) to the sound of thunder and lightening. Additionally she likes to read in bed, my loss. Her overhead bed reading can/spotlight is controlled next to her bed via switch linc. When she uses a double fast off, first all the lights in the house are turned off, then her reading spot dims to off and Sonos now loads up her thunder and lightening ambient sounds for sleeping.

 

When I described it to her initially she thought I needed to "get a life". When she used it the first time, BIG SMILE...

 

Again, I appreciate all the hard work and ground that has been plowed prior to me joining the forum.

 

Regards

 

ACD

  • 3 weeks later...
Posted

I too would like to thank dstanley, jonathanud, and everyone for the great work on this.

As a non-programmer I want to add a few simple steps for those that do not understand how to use the network resources module to make this Sonos integration a snap.

 

1- find the IP address of any Sonos zone player.

2- download either or both of the two zip files

3- import one or both zip files into the network resource manager

START SIMPLE

4- open the URL of the imported resource sonos.lr.pause or bedroom.pause

5- change the host IP address

6- save the change

7- press save at the bottom of the network resource screen

8- open ISY programs

9- create a sonos.pause program with Then resource sonos.lr.pause or bedroom.pause

10- save the program

11- open the Sonos app on any device and play any selection

12- select the ISY sonos.pause program

13- run then (right mouse click)

14- observe that you paused the player

NOW EXPAND

15- change and save the IP address of other resource URL's

16- re-read the discussion notes from the authors and tailor to your needs

17- create more resources and programs with if statements to fit your application

  • Like 3
  • Thanks 1
  • 1 month later...
Posted

Zip file is empty when I download......is there another link I'm missing something? Another link? Just came across this and would love to integrate my outdoor sonos speakers.

Posted

Hi leith,

 

Zip file is NOT empty. If you are using Windows' decompression utility, it will have a hard time opening the file. If you really need to see what's in there, try another zip utility such as AllZip.

 

With kind regards,

Michel

Posted

Michel et al...

 

The ZIP file isn't empty, but it is slightly corrupted. Using both WinZIP and WinRAR to open it after download, produces these errors:

 

Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/RES.CFG".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/1.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/2.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/3.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/6.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/7.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/8.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/9.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/16.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/17.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/4.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/5.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/10.RES".
Warning: the Zip file is read-only. A file name in the archive is invalid and had to be fixed: "/CONF/NET/11.RES".

 

Continuing past that does allow the ZIP file to open, and the files within it to be opened, which do look ok. (I opened one with Notepad++ and it appeared to be fine.)

 

Just an FYI.

Posted

Oh, I wasn't suggesting that it couldn't be, only that downloading and opening it with WinZIP or WinRAR produced the error I noted.

 

Once opened, and that error ignored, the files seemed fine.

Posted

Thanks to all that contributed to this.

 

I love my Sonos setup and this makes it and the ISY a bit more useful. I don't actually want to control my Sonos via ISY per se but rather just pause the music when leaving rooms and/or all systems when Away scene is activated leaving the house. This one feature alone was enough to get me to purchase the Network Module today.

  • 4 months later...
Posted

Is there a way to have the ISY switch the Sonos to line-in and then back to the original source to begin playing music again? Ow about group all the speakers together?

Posted

I am trying to setup Sonos on my ISY. I want to create a program that starts up and plays a pandora channel. Another that cuts sonos off.  I read another thread and got some items working, but looking for some guidance/support. Anyone willing to help?

Posted

Hi jam583,

 

Have you looked at: http://wiki.universal-devices.com/index.php?title=ISY-99i_Series_INSTEON:Networking:Network_Resources#Sonos_by_jonathanud .... you can simply import the network resources and then just change the ip/port.

 

With kind regards,

Michel

 

Yes, but I can't find any documentation on how to import. When I attempt, via the ISY, network resources, import, it says, "cannot retrieve file"

  • 1 month later...
Posted

yVdDWQ7l.jpg

 

All of what I assembled here came from other forum posts and the posted sonos.zip network resources.

It took me a while to get it all together, but I was very pleased with the results.

 

The ISY is one of the best appliances I have ever owned. I purchased it exclusively to drive my lighting, which it does masterfully: timers and adjustments matched to sunset, sunrise, and my routine. I love what it does, but I never expected it to bridge additional systems as it is now doing with Sonos. Had I known I could do this, I would have invested in Sonos sooner.

 

Thanks to you forum contributors for teaching me how to leverage it, and thank you, UD Sales for giving me a discount on the Network Module in exchange for my contribution to the community. That kind of partnership is really nice to see.

 

Objective: Living room Insteon controls for Sonos

Play/Pause button

Volume Up/Down button

Previous track button

Next track button

 

Equipment

ISY-994i with Network Module

Insteon 2486D 6 Button Control

Sonos ZP100

 

Variable

sonos_lr_play - Sonos doesn't have a play/pause toggle function, so we cheat with a variable.

 

Buttons

PLAY/PAUSE - toggle on only

VOLUME - toggle on/off to use fade up and fade down controls

PREVIOUS - toggle on only

NEXT - toggle on only

 

PLAY/PAUSE can also be used as toggle on/off, and the indicator light while match whether music is playing. As long as you use no other Sonos controls (ios app, computer, etc.), this works, but the indicator cannot be guaranteed to match the play mode when other controls are used. I opted just to have a permantently lit toggle and let my ears determine the status.

 

PROGRAMS

 

Sonos LR Next

If Control NEXT is switched On
 Then Resource 'sonos.lr.next'
Sonos LR Pause

button1 and button2 pause the music as part of other scenes; PLAY/PAUSE is the in-room toggle button

If Control button1 is switched On
 Or Control button2 is switched On
 Or (Control PLAY/PAUSE is switched On
  And $sonos_lr_play = 1)
Then
 Resource 'sonos.lr.pause'
 $sonos_lr_play = 0
Sonos LR Play

If Control PLAY/PAUSE is switched On
 And $sonos_lr_play = 0
Then
 Resource 'sonos.lr.play'
 $sonos_lr_play = 1
Sonos LR Previous

If Control PREVIOUS is switched On
Then
 Resource 'sonos.lr.previous'
Sonos LR VolumeDown

Button is held, volDown repeats until button is released.

If Control VOLUME is switched Fade Down
 And Control VOLUME is not switched Fade Stop
Then
 Repeat 25 times
  Resource 'sonos.lr.volDown'
Sonos LR VolumeUp

Button is held again, volUp repeats until button is released.

If Control VOLUME is switched Fade Up
 And Control VOLUME is not switched Fade Stop
Then
 Repeat 25 times
  Resource 'sonos.lr.volUp'

NETWORK RESOURCES

 

sonos.lr.next

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 265
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Next"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<s:Body>
		<u:Next xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
			<InstanceID>0</InstanceID>
		</u:Next>
	</s:Body>
</s:Envelope>
sonos.lr.pause

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 267
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Pause"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<s:Body>
		<u:Pause xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
			<InstanceID>0</InstanceID>
		</u:Pause>
	</s:Body>
</s:Envelope>
sonos.lr.play

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 285
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>
sonos.lr.previous

POST /MediaRenderer/AVTransport/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 273
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Previous"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<s:Body>
		<u:Previous xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
			<InstanceID>0</InstanceID>
		</u:Previous>
	</s:Body>
</s:Envelope>
sonos.lr.volumeDown

I played with the adjustments a bit to find a good speed, found that I preferred the volume decrease a little quicker than increase. Volume must change sufficiently before the Insteon button enters pairing mode.

POST /MediaRenderer/RenderingControl/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 356
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>-7</Adjustment>
		</u:SetRelativeVolume>
	</s:Body>
</s:Envelope>
sonos.lr.volumeUp

POST /MediaRenderer/RenderingControl/Control HTTP/1.1
Host: 192.168.3.134:1400
Connection: Close
Content-Type: text/xml; charset="utf-8"
Content-Length: 355
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>6</Adjustment>
		</u:SetRelativeVolume>
	</s:Body>
</s:Envelope>
Attachments

attachicon.gifisy994i network resources sonos.zip

 

 

 

Jonathanud: thank you very much for doing this. It is a very nice solution.

 

Quick question: how difficult is it do those button labels? Did you print your own, or buy them? If printing, where did you get the transparent buttons? Best, James

Posted

I too would like to thank dstanley, jonathanud, and everyone for the great work on this.

As a non-programmer I want to add a few simple steps for those that do not understand how to use the network resources module to make this Sonos integration a snap.

 

1- find the IP address of any Sonos zone player.

2- download either or both of the two zip files

3- import one or both zip files into the network resource manager

START SIMPLE

4- open the URL of the imported resource sonos.lr.pause or bedroom.pause

5- change the host IP address

6- save the change 7- press save at the bottom of the network resource screen 8- open ISY programs

9- create a sonos.pause program with Then resource sonos.lr.pause or bedroom.pause

10- save the program

11- open the Sonos app on any device and play any selection

12- select the ISY sonos.pause program

13- run then (right mouse click)

14- observe that you paused the player

NOW EXPAND

15- change and save the IP address of other resource URL's

16- re-read the discussion notes from the authors and tailor to your needs

17- create more resources and programs with if statements to fit your application

 

 

 

Question: are you using static IP addresses for your Sonos devices, or is there a program to figure out each IP address?

Posted

Question: are you using static IP addresses for your Sonos devices, or is there a program to figure out each IP address?

 

If you launch the SONOS Controller program on your PC and go to HELP - ABOUT MY SONOS SYSTEM - you will get a listing of all your equipment with it's MAC addresses and ip addresses.

 

This is the easiest way to get the info you need!

 

Dwight

Posted

If you launch the SONOS Controller program on your PC and go to HELP - ABOUT MY SONOS SYSTEM - you will get a listing of all your equipment with it's MAC addresses and ip addresses.

 

This is the easiest way to get the info you need!

 

Dwight

 

dstanley, thanks much for your reply. I did get that far, and I've got the program working. I used a togglelinc dimmer. Love it: pause and play, and volume up and down, all in one little switch. My question was what happens when you the DHCP router assigns new IP addresses to the Sonos players? Then the code would no longer work. I figured out that I need to reserve the IP address for each player (using the MAC address) in the router administration tool. Is that they way you're doing it?

Posted

When a device hooks up to a DHCP server (router) it will request an address that it is already using or it will ask to have an address assigned. Most modern routers will remember the MAC address of a device and IP address that it requested or is granted. The Sonos will always ask for the same address over again for each device when needed. I have not had an address change in years.

That said, there are some routers that will assign different addresses - in that case then a router reserved address is best to use.

  • 3 months later...
Posted

Hi  

 

Thanks for doing this! I have read this thread, but not yet tried to install.

 

Would you tell me if this can be used to select "favorites"?

Will it also do other Sonos controls not mentioned above?

If so, I assume one substitutes another sonos command in the script you provided.  Is that conceptually correct?

 

THanks

  • Like 1
  • 10 months later...
Posted

I've imported these (which worked fine, so thank you) but they don't seem to be working. I've adjusted the IP on the pause to the IP of my playbar. 

 

In my error log I'm seeing this:

 

Fri 2015/11/06 01:54:01 PM System -140008 Net Module Rule: 8:500
Fri 2015/11/06 01:54:58 PM System -140008 Net Module Rule: 8:500
Fri 2015/11/06 01:55:34 PM System -140008 Net Module Rule: 8:500
Fri 2015/11/06 01:59:14 PM System -140008 Net Module Rule: 8:500
 
 
any ideas? 
Guest
This topic is now closed to further replies.

×
×
  • Create New...