场景
在通用物联网 (IoT) 以及 ESP RainMaker 的语境中,一个**“场景 (scene)”**指的是一组被设置为特定值的参数集合,其中一个或多个设备可能分布在多个节点上。
注意,场景是一个静态实体,需要通过手机应用、语音助手或预定义的时间表进行激活。
与 ESP RainMaker 的其他功能一致,场景完全在节点端以“服务”的形式实现。云后端仅充当节点与客户端(如手机应用)之间的网关。
场景功能已通过 C 语言 API 进行了封装。另外,手机应用也对其进行了抽象处理。
使用场景
ESP RainMaker 的场景功能允许用户使用单个命令同时控制多个设备,为智能家居及工业场景提供高效便捷的解决方案。用户可自定义“观影模式”、“工作模式”等个性化场景,并通过 Alexa 或谷歌语音助手语音触发,实现设备状态自动切换,无需手动操作。
例如,在“傍晚”场景下打开温暖色调的灯光,在“夜间”场景下调暗床头灯并启动风扇或空调。场景的设置优化了电力能耗,是一种实用且具有成本效益的 IoT 解决方案。
参数详情
场景服务通过一个对象数组参数实现,在节点配置中显示如下:
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:要执行的操作。可能的值为
add、remove、edit、activate和deactivate。 - 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 和谷歌语音助手中。