diff --git a/homeassistant/components/ephember/climate.py b/homeassistant/components/ephember/climate.py
index 0e35b8bbee72ebe2ecfbbefd3a70524d51e3935a..c189b2d62b821e1613d0cc6548308448e9e7fa88 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 7509e62762139617eae5c8ef20e89624a45bec59..e05d21c0c020e0db9b446375f19bd323b59a2711 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 7ceb7351eb726f2408880d84efccc44d9bcb44e7..04a858ce3b979e0d70ca36031ac0c21d14490080 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