读取设备配置(get-configs)

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

用途与场景

按 struct 名称批量读取设备的运行信息与配置,用于设备远控的"设备信息"页和各设置页的初始回显。本页是 device/{deviceNo}/iot/configs/v1sub:"get" 读取命令的唯一操作正本;相同 topic 上 sub:"set" 写配置见修改设备配置sub:"bcplus" 原始指令见发送设备 BC+ 原始指令。本页不承诺设备在线、不承诺设备对未知 struct 的行为。

使用位置

页面/功能 请求 structs
远控设置·录制回显 RECORD_CFG_S
远控设置·直播编码回显 SLAVEENC_CFG_S
远控设置·视频编码回显 MASTERENC_CFG_S
远控设置·声音回显 AUDIO_CFG_SUINOTIFY_CFG_SVOLUME_CFG_S
远控设置·时间回显 TIME_CFG_S
远控设置·安全回显 GUDISK_CFG_SUSER_CFG_S
远控设置·移动网络回显 MOBILENET_CFG_S
远控设置·设备用户回显 ZFYGB_CFG_S
远控设置·抓拍回显 JPEG_CFG_S
远控设置·WiFi 开关回显 WIFIDEV_CFG_S
远控设置·WiFi 客户端列表 WIFICLI_CFG_SWIFI_INFO_SWIFIAPLIST_INFO_S
远控信息·通用 BATTERY_INFO_SSYS_STAT_SDEVINFO_SDISK_INFO_STIME_CFG_S

以上页面路由均以 $deviceNo 提供设备编号;useMqttRequest 包装页(settings.*)与直接 publishAsync 页(information、wifi-1、single-live-video)发送同一命令形态,仅 reply topic 命名空间不同。对应 inventory operationId。

端点

MQTT 请求 device/{deviceNo}/iot/configs/v1(Web → Broker → 设备直发,中心网关不消费;QoS/retain 等 wire 细节见业务页)— 按 struct 名称批量读取设备的运行信息与配置(sub:"get")。

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

载荷形态 {sub:"get", id, reply, params:{structs:[]}},应答按 reply topic 回流、data 以请求的 struct 名为键。

动线与完成判据

层级 判据
发布完成 publishAsync Promise 成功、run 返回 {published:true};仅代表 Broker 发布调用完成
请求关联 应答按专用 reply topic 到达即被消费;Web 不校验应答中的 id 是否回显;同页同 reply topic 的并发请求共用同一处理器
设备执行 不可观测:设备是否应用/返回了配置无法由 Web 区分,只能以"收到含所请求 struct 的 data"作为间接信号
业务完成 Web 惯例:应答 data 非空即认为读取成功并停止 3 秒重试(如)

错误与边界

  • Web 消费代码没有失败分支:只要应答到达即按成功处理(toast.success);设备侧错误应答形态、错误码与 status 语义缺证,不能假设设备失败时 data 为空或含错误键。
  • 无请求超时:首读失败时 Web 以 3 秒间隔无限重试直至收到应答(等同构代码;WiFi 连接操作后为 2 秒间隔、持续 16 秒窗口)。App 需自行设计超时与放弃策略,不能沿用 Web 的无限重试。
  • HTTP 错误差异不适用本命令;MQTT 族公共边界见MQTT 连接与消息边界

调用关系与资源清理

  • 设置类页面在收到读取应答后才渲染表单;修改设备配置成功后多数页面会清空本地缓存并重新读取。
  • 应答订阅依赖连接建立时的会话级通配订阅 user/{username}/web/{sessionId}/#,页面级 useEmitterOn 只挂接/摘除处理器,不产生额外 MQTT 订阅;页面卸载清空本地发送队列(各页 outputQueue.clear),但不撤销已发布命令。
  • 位置追踪页收到 GPS_INFO_S/USER_CFG_S 应答后会把数据转发到中心 server/center-server/iot/v1/report-category-info,该链路属实时监看/共享域正本。

已知缺口

  1. 设备固件(最终消费者)源码不在本工作区:iot/configs/v1 的 sub 分支处理、struct 权威字段表、字段类型/单位/取值范围、错误应答形态均无法逐字段核验;上表枚举均为 Web 消费侧观察。
  2. 设备对未知 struct、空 structs、非法字段值的行为缺证。
  3. Broker ACL、设备订阅 device/+/iot/configs/v1 的证据、部署环境实际订阅清单与默认配置的一致性待部署核验。
  4. 中心网关"不消费"结论基于仓库默认 profile 配置;若部署改写 mqtt.topics 需重新核验。