]> git.basschouten.com Git - openhab-addons.git/commitdiff
[homeconnect] Factorize handling of power command (#10747)
authorlolodomo <lg.hc@free.fr>
Fri, 28 May 2021 13:00:59 +0000 (15:00 +0200)
committerGitHub <noreply@github.com>
Fri, 28 May 2021 13:00:59 +0000 (15:00 +0200)
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/AbstractHomeConnectThingHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectCoffeeMakerHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectCooktopHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectDishwasherHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectHoodHandler.java
bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectOvenHandler.java

index 20af6c24c9f2d782657addaae32b55d273a2f778..c9394f919300f3ff7f7b2cb80e91ed1d01ab9276 100644 (file)
@@ -1172,6 +1172,14 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
         }
     }
 
+    protected void handlePowerCommand(final ChannelUID channelUID, final Command command,
+            final HomeConnectApiClient apiClient, String stateNotOn)
+            throws CommunicationException, AuthorizationException, ApplianceOfflineException {
+        if (command instanceof OnOffType && CHANNEL_POWER_STATE.equals(channelUID.getId())) {
+            apiClient.setPowerState(getThingHaId(), OnOffType.ON.equals(command) ? STATE_POWER_ON : stateNotOn);
+        }
+    }
+
     private int getCurrentBrightness(final ChannelUID channelUID, final HomeConnectApiClient apiClient)
             throws CommunicationException, AuthorizationException, ApplianceOfflineException {
         String id = channelUID.getId();
index 48ac8b09d02bf369d1d7cb6ff1e557c6ebc8f4de..b8dbb5af82c008c121c404d87a57aed8c66f5421 100644 (file)
@@ -22,7 +22,6 @@ import org.openhab.binding.homeconnect.internal.client.exception.ApplianceOfflin
 import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationException;
 import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
 import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
-import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.types.Command;
@@ -87,10 +86,7 @@ public class HomeConnectCoffeeMakerHandler extends AbstractHomeConnectThingHandl
         super.handleCommand(channelUID, command, apiClient);
 
         // turn coffee maker on and standby
-        if (command instanceof OnOffType && CHANNEL_POWER_STATE.equals(channelUID.getId())) {
-            apiClient.setPowerState(getThingHaId(),
-                    OnOffType.ON.equals(command) ? STATE_POWER_ON : STATE_POWER_STANDBY);
-        }
+        handlePowerCommand(channelUID, command, apiClient, STATE_POWER_STANDBY);
     }
 
     @Override
index dc9feb6515a4c0f6d67afb9ea8c8155762b2146f..92ffebce547a04f16b9a4330b55fd8f42925242d 100644 (file)
@@ -17,8 +17,14 @@ import static org.openhab.binding.homeconnect.internal.HomeConnectBindingConstan
 import java.util.Map;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
+import org.openhab.binding.homeconnect.internal.client.exception.ApplianceOfflineException;
+import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationException;
+import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
 import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
+import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
+import org.openhab.core.types.Command;
 import org.openhab.core.types.UnDefType;
 
 /**
@@ -66,6 +72,15 @@ public class HomeConnectCooktopHandler extends AbstractHomeConnectThingHandler {
         });
     }
 
+    @Override
+    protected void handleCommand(final ChannelUID channelUID, final Command command,
+            final HomeConnectApiClient apiClient)
+            throws CommunicationException, AuthorizationException, ApplianceOfflineException {
+        super.handleCommand(channelUID, command, apiClient);
+
+        handlePowerCommand(channelUID, command, apiClient, STATE_POWER_OFF);
+    }
+
     @Override
     public String toString() {
         return "HomeConnectCooktopHandler [haId: " + getThingHaId() + "]";
index ba79f238d1599e00dbbbc4b6d800e4c985ab8d39..4f7927169273b2fb34c0c31fb1ba1ccd1e284121 100644 (file)
@@ -22,7 +22,6 @@ import org.openhab.binding.homeconnect.internal.client.exception.ApplianceOfflin
 import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationException;
 import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
 import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
-import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.thing.ChannelUID;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.types.Command;
@@ -81,12 +80,7 @@ public class HomeConnectDishwasherHandler extends AbstractHomeConnectThingHandle
             throws CommunicationException, AuthorizationException, ApplianceOfflineException {
         super.handleCommand(channelUID, command, apiClient);
 
-        if (command instanceof OnOffType) {
-            if (CHANNEL_POWER_STATE.equals(channelUID.getId())) {
-                apiClient.setPowerState(getThingHaId(),
-                        OnOffType.ON.equals(command) ? STATE_POWER_ON : STATE_POWER_OFF);
-            }
-        }
+        handlePowerCommand(channelUID, command, apiClient, STATE_POWER_OFF);
 
         handleLightCommands(channelUID, command, apiClient);
     }
index f0f0beae8dcbe8fda69d9f8b37e9b7e5c533f74d..8ef81098b3ca74459642143b54e9f5a771da4d65 100644 (file)
@@ -145,12 +145,7 @@ public class HomeConnectHoodHandler extends AbstractHomeConnectThingHandler {
             throws CommunicationException, AuthorizationException, ApplianceOfflineException {
         super.handleCommand(channelUID, command, apiClient);
 
-        if (command instanceof OnOffType) {
-            if (CHANNEL_POWER_STATE.equals(channelUID.getId())) {
-                apiClient.setPowerState(getThingHaId(),
-                        OnOffType.ON.equals(command) ? STATE_POWER_ON : STATE_POWER_OFF);
-            }
-        }
+        handlePowerCommand(channelUID, command, apiClient, STATE_POWER_OFF);
 
         // light commands
         handleLightCommands(channelUID, command, apiClient);
index a2236427b8b29ee23b3c3e77a056611421181e64..c71d2b11b7005f3c2e18d697b4260d83efe13d90 100644 (file)
@@ -159,11 +159,7 @@ public class HomeConnectOvenHandler extends AbstractHomeConnectThingHandler {
             throws CommunicationException, AuthorizationException, ApplianceOfflineException {
         super.handleCommand(channelUID, command, apiClient);
 
-        // turn coffee maker on and standby
-        if (command instanceof OnOffType && CHANNEL_POWER_STATE.equals(channelUID.getId())) {
-            apiClient.setPowerState(getThingHaId(),
-                    OnOffType.ON.equals(command) ? STATE_POWER_ON : STATE_POWER_STANDBY);
-        }
+        handlePowerCommand(channelUID, command, apiClient, STATE_POWER_STANDBY);
 
         String operationState = getOperationState();
         if (operationState != null && INACTIVE_STATE.contains(operationState) && command instanceof QuantityType) {