跳到主要内容

场景

概述

在通用物联网 (IoT) 以及 ESP RainMaker 的语境中,一个**“场景 (scene)”**指的是一组被设置为特定值的参数集合,其中一个或多个设备可能分布在多个节点上。

注意,场景是一个静态实体,需要通过手机应用、语音助手或预定义的时间表进行激活。

与 ESP RainMaker 的其他功能一致,场景完全在节点端以“服务”的形式实现。云后端仅充当节点与客户端(如手机应用)之间的网关。

场景功能已通过 C 语言 API 进行了封装。另外,手机应用也对其进行了抽象处理。


使用场景

ESP RainMaker 的场景功能允许用户使用单个命令同时控制多个设备,为智能家居及工业场景提供高效便捷的解决方案。用户可自定义“观影模式”、“工作模式”等个性化场景,并通过 Alexa 或谷歌语音助手语音触发,实现设备状态自动切换,无需手动操作。

例如,在“傍晚”场景下打开温暖色调的灯光,在“夜间”场景下调暗床头灯并启动风扇或空调。场景的设置优化了电力能耗,是一种实用且具有成本效益的 IoT 解决方案。

您需了解

如果您已经熟悉 ESP RainMaker 中的场景,请继续查看使用指南。

了解上述内容后,请继续阅读。


参数详情

场景服务通过一个对象数组参数实现,在节点配置中显示如下:

JSON 负载(点击展开/折叠)
"services": [{
"name": "Scenes",
"params": [{
"bounds": {
"max": 10
},
"data_type": "array",
"name": "Scenes",
"properties": [
"read",
"write"
],
"type": "esp.param.scenes"
}],
"type": "esp.service.scenes",
"attributes": [{
"name": "deactivation_support",
"value": "no"
}]
}]
  • 场景参数默认是一个空数组
  • max 表示一个节点可以设置的场景数量上限。
  • 场景的“停用”功能默认关闭,但可以通过以下配置项启用:
    CONFIG_ESP_RMAKER_SCENES_DEACTIVATE_SUPPORT

添加新场景

通过在 setparam 中传递如下值来添加新场景:该数据通常由客户端发送到云端,或直接通过本地控制发送到节点。

JSON 负载(点击展开/折叠)
{
"Scenes": {
"Scenes": [{
"name": "Evening",
"id": "8D36",
"info": "My Test Scene",
"operation": "add",
"action": {
"Light": {
"Power": true
}
}
}]
}
}
  • name: 用户自定义的场景名称。
  • id: 场景的唯一 ID(此 ID 仅需在给定用户中唯一,而非全局唯一)。此 ID 由客户端在添加场景时生成,用于后续操作。建议使用较短的 ID。
  • info(字符串,可选):其他附加信息或描述。
  • flags(可选):通用标志,可根据用户的要求使用。
  • operation:要执行的操作。可能的值为 addremoveeditactivatedeactivate
  • action:当场景被激活时要执行的实际操作。该对象的值将与设置参数时传递的值相同。例如,要打开灯,将为 "Light": {"power": true}

一旦场景成功添加,获取参数时会返回一个类似以下 JSON 的值。

  • 这是从节点发送到云端或手机应用的确认响应。
JSON 负载(点击展开/折叠)
{
"Scenes": {
"Scenes": [{
"name": "Evening",
"id": "8D36",
"info": "My Test Scene",
"action": {
"Light": {
"Power": true
}
}
}]
}
}
注意

在添加或更新场景时,场景数组中只需发送单个条目。但在查询时,节点会返回数组中所有场景的信息


其他操作

编辑

  • 用于编辑场景所传递的值类似于添加新场景时传递的值。

  • 指定的 ID 应与现有场景匹配,同时,operation 的值应为 edit

  • 可以发送整个对象或仅发送已更改的元素(名称或操作)。但是,这些键中的对象必需完整。

    示例
    • 如果当前操作是 "action":{"Light": {"Power": true, "Brightness":90}}
    • 现在需要将亮度更改为 100;
    • 应该传递:
      "action":{"Light": {"Power": true, "Brightness":100}},而不是:
      "action":{"Light": {"Brightness":100}}

删除

  • 要删除现有场景,只需传递其 ID 和 "operation": "remove"
    请参见下面的示例。
JSON 负载(点击展开/折叠)
{
"Scenes": {
"Scenes": [{
"id": "8D36",
"operation": "remove"
}]
}
}

激活

  • 要激活场景,只需传递其 ID 和 "operation": "activate"
    请参见下面的示例。
JSON 负载 (切换视图)
{
"Scenes": {
"Scenes": [{
"id": "8D36",
"operation": "activate"
}]
}
}

停用

  • 停用是激活的相反操作。停用场景时,只需传递 "operation": "deactivate"
    请参见下面的示例。
JSON 负载 (切换视图)
{
"Scenes": {
"Scenes": [{
"id": "8D36",
"operation": "activate"
}]
}
}
注意

注意,固件默认不支持停用。更多信息请参见使用指南


使用指南

固件

此章节主要介绍场景的固件设置和配置。
有关固件中场景的使用,请参考场景使用指南


手机应用

手机应用提供了非常简单的用户界面,用于各种场景操作。更新手机应用后在固件中启用场景功能,即可开始使用。

跨节点场景
对于跨多个节点的场景,客户端会为这些节点分配一个共同的场景 ID,以便统一查询,并将它们作为统一场景进行分组。
点击场景手机应用查看更多信息和示例。


语音助手集成

尽管 ESP RainMaker 后端通常只作为设备与客户端之间的数据通道,但它在场景功能的处理上有所不同:后端会解析场景信息,转换成相应的格式报告给 Alexa 和谷歌语音助手。因此,只要启用 RainMaker Alexa Skill 或 Google Actions,在 RainMaker 中创建的任何场景都会被导出到 Alexa 和谷歌语音助手中。

On this page