From 8d130deedb492513c11fb0c7fb86d6f63d8ffc02 Mon Sep 17 00:00:00 2001 From: Pawel Pieczul Date: Wed, 30 Aug 2017 09:12:59 +0200 Subject: [PATCH] Fixes #2497 Additionally fixed what static code analyzer complained about: no EOF in about.html and redundant import. Signed-off-by: Pawel Pieczul (github: ppieczul) --- .../org.openhab.binding.harmonyhub/about.html | 2 +- .../discovery/HarmonyHubDiscoveryService.java | 7 ++----- .../harmonyhub/handler/HarmonyHubHandler.java | 14 +++++++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/addons/binding/org.openhab.binding.harmonyhub/about.html b/addons/binding/org.openhab.binding.harmonyhub/about.html index 1ad0bce841f34..56c3e24a8ef27 100644 --- a/addons/binding/org.openhab.binding.harmonyhub/about.html +++ b/addons/binding/org.openhab.binding.harmonyhub/about.html @@ -66,4 +66,4 @@

Third Party Content

https://www.eclipse.org/legal/epl-v10.html

- \ No newline at end of file + diff --git a/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/discovery/HarmonyHubDiscoveryService.java b/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/discovery/HarmonyHubDiscoveryService.java index eaf8e4867b3fa..46eef6d3885ed 100644 --- a/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/discovery/HarmonyHubDiscoveryService.java +++ b/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/discovery/HarmonyHubDiscoveryService.java @@ -30,7 +30,6 @@ import java.util.concurrent.TimeUnit; import org.eclipse.smarthome.config.discovery.AbstractDiscoveryService; -import org.eclipse.smarthome.config.discovery.DiscoveryResult; import org.eclipse.smarthome.config.discovery.DiscoveryResultBuilder; import org.eclipse.smarthome.core.thing.ThingTypeUID; import org.eclipse.smarthome.core.thing.ThingUID; @@ -286,9 +285,7 @@ private void hubDiscovered(String host, String id, String friendlyName) { ThingUID uid = new ThingUID(HarmonyHubBindingConstants.HARMONY_HUB_THING_TYPE, id.replaceAll("[^A-Za-z0-9\\-_]", "")); - thingDiscovered(DiscoveryResultBuilder.create(uid) - .withProperties(properties) - .withLabel("HarmonyHub " + friendlyName) - .build()); + thingDiscovered(DiscoveryResultBuilder.create(uid).withProperties(properties) + .withLabel("HarmonyHub " + friendlyName).build()); } } diff --git a/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/handler/HarmonyHubHandler.java b/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/handler/HarmonyHubHandler.java index 6557d4c92d7f0..8e871fa633c3d 100644 --- a/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/handler/HarmonyHubHandler.java +++ b/addons/binding/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/handler/HarmonyHubHandler.java @@ -91,6 +91,8 @@ public class HarmonyHubHandler extends BaseBridgeHandler implements HarmonyHubLi private int heartBeatInterval; + private Activity currentActivity; + public HarmonyHubHandler(Bridge bridge, HarmonyHubHandlerFactory factory) { super(bridge); this.factory = factory; @@ -103,10 +105,15 @@ public void handleCommand(ChannelUID channelUID, Command command) { } else if (command instanceof StringType) { try { try { - int actId = Integer.parseInt(command.toString()); - client.startActivity(actId); + Integer actId = Integer.parseInt(command.toString()); + if (currentActivity == null || !actId.equals(currentActivity.getId())) { + client.startActivity(actId); + } } catch (NumberFormatException ignored) { - client.startActivityByName(command.toString()); + String activity = command.toString(); + if (currentActivity == null || !activity.equals(currentActivity.getLabel())) { + client.startActivityByName(activity); + } } } catch (Exception e) { logger.error("Could not start activity", e); @@ -258,6 +265,7 @@ private void cancelRetry() { private void updateState(Activity activity) { logger.debug("Updating current activity to {}", activity.getLabel()); + currentActivity = activity; updateState(new ChannelUID(getThing().getUID(), HarmonyHubBindingConstants.CHANNEL_CURRENT_ACTIVITY), new StringType(activity.getLabel())); }