feat(vd960Air): 方案 C MVP — 0x7F 帧解析 + 标准 JSON 上报(2026-08-31)

协议依据:《DLD960_IoT_MQTT协议》V1.13(4G 通道适配方案 C)

新增模块:
- frame_parser.lua: 0x7F 帧解析状态机(Lua 版 lup_feed_byte, XOR+SUM 校验)
- proto_conv.lua: 0xC0 传感帧 → loop_data + car_state/loop_state 沿检测(4 类线圈事件)
- evt_queue.lua: event_report 队列 + ACK 状态机(16深/5s×3/跨重连同 msg_id,对齐 DBN)
- clock.lua: report_config 时钟校准(协议 §2.3)
- app_iot.lua: initialize(extra_info imei/iccid + link)/ heartbeat / poll 驱动
- tools/sim_frame_test.py: 帧协议参考验证(56B 帧/4 路解析/沿检测/JSON 格式,全过)

改造:
- uart_app.lua: 0x7D 帧 → 0x7F 帧驱动;loop_data/event_report 组包 + link 注入
- mqtt_receiver.lua: 下行分发(ACK 路由 + 时钟校准)
- mqtt_main.lua: 连接成功 → initialize + 未决事件重发
- config.lua/main.lua: 方案 C 配置与入口

MVP 范围: 上行(initialize/loop_data/event_report/heartbeat)+ report_config;
下行命令转换与 0x7D 配置同步列入 P1。
This commit is contained in:
wangfq
2026-08-31 15:47:43 +08:00
parent 6d763f02fe
commit 3ad7ae8f09
11 changed files with 796 additions and 207 deletions
@@ -1,17 +1,17 @@
--[[
@module main
@summary vd960Air — Air8781P(Air780EPM) 4G 模块 LuatOS 应用入口
@version 0.1
@summary vd960Air — Air8781P(Air780EPM) 4G 模块 LuatOS 应用入口(方案 C MVP)
@version 0.3
@date 2026.08.31
@usage
vd960DBN 车检器在有线网络效时的 4G 兜底通道(UART <-> MQTT 桥):
vd960DBN 车检器在有线网络效时的 4G 兜底通道(方案 C: Air780 协议转换):
1、UART1 对接 vd960DBN(CH32V208 串口1 PB6/PB7),帧协议见 uart_app.lua;
2、上行: vd960DBN JSON 帧 → 4G → MQTT publish 到 dld960/{sn}/dev
(JSON 命令面与《DLD960_IoT_MQTT协议》V1.10 完全一致,平台侧无感);
3、下行: MQTT 订阅 dld960/{sn}/srv → 4G → 组帧 → UART1 下发 vd960DBN;
4、网络看门狗: 长时间无网络业务则重启系统(官方 network_watchdog);
5、网卡: 仅 4G(netdrv_4g)。
1、UART1 对接 vd960DBN(CH32V208 串口1 PB6/PB7),0x7F 帧字节流透传;
2、0x7F 帧解析 → 0xC0 传感 → loop_data JSON(标准,注入 link)→ MQTT dld960/{sn}/dev;
3、car_state/loop_state 沿检测 → event_report(ACK + 5s×3 重发,对齐 DBN 语义);
4、下行: report_config 时钟校准 + event_report ACK;业务命令转换 P1;
5、initialize(extra_info imei/iccid + link)/ heartbeat 周期上报;
6、网络看门狗 + 4G 网卡(官方组件)。
]]
PROJECT = "vd960Air"
VERSION = "001.999.000"
@@ -28,9 +28,13 @@ require "network_watchdog"
-- ==================== 网卡驱动(仅 4G) ====================
require "netdrv_device"
-- ==================== 串口应用(UART1 <-> vd960DBN) ====================
-- ==================== 串口应用(UART1 <-> vd960DBN,0x7F 帧) ====================
require "uart_app"
-- ==================== 设备业务(initialize/heartbeat/poll) ====================
local app_iot = require "app_iot"
app_iot.init()
-- ==================== MQTT 客户端(单路, 主题 dld960/{sn}/srv + dev) ====================
require "mqtt_main"