]> git.basschouten.com Git - openhab-addons.git/commitdiff
[freeboxos] Avoid useless API requests (phone) (#17310)
authorlolodomo <lg.hc@free.fr>
Sat, 24 Aug 2024 08:07:13 +0000 (10:07 +0200)
committerGitHub <noreply@github.com>
Sat, 24 Aug 2024 08:07:13 +0000 (10:07 +0200)
Avoids API requests when channels are unlinked.

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

index c5ea61bf363ae79c7c1ab3ee42bab7f854d9f6ee..4139e684992b67068789a436223458c544ddeebc 100644 (file)
@@ -36,6 +36,19 @@ public class DectHandler extends FxsHandler {
         super(thing);
     }
 
+    @Override
+    protected void internalPoll() throws FreeboxException {
+        if (isLinked(TELEPHONY_SERVICE) || isLinked(DECT_ACTIVE) || isLinked(ALTERNATE_RING)) {
+            Config config = getManager(PhoneManager.class).getConfig();
+            updateConfigChannels(config);
+        }
+
+        if (isLinked(ONHOOK) || isLinked(RINGING) || isLinked(HARDWARE_STATUS) || isLinked(GAIN_RX)
+                || isLinked(GAIN_TX)) {
+            getManager(PhoneManager.class).getStatus(getClientId()).ifPresent(this::updateStatusChannels);
+        }
+    }
+
     @Override
     protected void updateConfigChannels(Config config) {
         super.updateConfigChannels(config);
index 02e83b9c0ae4b1a4ebde84afdd876a39e7906549..fcdbb1a458398967d2df35bb27208569336cc31c 100644 (file)
@@ -23,7 +23,6 @@ import org.openhab.binding.freeboxos.internal.api.rest.PhoneManager.Config;
 import org.openhab.binding.freeboxos.internal.api.rest.PhoneManager.Status;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.thing.Thing;
-import org.openhab.core.thing.ThingStatus;
 import org.openhab.core.types.Command;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,10 +51,14 @@ public class FxsHandler extends ApiConsumerHandler {
     protected void internalPoll() throws FreeboxException {
         logger.debug("Polling landline status...");
 
-        Config config = getManager(PhoneManager.class).getConfig();
-        updateConfigChannels(config);
+        if (isLinked(TELEPHONY_SERVICE)) {
+            Config config = getManager(PhoneManager.class).getConfig();
+            updateConfigChannels(config);
+        }
 
-        getManager(PhoneManager.class).getStatus(getClientId()).ifPresent(this::updateStatusChannels);
+        if (isLinked(ONHOOK) || isLinked(RINGING) || isLinked(HARDWARE_STATUS)) {
+            getManager(PhoneManager.class).getStatus(getClientId()).ifPresent(this::updateStatusChannels);
+        }
     }
 
     protected void updateConfigChannels(Config config) {
@@ -66,7 +69,6 @@ public class FxsHandler extends ApiConsumerHandler {
         updateChannelOnOff(ONHOOK, status.onHook());
         updateChannelOnOff(RINGING, status.isRinging());
         updateChannelString(HARDWARE_STATUS, status.hardwareDefect() ? "KO" : "OK");
-        updateStatus(ThingStatus.ONLINE);
     }
 
     @Override