mirror of
https://github.com/home-assistant/core.git
synced 2025-07-13 08:17:08 +00:00
Alexa thermostat fails to properly parse 'value' field for climate (#13958)
* Fix thermostat payload issue * fix test payload * style issue * handle both string and value object
This commit is contained in:
parent
c5cb28d41f
commit
0eb3e49880
@ -1471,6 +1471,7 @@ async def async_api_adjust_target_temp(hass, config, request, entity):
|
|||||||
async def async_api_set_thermostat_mode(hass, config, request, entity):
|
async def async_api_set_thermostat_mode(hass, config, request, entity):
|
||||||
"""Process a set thermostat mode request."""
|
"""Process a set thermostat mode request."""
|
||||||
mode = request[API_PAYLOAD]['thermostatMode']
|
mode = request[API_PAYLOAD]['thermostatMode']
|
||||||
|
mode = mode if isinstance(mode, str) else mode['value']
|
||||||
|
|
||||||
operation_list = entity.attributes.get(climate.ATTR_OPERATION_LIST)
|
operation_list = entity.attributes.get(climate.ATTR_OPERATION_LIST)
|
||||||
# Work around a pylint false positive due to
|
# Work around a pylint false positive due to
|
||||||
|
@ -807,15 +807,23 @@ async def test_thermostat(hass):
|
|||||||
'Alexa.ThermostatController', 'SetThermostatMode',
|
'Alexa.ThermostatController', 'SetThermostatMode',
|
||||||
'climate#test_thermostat', 'climate.set_operation_mode',
|
'climate#test_thermostat', 'climate.set_operation_mode',
|
||||||
hass,
|
hass,
|
||||||
payload={'thermostatMode': 'HEAT'}
|
payload={'thermostatMode': {'value': 'HEAT'}}
|
||||||
)
|
)
|
||||||
assert call.data['operation_mode'] == 'heat'
|
assert call.data['operation_mode'] == 'heat'
|
||||||
|
|
||||||
|
call, _ = await assert_request_calls_service(
|
||||||
|
'Alexa.ThermostatController', 'SetThermostatMode',
|
||||||
|
'climate#test_thermostat', 'climate.set_operation_mode',
|
||||||
|
hass,
|
||||||
|
payload={'thermostatMode': 'HEAT'}
|
||||||
|
)
|
||||||
|
|
||||||
|
assert call.data['operation_mode'] == 'heat'
|
||||||
msg = await assert_request_fails(
|
msg = await assert_request_fails(
|
||||||
'Alexa.ThermostatController', 'SetThermostatMode',
|
'Alexa.ThermostatController', 'SetThermostatMode',
|
||||||
'climate#test_thermostat', 'climate.set_operation_mode',
|
'climate#test_thermostat', 'climate.set_operation_mode',
|
||||||
hass,
|
hass,
|
||||||
payload={'thermostatMode': 'INVALID'}
|
payload={'thermostatMode': {'value': 'INVALID'}}
|
||||||
)
|
)
|
||||||
assert msg['event']['payload']['type'] == 'UNSUPPORTED_THERMOSTAT_MODE'
|
assert msg['event']['payload']['type'] == 'UNSUPPORTED_THERMOSTAT_MODE'
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user