智能家居 RunCycle trait 架构

action.devices.traits.RunCycle - 此 trait 表示任何操作持续时间可查询的设备。

此类设备会在操作开始时报告其总周期数,以及设备当前正在运行的每个周期。这样一来,用户就可以发出查询,例如:

  • 我的烘干机目前处于哪个程序阶段?
  • 洗碗机还剩多少个周期?
  • 烘干机正在执行什么操作?
  • 洗车何时完成?

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

设备可以返回它们知道的信息,Google 助理 TTS 响应将根据可用数据形成最佳答案(例如,洗碗机正在运行,大约需要 20 分钟才能完成。

RunCycle 目前属于只读特征 - 它没有命令,只有要查询的状态。未来,可能会有用于重复运行周期或跳过周期的机制(对喷水器有利,对洗衣机不利)。

设备属性

无。

设备状态

具有此 trait 的实体可能会在 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
}

设备命令

无。

设备通知

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

字段 类型 说明
RunCycle

必填。

通知负载。

支持以下任一项:
0 对象

成功

priority 整数

必填。

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

status String

必填。

操作的结果。

支持的值:

SUCCESS
currentCycleRemainingTime 整数

必填。

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

1 对象

失败

priority 整数

必填。

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

status String

必填。

操作的结果。

支持的值:

FAILURE
errorCode String

必填。

此值可以是此 trait 的任何错误代码,例如 deviceStuck

示例

设备已停止运行。

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

完成当前周期时出错。

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

设备错误

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