跳到主要内容

本地控制服务

概述

ESP RainMaker 提供本地控制设备的功能,具体可参考使用指南

早期版本中,本地网络通信采用明文 HTTP 实现。现已通过集成 ESP-IDF 的 protocomm_security1 安全模块进行升级。该模块支持基于 PoP(Proof of Possession,所有权证明)的访问控制和加密通信。


使用场景

虽然 ESP RainMaker 主要为实现 ESP 设备的远程连接而设计,但当手机和设备接入同一 Wi-Fi 网络时,本地控制具有三大优势:响应速度更快通信可靠性更高无需云端中转,节省网络成本


技术详情

启用安全等级 1 的本地控制后,节点配置中将新增以下服务

JSON 载荷(点击展开/收起)
{
"name": "Local Control",
"params": [{
"data_type": "string",
"name": "POP",
"properties": [
"read"
],
"type": "esp.param.local_control_pop"
},
{
"data_type": "int",
"name": "Type",
"properties": [
"read"
],
"type": "esp.param.local_control_type"
}
],
"type": "esp.service.local_control"
}

PoP 和控制类型的值可以在节点参数中获取,具体如下:

JSON 载荷 (点击展开/收起)
{
"Local Control": {
"POP": "a8d8e5ce",
"Type": 1
}
}

本地控制服务的工作流程

  1. 当节点与用户关联后,手机应用等客户端可以通过在节点配置中查找该本地控制服务,确认该节点是否支持安全的本地控制功能。

  2. 如果服务可用,客户端就会从节点参数中获取 PoP。

  3. 当客户端通过 mDNS 在本地网络发现节点时,系统会使用 PoP 与节点建立安全会话,然后通过 ESP-IDF 的本地控制功能与该设备通信。

问题:此 PoP 是否与设备配网时使用的 PoP 相同?

不同。
此处用于本地控制的 PoP 由节点自身生成。原因如下:设备配网时的 PoP 在生产阶段烧录,且在节点的整个生命周期内保持不变,仅在设备初始化过程中使用,从而最大程度地降低代码泄露风险。若本地控制仍然使用此 PoP 且发生泄露,那么即便重置节点并重新配网,同一网络中的任意设备仍可访问该节点。虽然同一 Wi-Fi 网络下的客户端通常是可信的,但该情况仍存在安全隐患。

问题:随机生成 PoP 并通过节点参数上报有什么优势?
  1. 由于 PoP 是生成后存储在 NVS 中的,可以通过恢复出厂设置进行更改。如有需要,可支持扩展功能,允许用户定期更换 PoP。
  2. 所有共享该节点的用户均可获取此 PoP。

鉴于本地控制不仅响应迅捷且已具备安全保障,建议在项目中默认启用该功能。需要注意,安全本地控制目前仅支持 ESP-IDF release/v4.2(release v4.2.2 之后的版本)、release/v4.3(release v4.3.2 及后续版本)以及所有更新的发布版本


使用指南

固件

本地控制服务仅需在固件侧进行启用。有关启用方法,请参考使用本地控制

On this page