*/
@NonNullByDefault
public class Capability {
-
protected final Thing thing;
protected final CommonInterface handler;
protected final ModuleType moduleType;
import org.openhab.binding.netatmo.internal.api.NetatmoException;
import org.openhab.binding.netatmo.internal.api.WeatherApi;
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
+import org.openhab.binding.netatmo.internal.api.dto.Device;
import org.openhab.binding.netatmo.internal.api.dto.NAObject;
import org.openhab.binding.netatmo.internal.config.MeasureConfiguration;
import org.openhab.binding.netatmo.internal.handler.CommonInterface;
measureChannelHelper.setMeasures(measures);
}
+ @Override
+ protected void updateNADevice(Device newData) {
+ // Resolution of issue #15684 :
+ // Do not transfer newData to superclass - MeasureCapability pulls its own data based on measurement channels
+ // configuration and store them in 'measures' for the channel helper.
+ }
+
private void updateMeasures(WeatherApi api, String deviceId, @Nullable String moduleId) {
measures.clear();
handler.getActiveChannels().filter(channel -> !channel.getConfiguration().getProperties().isEmpty())
@Override
protected @Nullable State internalGetDashboard(String channelId, Dashboard dashboard) {
- switch (channelId) {
- case CHANNEL_HUMIDEX:
- return new DecimalType(humidex(dashboard.getTemperature(), dashboard.getHumidity()));
- case CHANNEL_HUMIDEX_SCALE:
- return new DecimalType(humidexScale(humidex(dashboard.getTemperature(), dashboard.getHumidity())));
- case CHANNEL_VALUE:
- return toQuantityType(dashboard.getHumidity(), MeasureClass.HUMIDITY);
- }
- return null;
+ return switch (channelId) {
+ case CHANNEL_HUMIDEX -> new DecimalType(humidex(dashboard.getTemperature(), dashboard.getHumidity()));
+ case CHANNEL_HUMIDEX_SCALE ->
+ new DecimalType(humidexScale(humidex(dashboard.getTemperature(), dashboard.getHumidity())));
+ case CHANNEL_VALUE -> toQuantityType(dashboard.getHumidity(), MeasureClass.HUMIDITY);
+ default -> null;
+ };
}
}
import org.openhab.binding.netatmo.internal.api.data.NetatmoConstants.MeasureClass;
import org.openhab.core.io.net.http.HttpUtil;
import org.openhab.core.library.types.DateTimeType;
-import org.openhab.core.library.types.DecimalType;
import org.openhab.core.library.types.QuantityType;
import org.openhab.core.library.types.RawType;
import org.openhab.core.library.types.StringType;
return zonedDateTime.map(zdt -> (State) new DateTimeType(zdt)).orElse(UnDefType.NULL);
}
- public static State toQuantityType(@Nullable Double value, @Nullable MeasureClass measureClass) {
+ public static State toQuantityType(@Nullable Double value, MeasureClass measureClass) {
if (value != null && !value.isNaN()) {
- if (measureClass != null) {
- Measure measureDef = measureClass.measureDefinition;
- BigDecimal measure = new BigDecimal(Math.min(measureDef.maxValue, Math.max(measureDef.minValue, value)))
- .setScale(measureDef.scale, RoundingMode.HALF_UP);
- return new QuantityType<>(measure, measureDef.unit);
- } else {
- return new DecimalType(value);
- }
+ Measure measureDef = measureClass.measureDefinition;
+ BigDecimal measure = new BigDecimal(Math.min(measureDef.maxValue, Math.max(measureDef.minValue, value)))
+ .setScale(measureDef.scale, RoundingMode.HALF_UP);
+ return new QuantityType<>(measure, measureDef.unit);
}
return UnDefType.NULL;
}