]> git.basschouten.com Git - openhab-addons.git/commitdiff
[insteon] handle cases when channelLinked is not called after initialization (#8803)
authorrobnielsen <rob.nielsen@yahoo.com>
Tue, 20 Oct 2020 22:54:40 +0000 (17:54 -0500)
committerGitHub <noreply@github.com>
Tue, 20 Oct 2020 22:54:40 +0000 (00:54 +0200)
Signed-off-by: Rob Nielsen <rob.nielsen@yahoo.com>
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/handler/InsteonDeviceHandler.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/handler/InsteonNetworkHandler.java

index 6c483ed8d1546078c1043a778262fa912ada5789..92b728fa414193d705bf4854b73d8a3ce26ecac9 100644 (file)
@@ -314,6 +314,12 @@ public class InsteonDeviceHandler extends BaseThingHandler {
 
                 getInsteonNetworkHandler().initialized(getThing().getUID(), msg);
 
+                channels.forEach(channel -> {
+                    if (isLinked(channel.getUID())) {
+                        channelLinked(channel.getUID());
+                    }
+                });
+
                 updateStatus(ThingStatus.ONLINE);
             } else {
                 String msg = "Product key '" + productKey
@@ -358,6 +364,10 @@ public class InsteonDeviceHandler extends BaseThingHandler {
 
     @Override
     public void channelLinked(ChannelUID channelUID) {
+        if (getInsteonNetworkHandler().isChannelLinked(channelUID)) {
+            return;
+        }
+
         Map<String, @Nullable String> params = new HashMap<>();
         Channel channel = getThing().getChannel(channelUID.getId());
 
index 61149d88a8ce192917edc0c5e653ffb5e079f07f..25b7163608512bb9dad6671a89f1ff6dd030a7af 100644 (file)
@@ -201,6 +201,10 @@ public class InsteonNetworkHandler extends BaseBridgeHandler {
         deviceInfo.remove(uid.getAsString());
     }
 
+    public boolean isChannelLinked(ChannelUID uid) {
+        return channelInfo.containsKey(uid.getAsString());
+    }
+
     public void linked(ChannelUID uid, String msg) {
         channelInfo.put(uid.getAsString(), msg);
     }