[homeconnect] Factorize handling of power command (#10747)

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
This commit is contained in:
lolodomo 2021-05-28 15:00:59 +02:00 committed by GitHub
parent 19029b7358
commit fe11c115ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 23 deletions

View 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();

View 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

View 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() + "]";

View 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);
}

View 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);

View 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) {