Skip to content

Commit

Permalink
Reintroduce LK Wiser dimmer work-around for API v2
Browse files Browse the repository at this point in the history
Fixes #15315

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
  • Loading branch information
jlaur committed Jul 27, 2023
1 parent f6e750a commit dcd53d3
Showing 1 changed file with 21 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ public class Clip2ThingHandler extends BaseThingHandler {

private static final Duration DYNAMICS_ACTIVE_WINDOW = Duration.ofSeconds(10);

private static final String LK_WISER_MODEL_ID = "LK Dimmer";

private final Logger logger = LoggerFactory.getLogger(Clip2ThingHandler.class);

/**
Expand Down Expand Up @@ -402,6 +404,7 @@ public void handleCommand(ChannelUID channelUID, Command commandParam) {
case CHANNEL_2_SWITCH:
putResource = Objects.nonNull(putResource) ? putResource : new Resource(lightResourceType);
putResource.setOnOff(command);
applyDeviceSpecificWorkArounds(command, putResource);
break;

case CHANNEL_2_COLOR_XY_ONLY:
Expand All @@ -414,6 +417,7 @@ public void handleCommand(ChannelUID channelUID, Command commandParam) {

case CHANNEL_2_ON_OFF_ONLY:
putResource = new Resource(lightResourceType).setOnOff(command);
applyDeviceSpecificWorkArounds(command, putResource);
break;

case CHANNEL_2_TEMPERATURE_ENABLED:
Expand Down Expand Up @@ -514,6 +518,23 @@ public void handleCommand(ChannelUID channelUID, Command commandParam) {
}
}

/**
* Apply device specific work-arounds needed for given command.
*
* @param command the handled command.
* @param putResource the resource that will be adjusted if needed.
*/
private void applyDeviceSpecificWorkArounds(Command command, Resource putResource) {
if (command == OnOffType.OFF) {
String modelId = thing.getProperties().get(Thing.PROPERTY_MODEL_ID);
if (LK_WISER_MODEL_ID.equals(modelId)) {
// Apply transition time as a workaround for LK Wiser Dimmer firmware bug.
// Additional details here: https://techblog.vindvejr.dk/?p=455
putResource.setDynamicsDuration(Duration.ZERO);
}
}
}

/**
* Handle a 'dynamics' command for the given channel ID for the given dynamics duration.
*
Expand Down

0 comments on commit dcd53d3

Please sign in to comment.