diff --git a/homeassistant/components/climate/mqtt.py b/homeassistant/components/climate/mqtt.py index 79c49db7955..ff9b78135fd 100644 --- a/homeassistant/components/climate/mqtt.py +++ b/homeassistant/components/climate/mqtt.py @@ -75,6 +75,7 @@ CONF_SEND_IF_OFF = 'send_if_off' CONF_MIN_TEMP = 'min_temp' CONF_MAX_TEMP = 'max_temp' +CONF_TEMP_STEP = 'temp_step' SCHEMA_BASE = CLIMATE_PLATFORM_SCHEMA.extend(MQTT_BASE_PLATFORM_SCHEMA.schema) PLATFORM_SCHEMA = SCHEMA_BASE.extend({ @@ -124,7 +125,8 @@ PLATFORM_SCHEMA = SCHEMA_BASE.extend({ vol.Optional(CONF_PAYLOAD_OFF, default="OFF"): cv.string, vol.Optional(CONF_MIN_TEMP, default=DEFAULT_MIN_TEMP): vol.Coerce(float), - vol.Optional(CONF_MAX_TEMP, default=DEFAULT_MAX_TEMP): vol.Coerce(float) + vol.Optional(CONF_MAX_TEMP, default=DEFAULT_MAX_TEMP): vol.Coerce(float), + vol.Optional(CONF_TEMP_STEP, default=1.0): vol.Coerce(float) }).extend(mqtt.MQTT_AVAILABILITY_SCHEMA.schema) @@ -213,6 +215,7 @@ async def _async_setup_entity(hass, config, async_add_entities, config.get(CONF_PAYLOAD_NOT_AVAILABLE), config.get(CONF_MIN_TEMP), config.get(CONF_MAX_TEMP), + config.get(CONF_TEMP_STEP), discovery_hash, )]) @@ -226,7 +229,7 @@ class MqttClimate(MqttAvailability, MqttDiscoveryUpdate, ClimateDevice): current_swing_mode, current_operation, aux, send_if_off, payload_on, payload_off, availability_topic, payload_available, payload_not_available, - min_temp, max_temp, discovery_hash): + min_temp, max_temp, temp_step, discovery_hash): """Initialize the climate device.""" MqttAvailability.__init__(self, availability_topic, qos, payload_available, payload_not_available) @@ -249,7 +252,7 @@ class MqttClimate(MqttAvailability, MqttDiscoveryUpdate, ClimateDevice): self._fan_list = fan_mode_list self._operation_list = mode_list self._swing_list = swing_mode_list - self._target_temperature_step = 1 + self._target_temperature_step = temp_step self._send_if_off = send_if_off self._payload_on = payload_on self._payload_off = payload_off diff --git a/tests/components/climate/test_mqtt.py b/tests/components/climate/test_mqtt.py index c63dbf26690..f330efd99b8 100644 --- a/tests/components/climate/test_mqtt.py +++ b/tests/components/climate/test_mqtt.py @@ -653,6 +653,19 @@ class TestMQTTClimate(unittest.TestCase): self.assertIsInstance(max_temp, float) self.assertEqual(60, max_temp) + def test_temp_step_custom(self): + """Test a custom temp step.""" + config = copy.deepcopy(DEFAULT_CONFIG) + config['climate']['temp_step'] = 0.01 + + assert setup_component(self.hass, climate.DOMAIN, config) + + state = self.hass.states.get(ENTITY_CLIMATE) + temp_step = state.attributes.get('target_temp_step') + + self.assertIsInstance(temp_step, float) + self.assertEqual(0.01, temp_step) + async def test_discovery_removal_climate(hass, mqtt_mock, caplog): """Test removal of discovered climate."""