diff --git a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java index b855761ef9d..28497b70d06 100644 --- a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java +++ b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/discovery/ThingDiscoveryService.java @@ -71,7 +71,7 @@ public class ThingDiscoveryService extends AbstractDiscoveryService implements D protected void startScan() { final DeconzBridgeHandler handler = this.handler; if (handler != null) { - handler.requestFullState(); + handler.requestFullState(false); } } diff --git a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/DeconzBridgeHandler.java b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/DeconzBridgeHandler.java index 71fdf633c62..b24be497ae1 100644 --- a/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/DeconzBridgeHandler.java +++ b/bundles/org.openhab.binding.deconz/src/main/java/org/openhab/binding/deconz/internal/handler/DeconzBridgeHandler.java @@ -135,7 +135,7 @@ public class DeconzBridgeHandler extends BaseBridgeHandler implements WebSocketC configuration.put(CONFIG_APIKEY, config.apikey); updateConfiguration(configuration); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_PENDING, "Waiting for configuration"); - requestFullState(); + requestFullState(true); } else { throw new IllegalStateException("Unknown status code for authorisation request"); } @@ -161,7 +161,7 @@ public class DeconzBridgeHandler extends BaseBridgeHandler implements WebSocketC * Perform a request to the REST API for retrieving the full bridge state with all sensors and switches * and configuration. */ - public void requestFullState() { + public void requestFullState(boolean isInitialRequest) { if (config.apikey == null) { return; } @@ -182,6 +182,10 @@ public class DeconzBridgeHandler extends BaseBridgeHandler implements WebSocketC } }).thenAccept(fullState -> { if (fullState == null) { + if (isInitialRequest) { + scheduledFuture = scheduler.schedule(() -> requestFullState(true), POLL_FREQUENCY_SEC, + TimeUnit.SECONDS); + } return; } if (fullState.config.name.isEmpty()) { @@ -260,7 +264,7 @@ public class DeconzBridgeHandler extends BaseBridgeHandler implements WebSocketC if (config.apikey == null) { requestApiKey(); } else { - requestFullState(); + requestFullState(true); } }