From f30e54f01e0460f08ff3d470ca45612eb9d860d8 Mon Sep 17 00:00:00 2001
From: Cameron Morris <636871+cameronrmorris@users.noreply.github.com>
Date: Fri, 9 Aug 2019 20:05:05 -0400
Subject: [PATCH] Fix eco preset for Wink Air Conditioner (#25763)

* Add preset support for device
* Provide mappings between preset changes
---
 homeassistant/components/wink/climate.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/homeassistant/components/wink/climate.py b/homeassistant/components/wink/climate.py
index ed2d2482802..38f25ef0a83 100644
--- a/homeassistant/components/wink/climate.py
+++ b/homeassistant/components/wink/climate.py
@@ -27,6 +27,7 @@ from homeassistant.components.climate.const import (
     SUPPORT_FAN_MODE,
     SUPPORT_TARGET_TEMPERATURE,
     SUPPORT_TARGET_TEMPERATURE_RANGE,
+    SUPPORT_PRESET_MODE,
     PRESET_NONE,
 )
 from homeassistant.const import ATTR_TEMPERATURE, PRECISION_TENTHS, TEMP_CELSIUS
@@ -62,7 +63,7 @@ SUPPORT_FLAGS_THERMOSTAT = (
 SUPPORT_FAN_THERMOSTAT = [FAN_AUTO, FAN_ON]
 SUPPORT_PRESET_THERMOSTAT = [PRESET_AWAY, PRESET_ECO]
 
-SUPPORT_FLAGS_AC = SUPPORT_TARGET_TEMPERATURE | SUPPORT_FAN_MODE
+SUPPORT_FLAGS_AC = SUPPORT_TARGET_TEMPERATURE | SUPPORT_FAN_MODE | SUPPORT_PRESET_MODE
 SUPPORT_FAN_AC = [FAN_HIGH, FAN_LOW, FAN_MEDIUM]
 SUPPORT_PRESET_AC = [PRESET_NONE, PRESET_ECO]
 
@@ -415,10 +416,13 @@ class WinkAC(WinkDevice, ClimateDevice):
     @property
     def preset_mode(self):
         """Return the current preset mode, e.g., home, away, temp."""
+        if not self.wink.is_on():
+            return PRESET_NONE
+
         mode = self.wink.current_mode()
         if mode == "auto_eco":
             return PRESET_ECO
-        return None
+        return PRESET_NONE
 
     @property
     def preset_modes(self):
@@ -436,7 +440,7 @@ class WinkAC(WinkDevice, ClimateDevice):
 
         wink_mode = self.wink.current_mode()
         if wink_mode == "auto_eco":
-            return HVAC_MODE_AUTO
+            return HVAC_MODE_COOL
         return WINK_HVAC_TO_HA.get(wink_mode)
 
     @property
@@ -476,6 +480,8 @@ class WinkAC(WinkDevice, ClimateDevice):
         """Set new preset mode."""
         if preset_mode == PRESET_ECO:
             self.wink.set_operation_mode("auto_eco")
+        elif self.hvac_mode == HVAC_MODE_COOL and preset_mode == PRESET_NONE:
+            self.set_hvac_mode(HVAC_MODE_COOL)
 
     @property
     def target_temperature(self):
-- 
GitLab