From 667ad7a3aaca7bbd0f7fbcad422c48d28ebce3c9 Mon Sep 17 00:00:00 2001 From: Nick Farina Date: Sun, 9 Aug 2015 08:22:00 -0700 Subject: [PATCH] [Sonos] don't add duplicate rooms Fixes #98 --- platforms/Sonos.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) 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); + } } }); });