· Zen HuiFer · 教程  · 4 min read

数据流转链路

了解Go IoT开发平台中数据流转链路的核心数据结构和安装方式,优化物联网项目的数据处理流程。

了解Go IoT开发平台中数据流转链路的核心数据结构和安装方式,优化物联网项目的数据处理流程。

数据流转链路

核心数据结构

物联网项目的现场安装方式:

  1. 物理设备可以直接进行网络通讯,将数据进行上报
  2. 物理设备需要通过网关设备才能够完成数据上报

针对这两种安装模式,提出本系统内部的核心数据结构。

type DataRowList struct {
	Time      int64     `json:"time"`       // 秒级时间戳
	DeviceUid string    `json:"device_uid"` // 能够产生网络通讯的唯一编码
	IdentificationCode string `json:"identification_code"` // 设备标识码
	DataRows  []DataRow `json:"data"`
	Nc        string    `json:"nc"`
}
type DataRow struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}


第一种安装方式下 DeviceUidIdentificationCode 相同,第二种安装方式下则不相同。

注意: 这个数据结构并不是设备上报的数据结构,而是内部流转的数据结构。设备上报后需要通过解析脚本解析为本数据结构。

下面以MQTT客户端上报数据为例,DeviceUid 这个字段是本系统中MQTT客户端的唯一标识。这个标识在创建MQTT客户端的时候就已经确定,因此用户只需要拷贝相关唯一标识即可。另外如果不采用MQTT 的通配符订阅模式,IdentificationCode 需要和 DeviceUid 设置为相同的。其他协议处理模式相同。

核心数据流转链路

下图为设备上报数据到处理数据的整个完整过程。

  1. 设备设备通过COAP、MQTT、TCP/IP、WebSocket和HTTP发送数据到指定的服务器
  2. 服务器在收到数据后会根据不同的上报协议转发到不同的消息队列中。
上报协议消息队列
COAPpre_coap_handler
MQTTpre_handler
TCP/IPpre_tcp_handler
WebSocketpre_ws_handler
HTTPpre_http_handler
  1. 消息队列会找到对应的解析脚本将原始报文转换为 DataRowList 数据。pre_xxx_handler 中会完成数据存储
  2. 经过 pre_xxx_handler 的队列后将数据放入到 waring_handlerwaring_delay_handlertransmit_handler 消息队列完成后续的数据处理。其中 waring_handler 判断为报警的数据会放入通知队列 waring_notice

设备数据流转链路.drawio

数据存储

本项目采用Influxdb2作为数据存储工具。整体设计方案如下。

  1. bucket 为配置文件内容
  2. measurement 计算规则: 协议_${DeviceUid}_${IdentificationCode}
  3. field详细内容如下
数据字段数据值
storage_time系统存储时间,此数据为系统生成,写入influxdb之前的时间。
push_time数据上报时间,此数据从${DataRowList.Time}中获取
DataRowList.DataRows.NameDataRowList.DataRows.Value
Back to Blog

Related Posts

View All Posts »
MQTT 客户端管理方案

MQTT 客户端管理方案

本文详细介绍了在物联网项目中如何设计和管理海量MQTT客户端的解决方案,包括限制条件、方案设计、负载均衡和故障转移等内容,帮助开发者优化系统性能,确保稳定运行。

数据报警设计

数据报警设计

本文详细介绍了物联网项目中数据报警的设计方案,包括温度监控报警、设备性能下降报警以及多设备联动报警等场景,帮助开发者更好地理解和应用数据报警技术。

物联网基础知识

物联网基础知识

本章总结了物联网基础知识,涵盖物联网定义、物联网三层架构模型及其在智能家居、工业、农业、医疗等领域的应用。