From bdeee2ba0e1127d3422795aea70ca0e7ed1a32c6 Mon Sep 17 00:00:00 2001 From: Sara Damiano Date: Sun, 21 Jun 2020 17:14:53 -0400 Subject: [PATCH] Start and stop polling with bridge status changes Signed-off-by: Sara Damiano --- .../internal/handler/BondDeviceHandler.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/bundles/org.openhab.binding.bondhome/src/main/java/org/openhab/binding/bondhome/internal/handler/BondDeviceHandler.java b/bundles/org.openhab.binding.bondhome/src/main/java/org/openhab/binding/bondhome/internal/handler/BondDeviceHandler.java index 2e887889b9856..b5636f2e9a0e5 100644 --- a/bundles/org.openhab.binding.bondhome/src/main/java/org/openhab/binding/bondhome/internal/handler/BondDeviceHandler.java +++ b/bundles/org.openhab.binding.bondhome/src/main/java/org/openhab/binding/bondhome/internal/handler/BondDeviceHandler.java @@ -801,4 +801,22 @@ private synchronized void startPollingJob() { this.pollingJob = scheduler.scheduleWithFixedDelay(pollingCommand, 60, 300, TimeUnit.SECONDS); } } + + @Override + public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { + if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE + && getThing().getStatusInfo().getStatusDetail() == ThingStatusDetail.BRIDGE_OFFLINE) { + updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE); + // restart the polling job when the bridge goes back online + startPollingJob(); + } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + // stop the polling job when the bridge goes offline + ScheduledFuture pollingJob = this.pollingJob; + if (pollingJob != null) { + pollingJob.cancel(true); + this.pollingJob = null; + } + } + } }