首页 / 数据流转 / 设备数据流
设备数据流
设备上行(上报/事件)与下行(指令/配置/OTA)数据的主题、转换与消费方。
数据流总览
上行:设备 ─MQTT/TCP─► EMQX ─► dgsvr(认证)─► gpscodecsvr(解码)
─► device.up.*(NATS)─► geosvr / dmsvr / Java 订阅
下行:Java / Go ─► device.down.*(NATS)─► dmsvr/dgsvr ─► EMQX ─► 设备
上行数据流
| 类型 | 链路 | 落点 |
|---|---|---|
| GPS 原始点 | dgsvr → gpscodecsvr → device.up.thing → geosvr | TDengine GPS 传感流水 |
| 物模型属性/事件 | dgsvr → device.up.thing.* → application.device.*.report.thing.* | Java iot / 规则引擎 / 业务告警 |
| 状态(上下线) | dgsvr → device.up.status.connected/disconnected | Redis 在线状态 + Java 消费 |
| OTA 结果 | 设备 → device.up.ota.* | otasvr 状态更新 |
| 日志 | 设备 → device.up.log.* | 调试日志收集 |
下行数据流
| 类型 | 链路 | 说明 |
|---|---|---|
| 指令下发 | Java/Go → device.down.thing.* → dmsvr/dgsvr → EMQX → 设备 | 属性设置、服务调用 |
| 远程配置 | device.down.config.* | 配置下发 |
| OTA | device.down.ota.* | 升级指令 + 固件下载凭证 |
| 影子同步 | device.down.shadow.* | 离线指令缓存,上线补发 |
物模型转换
- 私有协议 → 标准物模型:gpscodecsvr 将 GPS Tracker Protobuf 载荷转成属性/事件 JSON(
internal/codec/gps)。 - 标准物模型 → 私有协议:下行指令反向编码。
- 新增设备型号优先扩展编解码层,保持上层物模型契约稳定。
状态与遥测
- 在线状态:dgsvr 维护 Redis Hash(
things:device:status:{productID}:{deviceName}),geosvr 维护 Redis ZSET 时间序。 - 心跳/遥测:写 TDengine 心跳超级表;上下线心跳先入内存 Buffer 批量写回(write_storm_buffer,万级并发削峰)。
- 设备影子:dmsvr
shadowIndexLogic维护期望/当前状态,离线指令缓存。