修改设备配置(set-configs)

验证状态:存在关键缺口,不可作为完整契约发布。Web 发送与会话订阅、应答消费已源码核验;设备固件是最终消费者,其源码不在本工作区,字段校验、持久化与错误行为缺证。 适用基线:源码归纳 @ 2026-09-14

用途与场景

按 struct 名称向设备写入配置修改,用于设备远控各设置页的单字段或整表提交。本页是 device/{deviceNo}/iot/configs/v1sub:"set" 写命令的唯一操作正本;读取见读取设备配置。本页不承诺设备已应用配置,Web 仅以"收到应答"作为成功信号。

使用位置

页面/功能 写入 struct
远控设置·录制提交(整表与单字段) RECORD_CFG_S
远控设置·直播编码提交 SLAVEENC_CFG_S
远控设置·视频编码提交 MASTERENC_CFG_S
远控设置·声音提交(整表把同一表单对象写入 3 个 struct;单字段按 struct 写入) AUDIO_CFG_SUINOTIFY_CFG_SVOLUME_CFG_S
远控设置·时间提交(整表剔除 TimeSync TIME_CFG_S
远控设置·安全提交(单字段;密码按平台约定先作摘要变换) GUDISK_CFG_SUSER_CFG_S
远控设置·移动网络提交 MOBILENET_CFG_S
远控设置·设备用户提交(整表剔除只读 SerialNo ZFYGB_CFG_S
远控设置·抓拍提交 JPEG_CFG_S
远控设置·WiFi 开关提交 WIFIDEV_CFG_S
远控设置·WiFi 连接/自动连接 WIFICLI_CFG_SSelectIndex

对应 inventory operationId:mqtt-set-configs-v1-device-var-iot-configs-v1-* 10 项与 mqtt-module-device-var-iot-configs-v1-1e1b661c

端点

MQTT 发布 device/{deviceNo}/iot/configs/v1(Web → Broker → 设备直发,中心网关不消费;QoS/retain 等 wire 细节见业务页)— 按 struct 名称向设备写入配置修改(sub:"set")。

设备直连 configs 通道的清单口径见MQTT 主题清单 · 服务端订阅面(网关默认订阅清单无 device/+/+/configs/#,该 topic 不在中心消费/发布点清单内);通道业务语义见设备业务 · mqtt-bridge 设备消息链

载荷形态 {sub:"set", id, reply, params}——params 为 struct 名到字段对象的映射(单字段提交时对象仅含一个键),应答按 reply topic 回流。

动线与完成判据

层级 判据
发布完成 publishAsync Promise 成功;仅代表 Broker 发布调用完成
请求关联 应答到达专用 reply topic 即消费;不校验 id 回显;无超时——收不到应答时 UI 永远停留在等待态
设备执行 不可观测:收到 data 不代表设备已持久化或生效。唯一的间接确认是 Web 在写后重新读取(见下)
业务完成 页面惯例:写应答到达即 toast 成功,多数页面随后清空缓存重新 get 以回读实际值(settings.config 同构;settings.record set 应答即回填)

错误与边界

  • Web 消费代码无失败分支:任何到达的应答都按成功 toast。设备拒绝写入时如何应答(或不应答)完全缺证。
  • 无超时、无重试:写命令发出后若设备不应答,Web 不重发也不提示;调用方需自行实现写后读回读确认。
  • WiFi 连接类写入(WIFICLI_CFG_S.SelectIndex)后设备侧连接需要时间,Web 以 2 秒间隔轮询读取 16 秒窗口观察结果,这是前端观察手段而非协议确认机制。
  • 密码字段在发送前由 Web 按平台约定先作摘要变换,明文不上链路(该值的生成算法属于内部实现,不在文档披露范围,具体生成方式请与开发人员沟通确认);设备侧是否再做校验缺证。
  • MQTT 族公共边界见MQTT 连接与消息边界

调用关系与资源清理

  • 写命令与读取设备配置共用同一 publish topic 与会话订阅;页面用本地串行队列(PQueue concurrency:1)避免并发发布,卸载时清空队列(如)。
  • 写后回读是页面行为而非协议要求;App 建议写后显式 get 并核对回读值。
  • 页面卸载不撤销已发布命令;重复提交由用户操作触发,协议层幂等性缺证。

已知缺口

  1. 设备固件(最终消费者)源码不在本工作区:set 分支的字段校验、持久化时机、失败应答形态、部分成功语义均无法核验。
  2. params 中未列字段的设备行为(保留/重置/拒绝)缺证;声音页整表把同一对象写入三个 struct 的实际设备效果缺证。
  3. 设备写应答信封(是否含 status/error)缺证,错误处理只能按"无应答"设计。
  4. Broker ACL 与部署环境订阅清单一致性待部署核验(同 get 页)。