]> git.basschouten.com Git - openhab-addons.git/commitdiff
Update HomematicDeviceDiscoveryService.java (#11971)
authorraykleibelt <54982000+raykleibelt@users.noreply.github.com>
Fri, 7 Jan 2022 20:43:24 +0000 (21:43 +0100)
committerGitHub <noreply@github.com>
Fri, 7 Jan 2022 20:43:24 +0000 (21:43 +0100)
fix for bug #11969

After a restart of openHAB the function 'getScanTimeout()' is called before the member 'installModeDuration' has been initialized with the correct value from the configuration. With a large number of Homematic devices, the default value of 'installModeDuration' is too small to read in all Homematic devices from the CCU.
Therefore, when calling the function 'getScanTimeout()', the value is read directly from the configuration. The member 'installModeDuration' has been removed.

Signed-off-by: raykleibelt <54982000+raykleibelt@users.noreply.github.com>
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomematicDeviceDiscoveryService.java

index dc2398ab93c011aa3ae4d54bd7b10026784ac38b..79d065d11d127b2816743bfd813a974523439029 100644 (file)
@@ -52,7 +52,6 @@ public class HomematicDeviceDiscoveryService extends AbstractDiscoveryService
     private Future<?> loadDevicesFuture;
     private volatile boolean isInInstallMode = false;
     private volatile Object installModeSync = new Object();
-    private volatile int installModeDuration = HomematicConfig.DEFAULT_INSTALL_MODE_DURATION;
 
     public HomematicDeviceDiscoveryService() {
         super(Collections.singleton(new ThingTypeUID(BINDING_ID, "-")), DISCOVER_TIMEOUT_SECONDS, false);
@@ -103,10 +102,9 @@ public class HomematicDeviceDiscoveryService extends AbstractDiscoveryService
             if (bridgeHandler != null) {
                 Thing bridge = bridgeHandler.getThing();
                 bridgeStatus = bridge.getStatus();
-                updateInstallModeDuration(bridge);
             }
             if (ThingStatus.ONLINE == bridgeStatus) {
-                gateway.setInstallMode(true, installModeDuration);
+                gateway.setInstallMode(true, getInstallModeDuration());
 
                 int remaining = gateway.getInstallMode();
                 if (remaining > 0) {
@@ -123,14 +121,16 @@ public class HomematicDeviceDiscoveryService extends AbstractDiscoveryService
         }
     }
 
-    private void updateInstallModeDuration(Thing bridge) {
-        HomematicConfig config = bridge.getConfiguration().as(HomematicConfig.class);
-        installModeDuration = config.getInstallModeDuration();
+    private int getInstallModeDuration() {
+        if (bridgeHandler != null) {
+            return bridgeHandler.getThing().getConfiguration().as(HomematicConfig.class).getInstallModeDuration();
+        }
+        return HomematicConfig.DEFAULT_INSTALL_MODE_DURATION;
     }
 
     @Override
     public int getScanTimeout() {
-        return installModeDuration;
+        return getInstallModeDuration();
     }
 
     @Override