[homeconnect] Add missing channel update handler configuration (#10785)
* [homeconnect] Add missing channel update handler configuration Related to dryer, washer and washer/dryer appliances Signed-off-by: Laurent Garnier <lg.hc@free.fr> * 2 new methods to factorize duplicated code Signed-off-by: Laurent Garnier <lg.hc@free.fr> * Apply spotless Signed-off-by: Laurent Garnier <lg.hc@free.fr>
This commit is contained in:
parent
17eb0d5d78
commit
d36c7804d0
@ -1073,6 +1073,25 @@ public abstract class AbstractHomeConnectThingHandler extends BaseThingHandler i
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected ChannelUpdateHandler getAndUpdateSelectedProgramStateUpdateHandler() {
|
||||||
|
return (channelUID, cache) -> {
|
||||||
|
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
||||||
|
if (channel.isPresent()) {
|
||||||
|
defaultSelectedProgramStateUpdateHandler().handle(channel.get().getUID(), cache);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ChannelUpdateHandler getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler() {
|
||||||
|
return (channelUID, cache) -> {
|
||||||
|
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
||||||
|
if (channel.isPresent()) {
|
||||||
|
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
|
||||||
|
.handle(channel.get().getUID(), cache);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
protected ChannelUpdateHandler defaultActiveProgramStateUpdateHandler() {
|
protected ChannelUpdateHandler defaultActiveProgramStateUpdateHandler() {
|
||||||
return (channelUID, cache) -> updateState(channelUID, cache.putIfAbsentAndGet(channelUID, () -> {
|
return (channelUID, cache) -> updateState(channelUID, cache.putIfAbsentAndGet(channelUID, () -> {
|
||||||
Optional<HomeConnectApiClient> apiClient = getApiClient();
|
Optional<HomeConnectApiClient> apiClient = getApiClient();
|
||||||
|
|||||||
@ -60,6 +60,10 @@ public class HomeConnectDryerHandler extends AbstractHomeConnectThingHandler {
|
|||||||
handlers.put(CHANNEL_ACTIVE_PROGRAM_STATE, defaultActiveProgramStateUpdateHandler());
|
handlers.put(CHANNEL_ACTIVE_PROGRAM_STATE, defaultActiveProgramStateUpdateHandler());
|
||||||
handlers.put(CHANNEL_SELECTED_PROGRAM_STATE,
|
handlers.put(CHANNEL_SELECTED_PROGRAM_STATE,
|
||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
|
|
||||||
|
// register dryer specific handlers
|
||||||
|
handlers.put(CHANNEL_DRYER_DRYING_TARGET,
|
||||||
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -36,7 +36,6 @@ import org.openhab.binding.homeconnect.internal.client.model.Data;
|
|||||||
import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
|
import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
|
||||||
import org.openhab.core.library.types.OnOffType;
|
import org.openhab.core.library.types.OnOffType;
|
||||||
import org.openhab.core.library.types.QuantityType;
|
import org.openhab.core.library.types.QuantityType;
|
||||||
import org.openhab.core.thing.Channel;
|
|
||||||
import org.openhab.core.thing.ChannelUID;
|
import org.openhab.core.thing.ChannelUID;
|
||||||
import org.openhab.core.thing.Thing;
|
import org.openhab.core.thing.Thing;
|
||||||
import org.openhab.core.types.Command;
|
import org.openhab.core.types.Command;
|
||||||
@ -89,18 +88,8 @@ public class HomeConnectOvenHandler extends AbstractHomeConnectThingHandler {
|
|||||||
}
|
}
|
||||||
return UnDefType.UNDEF;
|
return UnDefType.UNDEF;
|
||||||
})));
|
})));
|
||||||
handlers.put(CHANNEL_SETPOINT_TEMPERATURE, (channelUID, cache) -> {
|
handlers.put(CHANNEL_SETPOINT_TEMPERATURE, getAndUpdateSelectedProgramStateUpdateHandler());
|
||||||
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
handlers.put(CHANNEL_DURATION, getAndUpdateSelectedProgramStateUpdateHandler());
|
||||||
if (channel.isPresent()) {
|
|
||||||
defaultSelectedProgramStateUpdateHandler().handle(channel.get().getUID(), cache);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
handlers.put(CHANNEL_DURATION, (channelUID, cache) -> {
|
|
||||||
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
|
||||||
if (channel.isPresent()) {
|
|
||||||
defaultSelectedProgramStateUpdateHandler().handle(channel.get().getUID(), cache);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import static org.openhab.binding.homeconnect.internal.HomeConnectBindingConstan
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
|
import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
|
||||||
@ -26,7 +25,6 @@ import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationEx
|
|||||||
import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
|
import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
|
||||||
import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
|
import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
|
||||||
import org.openhab.core.library.types.StringType;
|
import org.openhab.core.library.types.StringType;
|
||||||
import org.openhab.core.thing.Channel;
|
|
||||||
import org.openhab.core.thing.ChannelUID;
|
import org.openhab.core.thing.ChannelUID;
|
||||||
import org.openhab.core.thing.Thing;
|
import org.openhab.core.thing.Thing;
|
||||||
import org.openhab.core.types.Command;
|
import org.openhab.core.types.Command;
|
||||||
@ -65,20 +63,13 @@ public class HomeConnectWasherDryerHandler extends AbstractHomeConnectThingHandl
|
|||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
|
|
||||||
// register washer specific handlers
|
// register washer specific handlers
|
||||||
handlers.put(CHANNEL_WASHER_SPIN_SPEED, (channelUID, cache) -> {
|
handlers.put(CHANNEL_WASHER_SPIN_SPEED,
|
||||||
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
if (channel.isPresent()) {
|
handlers.put(CHANNEL_WASHER_TEMPERATURE,
|
||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
.handle(channel.get().getUID(), cache);
|
// register dryer specific handlers
|
||||||
}
|
handlers.put(CHANNEL_DRYER_DRYING_TARGET,
|
||||||
});
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
handlers.put(CHANNEL_WASHER_TEMPERATURE, (channelUID, cache) -> {
|
|
||||||
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
|
||||||
if (channel.isPresent()) {
|
|
||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
|
|
||||||
.handle(channel.get().getUID(), cache);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -103,6 +94,7 @@ public class HomeConnectWasherDryerHandler extends AbstractHomeConnectThingHandl
|
|||||||
handlers.put(EVENT_WASHER_SPIN_SPEED,
|
handlers.put(EVENT_WASHER_SPIN_SPEED,
|
||||||
event -> getThingChannel(CHANNEL_WASHER_SPIN_SPEED).ifPresent(channel -> updateState(channel.getUID(),
|
event -> getThingChannel(CHANNEL_WASHER_SPIN_SPEED).ifPresent(channel -> updateState(channel.getUID(),
|
||||||
event.getValue() == null ? UnDefType.UNDEF : new StringType(event.getValue()))));
|
event.getValue() == null ? UnDefType.UNDEF : new StringType(event.getValue()))));
|
||||||
|
// register dryer specific event handlers
|
||||||
handlers.put(EVENT_DRYER_DRYING_TARGET,
|
handlers.put(EVENT_DRYER_DRYING_TARGET,
|
||||||
event -> getThingChannel(CHANNEL_DRYER_DRYING_TARGET).ifPresent(channel -> updateState(channel.getUID(),
|
event -> getThingChannel(CHANNEL_DRYER_DRYING_TARGET).ifPresent(channel -> updateState(channel.getUID(),
|
||||||
event.getValue() == null ? UnDefType.UNDEF : new StringType(event.getValue()))));
|
event.getValue() == null ? UnDefType.UNDEF : new StringType(event.getValue()))));
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import static org.openhab.binding.homeconnect.internal.HomeConnectBindingConstan
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
|
import org.openhab.binding.homeconnect.internal.client.HomeConnectApiClient;
|
||||||
@ -26,7 +25,6 @@ import org.openhab.binding.homeconnect.internal.client.exception.AuthorizationEx
|
|||||||
import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
|
import org.openhab.binding.homeconnect.internal.client.exception.CommunicationException;
|
||||||
import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
|
import org.openhab.binding.homeconnect.internal.type.HomeConnectDynamicStateDescriptionProvider;
|
||||||
import org.openhab.core.library.types.StringType;
|
import org.openhab.core.library.types.StringType;
|
||||||
import org.openhab.core.thing.Channel;
|
|
||||||
import org.openhab.core.thing.ChannelUID;
|
import org.openhab.core.thing.ChannelUID;
|
||||||
import org.openhab.core.thing.Thing;
|
import org.openhab.core.thing.Thing;
|
||||||
import org.openhab.core.types.Command;
|
import org.openhab.core.types.Command;
|
||||||
@ -65,20 +63,14 @@ public class HomeConnectWasherHandler extends AbstractHomeConnectThingHandler {
|
|||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
|
|
||||||
// register washer specific handlers
|
// register washer specific handlers
|
||||||
handlers.put(CHANNEL_WASHER_SPIN_SPEED, (channelUID, cache) -> {
|
handlers.put(CHANNEL_WASHER_SPIN_SPEED,
|
||||||
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
if (channel.isPresent()) {
|
handlers.put(CHANNEL_WASHER_TEMPERATURE,
|
||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
.handle(channel.get().getUID(), cache);
|
handlers.put(CHANNEL_WASHER_IDOS1,
|
||||||
}
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
});
|
handlers.put(CHANNEL_WASHER_IDOS2,
|
||||||
handlers.put(CHANNEL_WASHER_TEMPERATURE, (channelUID, cache) -> {
|
getAndUpdateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler());
|
||||||
Optional<Channel> channel = getThingChannel(CHANNEL_SELECTED_PROGRAM_STATE);
|
|
||||||
if (channel.isPresent()) {
|
|
||||||
updateProgramOptionsStateDescriptionsAndSelectedProgramStateUpdateHandler()
|
|
||||||
.handle(channel.get().getUID(), cache);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user