From: lolodomo Date: Sat, 24 Aug 2024 08:07:13 +0000 (+0200) Subject: [freeboxos] Avoid useless API requests (phone) (#17310) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=247d2d32162ccda29c247eab23db03b5a65ac5ba;p=openhab-addons.git [freeboxos] Avoid useless API requests (phone) (#17310) Avoids API requests when channels are unlinked. Signed-off-by: Laurent Garnier --- diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/DectHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/DectHandler.java index c5ea61bf36..4139e68499 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/DectHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/DectHandler.java @@ -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); diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/FxsHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/FxsHandler.java index 02e83b9c0a..fcdbb1a458 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/FxsHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/FxsHandler.java @@ -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