diff --git a/platforms/Sonos.js b/platforms/Sonos.js index 15523c6..5f38944 100644 --- a/platforms/Sonos.js +++ b/platforms/Sonos.js @@ -13,15 +13,27 @@ SonosPlatform.prototype = { this.log("Fetching Sonos devices."); var that = this; + // track found devices so we don't add duplicates + var roomNamesFound = {}; + sonos.search(function (device) { that.log("Found device at " + device.host); device.deviceDescription(function (err, description) { - if (description["zoneType"] != '11') { - that.log("Found playable device - " + description["roomName"]); - // device is an instance of sonos.Sonos - var accessory = new SonosAccessory(that.log, that.config, device, description); - callback([accessory]); + if (description["zoneType"] != '11' && description["zoneType"] != '8') { // 8 is the Sonos SUB + + var roomName = description["roomName"]; + + if (!roomNamesFound[roomName]) { + roomNamesFound[roomName] = true; + that.log("Found playable device - " + roomName); + // device is an instance of sonos.Sonos + var accessory = new SonosAccessory(that.log, that.config, device, description); + callback([accessory]); + } + else { + that.log("Ignoring playable device with duplicate room name - " + roomName); + } } }); });