Map Modes to setpoint indexes (#3023)
* Map Modes to setpoint indexes * Fixes devices with no thermostat mode * another try to fix devices without mode * another try to fix devices without mode 2 * another try to fix devices without mode 3 * fix setting setpoint for devices with no mode * fix setting setpoint for devices with no modepull/3027/head
parent
3313995c4c
commit
2a5ca1c873
|
@ -35,11 +35,21 @@ DEVICE_MAPPINGS = {
|
||||||
REMOTEC_ZXT_120_THERMOSTAT: WORKAROUND_ZXT_120
|
REMOTEC_ZXT_120_THERMOSTAT: WORKAROUND_ZXT_120
|
||||||
}
|
}
|
||||||
|
|
||||||
ZXT_120_SET_TEMP = {
|
SET_TEMP_TO_INDEX = {
|
||||||
'Heat': 1,
|
'Heat': 1,
|
||||||
'Cool': 2,
|
'Cool': 2,
|
||||||
|
'Auto': 3,
|
||||||
|
'Aux Heat': 4,
|
||||||
|
'Resume': 5,
|
||||||
|
'Fan Only': 6,
|
||||||
|
'Furnace': 7,
|
||||||
'Dry Air': 8,
|
'Dry Air': 8,
|
||||||
'Auto Changeover': 10
|
'Moist Air': 9,
|
||||||
|
'Auto Changeover': 10,
|
||||||
|
'Heat Econ': 11,
|
||||||
|
'Cool Econ': 12,
|
||||||
|
'Away': 13,
|
||||||
|
'Unknown': 14
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +119,14 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice):
|
||||||
for value in self._node.get_values(
|
for value in self._node.get_values(
|
||||||
class_id=COMMAND_CLASS_THERMOSTAT_SETPOINT).values():
|
class_id=COMMAND_CLASS_THERMOSTAT_SETPOINT).values():
|
||||||
self._unit = value.units
|
self._unit = value.units
|
||||||
|
if self.current_operation is not None:
|
||||||
|
if SET_TEMP_TO_INDEX.get(self._current_operation) \
|
||||||
|
!= value.index:
|
||||||
|
continue
|
||||||
|
if self._zxt_120:
|
||||||
|
continue
|
||||||
self._target_temperature = int(value.data)
|
self._target_temperature = int(value.data)
|
||||||
|
|
||||||
# Operation Mode
|
# Operation Mode
|
||||||
for value in self._node.get_values(
|
for value in self._node.get_values(
|
||||||
class_id=COMMAND_CLASS_THERMOSTAT_MODE).values():
|
class_id=COMMAND_CLASS_THERMOSTAT_MODE).values():
|
||||||
|
@ -203,21 +220,25 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice):
|
||||||
"""Set new target temperature."""
|
"""Set new target temperature."""
|
||||||
for value in self._node.get_values(
|
for value in self._node.get_values(
|
||||||
class_id=COMMAND_CLASS_THERMOSTAT_SETPOINT).values():
|
class_id=COMMAND_CLASS_THERMOSTAT_SETPOINT).values():
|
||||||
if self._zxt_120:
|
if self.current_operation is not None:
|
||||||
# ZXT-120 does not support get setpoint
|
if SET_TEMP_TO_INDEX.get(self._current_operation) \
|
||||||
self._target_temperature = temperature
|
!= value.index:
|
||||||
if ZXT_120_SET_TEMP.get(self._current_operation) \
|
|
||||||
!= value.index:
|
|
||||||
continue
|
continue
|
||||||
_LOGGER.debug("ZXT_120_SET_TEMP=%s and"
|
_LOGGER.debug("SET_TEMP_TO_INDEX=%s and"
|
||||||
" self._current_operation=%s",
|
" self._current_operation=%s",
|
||||||
ZXT_120_SET_TEMP.get(self._current_operation),
|
SET_TEMP_TO_INDEX.get(self._current_operation),
|
||||||
self._current_operation)
|
self._current_operation)
|
||||||
# ZXT-120 responds only to whole int
|
if self._zxt_120:
|
||||||
value.data = int(round(temperature, 0))
|
# ZXT-120 does not support get setpoint
|
||||||
|
self._target_temperature = temperature
|
||||||
|
# ZXT-120 responds only to whole int
|
||||||
|
value.data = int(round(temperature, 0))
|
||||||
|
else:
|
||||||
|
value.data = int(temperature)
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
value.data = int(temperature)
|
value.data = int(temperature)
|
||||||
break
|
break
|
||||||
|
|
||||||
def set_fan_mode(self, fan):
|
def set_fan_mode(self, fan):
|
||||||
"""Set new target fan mode."""
|
"""Set new target fan mode."""
|
||||||
|
|
Loading…
Reference in New Issue