]> git.basschouten.com Git - openhab-addons.git/commitdiff
Adjust command handling (#16159)
authorChristian Kittel <EvilPingu@users.noreply.github.com>
Mon, 15 Jan 2024 17:47:17 +0000 (18:47 +0100)
committerGitHub <noreply@github.com>
Mon, 15 Jan 2024 17:47:17 +0000 (18:47 +0100)
Signed-off-by: Christian Kittel <ckittel@gmx.de>
bundles/org.openhab.binding.ojelectronics/src/main/java/org/openhab/binding/ojelectronics/internal/ThermostatHandler.java

index 2ca01de22d437c75510ed6445ef8ba3821102d05..10098113e4451fb36f3b26d39d9c6d5faeec4495 100644 (file)
@@ -23,6 +23,8 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.function.Consumer;
 
+import javax.measure.quantity.Temperature;
+
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.ojelectronics.internal.config.OJElectronicsThermostatConfiguration;
@@ -195,8 +197,9 @@ public class ThermostatHandler extends BaseThingHandler {
     }
 
     private void updateManualSetpoint(Command command) {
-        if (command instanceof QuantityType<?> quantityCommand) {
-            getCurrentThermostat().manualModeSetpoint = (int) (quantityCommand.floatValue() * 100);
+        QuantityType<?> harmonizedUnit = getHarmonizedQuantityType(command);
+        if (harmonizedUnit != null) {
+            getCurrentThermostat().manualModeSetpoint = (int) (harmonizedUnit.floatValue() * 100);
         } else {
             logger.warn("Unable to set value {}", command);
         }
@@ -235,8 +238,9 @@ public class ThermostatHandler extends BaseThingHandler {
     }
 
     private void updateComfortSetpoint(Command command) {
-        if (command instanceof QuantityType<?> quantityCommand) {
-            getCurrentThermostat().comfortSetpoint = (int) (quantityCommand.floatValue() * 100);
+        QuantityType<?> harmonizedUnit = getHarmonizedQuantityType(command);
+        if (harmonizedUnit != null) {
+            getCurrentThermostat().comfortSetpoint = (int) (harmonizedUnit.floatValue() * 100);
         } else {
             logger.warn("Unable to set value {}", command);
         }
@@ -351,6 +355,17 @@ public class ThermostatHandler extends BaseThingHandler {
         return REGULATION_MODES.get(regulationMode);
     }
 
+    private @Nullable QuantityType<?> getHarmonizedQuantityType(Command command) {
+        QuantityType<?> harmonizedUnit = null;
+
+        if (command instanceof QuantityType<?> quantityCommand) {
+            harmonizedUnit = quantityCommand.toUnit(SIUnits.CELSIUS);
+        } else if (command instanceof Number quantityCommand) {
+            harmonizedUnit = new QuantityType<Temperature>(quantityCommand.floatValue(), SIUnits.CELSIUS);
+        }
+        return harmonizedUnit;
+    }
+
     private static Map<Integer, String> createRegulationMap() {
         HashMap<Integer, String> map = new HashMap<>();
         map.put(1, "auto");