]> git.basschouten.com Git - openhab-addons.git/commitdiff
[freeboxos] Fix handling of REFRESH command for connectivity channels (#17178)
authorlolodomo <lg.hc@free.fr>
Mon, 29 Jul 2024 11:44:58 +0000 (13:44 +0200)
committerGitHub <noreply@github.com>
Mon, 29 Jul 2024 11:44:58 +0000 (13:44 +0200)
Fix #17168

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java
bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/HostHandler.java
bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/VmHandler.java

index a4052acec03091ac95236211f1a09eabbac3b536..dd07a1f7dd17b14f913fe87a8cbf4c2324102a54 100644 (file)
@@ -151,7 +151,7 @@ public abstract class ApiConsumerHandler extends BaseThingHandler implements Api
         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 @@ public abstract class ApiConsumerHandler extends BaseThingHandler implements Api
 
     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)) {
index b70c341eb999e586462161b67208d4fbe7553b1c..e24fdc3303ed361bd007a3eef559370c7b881bbe 100644 (file)
@@ -85,6 +85,12 @@ public class HostHandler extends ApiConsumerHandler {
         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"));
index 995a13e821ffaabbc2bcd9c78626ebfb1247b19d..b22355df203a2488e902d2b0a0b297252b3b7217 100644 (file)
@@ -51,6 +51,15 @@ public class VmHandler extends HostHandler {
         }
     }
 
+    @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);