]> git.basschouten.com Git - openhab-addons.git/commitdiff
[sonos] Filter Sonos Sub from discovery (#10925)
authorlolodomo <lg.hc@free.fr>
Tue, 13 Jul 2021 10:29:54 +0000 (12:29 +0200)
committerGitHub <noreply@github.com>
Tue, 13 Jul 2021 10:29:54 +0000 (12:29 +0200)
Fix #10777

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.sonos/src/main/java/org/openhab/binding/sonos/internal/discovery/ZonePlayerDiscoveryParticipant.java

index f9102a9e67bff65464ec7520adc04244d5066a09..8b84df74bd513b48f2fc9abe0ff0391e5b907817 100644 (file)
@@ -80,6 +80,7 @@ public class ZonePlayerDiscoveryParticipant implements UpnpDiscoveryParticipant
     public @Nullable ThingUID getThingUID(RemoteDevice device) {
         if (device.getDetails().getManufacturerDetails().getManufacturer() != null) {
             if (device.getDetails().getManufacturerDetails().getManufacturer().toUpperCase().contains("SONOS")) {
+                boolean ignored = false;
                 String modelName = getModelName(device);
                 switch (modelName) {
                     case "ZP80":
@@ -94,22 +95,28 @@ public class ZonePlayerDiscoveryParticipant implements UpnpDiscoveryParticipant
                     case "Arc SL":
                         modelName = "ArcSL";
                         break;
+                    case "Sub":
+                        // The Sonos Sub is ignored
+                        ignored = true;
+                        break;
                     default:
                         break;
                 }
-                ThingTypeUID thingUID = new ThingTypeUID(SonosBindingConstants.BINDING_ID, modelName);
-                if (!SonosBindingConstants.SUPPORTED_KNOWN_THING_TYPES_UIDS.contains(thingUID)) {
-                    // Try with the model name all in uppercase
-                    thingUID = new ThingTypeUID(SonosBindingConstants.BINDING_ID, modelName.toUpperCase());
-                    // In case a new "unknown" Sonos player is discovered a generic ThingTypeUID will be used
+                if (!ignored) {
+                    ThingTypeUID thingUID = new ThingTypeUID(SonosBindingConstants.BINDING_ID, modelName);
                     if (!SonosBindingConstants.SUPPORTED_KNOWN_THING_TYPES_UIDS.contains(thingUID)) {
-                        thingUID = SonosBindingConstants.ZONEPLAYER_THING_TYPE_UID;
+                        // Try with the model name all in uppercase
+                        thingUID = new ThingTypeUID(SonosBindingConstants.BINDING_ID, modelName.toUpperCase());
+                        // In case a new "unknown" Sonos player is discovered a generic ThingTypeUID will be used
+                        if (!SonosBindingConstants.SUPPORTED_KNOWN_THING_TYPES_UIDS.contains(thingUID)) {
+                            thingUID = SonosBindingConstants.ZONEPLAYER_THING_TYPE_UID;
+                        }
                     }
-                }
 
-                logger.debug("Discovered a Sonos '{}' thing with UDN '{}'", thingUID,
-                        device.getIdentity().getUdn().getIdentifierString());
-                return new ThingUID(thingUID, device.getIdentity().getUdn().getIdentifierString());
+                    logger.debug("Discovered a Sonos '{}' thing with UDN '{}'", thingUID,
+                            device.getIdentity().getUdn().getIdentifierString());
+                    return new ThingUID(thingUID, device.getIdentity().getUdn().getIdentifierString());
+                }
             }
         }