ESP8266WiFi模块上传数据,树莓派作为存储数据的服务器,用Splunk在web端可视化数据

  之所以想要制作这样一个系统,是因为平时做实验都是用自己开发的测量装置,之前一般都是将数据存在SD卡或外部Flash中,每次都要收取数据(把SD卡拔出或者从Flash中读取数据)。重复的插拔SD卡和读取Flash会比较麻烦,如果能开发一个自动上传并存储数据的系统,坐在电脑前就可以直接查看实验变化、下载数据,感觉会方便很多(嗯,对,就是懒)。

  按照需求,实现这个系统的步骤很简单,上传数据—>存储数据—>显示数据,结合自己目前了解的一些技术,打算采用ESP8266WiFi模块上传数据,用树莓派作为一个存储数据的服务器,最后用Splunk在web端可视化存储的数据。

  OK,直接上完成的实物图和效果图:

树莓派python采集485设备数据 基于树莓派的数据采集_树莓派python采集485设备数据

  ESP8266是一款乐鑫的WiFi MCU,从网上买的ESP-01S模块可以配置成AP、STA或者AP+STA模式。将ESP-01S直接配置成STA模式连接到局域网下,用AT指令可以配置要连接的WiFi账号及密码,或者AP+STA模式下连接电脑通过网页也可以直接配置(需要固件支持)。在ESP-01S连入局域网的状态下,通过串口发AT指令将ESP-01S配置为Client就可以与Server通信啦,单连接模式下是可以支持透传的。下面是用AT指令配置ESP-01S进行TCP透传的例子:

树莓派python采集485设备数据 基于树莓派的数据采集_树莓派python采集485设备数据_02

  ESP-01S的配置成功意味着上传数据的功能已经实现啦,接下来就是用树莓派存储上传的数据了。树莓派存储数据其实需要两步,第一步接收,第二步储存。接收的话我是用Python写了一个实时运行的脚本来处理收到的数据,储存数据的话在树莓派上装一个数据库就可以了。数据库装的是MariaDB,MariaDB是MySQL的一个分支,由社区开发维护,完全兼容MySQL。树莓派上直接sudo apt-get install mariadb-server 即可安装。由于和MySQL兼容,在windows上用MySQL Workbentch远程登录管理数据库会比较方便一点(注:想要远程登录MariaDB,User Accounts的`host`要改为'%',默认的localhost只能本地访问)。

树莓派python采集485设备数据 基于树莓派的数据采集_数据_03

  树莓派的系统里一般自带python(这里用的Python3),没有的话需要先装一下。Python用socket类可以访问底层操作系统Socket接口,从而实现简单网络通讯,另外还需要安装mysql-connector来连接操纵数据库,直接pip install mysql-connector即可。Pyhon脚本写了三个文件,Database.py用来创建数据库(主要按照自己的数据格式创建表格),Server.py用来接收数据并将数据上传到MariaDB,LogOutput.py将运行错误信息输出日志,方便出问题查看。

树莓派python采集485设备数据 基于树莓派的数据采集_树莓派_04

树莓派python采集485设备数据 基于树莓派的数据采集_树莓派python采集485设备数据_05

  以上两部分完成后就可以测试一下上传和存储的功能了,通过Workbentch可以看到实时上传的数据都是OK的。

树莓派python采集485设备数据 基于树莓派的数据采集_Splunk_06

  最后一步,用Splunk将数据可视化。 Splunk 是机器数据的引擎,具有强大的数据搜索分析能力,这里主要是使用了其中Search&Reporting中的DashBoards的可视化功能。

  首先要下载Splunk Enterprise,登录本地web界面(默认端口8000)。在Apps中安装Splunk DB Connect进行相应的配置,由于用的是Java数据库连接(JDBC),要有Java和对应数据库的驱动。配置好就可以创建访问数据库的Identity和Connection,进而通过Splunk接入我的MariaDB数据库。

树莓派python采集485设备数据 基于树莓派的数据采集_树莓派_07

   进入Search&Reporting的DashBoards可以创建仪表盘界面,通过点击Add Panel和And Input可以添加各种输入的控件和各种类型的图表,从而构建自己的UI,然后Source 中会有对应的可扩展标记语言(XML)的描述,可以在UI中设置对象的属性或者在Source 中直接编辑XML实现自己的功能。要实现数据的连接、搜索、过滤等功能需要熟悉Splunk的搜索处理语言(SPL),官方有专门的中文参考手册(https://docs.splunk.com/Documentation/Splunk/8.2.0/Translated/SimplifiedChinesemanuals)。

树莓派python采集485设备数据 基于树莓派的数据采集_树莓派python采集485设备数据_08

 

  总体的实现过程大概就是这样,只是初步实现了基本功能,还有很多要改进的地方哈,后面有空会继续补充。