调用sdm.devices.commands.ThermostatTemperatureSetpoint.SetCool返回500内部错误
Google/Nest SDM温控器调温500错误排查方案
- 参数数据类型校验
你当前传入的coolCelsius参数值为字符串类型"22.0",SDM API要求该字段为数值类型,去掉双引号即可,正确参数示例:
{ "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetCool", "params" : { "coolCelsius" : 22.0 } }
同理制热模式调用SetHeat命令时,heatCelsius参数也要传数值类型,不要加引号。
- 命令与当前模式匹配校验
调用温度设定命令前,先确认温控器当前运行模式和命令匹配:- 调用
SetCool命令时,温控器需处于COOL或HEAT_COOL模式 - 调用
SetHeat命令时,温控器需处于HEAT或HEAT_COOL模式 - 若温控器当前处于ECO模式,需先退出ECO模式再调整设定温度
- 调用
- 温度取值范围校验
确认你传入的温度值在设备支持的范围内:常规Nest温控器制冷设定温度范围为10℃32℃,制热设定温度范围为9℃32℃,超出该范围会触发接口报错。 - 授权权限校验
检查OAuth授权过程中是否勾选了温控器温度设定相关的读写权限,可重新走完整授权流程获取新的Access Token后重试请求。 - 设备特性支持校验
调用设备详情查询接口,确认返回的设备属性中存在sdm.devices.traits.ThermostatTemperatureSetpoint特性,若该特性未上报,说明设备暂不支持远程修改温度设定。 - 请求路径校验
确认请求端点为对应设备的命令执行路径,路径中填写的项目ID、设备ID需和你从设备列表接口获取到的信息完全一致。
内容的提问来源于stack exchange,提问作者Luis Diaz
相关产品推荐
相关产品推荐

