From 5c7fe8183adf05c1be1bd93aacd8b2b785e4c7db Mon Sep 17 00:00:00 2001 From: J-N-K Date: Sat, 10 Oct 2020 22:56:22 +0200 Subject: [PATCH] [deconz] retry full state request if initial request failed (#8704) Signed-off-by: Jan N. Klug --- .../internal/discovery/ThingDiscoveryService.java | 2 +- .../deconz/internal/handler/DeconzBridgeHandler.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) 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 b855761ef..28497b70d 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 71fdf633c..b24be497a 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); } }