Support STATE_AUTO in homekit_controller climate (#23583)
parent
75abfd49ef
commit
0fe21f2015
|
@ -3,7 +3,7 @@ import logging
|
||||||
|
|
||||||
from homeassistant.components.climate import ClimateDevice
|
from homeassistant.components.climate import ClimateDevice
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
STATE_COOL, STATE_HEAT, STATE_IDLE, SUPPORT_OPERATION_MODE,
|
STATE_AUTO, STATE_COOL, STATE_HEAT, STATE_IDLE, SUPPORT_OPERATION_MODE,
|
||||||
SUPPORT_TARGET_TEMPERATURE, SUPPORT_TARGET_HUMIDITY,
|
SUPPORT_TARGET_TEMPERATURE, SUPPORT_TARGET_HUMIDITY,
|
||||||
SUPPORT_TARGET_HUMIDITY_HIGH, SUPPORT_TARGET_HUMIDITY_LOW)
|
SUPPORT_TARGET_HUMIDITY_HIGH, SUPPORT_TARGET_HUMIDITY_LOW)
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, STATE_OFF, TEMP_CELSIUS
|
from homeassistant.const import ATTR_TEMPERATURE, STATE_OFF, TEMP_CELSIUS
|
||||||
|
@ -17,6 +17,7 @@ MODE_HOMEKIT_TO_HASS = {
|
||||||
0: STATE_OFF,
|
0: STATE_OFF,
|
||||||
1: STATE_HEAT,
|
1: STATE_HEAT,
|
||||||
2: STATE_COOL,
|
2: STATE_COOL,
|
||||||
|
3: STATE_AUTO,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Map of hass operation modes to homekit modes
|
# Map of hass operation modes to homekit modes
|
||||||
|
|
|
@ -128,7 +128,15 @@ class FakeCharacteristic(AbstractCharacteristic):
|
||||||
needed even though it doesn't add any methods.
|
needed even though it doesn't add any methods.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
pass
|
def to_accessory_and_service_list(self):
|
||||||
|
"""Serialize the characteristic."""
|
||||||
|
# Upstream doesn't correctly serialize valid_values
|
||||||
|
# This fix will be upstreamed and this function removed when it
|
||||||
|
# is fixed.
|
||||||
|
record = super().to_accessory_and_service_list()
|
||||||
|
if self.valid_values:
|
||||||
|
record['valid-values'] = self.valid_values
|
||||||
|
return record
|
||||||
|
|
||||||
|
|
||||||
class FakeService(AbstractService):
|
class FakeService(AbstractService):
|
||||||
|
|
|
@ -37,6 +37,13 @@ async def test_ecobee3_setup(hass):
|
||||||
SUPPORT_OPERATION_MODE
|
SUPPORT_OPERATION_MODE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
assert climate_state.attributes['operation_list'] == [
|
||||||
|
'off',
|
||||||
|
'heat',
|
||||||
|
'cool',
|
||||||
|
'auto',
|
||||||
|
]
|
||||||
|
|
||||||
assert climate_state.attributes['min_temp'] == 7.2
|
assert climate_state.attributes['min_temp'] == 7.2
|
||||||
assert climate_state.attributes['max_temp'] == 33.3
|
assert climate_state.attributes['max_temp'] == 33.3
|
||||||
assert climate_state.attributes['min_humidity'] == 20
|
assert climate_state.attributes['min_humidity'] == 20
|
||||||
|
|
|
@ -58,7 +58,7 @@ async def test_climate_respect_supported_op_modes_2(hass, utcnow):
|
||||||
service = FakeService('public.hap.service.thermostat')
|
service = FakeService('public.hap.service.thermostat')
|
||||||
char = service.add_characteristic('heating-cooling.target')
|
char = service.add_characteristic('heating-cooling.target')
|
||||||
char.value = 0
|
char.value = 0
|
||||||
char.validValues = [0, 1, 2]
|
char.valid_values = [0, 1, 2]
|
||||||
|
|
||||||
helper = await setup_test_component(hass, [service])
|
helper = await setup_test_component(hass, [service])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue