本项目用于接收设备通过 TCP 上报的原始报文,解析后转发到 MQTT、阿里云,或同时发送到两者。
当前已支持两类数据源协议:
EE 55 固定 8 字节帧AA 55 变长帧tcp-service.js 监听 TCP 端口config.json 中的设备decoder.jsdecoder.js 自动识别协议并解析app.js 根据 send.channels 发送到 MQTT、阿里云app.js:启动入口、加载配置、初始化日志与发送通道tcp-service.js:TCP 监听、设备匹配、连接管理decoder.js:双协议解码mqtt-service.js:MQTT 发布aliyun-service.js:阿里云物联网属性上报config.json:运行配置alModel.json:指标模型固定格式:
EE 55 NN XX1 XX2 XX3 XX4 CY
说明:
EE 55:包头NN:命令字XX1 XX2 XX3 XX4:4 字节数据区CY:校验和校验规则:
CY = (NN + XX1 + XX2 + XX3 + XX4) & 0xFF
示例:
AA 55 0E BA 00 78 50 59 08 08 08 08 08 10
字段说明:
AA 55:包头0E:整帧长度BA:命令字00 78:收缩压,高字节在前50:舒张压59:脉搏校验规则:
校验和 = 从 AA 开始到最后一个数据字节的累加和,保留低 8 位
当前血压计 0xBA 报文会一次生成一组指标:
{
"N": 120,
"O": 80,
"P": 89,
"M": "2026-04-15 09:30"
}
字段映射:
N:收缩压O:舒张压P:脉搏M:血压监测时间其中时间字段 M 由 5 个字节组装为:
20YY-MM-DD HH:mm
为了兼容现场平台暂时未接入 M 的情况,新增配置:
"protocol": {
"alModelPath": "./alModel.json",
"bloodPressure": {
"publishTime": true
}
}
规则:
publishTime: true:发布 N/O/P/MpublishTime: false:只发布 N/O/Ptrue 处理关闭后的血压计发布对象示例:
{
"N": 120,
"O": 80,
"P": 89
}
血压计新增指标需要在 alModel.json 中存在对应标识:
N:收缩压O:舒张压P:脉搏M:血压监测时间如果某个标识不在 alModel.json 中,解码器不会发布该字段。
安装依赖:
npm install
启动服务:
npm run start
验证命令:
npm test
npm run verify:commands
当前服务已经具备:
alModel.json 过滤字段M