mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
WIP: Don't set initial values for MQTT HVAC in non-optimistic mode (#17268)
* Don't set initial temperature in non-optimistic mode * Fix tests * Don't set initial values in non-optimistic mode For fan mode, current operation and swing mode * Fix tests again
This commit is contained in:
parent
83dd961fde
commit
7f896bfb40
@ -240,14 +240,21 @@ class MqttClimate(MqttAvailability, MqttDiscoveryUpdate, ClimateDevice):
|
||||
self._value_templates = value_templates
|
||||
self._qos = qos
|
||||
self._retain = retain
|
||||
# set to None in non-optimistic mode
|
||||
self._target_temperature = self._current_fan_mode = \
|
||||
self._current_operation = self._current_swing_mode = None
|
||||
if self._topic[CONF_TEMPERATURE_STATE_TOPIC] is None:
|
||||
self._target_temperature = target_temperature
|
||||
self._unit_of_measurement = hass.config.units.temperature_unit
|
||||
self._away = away
|
||||
self._hold = hold
|
||||
self._current_temperature = None
|
||||
if self._topic[CONF_FAN_MODE_STATE_TOPIC] is None:
|
||||
self._current_fan_mode = current_fan_mode
|
||||
if self._topic[CONF_MODE_STATE_TOPIC] is None:
|
||||
self._current_operation = current_operation
|
||||
self._aux = aux
|
||||
if self._topic[CONF_SWING_MODE_STATE_TOPIC] is None:
|
||||
self._current_swing_mode = current_swing_mode
|
||||
self._fan_list = fan_mode_list
|
||||
self._operation_list = mode_list
|
||||
|
@ -119,14 +119,14 @@ class TestMQTTClimate(unittest.TestCase):
|
||||
assert setup_component(self.hass, climate.DOMAIN, config)
|
||||
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("off", state.attributes.get('operation_mode'))
|
||||
self.assertEqual("off", state.state)
|
||||
self.assertEqual(None, state.attributes.get('operation_mode'))
|
||||
self.assertEqual("unknown", state.state)
|
||||
|
||||
common.set_operation_mode(self.hass, "cool", ENTITY_CLIMATE)
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("off", state.attributes.get('operation_mode'))
|
||||
self.assertEqual("off", state.state)
|
||||
self.assertEqual(None, state.attributes.get('operation_mode'))
|
||||
self.assertEqual("unknown", state.state)
|
||||
|
||||
fire_mqtt_message(self.hass, 'mode-state', 'cool')
|
||||
self.hass.block_till_done()
|
||||
@ -189,12 +189,12 @@ class TestMQTTClimate(unittest.TestCase):
|
||||
assert setup_component(self.hass, climate.DOMAIN, config)
|
||||
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("low", state.attributes.get('fan_mode'))
|
||||
self.assertEqual(None, state.attributes.get('fan_mode'))
|
||||
|
||||
common.set_fan_mode(self.hass, 'high', ENTITY_CLIMATE)
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("low", state.attributes.get('fan_mode'))
|
||||
self.assertEqual(None, state.attributes.get('fan_mode'))
|
||||
|
||||
fire_mqtt_message(self.hass, 'fan-state', 'high')
|
||||
self.hass.block_till_done()
|
||||
@ -237,12 +237,12 @@ class TestMQTTClimate(unittest.TestCase):
|
||||
assert setup_component(self.hass, climate.DOMAIN, config)
|
||||
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("off", state.attributes.get('swing_mode'))
|
||||
self.assertEqual(None, state.attributes.get('swing_mode'))
|
||||
|
||||
common.set_swing_mode(self.hass, 'on', ENTITY_CLIMATE)
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("off", state.attributes.get('swing_mode'))
|
||||
self.assertEqual(None, state.attributes.get('swing_mode'))
|
||||
|
||||
fire_mqtt_message(self.hass, 'swing-state', 'on')
|
||||
self.hass.block_till_done()
|
||||
@ -310,14 +310,14 @@ class TestMQTTClimate(unittest.TestCase):
|
||||
assert setup_component(self.hass, climate.DOMAIN, config)
|
||||
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual(21, state.attributes.get('temperature'))
|
||||
self.assertEqual(None, state.attributes.get('temperature'))
|
||||
common.set_operation_mode(self.hass, 'heat', ENTITY_CLIMATE)
|
||||
self.hass.block_till_done()
|
||||
common.set_temperature(self.hass, temperature=47,
|
||||
entity_id=ENTITY_CLIMATE)
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual(21, state.attributes.get('temperature'))
|
||||
self.assertEqual(None, state.attributes.get('temperature'))
|
||||
|
||||
fire_mqtt_message(self.hass, 'temperature-state', '1701')
|
||||
self.hass.block_till_done()
|
||||
@ -539,28 +539,28 @@ class TestMQTTClimate(unittest.TestCase):
|
||||
|
||||
# Operation Mode
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("off", state.attributes.get('operation_mode'))
|
||||
self.assertEqual(None, state.attributes.get('operation_mode'))
|
||||
fire_mqtt_message(self.hass, 'mode-state', '"cool"')
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("cool", state.attributes.get('operation_mode'))
|
||||
|
||||
# Fan Mode
|
||||
self.assertEqual("low", state.attributes.get('fan_mode'))
|
||||
self.assertEqual(None, state.attributes.get('fan_mode'))
|
||||
fire_mqtt_message(self.hass, 'fan-state', '"high"')
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual('high', state.attributes.get('fan_mode'))
|
||||
|
||||
# Swing Mode
|
||||
self.assertEqual("off", state.attributes.get('swing_mode'))
|
||||
self.assertEqual(None, state.attributes.get('swing_mode'))
|
||||
fire_mqtt_message(self.hass, 'swing-state', '"on"')
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
self.assertEqual("on", state.attributes.get('swing_mode'))
|
||||
|
||||
# Temperature - with valid value
|
||||
self.assertEqual(21, state.attributes.get('temperature'))
|
||||
self.assertEqual(None, state.attributes.get('temperature'))
|
||||
fire_mqtt_message(self.hass, 'temperature-state', '"1031"')
|
||||
self.hass.block_till_done()
|
||||
state = self.hass.states.get(ENTITY_CLIMATE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user