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_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.
- 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
Here are the new setup kits for version 1.0.2. See below change log for more information
- 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)