Files
story/docs/device-fleet-delivery.md
Codex Local bf1233d5df
ci / verify (push) Canceled after 0s
feat: expand companion platform, device controls, and memoir workflows
Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
2026-10-08 10:06:44 +08:00

4.2 KiB
Raw Permalink Blame History

MQTT与OTA本次交付记录

2026-09-14,后端/SaaS已部署至 https://82.157.201.114,版本 0.92.0-rc.fleet1,数据库迁移66。小程序源码在 C:\Users\19926\WeChatProjects\voicelink,尚未代用户上传新的微信体验版。

2026-09-18 已发布 0.96.2-rc.mqtt1,MQTT 改为明文 TCP 1883。公网 MQTT 协议握手、HTTPS readiness 和宿主机健康检查均通过;旧 8883 已停止监听。

已完成

  • MQTT 3.1.1 / TCP 1883:设备连接参数、按设备主题发布/订阅、断线状态、30秒心跳、90秒离线判定。MQTT 传输不加密。
  • 小程序设备管理:在线/离线/状态未知,当前与最新版本、更新内容、下载地址复制、更新按钮和任务状态;10秒刷新,页面隐藏后停止。
  • OTA:校验当前绑定权限、型号、数字顺序号、在线状态和忙碌状态;保存任务后MQTT发送下载地址;设备HTTP上报accepted/success/failed;超时处理及同请求号去重。
  • SaaS固件管理:选择型号、版本名称、更新内容、上传文件。顺序号自动生成;先上传、校验,再发布,不覆盖已发布版本。
  • 现有签名固件/批量发布的后台接口和数据保留;新简化页面使用独立的设备固件接口。
  • 根据用户后续要求,没有修改、编译或烧录EchoEar硬件;最终硬件按接口对接。

验证结果

  • Go内部包测试通过;隔离数据库的devicefleet、saas、onboarding、httpapi集成测试通过。
  • 模拟设备完成真实 MQTT/TCP 连接、心跳、订阅、OTA 指令接收、确认及成功上报;覆盖错误密码、跨设备订阅/上报、错误版本、重复请求、并发升级、离线和超时。
  • 小程序44项测试通过;微信原生编译器WXML 8页、WXSS 9文件通过。
  • SaaS生产构建通过;浏览器验证上传窗口恰好四项输入,截图位于 .tmp-fleet-deploy/firmware-upload.png。
  • 线上HTTPS readiness返回200,PostgreSQL、Redis、对象存储正常;schema=66,dirty=false。
  • 原 TLS 8883 版本曾通过 SSH 隧道完成联调。2026-09-18 切换为明文 TCP 1883 后,已从外部网络完成 TCP 连通和 MQTT CONNACK 协议验证。
  • 线上未上传任何测试固件,未触发真实OTA;原4条有效设备绑定保留。发布前完成加密备份及恢复验证。

仍需完成的外部步骤

  1. 在微信开发者工具重新上传当前小程序源码,设置为体验版。此前公网IP在微信普通体验环境下的合法请求域名限制仍存在,本次没有改变微信的域名规则。
  2. 最终嵌入式硬件实现文档中的心跳及OTA安装/重启回报,再进行实物升级验证。

接口文档

  • 完整业务流程:设备接口文档
  • 本次新增:MQTT与OTA接口
  • 桌面交接文档已同步为“设备接口文档-MQTT与OTA版.md”和“设备接口简版.html”。

后续部署注意

运行目录:/opt/data-terminal-cloud/current,指向 /opt/data-terminal-cloud/releases/0.92.0-rc.fleet1。必须保留运行时私有 .env,同时设置 PLATFORM_BUILD_VERSION 与 ONBOARDING_RELEASE_VERSION,不能只改前一个。

Compose叠加顺序:

docker compose -p data-terminal-cloud \
  -f compose.yaml \
  -f deploy/server/compose.override.yaml \
  -f deploy/server/compose.subtitle.yaml \
  -f deploy/server/compose.onboarding.yaml \
  -f deploy/server/compose.migration.yaml \
  -f deploy/server/compose.fleet.yaml \
  --env-file deploy/server/.env up -d --no-deps api callbacks worker web

不要重新运行seed或删除数据卷。更换API容器后,分别reload网关和web容器内的Nginx,使静态解析的上游IP更新。

MQTT 直接监听 TCP 1883,不再挂载证书目录,也不需要 MQTT 证书续期服务。健康监控允许端口为 22、80、443、1883。

当前嵌入式Broker只支持单API实例;后续需要多实例扩容时再拆出共享MQTT服务,不要直接复制API实例。

源包SHA256:8d2f22a1a7ff0606ab1d422112aaefb319e669c0a50db484e9be8da3326bb464。此记录和后续诊断脚本修订属于部署后的交接补充,未改变运行二进制。