After some more work I came up with a better solution written on C# by using Open Software’s UPnP stacks. The advantage is that the whole solution is installable and works out of the box.
Every user is only responsible to edit the UniqueDeviceNames.ini file in a proper way. We assist this step too.
What you need
- A KNX installation and properly defined group addresses (see
[commands list]
section of the ini file). Also you need a KNX/IP interface to be able to transmit selected KNX telegrams via IP network. In particular, a Gira HomeServer can perform this function. - A Sonos system. We will discover all online ZonePlayers and put them in a text file for your convenience. Do not mind anymore the complicated IDs, will use only friendly names as you see them in the original Sonos Controlles.
- A Windows box with Microsoft .NET Framework 2.0
- The Sonos KNX interface Setup v1.0.0 kit from here. PLEASE DO NOT INSTALL THIS VERSION ANYMORE! CHECK BELOW FOR UPDATES!
How to install
- Double click on setup.exe and follow the directions on the screen. Accept all security warnings (windows and firewall). Remember the installation folder location.
- Go to computer management, expand Services and look for SonosHS service. Start it (only once, the service is set to automatic startup for the future)
- in about 30 seconds a filename UniqueDevicesNames.txt will be written in the installation folder. Check this file to make sure you use the proper Zone Players friendly names in the next step
- edit the file UniqueDevicesNames.ini and make sure to use proper group addresses and zone player names in sections
[map_to_zone]
and[map_to_command]
. For a list of available zones see UniqueDevicesNames.txt and for a list of available commands see the[commands list - this section is only informative]
section. Also make sure you input proper IP and port addresses for the KNX IP interface. - save the ini file. there is no need to restart the service, all should work from now on
How to debug
Stay tuned, I will post a Windows form application with identical functionality soon. Just look at the form and see if you can properly receive the KNX telegrams. The source code (VS2010 solution) is available upon request.
Known issues
- if you add a Zone Player after the service starts, this Zone Player will not be visible to the interface until the service SonosHS is restarted (or the computer is restarted)
- not all commands are implemented at this moment
- there is no feedback implemented from Sonos to the KNX
- the solution requires some CPU and memory optimization
Enjoy!
UPDATE 22/10/2010
Here are the new setup kits for version 1.0.2. See below change log for more information
ChangeLog
1.0.2 - compatible with 32 and 64 bits systems - added: toggleMute 1bit command - added: balance control via EIS6 command (0=max left, 50=balanced, 100=max right) - added: play mode change via KNX 4 bit control with 0:NORMAL, 1:INTRO, 2:SHUFFLE, 3:RANDOM, 4:REPEAT_ONE, 5:REPEAT_ALL, 6-15:NORMAL - got rid of UniqueDeviceNames.txt file, now we manage the [zone_list] section inside the UniqueDeviceNsmes.ini file directly - more debug information in EventViewer, under Application logs, source SonosHS - the service starts automatically, no need for user intervention (not nice solution but it works) issues: Sonos ZonePlayers seem to respond inaccurately to Play Mode commands, perhaps the UPnP standard implementation does not match between Sonos and Open Software (Intel) 1.0.1 - initial version x86 compatible only - supports transport commands: play, stop, pause, next, previous, mute, unmute - supports volume commands: master volume via EIS 6 (0...100)
Tags: Sonos
-
Hi,
Getting the following error:
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.1.13:7003
IP is correct not sure about the port no info form my IP interface.
Many Thanks
Martin
-
Excellent, forgot to check the send and receive comm objects – works great! Thanks for the application.
Martin
-
Great post, this looks like it is going to be of great help to me! I have a problem where after I have altered the file to include the appropriate commands I try to save it but it tells me access is denied?
Any help would be greatly appreciated!!
Kind regards,
Davey
-
Please send me an exemple of files.ini full. I dont understand thats necessary in map zone et map command
i send my files
MAP_TO_ZONE]
6/2/1=PORTABLE
6/2/42=DINING ROOM
6/2/25=LIVING ROOM
6/2/13=PATIO
6/2/35=LIVING ROOM
6/2/16=MASTER BEDROOM
6/2/53=PATIO
6/2/43=PATIO
6/2/6=MASTER BEDROOM
6/2/33=PATIO
6/2/52=DINING ROOM
6/2/15=LIVING ROOM
6/2/23=PATIO
6/2/45=LIVING ROOM
6/2/24=GUEST ROOM
6/2/36=MASTER BEDROOM
6/2/51=PORTABLE
6/2/4=GUEST ROOM
6/2/31=PORTABLE
6/2/56=MASTER BEDROOM
6/2/12=DINING ROOM
6/2/26=MASTER BEDROOM
6/2/54=GUEST ROOM
6/2/5=LIVING ROOM
6/2/91=PORTABLE
6/2/32=DINING ROOM
6/2/46=MASTER BEDROOM
6/2/71=PORTABLE
6/2/34=GUEST ROOM
6/2/11=PORTABLE
6/2/41=PORTABLE
6/2/3=PATIO
6/2/61=PORTABLE
6/2/2=DINING ROOM
6/2/14=GUEST ROOM
6/2/81=PORTABLE
6/2/21=PORTABLE
6/2/44=GUEST ROOM
6/2/55=LIVING ROOM
6/2/22=DINING ROOM[MAP_TO_COMMAND]
6/2/34=MUTEUNMUTE
6/2/36=MUTEUNMUTE
6/2/71=
6/2/56=
6/2/1=VOLUMEX
6/2/31=MUTEUNMUTE
6/2/44=NEXTPREVIOUS
6/2/45=NEXTPREVIOUS
6/2/23=PAUSE
6/2/2=VOLUMEX
6/2/24=PAUSE
6/2/41=NEXTPREVIOUS
6/2/25=PAUSE
6/2/22=PAUSE
6/2/51=
6/2/91=BALANCE
6/2/32=MUTEUNMUTE
6/2/13=PLAYSTOP
6/2/54=
6/2/14=PLAYSTOP
6/2/35=MUTEUNMUTE
6/2/61=SETPLAYMODE
6/2/11=PLAYSTOP
6/2/26=PAUSE
6/2/6=VOLUMEX
6/2/15=PLAYSTOP
6/2/46=NEXTPREVIOUS
6/2/5=VOLUMEX
6/2/81=TOGGLEMUTE
6/2/21=PAUSE
6/2/43=NEXTPREVIOUS
6/2/42=NEXTPREVIOUS
6/2/53=
6/2/16=PLAYSTOP
6/2/52=
6/2/12=PLAYSTOP
6/2/4=VOLUMEX
6/2/33=MUTEUNMUTE
6/2/3=VOLUMEX
6/2/55=[COMMANDS LIST – THIS SECTION IS ONLY INFORMATIVE]
MUTEUNMUTE = KNX_1BIT_1=MUTE_0=UNMUTE
SETPLAYMODE = KNX_4BIT_0_15 PLAY MODE: 0:NORMAL, 1:INTRO, 2:SHUFFLE, 3:RANDOM, 4:REPEAT_ONE, 5:REPEAT_ALL
NEXTPREVIOUS= KNX_1BIT_1=NEXT_0=PREVIOUS
PLAYSTOP = KNX_1BIT_1=PLAY_0=STOP
TOGGLEMUTE = KNX_1BIT_1=TOGGLEMUTE
VOLUMEX = KNX_8BIT_EIS6_0-100_MASTERVOLUME
PAUSE = KNX_1BIT_1=PAUSE
BALANCE = KNX_8BIT_EIS6_0-100: 0 IS MAX LEFT, 50 IS BALANCED, 100 IS MAX RIGHT[ZONE_LIST]
PORTABLE=RINCON_000E58721DCC01400_MR
CHAMBRE ISA=RINCON_000E5871262E01400_MR[HS]
PORT=7003
KEY=
IP=192.168.0.170 -
It s possible to connect witloof interface knx ip basic? If yes what the key? The port us normaly 3671
-
this is my config
[MAP_TO_ZONE]
6/2/1=PORTABLE[MAP_TO_COMMAND]
6/2/1=MUTEUNMUTE[COMMANDS LIST – THIS SECTION IS ONLY INFORMATIVE]
MUTEUNMUTE = KNX_1BIT_1=MUTE_0=UNMUTE
SETPLAYMODE = KNX_4BIT_0_15 PLAY MODE: 0:NORMAL, 1:INTRO, 2:SHUFFLE, 3:RANDOM, 4:REPEAT_ONE, 5:REPEAT_ALL
NEXTPREVIOUS= KNX_1BIT_1=NEXT_0=PREVIOUS
PLAYSTOP = KNX_1BIT_1=PLAY_0=STOP
TOGGLEMUTE = KNX_1BIT_1=TOGGLEMUTE
VOLUMEX = KNX_8BIT_EIS6_0-100_MASTERVOLUME
PAUSE = KNX_1BIT_1=PAUSE
BALANCE = KNX_8BIT_EIS6_0-100: 0 IS MAX LEFT, 50 IS BALANCED, 100 IS MAX RIGHT[ZONE_LIST]
PORTABLE=RINCON_000E58721DCC01400_MR
CHAMBRE ISA=RINCON_000E5871262E01400_MR[HS]
PORT=3671
KEY=
IP=192.168.0.170when i send 1 on gad 6/2/1 there sonos dont mute.
it is possible to view a log
-
i haved try and there are no telegram traced ? I try with 2 différent interface ip/KNX and thre are not telegram. y have probably a problem with firewal with my port knx (3671).
-
I am trying to make this software work with a Siemens N148/22 KNX/IP gateway, but there is no telegrams reaching the bus.
Can the source be changed to make this work with other gateways than Gira Homeserver? -
Hi,
I am using a Jung Facility Pilot at home and have a several Sonos Players that i want to control. Do you have any experience that this service will work with the Jung facility pilot? And if yes how to set it up? I think I understand the configuration of the service, and the configuration ini file but how do I connect it to KNX then?
Sorry if this questions are stupid and already thanks for your help.Regards,
Marc
18 comments
Comments feed for this article