diff --git a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/Clip2ThingHandler.java b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/Clip2ThingHandler.java index 356d9d8ce..6a2e56136 100644 --- a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/Clip2ThingHandler.java +++ b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/Clip2ThingHandler.java @@ -300,19 +300,8 @@ public class Clip2ThingHandler extends BaseThingHandler { @Override public void handleCommand(ChannelUID channelUID, Command commandParam) { if (RefreshType.REFRESH.equals(commandParam)) { - if ((thing.getStatus() == ThingStatus.ONLINE) && updateDependenciesDone) { - Future task = updateServiceContributorsTask; - if (Objects.isNull(task) || !task.isDone()) { - cancelTask(updateServiceContributorsTask, false); - updateServiceContributorsTask = scheduler.schedule(() -> { - try { - updateServiceContributors(); - } catch (ApiException | AssetNotLoadedException e) { - logger.debug("{} -> handleCommand() error {}", resourceId, e.getMessage(), e); - } catch (InterruptedException e) { - } - }, 3, TimeUnit.SECONDS); - } + if (thing.getStatus() == ThingStatus.ONLINE) { + refreshAllChannels(); } return; } @@ -524,6 +513,21 @@ public class Clip2ThingHandler extends BaseThingHandler { } } + private void refreshAllChannels() { + if (!updateDependenciesDone) { + return; + } + cancelTask(updateServiceContributorsTask, false); + updateServiceContributorsTask = scheduler.schedule(() -> { + try { + updateServiceContributors(); + } catch (ApiException | AssetNotLoadedException e) { + logger.debug("{} -> handleCommand() error {}", resourceId, e.getMessage(), e); + } catch (InterruptedException e) { + } + }, 3, TimeUnit.SECONDS); + } + /** * Apply device specific work-arounds needed for given command. * @@ -899,11 +903,7 @@ public class Clip2ThingHandler extends BaseThingHandler { } } else if (thing.getStatus() != ThingStatus.ONLINE) { updateStatus(ThingStatus.ONLINE); - // issue REFRESH command to update all channels - Channel lastUpdateChannel = thing.getChannel(CHANNEL_2_LAST_UPDATED); - if (Objects.nonNull(lastUpdateChannel)) { - handleCommand(lastUpdateChannel.getUID(), RefreshType.REFRESH); - } + refreshAllChannels(); } } }