发送设备 BC+ 原始指令(bcplus)

验证状态:存在关键缺口,不可作为完整契约发布。Web 发送与应答消费已源码核验;BC+ 指令集权威定义与设备端 MQTT 消费者源码不在本工作区,指令全集与失败行为缺证。 适用基线:源码归纳 @ 2026-09-14

用途与场景

透传一条 BC+ 文本指令给设备执行,用于远控首页的抓拍、录像/录音开关、重启与 WiFi 网络增删,以及单机直播页的抓拍。本页是 device/{deviceNo}/iot/configs/v1sub:"bcplus" 的唯一操作正本;同 topic 的 get/set 见读取设备配置修改设备配置。本页不承诺指令语义在所有固件版本上一致。

使用位置

页面/功能 发送的 cmd
远控首页·设备信息(抓拍/录像/录音/重启) BC+UMSINI=SysCtrl.Jpeg=1BC+UMSINI=SysCtrl.RecVideo=0|1BC+UMSINI=SysCtrl.RecAudio=0|1、重启指令(SysCtrl.ctrl=reboot 形态)
单机直播·设备列表抓拍 BC+UMSINI=SysCtrl.Jpeg=1
单机直播·地图抓拍 BC+UMSINI=SysCtrl.Jpeg=1
远控设置·WiFi 删除/添加网络 BC+APDEL=<ssid>BC+APADD=<ssid>:<password>

对应 inventory operationId:mqtt-module-device-var-iot-configs-v1-29c4d114mqtt-module-device-var-iot-configs-v1-81114436mqtt-devicelist1-device-var-iot-configs-v1-0cd4a5ea(构建器以调用点命名的同一命令)。

端点

MQTT 发布 device/{deviceNo}/iot/configs/v1(Web → Broker → 设备直发,中心网关不消费;QoS/retain 等 wire 细节见业务页)— 透传一条 BC+ 文本指令给设备执行(sub:"bcplus")。

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

载荷形态 {sub:"bcplus", id, reply, params:{cmd}}——cmdBC+ 开头的文本指令(Web 实际发送的指令族见使用位置表;完整指令集缺证)。

动线与完成判据

层级 判据
发布完成 publishAsync Promise 成功;直播页随即 toast"指令发送成功",仅代表发布调用完成
请求关联 应答按专用 reply topic 到达即消费;不校验 id 回显;无超时
设备执行 以应答 data.resultOK 作为设备报告的执行结果信号;result 的完整取值集、失败文案与设备实际副作用(如重启耗时)缺证
业务完成 录像/录音开关页以应答成功更新本地开关状态,属 UI 状态而非设备状态确认

错误与边界

  • 失败判定仅有 result 不含 OK 一种(Web toast 失败);指令语法错误、设备离线、固件不支持等场景的应答行为缺证。
  • 无超时:应答不到达时 UI 无任何反馈(直播页的"发送成功"toast 只反映发布完成)。
  • BC+APADD 密码以明文进入 payload(等处 BC+APADD=${ssid}:${password});App 侧需注意该指令的凭据暴露面。
  • MQTT 族公共边界见MQTT 连接与消息边界

调用关系与资源清理

  • 读取设备配置修改设备配置共用 publish topic 与会话订阅;WiFi 页在 APADD/APDEL 后依赖后续 get 轮询刷新网络列表。
  • 页面卸载不撤销已发布指令;重启类指令发出后设备会掉线重连,Web 无恢复编排。

已知缺口

  1. BC+ 指令集权威定义与设备端消费者源码不在本工作区:指令全集、参数语法(如 APADD 密码字符集)、失败 result 取值、固件版本差异均缺证。
  2. BC+UMSINI=SysCtrl.ctrl=reboot 仅见于 Web 源码注释,当前调用点未发送;是否仍受设备支持缺证。
  3. 设备应答信封完整形态与 result 的权威类型(string 为 Web 消费侧观察)缺证。
  4. Broker ACL 与部署环境订阅清单一致性待部署核验。