物联网之适配器扩展设备(五)
本文详细介绍如何通过适配器模式扩展支持新的设备类型。
一、适配器架构概述
系统采用三层适配器架构,实现设备类型的可扩展性:
1 | |
三层适配器职责
| 层级 | 文件位置 | 职责 |
|---|---|---|
| 数据解析层 | packages/types/src/payload-parser.ts | 解析 MQTT 原始数据,转换为标准化格式 |
| 服务端业务层 | apps/server/src/common/adapters/deviceAdapter.ts | 告警提取、状态判断、数据验证 |
| 前端展示层 | apps/web/src/adapters/deviceAdapter.ts | 详情页数据分组、状态文本/样式转换 |
二、扩展步骤概览
1 | |
三、步骤详解
步骤 1: 定义设备类型
编辑 packages/types/src/mqtt.ts:
1 | |
步骤 2: 创建数据解析适配器
编辑 packages/types/src/payload-parser.ts:
1 | |
步骤 3: 创建服务端业务适配器
编辑 apps/server/src/common/adapters/deviceAdapter.ts:
1 | |
步骤 4: 创建前端展示适配器
编辑 apps/web/src/adapters/deviceAdapter.ts:
1 | |
步骤 5: 添加国际化翻译
编辑 apps/web/src/i18n/locales/zh-CN.ts:
1 | |
编辑 apps/web/src/i18n/locales/en-US.ts:
1 | |
步骤 6: 创建模拟器脚本
创建 scripts/simulator-new-device.js:
1 | |
四、适配器接口定义
4.1 数据解析适配器接口
1 | |
4.2 服务端业务适配器接口
1 | |
4.3 前端展示适配器接口
1 | |
五、数据流转过程
1 | |
六、开发检查清单
添加新设备类型时,请确保完成以下检查:
- 在
packages/types/src/mqtt.ts中定义设备类型 - 在
packages/types/src/payload-parser.ts中创建解析适配器并注册 - 在
apps/server/src/common/adapters/deviceAdapter.ts中创建服务适配器并注册 - 在
apps/web/src/adapters/deviceAdapter.ts中创建展示适配器 - 添加中英文国际化翻译
- 创建模拟器脚本用于测试
- 测试数据上报、解析、展示流程
- 测试告警提取和恢复逻辑
七、常见问题
Q1: 如何处理旧设备类型兼容?
在 LEGACY_DEVICE_TYPE_MAP 中添加映射关系,系统会自动转换:
1 | |
Q2: 如何处理不同的数据换算规则?
在解析适配器中处理:
1 | |
Q3: 如何处理 bit 位解析?
使用位运算:
1 | |
Q4: 如何添加新的告警类型?
- 在解析适配器中解析告警字段
- 在服务适配器中添加告警定义
- 在前端适配器中添加告警标签翻译
八、小结
本文详细介绍了通过适配器模式扩展设备类型的完整流程:
- 三层适配器架构 - 数据解析层、服务端业务层、前端展示层
- 六个扩展步骤 - 从类型定义到模拟器测试
- 接口定义 - 每层适配器的标准接口
- 数据流转 - 从 MQTT 上报到前端展示的完整过程
关键要点:
- 每层适配器职责单一,便于维护
- 工厂模式统一管理适配器注册和获取
- 国际化支持多语言
- 模拟器方便开发和测试
物联网之适配器扩展设备(五)
https://cszy.top/20260406-物联网之适配器扩展设备(五)/