mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Add configurable temperature step for MQTT climate component (#16201)
* Add configurable temperature step * Remove temp step from climate component
This commit is contained in:
parent
59ec469722
commit
0c0184973b
@ -75,6 +75,7 @@ CONF_SEND_IF_OFF = 'send_if_off'
|
|||||||
|
|
||||||
CONF_MIN_TEMP = 'min_temp'
|
CONF_MIN_TEMP = 'min_temp'
|
||||||
CONF_MAX_TEMP = 'max_temp'
|
CONF_MAX_TEMP = 'max_temp'
|
||||||
|
CONF_TEMP_STEP = 'temp_step'
|
||||||
|
|
||||||
SCHEMA_BASE = CLIMATE_PLATFORM_SCHEMA.extend(MQTT_BASE_PLATFORM_SCHEMA.schema)
|
SCHEMA_BASE = CLIMATE_PLATFORM_SCHEMA.extend(MQTT_BASE_PLATFORM_SCHEMA.schema)
|
||||||
PLATFORM_SCHEMA = SCHEMA_BASE.extend({
|
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_PAYLOAD_OFF, default="OFF"): cv.string,
|
||||||
|
|
||||||
vol.Optional(CONF_MIN_TEMP, default=DEFAULT_MIN_TEMP): vol.Coerce(float),
|
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)
|
}).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_PAYLOAD_NOT_AVAILABLE),
|
||||||
config.get(CONF_MIN_TEMP),
|
config.get(CONF_MIN_TEMP),
|
||||||
config.get(CONF_MAX_TEMP),
|
config.get(CONF_MAX_TEMP),
|
||||||
|
config.get(CONF_TEMP_STEP),
|
||||||
discovery_hash,
|
discovery_hash,
|
||||||
)])
|
)])
|
||||||
|
|
||||||
@ -226,7 +229,7 @@ class MqttClimate(MqttAvailability, MqttDiscoveryUpdate, ClimateDevice):
|
|||||||
current_swing_mode, current_operation, aux, send_if_off,
|
current_swing_mode, current_operation, aux, send_if_off,
|
||||||
payload_on, payload_off, availability_topic,
|
payload_on, payload_off, availability_topic,
|
||||||
payload_available, payload_not_available,
|
payload_available, payload_not_available,
|
||||||
min_temp, max_temp, discovery_hash):
|
min_temp, max_temp, temp_step, discovery_hash):
|
||||||
"""Initialize the climate device."""
|
"""Initialize the climate device."""
|
||||||
MqttAvailability.__init__(self, availability_topic, qos,
|
MqttAvailability.__init__(self, availability_topic, qos,
|
||||||
payload_available, payload_not_available)
|
payload_available, payload_not_available)
|
||||||
@ -249,7 +252,7 @@ class MqttClimate(MqttAvailability, MqttDiscoveryUpdate, ClimateDevice):
|
|||||||
self._fan_list = fan_mode_list
|
self._fan_list = fan_mode_list
|
||||||
self._operation_list = mode_list
|
self._operation_list = mode_list
|
||||||
self._swing_list = swing_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._send_if_off = send_if_off
|
||||||
self._payload_on = payload_on
|
self._payload_on = payload_on
|
||||||
self._payload_off = payload_off
|
self._payload_off = payload_off
|
||||||
|
@ -653,6 +653,19 @@ class TestMQTTClimate(unittest.TestCase):
|
|||||||
self.assertIsInstance(max_temp, float)
|
self.assertIsInstance(max_temp, float)
|
||||||
self.assertEqual(60, max_temp)
|
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):
|
async def test_discovery_removal_climate(hass, mqtt_mock, caplog):
|
||||||
"""Test removal of discovered climate."""
|
"""Test removal of discovered climate."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user