[homekit] Target Fan state - add support for Switch Item (#12985)

* add support for SwitchItem for target fan state

Signed-off-by: Eugen Freiter <freiter@gmx.de>
This commit is contained in:
eugen
2022-07-25 21:47:21 +02:00
committed by GitHub
parent b31f06a4cd
commit 6f3cb286d9
2 changed files with 221 additions and 232 deletions

View File

@@ -634,23 +634,12 @@ public class HomekitCharacteristicFactory {
private static TargetFanStateCharacteristic createTargetFanStateCharacteristic(HomekitTaggedItem taggedItem,
HomekitAccessoryUpdater updater) {
return new TargetFanStateCharacteristic(() -> {
final @Nullable DecimalType value = taggedItem.getItem().getStateAs(DecimalType.class);
@Nullable
TargetFanStateEnum targetFanStateEnum = value != null ? TargetFanStateEnum.fromCode(value.intValue())
: null;
if (targetFanStateEnum == null) {
targetFanStateEnum = TargetFanStateEnum.AUTO;
}
return CompletableFuture.completedFuture(targetFanStateEnum);
}, (targetState) -> {
if (taggedItem.getItem() instanceof NumberItem) {
((NumberItem) taggedItem.getItem()).send(new DecimalType(targetState.getCode()));
} else {
logger.warn("Item type {} is not supported for {}. Only Number type is supported.",
taggedItem.getItem().getType(), taggedItem.getName());
}
}, getSubscriber(taggedItem, TARGET_FAN_STATE, updater),
return new TargetFanStateCharacteristic(
() -> getEnumFromItem(taggedItem, TargetFanStateEnum.MANUAL, TargetFanStateEnum.AUTO,
TargetFanStateEnum.AUTO),
(targetState) -> setValueFromEnum(taggedItem, targetState, TargetFanStateEnum.MANUAL,
TargetFanStateEnum.AUTO),
getSubscriber(taggedItem, TARGET_FAN_STATE, updater),
getUnsubscriber(taggedItem, TARGET_FAN_STATE, updater));
}