diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java index 24283a5e857..e73b8fe2574 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/DaikinWebTargets.java @@ -137,14 +137,18 @@ public class DaikinWebTargets { return EnergyInfoDayAndWeek.parse(response); } - public void setSpecialMode(SpecialMode specialMode) throws DaikinCommunicationException { + public void setSpecialMode(SpecialMode newMode) throws DaikinCommunicationException { Map queryParams = new HashMap<>(); - if (specialMode == SpecialMode.NORMAL) { + if (newMode == SpecialMode.NORMAL) { queryParams.put("set_spmode", "0"); - queryParams.put("spmode_kind", "1"); + + ControlInfo controlInfo = getControlInfo(); + if (!controlInfo.advancedMode.isUndefined()) { + queryParams.put("spmode_kind", controlInfo.getSpecialMode().getValue()); + } } else { queryParams.put("set_spmode", "1"); - queryParams.put("spmode_kind", Integer.toString(specialMode.getValue())); + queryParams.put("spmode_kind", newMode.getValue()); } String response = invoke(setSpecialModeUri, queryParams); if (!response.contains("ret=OK")) { diff --git a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/Enums.java b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/Enums.java index 8f90c826357..cecc82618be 100644 --- a/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/Enums.java +++ b/bundles/org.openhab.binding.daikin/src/main/java/org/openhab/binding/daikin/internal/api/Enums.java @@ -181,17 +181,17 @@ public class Enums { } public enum SpecialMode { - NORMAL(0), - POWERFUL(1), - ECO(2); + NORMAL("0"), + POWERFUL("1"), + ECO("2"); - private final int value; + private final String value; - SpecialMode(int value) { + SpecialMode(String value) { this.value = value; } - public int getValue() { + public String getValue() { return value; }