Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/vd960Air/config.lua
T
wangfq 28418dab66 feat(vd960Air): 配置同步改用 0x8F 本机侧私有帧;MQTT 凭据外置到非跟踪文件
- readme §2.2/§3:0x7D 帧设计稿 v0.2 作废,改写为「0x7F 业务帧字节流 + 0x8F 本机侧私有帧」
  (权威源规则 / 拉取为主+推送为辅 / 帧长上限 260B / 两侧缓冲需同步扩容),依据协议 §6.9
- readme §3.1:对比表由 0x7D 改为 0x8F,保留 0x7F 帧布局参考
- config.lua / uart_app.lua:注释中的 0x7D 计划改为 0x8F 配置同步;协议版本引用 V1.13 → V1.14
- config.lua:MQTT 账号密码不再明文入库,改从 cred.lua 读取;缺失时降级为空串(匿名连接)
- 新增 .gitignore(忽略 cred.lua)+ cred.lua.example(填写模板)
  ⚠ 原明文凭据已存在于 git 历史,商用前必须更换服务器密码
- 语法:luac5.3 -p config.lua / cred.lua / uart_app.lua 全部通过
2026-09-10 21:46:02 +08:00

75 lines
3.5 KiB
Lua

--[[
@module config
@summary vd960Air 配置: MQTT 服务器 / 设备标识 / 主题 / UART / 上报参数
@date 2026.08.31
@usage
vd960Air 是 Air8781P 整板(Air780EPM 核心模组)上的 LuatOS 应用,
作为 vd960DBN 车检器在有线网络失效时的 4G 兜底通道(方案 C: Air780 协议转换)。
协议依据:《DLD960_IoT_MQTT协议》V1.14(4G 通道适配方案 C,标准 JSON 命令面)
]]
-- ==================== MQTT 服务器 ====================
-- 测试服务器(2026-09-10 用户提供): host/port 见下(出厂默认值)
-- 注: 后续 vd960DBN 更新版本后,经 BLE 设置的服务器参数会同步下发覆盖此处(配置同步, 协议 §6.9)
-- ⚠ 商用环境须替换为平台实际地址
--
-- 敏感凭据从非跟踪文件 cred.lua 读取(不入版本库; 模板见 cred.lua.example)
-- 缺失时为空串 -> 匿名连接(不崩, 仅 broker 侧鉴权失败后按重连逻辑重试)
-- ⚠ 2026-09-10 之前凭据曾明文写在 config.lua 并已入库(git 历史), 商用前必须更换服务器密码
local _cred_ok, _cred = pcall(require, "cred")
if not _cred_ok or type(_cred) ~= "table" then
_cred = {}
if log then log.warn("config", "cred.lua 缺失或非法 -> 凭据为空(匿名), 请复制 cred.lua.example") end
end
CFG_MQTT_HOST = _cred.mqtt_host or "110.41.131.144"
CFG_MQTT_PORT = _cred.mqtt_port or 1883
-- MQTT 鉴权(mqtt_main 调用 mqtt_client:auth; 空串表示匿名)
CFG_MQTT_USER = _cred.mqtt_user or ""
CFG_MQTT_PASS = _cred.mqtt_pass or ""
-- ==================== 设备标识 ====================
-- 设备序列码: 6 字节十六进制字符串(与 vd960DBN dev_serial 一致,有线/4G 同一设备)
CFG_DEV_SERIAL = "A1B2C3D4E5F6"
-- 产品信息(initialize 上报,协议 §5.1)
CFG_MODEL = "DLD960"
CFG_HW_VER = "1.0"
CFG_SW_VER = "1.0"
CFG_LOOP_VER = "" -- 地感 Loop 固件版本(0x4A 查询 P1 后填充)
CFG_LOOP_HW_VER = "" -- 地感 Loop 硬件版本
-- MQTT Topic(与《DLD960_IoT_MQTT协议》§1.2 一致)
CFG_TOPIC_UP = "dld960/" .. CFG_DEV_SERIAL .. "/dev" -- 设备上报
CFG_TOPIC_DOWN = "dld960/" .. CFG_DEV_SERIAL .. "/srv" -- 服务器下发
-- MQTT ClientID: 用 IMEI 保证唯一(与序列码解耦;鉴权待确认)
CFG_MQTT_CLIENT_ID = "vd960Air-" .. (mobile.imei() or "unknown")
-- ==================== UART(对接 vd960DBN) ====================
-- vd960DBN 侧: CH32V208 串口1(PB6=TX, PB7=RX)
-- 波特率: 115200(用户决策 2026-08-31,后续如需再调)
CFG_UART_ID = 1
CFG_UART_BAUD = 115200
-- 链路帧: 0x7F 帧字节流(方案 C,数据面透传 Loop 地感协议)
-- 0x8F 本机侧私有帧用于 DBN↔Air780 配置同步(拉取+推送,协议 §6.9)(P1)
-- ==================== 上报节奏 ====================
CFG_HEARTBEAT_INTERVAL = 60 -- 心跳周期(秒,协议 §5.4 默认 60)
CFG_REPORT_ALWAYS = true -- MVP: 每收到 0xC0 帧都上报 loop_data;P1 按协议三档节流
-- ==================== 4G 特有字段注入 ====================
-- 用户决策 2026-08-31: 上行附加 link 对象 + initialize extra_info 含 imei/iccid
-- true = 上行 JSON 顶层注入 link 对象(见 link_info.lua)
CFG_LINK_ENABLE = true
-- ==================== 模块导出(必须, 不可删) ====================
-- ⚠ require "config" 时若文件无 return, Lua 返回 true;
-- 调用方 local CFG = require "config" 后访问 CFG.CFG_xxx 会报
-- "attempt to index a boolean value" ——2026-09-10 上电复位事故根因
-- 配置项以全局变量定义, 这里返回全局表供模块化访问
return _G