diff --git a/homeassistant/components/zwave/climate.py b/homeassistant/components/zwave/climate.py index 6f66c6f36c4..a9dfe4eec00 100644 --- a/homeassistant/components/zwave/climate.py +++ b/homeassistant/components/zwave/climate.py @@ -39,7 +39,7 @@ REMOTEC = 0x5254 REMOTEC_ZXT_120 = 0x8377 REMOTEC_ZXT_120_THERMOSTAT = (REMOTEC, REMOTEC_ZXT_120) ATTR_OPERATING_STATE = "operating_state" -ATTR_FAN_STATE = "fan_state" +ATTR_FAN_ACTION = "fan_action" # Device is in manufacturer specific mode (e.g. setting the valve manually) @@ -133,7 +133,7 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): self._preset_mode = None # ha_mode if exists, else zwave_mode self._current_fan_mode = None self._fan_modes = None - self._fan_state = None + self._fan_action = None self._current_swing_mode = None self._swing_modes = None self._unit = temp_unit @@ -291,8 +291,8 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): self._hvac_action = HVAC_CURRENT_MAPPINGS.get(str(mode).lower(), mode) # Fan operating state - if self.values.fan_state: - self._fan_state = self.values.fan_state.data + if self.values.fan_action: + self._fan_action = self.values.fan_action.data @property def fan_mode(self): @@ -426,3 +426,11 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): if self._zxt_120 == 1: if self.values.zxt_120_swing_mode: self.values.zxt_120_swing_mode.data = swing_mode + + @property + def device_state_attributes(self): + """Return the optional state attributes.""" + data = super().device_state_attributes + if self._fan_action: + data[ATTR_FAN_ACTION] = self._fan_action + return data diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index 72e08299691..d6d1265d09f 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -173,7 +173,7 @@ COMMAND_CLASS_SWITCH_TOGGLE_MULTILEVEL = 41 COMMAND_CLASS_TARIFF_TBL_CONFIG = 74 COMMAND_CLASS_TARIFF_TBL_MONITOR = 75 COMMAND_CLASS_THERMOSTAT_FAN_MODE = 68 -COMMAND_CLASS_THERMOSTAT_FAN_STATE = 69 +COMMAND_CLASS_THERMOSTAT_FAN_ACTION = 69 COMMAND_CLASS_THERMOSTAT_MODE = 64 COMMAND_CLASS_THERMOSTAT_OPERATING_STATE = 66 COMMAND_CLASS_THERMOSTAT_SETBACK = 71 diff --git a/homeassistant/components/zwave/discovery_schemas.py b/homeassistant/components/zwave/discovery_schemas.py index 1be9ca2834e..dbec1484508 100644 --- a/homeassistant/components/zwave/discovery_schemas.py +++ b/homeassistant/components/zwave/discovery_schemas.py @@ -78,9 +78,9 @@ DISCOVERY_SCHEMAS = [ ], const.DISC_OPTIONAL: True, }, - "fan_state": { + "fan_action": { const.DISC_COMMAND_CLASS: [ - const.COMMAND_CLASS_THERMOSTAT_FAN_STATE + const.COMMAND_CLASS_THERMOSTAT_FAN_ACTION ], const.DISC_OPTIONAL: True, }, diff --git a/tests/components/zwave/test_climate.py b/tests/components/zwave/test_climate.py index 60a9dcd0dab..2f13d95fb9f 100644 --- a/tests/components/zwave/test_climate.py +++ b/tests/components/zwave/test_climate.py @@ -43,7 +43,7 @@ def device(hass, mock_openzwave): ), fan_mode=MockValue(data="test2", data_items=[3, 4, 5], node=node), operating_state=MockValue(data=CURRENT_HVAC_HEAT, node=node), - fan_state=MockValue(data=7, node=node), + fan_action=MockValue(data=7, node=node), ) device = climate.get_device(hass, node=node, values=values, node_config={}) @@ -70,7 +70,7 @@ def device_zxt_120(hass, mock_openzwave): ), fan_mode=MockValue(data="test2", data_items=[3, 4, 5], node=node), operating_state=MockValue(data=CURRENT_HVAC_HEAT, node=node), - fan_state=MockValue(data=7, node=node), + fan_action=MockValue(data=7, node=node), zxt_120_swing_mode=MockValue(data="test3", data_items=[6, 7, 8], node=node), ) device = climate.get_device(hass, node=node, values=values, node_config={}) @@ -92,7 +92,7 @@ def device_mapping(hass, mock_openzwave): ), fan_mode=MockValue(data="test2", data_items=[3, 4, 5], node=node), operating_state=MockValue(data="heating", node=node), - fan_state=MockValue(data=7, node=node), + fan_action=MockValue(data=7, node=node), ) device = climate.get_device(hass, node=node, values=values, node_config={}) @@ -113,7 +113,7 @@ def device_unknown(hass, mock_openzwave): ), fan_mode=MockValue(data="test2", data_items=[3, 4, 5], node=node), operating_state=MockValue(data="test4", node=node), - fan_state=MockValue(data=7, node=node), + fan_action=MockValue(data=7, node=node), ) device = climate.get_device(hass, node=node, values=values, node_config={}) @@ -140,7 +140,7 @@ def device_heat_cool(hass, mock_openzwave): ), fan_mode=MockValue(data="test2", data_items=[3, 4, 5], node=node), operating_state=MockValue(data="test4", node=node), - fan_state=MockValue(data=7, node=node), + fan_action=MockValue(data=7, node=node), ) device = climate.get_device(hass, node=node, values=values, node_config={}) @@ -442,3 +442,11 @@ def test_hvac_action_value_changed_unknown(device_unknown): device.values.operating_state.data = "another_hvac_action" value_changed(device.values.operating_state) assert device.hvac_action == "another_hvac_action" + + +def test_fan_action_value_changed(device): + """Test values changed for climate device.""" + assert device.device_state_attributes[climate.ATTR_FAN_ACTION] == 7 + device.values.fan_action.data = 9 + value_changed(device.values.fan_action) + assert device.device_state_attributes[climate.ATTR_FAN_ACTION] == 9