Fixes wrong statevalue and problem with zwave setpoint (#3017)

* Fixes wrong statevalue and problem with zwave setpoint

* Fix demo test to match bugfix (#10)
This commit is contained in:
John Arild Berentsen 2016-08-28 17:58:50 +02:00 committed by GitHub
parent 7940648725
commit 17a57d3b47
3 changed files with 8 additions and 13 deletions

View file

@ -351,7 +351,7 @@ class ClimateDevice(Entity):
@property
def state(self):
"""Return the current state."""
return self.current_operation or STATE_UNKNOWN
return self.target_temperature or STATE_UNKNOWN
@property
def state_attributes(self):

View file

@ -78,7 +78,6 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice):
self._current_swing_mode = None
self._swing_list = None
self._unit = None
self._index = None
self._zxt_120 = None
self.update_properties()
# register listener
@ -107,15 +106,10 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice):
def update_properties(self):
"""Callback on data change for the registered node/value pair."""
# Set point
temps = []
for value in self._node.get_values(
class_id=COMMAND_CLASS_THERMOSTAT_SETPOINT).values():
self._unit = value.units
temps.append(int(value.data))
if value.index == self._index:
self._target_temperature = int(value.data)
self._target_temperature_high = max(temps)
self._target_temperature_low = min(temps)
self._target_temperature = int(value.data)
# Operation Mode
for value in self._node.get_values(
class_id=COMMAND_CLASS_THERMOSTAT_MODE).values():
@ -209,8 +203,6 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice):
"""Set new target temperature."""
for value in self._node.get_values(
class_id=COMMAND_CLASS_THERMOSTAT_SETPOINT).values():
if value.command_class != 67 and value.index != self._index:
continue
if self._zxt_120:
# ZXT-120 does not support get setpoint
self._target_temperature = temperature

View file

@ -110,16 +110,19 @@ class TestDemoClimate(unittest.TestCase):
def test_set_operation_bad_attr(self):
"""Test setting operation mode without required attribute."""
self.assertEqual("Cool", self.hass.states.get(ENTITY_CLIMATE).state)
state = self.hass.states.get(ENTITY_CLIMATE)
self.assertEqual("Cool", state.attributes.get('operation_mode'))
climate.set_operation_mode(self.hass, None, ENTITY_CLIMATE)
self.hass.pool.block_till_done()
self.assertEqual("Cool", self.hass.states.get(ENTITY_CLIMATE).state)
state = self.hass.states.get(ENTITY_CLIMATE)
self.assertEqual("Cool", state.attributes.get('operation_mode'))
def test_set_operation(self):
"""Test setting of new operation mode."""
climate.set_operation_mode(self.hass, "Heat", ENTITY_CLIMATE)
self.hass.pool.block_till_done()
self.assertEqual("Heat", self.hass.states.get(ENTITY_CLIMATE).state)
state = self.hass.states.get(ENTITY_CLIMATE)
self.assertEqual("Heat", state.attributes.get('operation_mode'))
def test_set_away_mode_bad_attr(self):
"""Test setting the away mode without required attribute."""