]> git.basschouten.com Git - openhab-addons.git/commitdiff
[miio] channels removal (#9237)
authorMarcel <marcel@verpaalen.com>
Mon, 7 Dec 2020 06:18:53 +0000 (22:18 -0800)
committerGitHub <noreply@github.com>
Mon, 7 Dec 2020 06:18:53 +0000 (22:18 -0800)
Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoBindingConstants.java
bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoBasicHandler.java

index 13c7668b4a4937b54dd8622b763eeb565d8b0006..aab1fe502ee5630bbb5317c2d65479ec2a8cca46 100644 (file)
@@ -107,6 +107,10 @@ public final class MiIoBindingConstants {
     public static final String PROPERTY_TIMEOUT = "timeout";
     public static final String PROPERTY_CLOUDSERVER = "cloudServer";
 
+    public static final Set<String> PERSISTENT_CHANNELS = Collections.unmodifiableSet(
+            Stream.of(CHANNEL_COMMAND, CHANNEL_RPC, CHANNEL_SSID, CHANNEL_BSSID, CHANNEL_RSSI, CHANNEL_LIFE)
+                    .collect(Collectors.toSet()));
+
     public static final byte[] DISCOVER_STRING = org.openhab.binding.miio.internal.Utils
             .hexStringToByteArray("21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
     public static final int PORT = 54321;
index bffcdb8addb45b14c858b86473c1bca44b955b06..ba5a5854e056b12b8744b3cc37e4d8c1890bb5db 100644 (file)
@@ -411,6 +411,13 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
             actions = new HashMap<>();
             final MiIoBasicDevice device = this.miioDevice;
             if (device != null) {
+                for (Channel cn : getThing().getChannels()) {
+                    logger.trace("Channel '{}' for thing {} already exist... removing", cn.getUID(),
+                            getThing().getUID());
+                    if (!PERSISTENT_CHANNELS.contains(cn.getUID().getId().toString())) {
+                        thingBuilder.withoutChannels(cn);
+                    }
+                }
                 for (MiIoBasicChannel miChannel : device.getDevice().getChannels()) {
                     logger.debug("properties {}", miChannel);
                     if (!miChannel.getType().isEmpty()) {
@@ -454,13 +461,6 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
             return null;
         }
         ChannelUID channelUID = new ChannelUID(getThing().getUID(), channel);
-
-        // TODO: Need to understand if this harms anything. If yes, channel only to be added when not there already.
-        // current way allows to have no issues when channels are changing.
-        if (getThing().getChannel(channel) != null) {
-            logger.info("Channel '{}' for thing {} already exist... removing", channel, getThing().getUID());
-            thingBuilder.withoutChannel(new ChannelUID(getThing().getUID(), channel));
-        }
         ChannelBuilder newChannel = ChannelBuilder.create(channelUID, dataType).withLabel(miChannel.getFriendlyName());
         boolean useGeneratedChannelType = false;
         if (!miChannel.getChannelType().isBlank()) {