智能家居 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 |
必填。 操作的结果。 支持的值:
|
currentCycleRemainingTime |
整数 |
必填。 当前周期剩余时间(以秒为单位)。 |
1
|
对象 |
失败 |
priority |
整数 |
必填。 表示通知级别。目前支持的值为 0,表示应大声朗读通知。 |
status |
String |
必填。 操作的结果。 支持的值:
|
errorCode |
String |
必填。 此值可以是此 trait 的任何错误代码,例如 |
示例
设备已停止运行。
{ "RunCycle": { "priority": 0, "status": "SUCCESS", "currentCycleRemainingTime": 0 } }
完成当前周期时出错。
{ "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceStuck" } }