From a2a5c2e6ff0bc56600a87fc4ae82c0ae74d80412 Mon Sep 17 00:00:00 2001 From: eugen Date: Tue, 29 Mar 2022 18:57:52 +0200 Subject: [PATCH] add support for dimmer (#12540) Signed-off-by: Eugen Freiter --- .../HomekitCharacteristicFactory.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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()); } }; -- 2.47.3