智能家居 RunCycle 特征架构

action.devices.traits.RunCycle - 此特征表示操作具有持续时长且可被查询的设备。

此类设备将在操作开始时报告其总周期数,以及设备当前在运行的每个周期。这让用户能够进行如下所示的查询:

  • 我的烘干机目前处于哪个程序阶段?
  • 洗碗机还剩多少个程序环节?
  • 烘干机在做什么?
  • 何时进行清洗?

某些设备以非周期性格式包含时长。运行特定时长的任何设备都可以报告其剩余时间,而无需考虑周期。这还可以处理周期可能不一致的情况(例如,洗碗机不一定总是使用所有周期)。例如,用户可以问“我的吸尘器运行多久?”,这会按照剩余时间的比例返回时间。这同样适用于上面列出的设备;我的衣服烘干多长时间?将返回时长(以分钟为单位)。

设备可以返回他们知道的信息,而 Google 助理 TTS 响应将使用可用数据形成最佳答案(例如,洗碗机正在运行,并将在大约 20 分钟后完成运行)。

RunCycle 目前是只读特征 - 它没有命令,只有要查询的状态。将来,我们可能会有重新运行周期或跳过周期的机制(对洒水器好,而对洗衣机不好)。

设备属性

无。

设备状态

具有此特征的实体可能会在 QUERY 操作过程中报告以下状态。如需详细了解如何处理 QUERY intent,请参阅 intent 执行方式

类型 说明
currentRunCycle 数组

必填。

包含当前周期以各受支持的语言表示的同义词。

[item, ...] 对象

循环同义词名称。

currentCycle String

必填。

正在执行的当前周期。

nextCycle String

可选。要执行的下一个周期。

lang String

必填。

给定周期名称的语言代码。请参阅支持的语言

currentTotalRemainingTime 整数

必填。

剩余的操作时间(以秒为单位)。

currentCycleRemainingTime 整数

必填。

当前周期的剩余时间(以秒为单位)。

示例

设备会再冲洗 5 分钟,并会在 20 分钟后完成洗手。

{
  "currentRunCycle": [
    {
      "currentCycle": "rinse",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

设备会再经过冲洗 5 分钟,然后才会转动。

{
  "currentRunCycle": [
    {
      "currentCycle": "rinse",
      "nextCycle": "spin",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 600,
  "currentCycleRemainingTime": 300
}

设备命令

无。

设备通知

具有此特征的设备可能会在设备状态发生变化时返回以下通知载荷。如需详细了解如何实现通知,请参阅智能家居 Action 的通知

字段 类型 说明
RunCycle

必填。

通知负载。

支持下列其中一项
0 对象

成功

priority 整数

必填。

表示通知级别。目前支持的值为 0,表示应大声读出通知。

status String

必填。

操作的结果。

支持的值:

SUCCESS
currentCycleRemainingTime 整数

必填。

当前周期的剩余时间(以秒为单位)。

1 对象

失败

priority 整数

必填。

表示通知级别。目前支持的值为 0,表示应大声读出通知。

status String

必填。

操作的结果。

支持的值:

FAILURE
errorCode String

必填。

该值可以是此特征的任意错误代码,例如 deviceStuck

示例

设备已完成运行。

{
  "RunCycle": {
    "priority": 0,
    "status": "SUCCESS",
    "currentCycleRemainingTime": 0
  }
}

完成当前周期时出错。

{
  "RunCycle": {
    "priority": 0,
    "status": "FAILURE",
    "errorCode": "deviceStuck"
  }
}

设备出错

查看错误和异常的完整列表。