diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/WemoUtil.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/WemoUtil.java index 872048ac9a551..22046a040a3f9 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/WemoUtil.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/WemoUtil.java @@ -125,19 +125,6 @@ public static String unescapeXml(final String xml) { return unescapedOutput.toString(); } - public static @Nullable String getWemoURL(String host, String actionService) { - int portCheckStart = 49151; - int portCheckStop = 49157; - String port = null; - for (int i = portCheckStart; i < portCheckStop; i++) { - if (serviceAvailableFunction.apply(host, i)) { - port = String.valueOf(i); - break; - } - } - return port == null ? null : "http://" + host + ":" + port + "/upnp/control/" + actionService + "1"; - } - private static boolean servicePing(String host, int port) { try { HttpUtil.executeUrl("GET", "http://" + host + ":" + port, 250); diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoBaseThingHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoBaseThingHandler.java index 577dbcac4226b..ec11ee57b2863 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoBaseThingHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoBaseThingHandler.java @@ -22,11 +22,14 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.wemo.internal.WemoBindingConstants; +import org.openhab.binding.wemo.internal.WemoUtil; import org.openhab.binding.wemo.internal.http.WemoHttpCall; import org.openhab.core.io.transport.upnp.UpnpIOParticipant; import org.openhab.core.io.transport.upnp.UpnpIOService; import org.openhab.core.thing.ChannelUID; import org.openhab.core.thing.Thing; +import org.openhab.core.thing.ThingStatus; +import org.openhab.core.thing.ThingStatusDetail; import org.openhab.core.thing.binding.BaseThingHandler; import org.openhab.core.types.Command; import org.slf4j.Logger; @@ -48,8 +51,8 @@ public abstract class WemoBaseThingHandler extends BaseThingHandler implements U protected @Nullable UpnpIOService service; protected WemoHttpCall wemoHttpCaller; - protected String host = ""; + private @Nullable String host; private Map subscriptions = new ConcurrentHashMap(); private @Nullable ScheduledFuture subscriptionRenewalJob; @@ -65,6 +68,7 @@ public void initialize() { if (service != null) { logger.debug("Registering UPnP participant for {}", getThing().getUID()); service.registerParticipant(this); + initializeHost(); } } @@ -223,18 +227,50 @@ private void removeSubscriptions() { subscriptions.clear(); } - protected String getHost() { - String localHost = host; - if (!localHost.isEmpty()) { - return localHost; + public @Nullable String getWemoURL(String actionService) { + String host = getHost(); + if (host == null) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "@text/config-status.error.missing-ip"); + return null; } - UpnpIOService localService = service; - if (localService != null) { - URL descriptorURL = localService.getDescriptorURL(this); + int portCheckStart = 49151; + int portCheckStop = 49157; + String port = null; + for (int i = portCheckStart; i < portCheckStop; i++) { + if (WemoUtil.serviceAvailableFunction.apply(host, i)) { + port = String.valueOf(i); + break; + } + } + if (port == null) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + "@text/config-status.error.missing-url"); + return null; + } + return "http://" + host + ":" + port + "/upnp/control/" + actionService + "1"; + } + + private @Nullable String getHost() { + if (host != null) { + return host; + } + initializeHost(); + return host; + } + + private void initializeHost() { + host = getHostFromService(); + } + + private @Nullable String getHostFromService() { + UpnpIOService service = this.service; + if (service != null) { + URL descriptorURL = service.getDescriptorURL(this); if (descriptorURL != null) { return descriptorURL.getHost(); } } - return ""; + return null; } } diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCoffeeHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCoffeeHandler.java index 1f3d01f3b4e3d..22f93ae9f531f 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCoffeeHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCoffeeHandler.java @@ -83,7 +83,6 @@ public void initialize() { if (configuration.get(UDN) != null) { logger.debug("Initializing WemoCoffeeHandler for UDN '{}'", configuration.get(UDN)); addSubscription(DEVICEEVENT); - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, 0, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -113,7 +112,6 @@ private void poll() { try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -131,20 +129,10 @@ private void poll() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to send command '{}' for device '{}': IP address missing", command, - getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to send command '{}' for device '{}': URL cannot be created", command, getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } if (command instanceof RefreshType) { @@ -198,19 +186,10 @@ public void onValueReceived(@Nullable String variable, @Nullable String value, @ * The {@link updateWemoState} polls the actual state of a WeMo CoffeeMaker. */ protected void updateWemoState() { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } String actionService = DEVICEACTION; - String wemoURL = getWemoURL(host, actionService); + String wemoURL = getWemoURL(actionService); if (wemoURL == null) { logger.debug("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try { diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCrockpotHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCrockpotHandler.java index 7abd6f56da555..0690d94e31ed3 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCrockpotHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoCrockpotHandler.java @@ -74,7 +74,6 @@ public void initialize() { if (configuration.get(UDN) != null) { logger.debug("Initializing WemoCrockpotHandler for UDN '{}'", configuration.get(UDN)); addSubscription(BASICEVENT); - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, 0, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -103,7 +102,6 @@ private void poll() { } try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -121,20 +119,10 @@ private void poll() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to send command '{}' for device '{}': IP address missing", command, - getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to send command '{}' for device '{}': URL cannot be created", command, getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } String mode = "0"; @@ -192,19 +180,10 @@ public void onValueReceived(@Nullable String variable, @Nullable String value, @ * */ protected void updateWemoState() { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } String actionService = BASICEVENT; - String wemoURL = getWemoURL(localHost, actionService); + String wemoURL = getWemoURL(actionService); if (wemoURL == null) { logger.warn("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try { diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoDimmerHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoDimmerHandler.java index 69ac9b5a5f2b3..e7488d75ca224 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoDimmerHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoDimmerHandler.java @@ -87,7 +87,6 @@ public void initialize() { if (configuration.get(UDN) != null) { logger.debug("Initializing WemoDimmerHandler for UDN '{}'", configuration.get(UDN)); addSubscription(BASICEVENT); - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, 0, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -117,7 +116,6 @@ private void poll() { } try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -418,18 +416,9 @@ public void onValueReceived(@Nullable String variable, @Nullable String value, @ * */ protected void updateWemoState() { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } String action = "GetBinaryState"; @@ -496,18 +485,9 @@ protected void updateWemoState() { } public void setBinaryState(String action, String argument, String value) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to set binary state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to set binary state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try { @@ -527,18 +507,9 @@ public void setBinaryState(String action, String argument, String value) { } public void setTimerStart(String action, String argument, String value) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to set timerStart for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.warn("Failed to set timerStart for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try { diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHandler.java index 8c66336888d0b..0953fe6287a3c 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHandler.java @@ -42,6 +42,7 @@ * @author Stefan Bußweiler - Added new thing status handling * @author Erdoan Hadzhiyusein - Adapted the class to work with the new DateTimeType * @author Mihir Patil - Added standby switch + * @author Jacob Laursen - Refactoring */ @NonNullByDefault public abstract class WemoHandler extends WemoBaseThingHandler { @@ -69,7 +70,6 @@ public void initialize() { if (THING_TYPE_INSIGHT.equals(thing.getThingTypeUID())) { addSubscription(INSIGHTEVENT); } - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, 0, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -99,7 +99,6 @@ private void poll() { } try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -117,20 +116,10 @@ private void poll() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to send command '{}' for device '{}': IP address missing", command, - getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to send command '{}' for device '{}': URL cannot be created", command, getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } if (command instanceof RefreshType) { @@ -163,13 +152,6 @@ public void handleCommand(ChannelUID channelUID, Command command) { */ protected void updateWemoState() { String actionService = BASICACTION; - String localhost = getHost(); - if (localhost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } String action = "GetBinaryState"; String variable = "BinaryState"; String value = null; @@ -178,11 +160,9 @@ protected void updateWemoState() { variable = "InsightParams"; actionService = INSIGHTACTION; } - String wemoURL = getWemoURL(localhost, actionService); + String wemoURL = getWemoURL(actionService); if (wemoURL == null) { logger.debug("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } String soapHeader = "\"urn:Belkin:service:" + actionService + ":1#" + action + "\""; diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHolmesHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHolmesHandler.java index cc96df98e32bc..b8b5144a3d81f 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHolmesHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoHolmesHandler.java @@ -88,7 +88,6 @@ public void initialize() { if (configuration.get(UDN) != null) { logger.debug("Initializing WemoHolmesHandler for UDN '{}'", configuration.get(UDN)); addSubscription(BASICEVENT); - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, 0, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -118,7 +117,6 @@ private void poll() { } try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -136,20 +134,10 @@ private void poll() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to send command '{}' for device '{}': IP address missing", command, - getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, DEVICEACTION); + String wemoURL = getWemoURL(DEVICEACTION); if (wemoURL == null) { logger.debug("Failed to send command '{}' for device '{}': URL cannot be created", command, getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } String attribute = null; @@ -284,19 +272,10 @@ public void onValueReceived(@Nullable String variable, @Nullable String value, @ * */ protected void updateWemoState() { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } String actionService = DEVICEACTION; - String wemoURL = getWemoURL(localHost, actionService); + String wemoURL = getWemoURL(actionService); if (wemoURL == null) { logger.debug("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try { diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoLightHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoLightHandler.java index 745e33db631ad..2bc020c1841b8 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoLightHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoLightHandler.java @@ -85,7 +85,6 @@ public void initialize() { final Bridge bridge = getBridge(); if (bridge != null && bridge.getStatus() == ThingStatus.ONLINE) { addSubscription(BRIDGEEVENT); - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, DEFAULT_REFRESH_INITIAL_DELAY, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -143,7 +142,6 @@ private void poll() { } try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -161,20 +159,10 @@ private void poll() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to send command '{}' for device '{}': IP address missing", command, - getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to send command '{}' for device '{}': URL cannot be created", command, getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } if (command instanceof RefreshType) { @@ -294,19 +282,10 @@ public void handleCommand(ChannelUID channelUID, Command command) { * channel states. */ public void getDeviceState() { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } logger.debug("Request actual state for LightID '{}'", wemoLightID); - String wemoURL = getWemoURL(localHost, BRIDGEACTION); + String wemoURL = getWemoURL(BRIDGEACTION); if (wemoURL == null) { logger.debug("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try { diff --git a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoMakerHandler.java b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoMakerHandler.java index ada6c3b9903c3..dbe7dd410d38e 100644 --- a/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoMakerHandler.java +++ b/bundles/org.openhab.binding.wemo/src/main/java/org/openhab/binding/wemo/internal/handler/WemoMakerHandler.java @@ -75,7 +75,6 @@ public void initialize() { if (configuration.get(UDN) != null) { logger.debug("Initializing WemoMakerHandler for UDN '{}'", configuration.get(UDN)); - host = getHost(); pollingJob = scheduler.scheduleWithFixedDelay(this::poll, 0, DEFAULT_REFRESH_INTERVAL_SECONDS, TimeUnit.SECONDS); updateStatus(ThingStatus.ONLINE); @@ -105,7 +104,6 @@ private void poll() { } try { logger.debug("Polling job"); - host = getHost(); // Check if the Wemo device is set in the UPnP service registry // If not, set the thing state to ONLINE/CONFIG-PENDING and wait for the next poll if (!isUpnpDeviceRegistered()) { @@ -123,20 +121,10 @@ private void poll() { @Override public void handleCommand(ChannelUID channelUID, Command command) { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to send command '{}' for device '{}': IP address missing", command, - getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } - String wemoURL = getWemoURL(localHost, BASICACTION); + String wemoURL = getWemoURL(BASICACTION); if (wemoURL == null) { logger.debug("Failed to send command '{}' for device '{}': URL cannot be created", command, getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } if (command instanceof RefreshType) { @@ -165,19 +153,10 @@ public void handleCommand(ChannelUID channelUID, Command command) { * The {@link updateWemoState} polls the actual state of a WeMo Maker. */ protected void updateWemoState() { - String localHost = getHost(); - if (localHost.isEmpty()) { - logger.warn("Failed to get actual state for device '{}': IP address missing", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-ip"); - return; - } String actionService = DEVICEACTION; - String wemoURL = getWemoURL(localHost, actionService); + String wemoURL = getWemoURL(actionService); if (wemoURL == null) { logger.debug("Failed to get actual state for device '{}': URL cannot be created", getThing().getUID()); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - "@text/config-status.error.missing-url"); return; } try {