diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java index a4052acec0309..dd07a1f7dd17b 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java @@ -151,7 +151,7 @@ public void handleCommand(ChannelUID channelUID, Command command) { try { if (checkBridgeHandler() != null) { if (command instanceof RefreshType) { - internalPoll(); + internalForcePoll(); } else if (!internalHandleCommand(channelUID.getIdWithoutGroup(), command)) { logger.debug("Unexpected command {} on channel {}", command, channelUID.getId()); } @@ -258,6 +258,10 @@ protected boolean internalHandleCommand(String channelId, Command command) throw protected abstract void internalPoll() throws FreeboxException; + protected void internalForcePoll() throws FreeboxException { + internalPoll(); + } + private void updateIfActive(String group, String channelId, State state) { ChannelUID id = new ChannelUID(getThing().getUID(), group, channelId); if (isLinked(id)) { diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/HostHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/HostHandler.java index b70c341eb999e..e24fdc3303ed3 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/HostHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/HostHandler.java @@ -85,6 +85,12 @@ protected void internalPoll() throws FreeboxException { pushSubscribed = getManager(WebSocketManager.class).registerListener(host.getMac(), this); } + @Override + protected void internalForcePoll() throws FreeboxException { + LanHost host = getLanHost(); + updateConnectivityChannels(host); + } + protected LanHost getLanHost() throws FreeboxException { return getManager(LanBrowserManager.class).getHost(getMac()).map(hostIntf -> hostIntf.host()) .orElseThrow(() -> new FreeboxException("Host data not found")); diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/VmHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/VmHandler.java index 995a13e821ffa..b22355df203a2 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/VmHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/VmHandler.java @@ -51,6 +51,15 @@ protected void internalPoll() throws FreeboxException { } } + @Override + protected void internalForcePoll() throws FreeboxException { + super.internalForcePoll(); + + logger.debug("Polling Virtual machine status"); + VirtualMachine vm = getManager(VmManager.class).getDevice(getClientId()); + updateVmChannels(vm); + } + public void updateVmChannels(VirtualMachine vm) { boolean running = Status.RUNNING.equals(vm.status()); updateChannelOnOff(VM_STATUS, STATUS, running);