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>
This commit is contained in:
raykleibelt 2022-01-07 21:43:24 +01:00 committed by GitHub
parent 78fd621ad9
commit 65002647df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 7 deletions

View 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