]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fix coffee machine auto-discovery. (#11302)
authorjlaur <jacob-github@vindvejr.dk>
Sat, 25 Sep 2021 14:50:24 +0000 (16:50 +0200)
committerGitHub <noreply@github.com>
Sat, 25 Sep 2021 14:50:24 +0000 (16:50 +0200)
Fixes #8779

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/MieleBindingConstants.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/discovery/MieleApplianceDiscoveryService.java
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/CoffeeMachineHandler.java

index b435fc7c723df7b2e46498051b06287820810ac7..df74fceaa225f643ba84b95e38e4bf49d67f621b 100644 (file)
@@ -44,6 +44,9 @@ public class MieleBindingConstants {
     public static final ThingTypeUID THING_TYPE_WASHINGMACHINE = new ThingTypeUID(BINDING_ID, "washingmachine");
     public static final ThingTypeUID THING_TYPE_COFFEEMACHINE = new ThingTypeUID(BINDING_ID, "coffeemachine");
 
+    // Miele devices classes
+    public static final String MIELE_DEVICE_CLASS_COFFEE_SYSTEM = "CoffeeSystem";
+
     // Bridge config properties
     public static final String HOST = "ipAddress";
     public static final String INTERFACE = "interface";
index 703c5549b54393e414ea7a7d1788005f6e80c757..e604686cbe4b5644864a805620e799574f527652 100644 (file)
@@ -153,19 +153,18 @@ public class MieleApplianceDiscoveryService extends AbstractDiscoveryService imp
 
     private ThingUID getThingUID(HomeDevice appliance) {
         ThingUID bridgeUID = mieleBridgeHandler.getThing().getUID();
-        String modelID = null;
+        String modelId = null;
 
         for (JsonElement dc : appliance.DeviceClasses) {
             String dcStr = dc.getAsString();
             if (dcStr.contains(MIELE_CLASS) && !dcStr.equals(MIELE_APPLIANCE_CLASS)) {
-                modelID = dcStr.substring(MIELE_CLASS.length());
+                modelId = dcStr.substring(MIELE_CLASS.length());
                 break;
             }
         }
 
-        if (modelID != null) {
-            ThingTypeUID thingTypeUID = new ThingTypeUID(BINDING_ID,
-                    modelID.replaceAll("[^a-zA-Z0-9_]", "_").toLowerCase());
+        if (modelId != null) {
+            ThingTypeUID thingTypeUID = getThingTypeUidFromModelId(modelId);
 
             if (getSupportedThingTypes().contains(thingTypeUID)) {
                 ThingUID thingUID = new ThingUID(thingTypeUID, bridgeUID, appliance.getApplianceIdentifier().getId());
@@ -177,4 +176,19 @@ public class MieleApplianceDiscoveryService extends AbstractDiscoveryService imp
             return null;
         }
     }
+
+    private ThingTypeUID getThingTypeUidFromModelId(String modelId) {
+        /*
+         * Coffee machine CVA 6805 is reported as CoffeeSystem, but thing type is
+         * coffeemachine. At least until it is known if any models are actually reported
+         * as CoffeeMachine, we need this special mapping.
+         */
+        if (modelId.equals(MIELE_DEVICE_CLASS_COFFEE_SYSTEM)) {
+            return THING_TYPE_COFFEEMACHINE;
+        }
+
+        String thingTypeId = modelId.replaceAll("[^a-zA-Z0-9_]", "_").toLowerCase();
+
+        return new ThingTypeUID(BINDING_ID, thingTypeId);
+    }
 }
index 0b0cbc34c3b069c98f11c1f8e5bf53b065108108..2b5083d36212022db9c595eb963a49c7010294a3 100644 (file)
@@ -13,6 +13,7 @@
 package org.openhab.binding.miele.internal.handler;
 
 import static org.openhab.binding.miele.internal.MieleBindingConstants.APPLIANCE_ID;
+import static org.openhab.binding.miele.internal.MieleBindingConstants.MIELE_DEVICE_CLASS_COFFEE_SYSTEM;
 import static org.openhab.binding.miele.internal.MieleBindingConstants.PROTOCOL_PROPERTY_NAME;
 
 import org.openhab.binding.miele.internal.FullyQualifiedApplianceIdentifier;
@@ -39,7 +40,7 @@ public class CoffeeMachineHandler extends MieleApplianceHandler<CoffeeMachineCha
     private final Logger logger = LoggerFactory.getLogger(CoffeeMachineHandler.class);
 
     public CoffeeMachineHandler(Thing thing) {
-        super(thing, CoffeeMachineChannelSelector.class, "CoffeeSystem");
+        super(thing, CoffeeMachineChannelSelector.class, MIELE_DEVICE_CLASS_COFFEE_SYSTEM);
     }
 
     @Override