From b65e93265091b78b60acaf51be880bb3b3fed601 Mon Sep 17 00:00:00 2001 From: J-N-K Date: Sun, 7 Feb 2021 22:56:31 +0100 Subject: [PATCH] [amazonechocontrol] fix smarthome device naming (#10084) * fix smarthome device naming * toString Signed-off-by: Jan N. Klug --- .../discovery/SmartHomeDevicesDiscovery.java | 20 ++++++++++++------- .../jsons/JsonSmartHomeCapabilities.java | 17 ++++++++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/discovery/SmartHomeDevicesDiscovery.java b/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/discovery/SmartHomeDevicesDiscovery.java index d69a041a56b..8615ef193db 100644 --- a/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/discovery/SmartHomeDevicesDiscovery.java +++ b/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/discovery/SmartHomeDevicesDiscovery.java @@ -14,14 +14,10 @@ package org.openhab.binding.amazonechocontrol.internal.discovery; import static org.openhab.binding.amazonechocontrol.internal.AmazonEchoControlBindingConstants.*; -import java.util.Date; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -180,7 +176,17 @@ public class SmartHomeDevicesDiscovery extends AbstractDiscoveryService { List aliases = shd.aliases; if ("Amazon".equals(shd.manufacturerName) && driverIdentity != null && "SonarCloudService".equals(driverIdentity.identifier)) { - deviceName = "Alexa Guard on " + shd.friendlyName; + List<@Nullable String> interfaces = shd.getCapabilities().stream().map(c -> c.interfaceName) + .collect(Collectors.toList()); + if (interfaces.contains("Alexa.AcousticEventSensor")) { + deviceName = "Alexa Guard on " + shd.friendlyName; + } else if (interfaces.contains("Alexa.ColorController")) { + deviceName = "Alexa Color Controller on " + shd.friendlyName; + } else if (interfaces.contains("Alexa.PowerController")) { + deviceName = "Alexa Plug on " + shd.friendlyName; + } else { + deviceName = "Unknown Device on " + shd.friendlyName; + } } else if ("Amazon".equals(shd.manufacturerName) && driverIdentity != null && "OnGuardSmartHomeBridgeService".equals(driverIdentity.identifier)) { deviceName = "Alexa Guard"; diff --git a/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/jsons/JsonSmartHomeCapabilities.java b/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/jsons/JsonSmartHomeCapabilities.java index baaafeb26db..fd8d21399e7 100644 --- a/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/jsons/JsonSmartHomeCapabilities.java +++ b/bundles/org.openhab.binding.amazonechocontrol/src/main/java/org/openhab/binding/amazonechocontrol/internal/jsons/JsonSmartHomeCapabilities.java @@ -29,15 +29,32 @@ public class JsonSmartHomeCapabilities { public @Nullable String version; public @Nullable String interfaceName; public @Nullable Properties properties; + + @Override + public String toString() { + return "SmartHomeCapability{" + "capabilityType='" + capabilityType + '\'' + ", type='" + type + '\'' + + ", version='" + version + '\'' + ", interfaceName='" + interfaceName + '\'' + ", properties=" + + properties + '}'; + } } public static class Properties { public @Nullable List supported; + + @Override + public String toString() { + return "Properties{" + "supported=" + supported + '}'; + } } public static class Property { public @Nullable String name; } + @Override + public String toString() { + return "JsonSmartHomeCapabilities{" + "capabilites=" + capabilites + '}'; + } + public @Nullable List capabilites; }