From 6e58a0c9964e5a1caeb56199d09ba0364532c75b Mon Sep 17 00:00:00 2001
From: Thom Troy <ttroy50@gmail.com>
Date: Mon, 4 Nov 2019 20:49:53 +0000
Subject: [PATCH] Update ephember library version (#28507)

* update ephember library version

* update requirements_all.txt for new pyephember version

* update imports to top of module
---
 homeassistant/components/ephember/climate.py  | 63 ++++++++++---------
 .../components/ephember/manifest.json         |  2 +-
 requirements_all.txt                          |  2 +-
 3 files changed, 37 insertions(+), 30 deletions(-)

diff --git a/homeassistant/components/ephember/climate.py b/homeassistant/components/ephember/climate.py
index 0e35b8bbee7..c189b2d62b8 100644
--- a/homeassistant/components/ephember/climate.py
+++ b/homeassistant/components/ephember/climate.py
@@ -1,23 +1,35 @@
 """Support for the EPH Controls Ember themostats."""
-import logging
 from datetime import timedelta
+import logging
+
+from pyephember.pyephember import (
+    EphEmber,
+    ZoneMode,
+    zone_current_temperature,
+    zone_is_active,
+    zone_is_boost_active,
+    zone_is_hot_water,
+    zone_mode,
+    zone_name,
+    zone_target_temperature,
+)
 import voluptuous as vol
 
-from homeassistant.components.climate import ClimateDevice, PLATFORM_SCHEMA
+from homeassistant.components.climate import PLATFORM_SCHEMA, ClimateDevice
 from homeassistant.components.climate.const import (
+    CURRENT_HVAC_HEAT,
+    CURRENT_HVAC_IDLE,
     HVAC_MODE_HEAT,
     HVAC_MODE_HEAT_COOL,
+    HVAC_MODE_OFF,
     SUPPORT_AUX_HEAT,
     SUPPORT_TARGET_TEMPERATURE,
-    HVAC_MODE_OFF,
-    CURRENT_HVAC_HEAT,
-    CURRENT_HVAC_IDLE,
 )
 from homeassistant.const import (
     ATTR_TEMPERATURE,
-    TEMP_CELSIUS,
-    CONF_USERNAME,
     CONF_PASSWORD,
+    CONF_USERNAME,
+    TEMP_CELSIUS,
 )
 import homeassistant.helpers.config_validation as cv
 
@@ -43,8 +55,6 @@ HA_STATE_TO_EPH = {value: key for key, value in EPH_TO_HA_STATE.items()}
 
 def setup_platform(hass, config, add_entities, discovery_info=None):
     """Set up the ephember thermostat."""
-    from pyephember.pyephember import EphEmber
-
     username = config.get(CONF_USERNAME)
     password = config.get(CONF_PASSWORD)
 
@@ -61,14 +71,14 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
 
 
 class EphEmberThermostat(ClimateDevice):
-    """Representation of a HeatmiserV3 thermostat."""
+    """Representation of a EphEmber thermostat."""
 
     def __init__(self, ember, zone):
         """Initialize the thermostat."""
         self._ember = ember
-        self._zone_name = zone["name"]
+        self._zone_name = zone_name(zone)
         self._zone = zone
-        self._hot_water = zone["isHotWater"]
+        self._hot_water = zone_is_hot_water(zone)
 
     @property
     def supported_features(self):
@@ -91,12 +101,12 @@ class EphEmberThermostat(ClimateDevice):
     @property
     def current_temperature(self):
         """Return the current temperature."""
-        return self._zone["currentTemperature"]
+        return zone_current_temperature(self._zone)
 
     @property
     def target_temperature(self):
         """Return the temperature we try to reach."""
-        return self._zone["targetTemperature"]
+        return zone_target_temperature(self._zone)
 
     @property
     def target_temperature_step(self):
@@ -104,12 +114,12 @@ class EphEmberThermostat(ClimateDevice):
         if self._hot_water:
             return None
 
-        return 1
+        return 0.5
 
     @property
     def hvac_action(self):
         """Return current HVAC action."""
-        if self._zone["isCurrentlyActive"]:
+        if zone_is_active(self._zone):
             return CURRENT_HVAC_HEAT
 
         return CURRENT_HVAC_IDLE
@@ -117,9 +127,7 @@ class EphEmberThermostat(ClimateDevice):
     @property
     def hvac_mode(self):
         """Return current operation ie. heat, cool, idle."""
-        from pyephember.pyephember import ZoneMode
-
-        mode = ZoneMode(self._zone["mode"])
+        mode = zone_mode(self._zone)
         return self.map_mode_eph_hass(mode)
 
     @property
@@ -138,12 +146,13 @@ class EphEmberThermostat(ClimateDevice):
     @property
     def is_aux_heat(self):
         """Return true if aux heater."""
-        return self._zone["isBoostActive"]
+
+        return zone_is_boost_active(self._zone)
 
     def turn_aux_heat_on(self):
         """Turn auxiliary heater on."""
         self._ember.activate_boost_by_name(
-            self._zone_name, self._zone["targetTemperature"]
+            self._zone_name, zone_target_temperature(self._zone)
         )
 
     def turn_aux_heat_off(self):
@@ -165,24 +174,24 @@ class EphEmberThermostat(ClimateDevice):
         if temperature > self.max_temp or temperature < self.min_temp:
             return
 
-        self._ember.set_target_temperture_by_name(self._zone_name, int(temperature))
+        self._ember.set_target_temperture_by_name(self._zone_name, temperature)
 
     @property
     def min_temp(self):
         """Return the minimum temperature."""
         # Hot water temp doesn't support being changed
         if self._hot_water:
-            return self._zone["targetTemperature"]
+            return zone_target_temperature(self._zone)
 
-        return 5
+        return 5.0
 
     @property
     def max_temp(self):
         """Return the maximum temperature."""
         if self._hot_water:
-            return self._zone["targetTemperature"]
+            return zone_target_temperature(self._zone)
 
-        return 35
+        return 35.0
 
     def update(self):
         """Get the latest data."""
@@ -191,8 +200,6 @@ class EphEmberThermostat(ClimateDevice):
     @staticmethod
     def map_mode_hass_eph(operation_mode):
         """Map from home assistant mode to eph mode."""
-        from pyephember.pyephember import ZoneMode
-
         return getattr(ZoneMode, HA_STATE_TO_EPH.get(operation_mode), None)
 
     @staticmethod
diff --git a/homeassistant/components/ephember/manifest.json b/homeassistant/components/ephember/manifest.json
index 7509e627621..e05d21c0c02 100644
--- a/homeassistant/components/ephember/manifest.json
+++ b/homeassistant/components/ephember/manifest.json
@@ -3,7 +3,7 @@
   "name": "Ephember",
   "documentation": "https://www.home-assistant.io/integrations/ephember",
   "requirements": [
-    "pyephember==0.2.0"
+    "pyephember==0.3.1"
   ],
   "dependencies": [],
   "codeowners": [
diff --git a/requirements_all.txt b/requirements_all.txt
index 7ceb7351eb7..04a858ce3b9 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -1189,7 +1189,7 @@ pyemby==1.6
 pyenvisalink==4.0
 
 # homeassistant.components.ephember
-pyephember==0.2.0
+pyephember==0.3.1
 
 # homeassistant.components.everlights
 pyeverlights==0.1.0
-- 
GitLab