]> git.basschouten.com Git - openhab-addons.git/commitdiff
add support for dimmer (#12540)
authoreugen <freiter@gmail.com>
Tue, 29 Mar 2022 16:57:52 +0000 (18:57 +0200)
committerGitHub <noreply@github.com>
Tue, 29 Mar 2022 16:57:52 +0000 (18:57 +0200)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitCharacteristicFactory.java

index fe93c964d07ffb07c6d5781e9efbb926964b9bbb..bc854b33958faf10ada547a1b49304f5618bc85f 100644 (file)
@@ -334,17 +334,25 @@ public class HomekitCharacteristicFactory {
     private static Supplier<CompletableFuture<Double>> 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<Double> 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());
             }
         };