From: raykleibelt <54982000+raykleibelt@users.noreply.github.com> Date: Fri, 7 Jan 2022 20:43:24 +0000 (+0100) Subject: Update HomematicDeviceDiscoveryService.java (#11971) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=65002647df35e0dfa92ec987da3cfe1fadf658ea;p=openhab-addons.git Update HomematicDeviceDiscoveryService.java (#11971) 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> --- diff --git a/bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomematicDeviceDiscoveryService.java b/bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomematicDeviceDiscoveryService.java index dc2398ab93..79d065d11d 100644 --- a/bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomematicDeviceDiscoveryService.java +++ b/bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/discovery/HomematicDeviceDiscoveryService.java @@ -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