mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Use climate device's target temp step value (#24804)
This commit is contained in:
parent
e43a733017
commit
69089da88e
@ -6,7 +6,8 @@ from pyhap.const import CATEGORY_THERMOSTAT
|
||||
from homeassistant.components.climate.const import (
|
||||
ATTR_CURRENT_TEMPERATURE, ATTR_MAX_TEMP, ATTR_MIN_TEMP,
|
||||
ATTR_OPERATION_LIST, ATTR_OPERATION_MODE, ATTR_TARGET_TEMP_HIGH,
|
||||
ATTR_TARGET_TEMP_LOW, DEFAULT_MAX_TEMP, DEFAULT_MIN_TEMP,
|
||||
ATTR_TARGET_TEMP_LOW, ATTR_TARGET_TEMP_STEP,
|
||||
DEFAULT_MAX_TEMP, DEFAULT_MIN_TEMP,
|
||||
DOMAIN as DOMAIN_CLIMATE,
|
||||
SERVICE_SET_OPERATION_MODE as SERVICE_SET_OPERATION_MODE_THERMOSTAT,
|
||||
SERVICE_SET_TEMPERATURE as SERVICE_SET_TEMPERATURE_THERMOSTAT, STATE_AUTO,
|
||||
@ -57,6 +58,8 @@ class Thermostat(HomeAccessory):
|
||||
self._flag_heatingthresh = False
|
||||
self.support_power_state = False
|
||||
min_temp, max_temp = self.get_temperature_range()
|
||||
temp_step = self.hass.states.get(self.entity_id) \
|
||||
.attributes.get(ATTR_TARGET_TEMP_STEP, 0.5)
|
||||
|
||||
# Add additional characteristics if auto mode is supported
|
||||
self.chars = []
|
||||
@ -84,7 +87,7 @@ class Thermostat(HomeAccessory):
|
||||
CHAR_TARGET_TEMPERATURE, value=21.0,
|
||||
properties={PROP_MIN_VALUE: min_temp,
|
||||
PROP_MAX_VALUE: max_temp,
|
||||
PROP_MIN_STEP: 0.5},
|
||||
PROP_MIN_STEP: temp_step},
|
||||
setter_callback=self.set_target_temperature)
|
||||
|
||||
# Display units characteristic
|
||||
@ -99,14 +102,14 @@ class Thermostat(HomeAccessory):
|
||||
CHAR_COOLING_THRESHOLD_TEMPERATURE, value=23.0,
|
||||
properties={PROP_MIN_VALUE: min_temp,
|
||||
PROP_MAX_VALUE: max_temp,
|
||||
PROP_MIN_STEP: 0.5},
|
||||
PROP_MIN_STEP: temp_step},
|
||||
setter_callback=self.set_cooling_threshold)
|
||||
if CHAR_HEATING_THRESHOLD_TEMPERATURE in self.chars:
|
||||
self.char_heating_thresh_temp = serv_thermostat.configure_char(
|
||||
CHAR_HEATING_THRESHOLD_TEMPERATURE, value=19.0,
|
||||
properties={PROP_MIN_VALUE: min_temp,
|
||||
PROP_MAX_VALUE: max_temp,
|
||||
PROP_MIN_STEP: 0.5},
|
||||
PROP_MIN_STEP: temp_step},
|
||||
setter_callback=self.set_heating_threshold)
|
||||
|
||||
def get_temperature_range(self):
|
||||
|
@ -6,9 +6,10 @@ import pytest
|
||||
|
||||
from homeassistant.components.climate.const import (
|
||||
ATTR_CURRENT_TEMPERATURE, ATTR_MAX_TEMP, ATTR_MIN_TEMP,
|
||||
ATTR_TARGET_TEMP_LOW, ATTR_TARGET_TEMP_HIGH, ATTR_OPERATION_MODE,
|
||||
ATTR_OPERATION_LIST, DEFAULT_MAX_TEMP, DEFAULT_MIN_TEMP,
|
||||
DOMAIN as DOMAIN_CLIMATE, STATE_AUTO, STATE_COOL, STATE_HEAT)
|
||||
ATTR_TARGET_TEMP_LOW, ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_STEP,
|
||||
ATTR_OPERATION_MODE, ATTR_OPERATION_LIST, DEFAULT_MAX_TEMP,
|
||||
DEFAULT_MIN_TEMP, DOMAIN as DOMAIN_CLIMATE, STATE_AUTO, STATE_COOL,
|
||||
STATE_HEAT)
|
||||
from homeassistant.components.homekit.const import (
|
||||
ATTR_VALUE, DEFAULT_MAX_TEMP_WATER_HEATER, DEFAULT_MIN_TEMP_WATER_HEATER,
|
||||
PROP_MAX_VALUE, PROP_MIN_STEP, PROP_MIN_VALUE)
|
||||
@ -407,6 +408,19 @@ async def test_thermostat_get_temperature_range(hass, hk_driver, cls):
|
||||
assert acc.get_temperature_range() == (15.5, 21.0)
|
||||
|
||||
|
||||
async def test_thermostat_temperature_step_whole(hass, hk_driver, cls):
|
||||
"""Test climate device with single digit precision."""
|
||||
entity_id = 'climate.test'
|
||||
|
||||
hass.states.async_set(entity_id, STATE_OFF, {ATTR_TARGET_TEMP_STEP: 1})
|
||||
await hass.async_block_till_done()
|
||||
acc = cls.thermostat(hass, hk_driver, 'Climate', entity_id, 2, None)
|
||||
await hass.async_add_job(acc.run)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert acc.char_target_temp.properties[PROP_MIN_STEP] == 1.0
|
||||
|
||||
|
||||
async def test_water_heater(hass, hk_driver, cls, events):
|
||||
"""Test if accessory and HA are updated accordingly."""
|
||||
entity_id = 'water_heater.test'
|
||||
|
Loading…
x
Reference in New Issue
Block a user