数据远程采集系统介绍
优采云 发布时间: 2020-08-03 18:01>>[目录] 数据远程采集 Step by Step
系统主要由5部份组成:
设备
被*敏*感*词*的设备,这个设备通过UART来广播自身的运行状态
采集装置
树莓派ZeroW,接收设备广播包,存到数据库(定期打包),并上传云端
云端存储
阿里云对象储存OSS
本地下载
每天手动下载云端的数据,并删除过期的数据。在局域网共享数据文件夹
上位机
通过局域网共享的方法获取所需的数据文件,通过上位机进行数据剖析
1 设备
本项目里使用的广播包约0.5~2s发一帧,每帧数据约50~400字节,大概是这个量级。
2 采集装置
树莓派ZeroW,这款自带WIFI模块,联网很方便,尺寸也太小,对安装环境的要求较低。
为了防止影响被*敏*感*词*的设备,独立供电,只用GND+RX两根线与设备进行通信。
默认无通信合同,只用数据帧的厚度来过滤有效广播包,然后直接储存原始数据帧,这样可以提升通用性,后续在本地上位机上进行合同解析。
采用SQLite进行数据储存。数据库中每一条记录代表一帧广播数据(长度不够就补0),一般不仅原始通信数据以外就会把时间信息等其他的一些附送数据同时打包进记录中,便于后续剖析。为了提升效率,可以每收到50-100帧数据后再统一插入到数据库中。数据库文件是后续上传等操作的最小单位,每隔一段时间生成一个新的数据库文件,这样三天的数据就可以被打包成若干的数据库文件。
已经储存完成的数据库文件会被放在的文件夹中,如果采集装置不联网云端内容采集,那么这种数据库文件就在这个文件夹下仍然存着了,如果联网的话,有个数据上传的程序会来扫描这个文件夹,如果找到数据库文件,就会把这种文件上传到云端,然后把数据库文件移到的文件夹下。
采集装置上的程序都是用Python开发的。
3 云端存储
选用的是阿里云对象储存OSS,租了40个G的空间(费用5年45元)。用上去很方便,只要通过API函数(Python SDK--oss2)去访问就好了,阿里云的网站和APP上都可以直观地看见上传的数据文件。
4 本地下载
每天早上7点(0点-8点之间下载费用五折,0.25元/G)自动下载云端的数据,并删除过期的数据。办公室的台式机仍然开着,相当于一个服务器了,然后把数据文件夹共享给局域网中的用户,其他人就可以随时访问了。
如果着急要看最新的数据,可以台式机上自动运行下载数据的脚本。
下载脚本也是用Python写的。
5 上位机
上位机主要是做两个事,1、解析数据库中的原始记录,2、数据的统计剖析等等。
这个上位机是之前另外一个项目中开发的(C#),它本身可以与设备通信云端内容采集,进行合同解析,存储解析后的数据,显示数据,对数据统计剖析。所以这个上位机天然具有处理原始数据的能力,只须要把原始数据库文件导出到上位机中,然后逐字处理记录就可以了。
局域网中的其他用户把原始数据库下载到本地后,用上位机进行处理。
不过采集到的数据如何用是灵活的,可以自己写软件进行处理;或者用SQLite Expert直接查看原始数据,这个软件可以把数据导入到Excel中(Excel2007之前最大行数为65,535,之后的版本是最大1,048,576行,用SQLite Expert导入的时侯要注意一下)。
后续不会讨论上位机相关的东西,主要是早已超过了数据远程采集的范围,然后涉及的内容也好多。