ThermostatTemperatureSetpoint 架构

Nest Thermostat 

sdm.devices.traits.ThermostatTemperatureSetpoint

此特征属于支持设置目标温度和温度范围的 THERMOSTAT 的设备类型。

字段

字段 说明 数据类型
heatCelsius 温控器 HEAT 和 HEATCOOL 模式的目标温度(以摄氏度为单位)。 number
示例:20.0
coolCelsius 温控器 COOL 和 HEATCOOL 模式的目标温度(以摄氏度为单位)。 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 heatCelsius
SetCool coolCelsius
制热 SetRange heatCelsiuscoolCelsius

请注意,虽然设置点命令的 Google Nest Thermostat 能以摄氏度或华氏度为单位来显示温度。

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

错误

系统可能会返回与此 trait 相关的以下错误代码:

错误消息 RPC 问题排查
不允许在当前温控器模式下执行该命令。 FAILED_PRECONDITION 根据 ThermostatMode 特征,某些温控器型号不支持在温控器关闭时更改节能模式。更改节能模式之前,必须先将温控器模式更改为制热、制冷或制热。
制冷值必须大于热值。 INVALID_ARGUMENT 确保 heatCelsius 字段小于命令中的 coolCelsius 字段。
当温控器处于 MANUAL_ECO 模式时,不允许使用该命令。 FAILED_PRECONDITION 当温控器处于手动节能模式时,无法设置温度设定值。

请参阅 API 错误代码参考,了解 API 错误代码的完整列表。