From 1742805ac1ac9006beaec5931e8223fb5f53d3f9 Mon Sep 17 00:00:00 2001 From: Eugen Freiter Date: Fri, 17 Dec 2021 11:56:40 +0100 Subject: [PATCH] return min value instead of 0 Signed-off-by: Eugen Freiter --- .../HomekitCharacteristicFactory.java | 67 ++++++++++++++----- .../accessories/HomekitHeaterCoolerImpl.java | 6 +- .../accessories/HomekitLightSensorImpl.java | 9 ++- .../HomekitTemperatureSensorImpl.java | 3 +- 4 files changed, 66 insertions(+), 19 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 1315cda84c10f..2e04651a857b7 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 @@ -286,10 +286,11 @@ private static ExceptionalConsumer setAngleConsumer(HomekitTaggedItem t }; } - private static Supplier> getDoubleSupplier(HomekitTaggedItem taggedItem) { + 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() : 0.0); + return CompletableFuture.completedFuture(value != null ? value.doubleValue() : defaultValue); }; } @@ -373,28 +374,40 @@ private static HoldPositionCharacteristic createHoldPositionCharacteristic(Homek private static CarbonMonoxideLevelCharacteristic createCarbonMonoxideLevelCharacteristic( HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new CarbonMonoxideLevelCharacteristic(getDoubleSupplier(taggedItem), + return new CarbonMonoxideLevelCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + CarbonMonoxideLevelCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, CARBON_DIOXIDE_LEVEL, updater), getUnsubscriber(taggedItem, CARBON_DIOXIDE_LEVEL, updater)); } private static CarbonMonoxidePeakLevelCharacteristic createCarbonMonoxidePeakLevelCharacteristic( HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new CarbonMonoxidePeakLevelCharacteristic(getDoubleSupplier(taggedItem), + return new CarbonMonoxidePeakLevelCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + CarbonMonoxidePeakLevelCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, CARBON_DIOXIDE_PEAK_LEVEL, updater), getUnsubscriber(taggedItem, CARBON_DIOXIDE_PEAK_LEVEL, updater)); } private static CarbonDioxideLevelCharacteristic createCarbonDioxideLevelCharacteristic(HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new CarbonDioxideLevelCharacteristic(getDoubleSupplier(taggedItem), + return new CarbonDioxideLevelCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + CarbonDioxideLevelCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, CARBON_MONOXIDE_LEVEL, updater), getUnsubscriber(taggedItem, CARBON_MONOXIDE_LEVEL, updater)); } private static CarbonDioxidePeakLevelCharacteristic createCarbonDioxidePeakLevelCharacteristic( HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new CarbonDioxidePeakLevelCharacteristic(getDoubleSupplier(taggedItem), + return new CarbonDioxidePeakLevelCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + CarbonDioxidePeakLevelCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, CARBON_MONOXIDE_PEAK_LEVEL, updater), getUnsubscriber(taggedItem, CARBON_MONOXIDE_PEAK_LEVEL, updater)); } @@ -618,8 +631,10 @@ private static CoolingThresholdTemperatureCharacteristic createCoolingThresholdC CoolingThresholdTemperatureCharacteristic.DEFAULT_MAX_VALUE), taggedItem.getConfigurationAsDouble(HomekitTaggedItem.STEP, CoolingThresholdTemperatureCharacteristic.DEFAULT_STEP), - getDoubleSupplier(taggedItem), setDoubleConsumer(taggedItem), - getSubscriber(taggedItem, COOLING_THRESHOLD_TEMPERATURE, updater), + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + CoolingThresholdTemperatureCharacteristic.DEFAULT_MIN_VALUE)), + setDoubleConsumer(taggedItem), getSubscriber(taggedItem, COOLING_THRESHOLD_TEMPERATURE, updater), getUnsubscriber(taggedItem, COOLING_THRESHOLD_TEMPERATURE, updater)); } @@ -632,46 +647,66 @@ private static HeatingThresholdTemperatureCharacteristic createHeatingThresholdC HeatingThresholdTemperatureCharacteristic.DEFAULT_MAX_VALUE), taggedItem.getConfigurationAsDouble(HomekitTaggedItem.STEP, HeatingThresholdTemperatureCharacteristic.DEFAULT_STEP), - getDoubleSupplier(taggedItem), setDoubleConsumer(taggedItem), - getSubscriber(taggedItem, HEATING_THRESHOLD_TEMPERATURE, updater), + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + HeatingThresholdTemperatureCharacteristic.DEFAULT_MIN_VALUE)), + setDoubleConsumer(taggedItem), getSubscriber(taggedItem, HEATING_THRESHOLD_TEMPERATURE, updater), getUnsubscriber(taggedItem, HEATING_THRESHOLD_TEMPERATURE, updater)); } private static OzoneDensityCharacteristic createOzoneDensityCharacteristic(final HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new OzoneDensityCharacteristic(getDoubleSupplier(taggedItem), + return new OzoneDensityCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + OzoneDensityCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, OZONE_DENSITY, updater), getUnsubscriber(taggedItem, OZONE_DENSITY, updater)); } private static NitrogenDioxideDensityCharacteristic createNitrogenDioxideDensityCharacteristic( final HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new NitrogenDioxideDensityCharacteristic(getDoubleSupplier(taggedItem), + return new NitrogenDioxideDensityCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + NitrogenDioxideDensityCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, NITROGEN_DIOXIDE_DENSITY, updater), getUnsubscriber(taggedItem, NITROGEN_DIOXIDE_DENSITY, updater)); } private static SulphurDioxideDensityCharacteristic createSulphurDioxideDensityCharacteristic( final HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new SulphurDioxideDensityCharacteristic(getDoubleSupplier(taggedItem), + return new SulphurDioxideDensityCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + SulphurDioxideDensityCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, SULPHUR_DIOXIDE_DENSITY, updater), getUnsubscriber(taggedItem, SULPHUR_DIOXIDE_DENSITY, updater)); } private static PM25DensityCharacteristic createPM25DensityCharacteristic(final HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new PM25DensityCharacteristic(getDoubleSupplier(taggedItem), + return new PM25DensityCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + PM25DensityCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, PM25_DENSITY, updater), getUnsubscriber(taggedItem, PM25_DENSITY, updater)); } private static PM10DensityCharacteristic createPM10DensityCharacteristic(final HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new PM10DensityCharacteristic(getDoubleSupplier(taggedItem), + return new PM10DensityCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + PM10DensityCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, PM10_DENSITY, updater), getUnsubscriber(taggedItem, PM10_DENSITY, updater)); } private static VOCDensityCharacteristic createVOCDensityCharacteristic(final HomekitTaggedItem taggedItem, HomekitAccessoryUpdater updater) { - return new VOCDensityCharacteristic(getDoubleSupplier(taggedItem), + return new VOCDensityCharacteristic( + getDoubleSupplier(taggedItem, + taggedItem.getConfigurationAsDouble(HomekitTaggedItem.MIN_VALUE, + VOCDensityCharacteristic.DEFAULT_MIN_VALUE)), getSubscriber(taggedItem, VOC_DENSITY, updater), getUnsubscriber(taggedItem, VOC_DENSITY, updater)); } } diff --git a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitHeaterCoolerImpl.java b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitHeaterCoolerImpl.java index 3aa396261a486..0ee5d5d8fb819 100644 --- a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitHeaterCoolerImpl.java +++ b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitHeaterCoolerImpl.java @@ -16,6 +16,7 @@ import static org.openhab.io.homekit.internal.HomekitCharacteristicType.CURRENT_HEATER_COOLER_STATE; import static org.openhab.io.homekit.internal.HomekitCharacteristicType.TARGET_HEATER_COOLER_STATE; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; @@ -41,6 +42,7 @@ import io.github.hapjava.characteristics.HomekitCharacteristicChangeCallback; import io.github.hapjava.characteristics.impl.heatercooler.CurrentHeaterCoolerStateEnum; import io.github.hapjava.characteristics.impl.heatercooler.TargetHeaterCoolerStateEnum; +import io.github.hapjava.characteristics.impl.thermostat.CurrentTemperatureCharacteristic; import io.github.hapjava.characteristics.impl.thermostat.TemperatureDisplayUnitCharacteristic; import io.github.hapjava.characteristics.impl.thermostat.TemperatureDisplayUnitEnum; import io.github.hapjava.services.impl.HeaterCoolerService; @@ -106,7 +108,9 @@ public TargetHeaterCoolerStateEnum[] getTargetHeaterCoolerStateValidValues() { public CompletableFuture getCurrentTemperature() { final @Nullable DecimalType state = getStateAs(HomekitCharacteristicType.CURRENT_TEMPERATURE, DecimalType.class); - return CompletableFuture.completedFuture(state != null ? convertToCelsius(state.doubleValue()) : 0.0); + return CompletableFuture.completedFuture(state != null ? convertToCelsius(state.doubleValue()) + : getAccessoryConfiguration(HomekitCharacteristicType.CURRENT_TEMPERATURE, HomekitTaggedItem.MIN_VALUE, + BigDecimal.valueOf(CurrentTemperatureCharacteristic.DEFAULT_MIN_VALUE)).doubleValue()); } @Override diff --git a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitLightSensorImpl.java b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitLightSensorImpl.java index 2fda9a102fc75..1bf5e232e437a 100644 --- a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitLightSensorImpl.java +++ b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitLightSensorImpl.java @@ -14,17 +14,20 @@ import static org.openhab.io.homekit.internal.HomekitCharacteristicType.LIGHT_LEVEL; +import java.math.BigDecimal; import java.util.List; import java.util.concurrent.CompletableFuture; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.library.types.DecimalType; import org.openhab.io.homekit.internal.HomekitAccessoryUpdater; +import org.openhab.io.homekit.internal.HomekitCharacteristicType; import org.openhab.io.homekit.internal.HomekitSettings; import org.openhab.io.homekit.internal.HomekitTaggedItem; import io.github.hapjava.accessories.LightSensorAccessory; import io.github.hapjava.characteristics.HomekitCharacteristicChangeCallback; +import io.github.hapjava.characteristics.impl.lightsensor.CurrentAmbientLightLevelCharacteristic; import io.github.hapjava.services.impl.LightSensorService; /** @@ -43,7 +46,11 @@ public HomekitLightSensorImpl(HomekitTaggedItem taggedItem, List getCurrentAmbientLightLevel() { final @Nullable DecimalType state = getStateAs(LIGHT_LEVEL, DecimalType.class); - return CompletableFuture.completedFuture(state != null ? state.doubleValue() : 0.0); + return CompletableFuture + .completedFuture(state != null ? state.doubleValue() + : getAccessoryConfiguration(HomekitCharacteristicType.LIGHT_LEVEL, HomekitTaggedItem.MIN_VALUE, + BigDecimal.valueOf(CurrentAmbientLightLevelCharacteristic.DEFAULT_MIN_VALUE)) + .doubleValue()); } @Override diff --git a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitTemperatureSensorImpl.java b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitTemperatureSensorImpl.java index 486e1ba4f5aaa..47b30e26b7ed5 100644 --- a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitTemperatureSensorImpl.java +++ b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitTemperatureSensorImpl.java @@ -45,7 +45,8 @@ public HomekitTemperatureSensorImpl(HomekitTaggedItem taggedItem, List getCurrentTemperature() { final @Nullable DecimalType state = getStateAs(HomekitCharacteristicType.CURRENT_TEMPERATURE, DecimalType.class); - return CompletableFuture.completedFuture(state != null ? convertToCelsius(state.doubleValue()) : 0.0); + return CompletableFuture + .completedFuture(state != null ? convertToCelsius(state.doubleValue()) : getMinCurrentTemperature()); } @Override