Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[homekit] return min value of characteristic instead of 0 #11803

Merged
merged 1 commit into from
Dec 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -286,10 +286,11 @@ private static ExceptionalConsumer<Integer> setAngleConsumer(HomekitTaggedItem t
};
}

private static Supplier<CompletableFuture<Double>> getDoubleSupplier(HomekitTaggedItem taggedItem) {
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() : 0.0);
return CompletableFuture.completedFuture(value != null ? value.doubleValue() : defaultValue);
};
}

Expand Down Expand Up @@ -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));
}
Expand Down Expand Up @@ -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));
}

Expand All @@ -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));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -106,7 +108,9 @@ public TargetHeaterCoolerStateEnum[] getTargetHeaterCoolerStateValidValues() {
public CompletableFuture<Double> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand All @@ -43,7 +46,11 @@ public HomekitLightSensorImpl(HomekitTaggedItem taggedItem, List<HomekitTaggedIt
@Override
public CompletableFuture<Double> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ public HomekitTemperatureSensorImpl(HomekitTaggedItem taggedItem, List<HomekitTa
public CompletableFuture<Double> 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
Expand Down