ThermostatTemperatureSetpoint 架构
sdm.devices.traits.ThermostatTemperatureSetpoint
此特征属于支持设置目标温度和温度范围的温控器设备类型。
字段
| 字段 | 说明 | 数据类型 | 
|---|---|---|
| heatCelsius | 温控器供暖和适温模式下的目标温度(以摄氏度为单位)。 | number示例:20.0 | 
| coolCelsius | 温控器制冷和适温模式下的目标温度(以摄氏度为单位)。 | number示例:22.0 | 
GET 请求和响应示例 - HEAT
请求
GET /enterprises/project-id/devices/device-id
响应
{
  "name" : "enterprises/project-id/devices/device-id",
  "traits" : {
    "sdm.devices.traits.ThermostatTemperatureSetpoint" : {
      "heatCelsius" : 20.0,
    }
  }
}GET 请求和响应示例 - COOL
请求
GET /enterprises/project-id/devices/device-id
响应
{
  "name" : "enterprises/project-id/devices/device-id",
  "traits" : {
    "sdm.devices.traits.ThermostatTemperatureSetpoint" : {
      "coolCelsius" : 22.0
    }
  }
}GET 请求和响应示例 - HEATCOOL
请求
GET /enterprises/project-id/devices/device-id
响应
{
  "name" : "enterprises/project-id/devices/device-id",
  "traits" : {
    "sdm.devices.traits.ThermostatTemperatureSetpoint" : {
      "heatCelsius" : 20.0,
      "coolCelsius" : 22.0
    }
  }
}命令
在更改温度设定值之前,恒温器必须处于与所调用的命令对应的模式。用于更改设定值的命令和字段因温控器模式而异。
例如,如需发出 SetHeat 命令,恒温器必须先处于 HEAT 模式: SetHeat 命令,恒温器必须先处于 HEAT 模式:
| 模式 | 命令 | 字段 | 
|---|---|---|
| HEAT | SetHeat | heatCelsius | 
| COOL | SetCool | coolCelsius | 
| HEATCOOL | SetRange | heatCelsius、coolCelsius | 
请注意,设定点命令仅接受摄氏度作为参数,但 Google Nest 温控器可以以摄氏度或华氏度显示温度。
SetHeat
设置温控器处于供暖模式时的目标温度。
SetHeat 请求和响应
请求
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
  "params" : {
    "heatCelsius" : 22.0
  }
}
响应
{}
SetHeat 请求字段
| 字段 | 说明 | 数据类型 | 
|---|---|---|
| heatCelsius | 温控器处于供暖模式时要设置的目标温度。 | number示例:22.0 | 
SetCool
设置温控器处于制冷模式时的目标温度。
SetCool 请求和响应
请求
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetCool",
  "params" : {
    "coolCelsius" : 20.0
  }
}
响应
{}
SetCool 请求字段
| 字段 | 说明 | 数据类型 | 
|---|---|---|
| coolCelsius | 温控器处于制冷模式时要设置的目标温度。 | number示例:20.0 | 
SetRange
设置恒温器处于 HEATCOOL 模式时的最低温度和最高温度。
SetRange 请求和响应
请求
POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetRange",
  "params" : {
    "heatCelsius" : 20.0,
    "coolCelsius" : 22.0
  }
}
响应
{}
SetRange 请求字段
| 字段 | 说明 | 数据类型 | 
|---|---|---|
| heatCelsius | 当恒温器处于 HEATCOOL 模式时,可设置的最低目标温度。 | number示例:20.0 | 
| coolCelsius | 当恒温器处于 HEATCOOL 模式时,可设置的最大目标温度。 | number示例:22.0 | 
错误
可能会返回与此特征相关的以下错误代码:
| 错误消息 | RPC | 问题排查 | 
|---|---|---|
| 当前温控器模式不允许使用该命令。 | FAILED_PRECONDITION | 根据 ThermostatMode 特征,某些温控器型号在温控器模式为 OFF 时不支持更改节能模式。在更改节能模式之前,必须将温控器模式更改为 HEAT、COOL 或 HEATCOOL。 | 
| 冷却值必须大于加热值。 | INVALID_ARGUMENT | 确保您命令中的 heatCelsius字段小于coolCelsius字段。 | 
| 当温控器处于 MANUAL_ECO 模式时,不允许使用此命令。 | FAILED_PRECONDITION | 当温控器处于手动节能模式时,无法设置温度设定值。 | 
如需查看完整的 API 错误代码列表,请参阅 API 错误代码参考文档。
