add support for dimmer (#12540)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
This commit is contained in:
parent
3c0d27dad8
commit
a2a5c2e6ff
@ -334,17 +334,25 @@ public class HomekitCharacteristicFactory {
|
|||||||
private static Supplier<CompletableFuture<Double>> getDoubleSupplier(HomekitTaggedItem taggedItem,
|
private static Supplier<CompletableFuture<Double>> getDoubleSupplier(HomekitTaggedItem taggedItem,
|
||||||
double defaultValue) {
|
double defaultValue) {
|
||||||
return () -> {
|
return () -> {
|
||||||
final @Nullable DecimalType value = taggedItem.getItem().getStateAs(DecimalType.class);
|
final State state = taggedItem.getItem().getState();
|
||||||
return CompletableFuture.completedFuture(value != null ? value.doubleValue() : defaultValue);
|
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) {
|
private static ExceptionalConsumer<Double> setDoubleConsumer(HomekitTaggedItem taggedItem) {
|
||||||
return (value) -> {
|
return (value) -> {
|
||||||
if (taggedItem.getItem() instanceof NumberItem) {
|
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 {
|
} 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());
|
taggedItem.getItem().getType(), taggedItem.getName());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user