From: eugen Date: Tue, 29 Mar 2022 16:57:52 +0000 (+0200) Subject: add support for dimmer (#12540) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=a2a5c2e6ff0bc56600a87fc4ae82c0ae74d80412;p=openhab-addons.git add support for dimmer (#12540) Signed-off-by: Eugen Freiter --- diff --git a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitCharacteristicFactory.java b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitCharacteristicFactory.java index fe93c964d0..bc854b3395 100644 --- a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitCharacteristicFactory.java +++ b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitCharacteristicFactory.java @@ -334,17 +334,25 @@ public class HomekitCharacteristicFactory { private static Supplier> getDoubleSupplier(HomekitTaggedItem taggedItem, double defaultValue) { return () -> { - final @Nullable DecimalType value = taggedItem.getItem().getStateAs(DecimalType.class); - return CompletableFuture.completedFuture(value != null ? value.doubleValue() : defaultValue); + final State state = taggedItem.getItem().getState(); + double value = defaultValue; + if (state instanceof PercentType) { + value = ((PercentType) state).doubleValue(); + } else if (state instanceof DecimalType) { + value = ((DecimalType) state).doubleValue(); + } + return CompletableFuture.completedFuture(value); }; } private static ExceptionalConsumer setDoubleConsumer(HomekitTaggedItem taggedItem) { return (value) -> { if (taggedItem.getItem() instanceof NumberItem) { - ((NumberItem) taggedItem.getItem()).send(new DecimalType(value)); + ((NumberItem) taggedItem.getItem()).send(new DecimalType(value.doubleValue())); + } else if (taggedItem.getItem() instanceof DimmerItem) { + ((DimmerItem) taggedItem.getItem()).send(new PercentType(value.intValue())); } else { - logger.warn("Item type {} is not supported for {}. Only Number type is supported.", + logger.warn("Item type {} is not supported for {}. Only Number and Dimmer type are supported.", taggedItem.getItem().getType(), taggedItem.getName()); } };