下行面:deliver 落点与直连命令

验证状态:本页为接入视角新写(20 号票)。事实取材自 MQTT 清单层生成页与机构 / 零售手册已核验场景正本(设备固件为最终消费者、其源码不在本工作区,正本已标的设备侧缺口原样继承),本页自身不做二次核验、未联调。

用途与场景

设备需要订阅并处理的两类下行:应答 / 推送落点(deliver)与 Web 直连命令(configs 族,中心网关不消费、设备是最终消费者),以及收到应答后的文件上传与固件升级执行。这是接入动线的第三步。媒体域的下行(webrtc / ptt deliver)在媒体通道族,本页只讲 iot 面。

iot deliver 落点(应答与推送)

device/{deviceNo}/iot/deliver/v1 是设备侧应答 / 推送的统一落点(清单收录的动态下行发布点之一)——契约行见MQTT 主题清单 · 动态下行。从这里下行的两类载荷:

设备侧结论:订阅自身 device/{deviceNo}/iot/deliver/v1 是 iot 面的必备动作(receive 应答与推送共用该 topic)。

文件上传执行

「让设备上传文件」的目标不是设备硬编码的,而是由中心经 retrieve upload/* 应答下发(上传 URL + 时间戳 + 混淆码)——零售手册已核验推断:设备固件无需也无处硬编码上传路径,见兼容候选;中心侧存储区的设备号视图(uploadByDeviceNo 等)见采集服务器接入 · 文件上报与检索。上传协议细节(URL 形态、鉴权、断点 / 重试)正本已标缺证(见下方已知缺口)。

固件升级执行

  • MQTT 孪生通道:retrieve items:["firmware"] 的应答携带最新固件包信息(经 deliver 落点下行)——触发方正本见触发设备固件与文件上报(retrieve),固件包管理面(HTTP,管理侧)见机构手册设备与资产域 · firmware-package
  • HTTP 直连例外:公网检查端点 GET /main-service/main-api/v1/public/firmware/latest(免登录、分组外端点)——导航级引用与链接见设备身份与凭据
  • 设备收到固件信息后的下载 / 校验 / 升级行为属固件职责,正本已标缺证。

configs 直连命令族(get / set / bcplus)

device/{deviceNo}/iot/configs/v1Web → Broker → 设备直发的命令通道:中心网关不消费(属中心不消费的接入面,默认订阅清单无 device/+/+/configs/#,见MQTT 主题清单 · 服务端订阅面),设备是唯一消费者。同 topic 以 sub 区分三族命令,逐命令正本(Web 视角):

sub 命令语义 Web 侧正本
get 按 struct 名称批量读取设备运行信息与配置 读取设备配置(get-configs)
set 按 struct 名称写入配置修改 修改设备配置(set-configs)
bcplus 透传一条 BC+ 文本指令(抓拍、录像 / 录音开关、重启、WiFi 网络增删) 发送设备 BC+ 原始指令(bcplus)

行为规则(一句话点名,细节见各正本与设备业务 · mqtt-bridge):

  • 应答按请求 reply topic 回流;Web 侧无超时、无重试约定——设备侧需自行定义应答时限与错误形态(正本已标「设备错误应答形态缺证」)。
  • Web 直发族的 QoS / retain 约定与中心网关不同,两侧勿混用——见设备业务 · mqtt-bridge的 Web 侧发布约定(数值不在此复述)。
  • BC+APADD 密码以明文进入 payload;BC+ 指令集权威定义缺证(正本已标)。

已知缺口

  1. 设备固件(configs 族最终消费者)源码不在本工作区:sub 分支处理、struct 权威字段表、错误应答形态均无法核验——机构正本缺口,本章照实继承。
  2. 「设备必须订阅的 topic 全集」无权威清单层来源:MQTT 清单只收中心网关消费 / 发布面,Web 直连族(configs / webrtc / ptt deliver)不在其中,本章只能从 Web 正本反推。
  3. 文件上传协议细节(目标 URL 形态、断点 / 重试、鉴权)与 DMS 载荷 schema 均缺证(正本与清单层口径一致:源码归纳、无 schema 真源)。
  4. Broker ACL 对设备订阅面(device/{deviceNo}/…)的授权与部署一致性待部署核验(各正本同款缺口)。