基于微信小程序的液压抓斗物联云平台开发
2022-07-29冯保壮龚元明
冯保壮,龚元明
(上海工程技术大学 机械与汽车工程学院,上海 201620)
0 引言
随着物联网的发展,物联网云平台逐渐成为物联网技术开发的关键一环。由于大部分物联网云平台是结合Web 网页进行开发的、并运行于PC 端,因此开发一套能够直接应用于手机移动端的平台,将能给用户带来更大的便利。自微信平台推出微信小程序后,各主流的软件平台也都开发了专属的小程序。如今,小程序已被应用到各行各业,不仅具备了手机APP 的功能,而且还表现出所占内存小、不需要另外下载安装包等出色优点,这也给人们的使用带来极大的方便。
另据研究可知,液压抓斗的工作特点是连续性强、自动化水平高,结合数据采集和传输技术将状态信息及报警信息上传至云服务器。云服务器通过PC 端上位机软件对数据报文进行处理并存入数据库。微信小程序通过接口程序获取后台数据库信息,并显示在界面上。同时微信小程序还具有备件预约和服务咨询功能,还可与后台进行数据交互。该系统利用官方微信开发工具的MINA 框架开发前端微信小程序;利用SpringBoot 框架结合JPA 编写后端接口程序来操作数据库;利用.NET 框架编写服务器上位机软件,处理上传的报文数据,并在将其解析后存入SQL Server 数据库。
1 相关技术
1.1 Spring Boot 框架
Spring Boot框架是基于Spring4.0 的一个全新框架,能够简练开发过程,缩短开发周期,不仅其功能更加全面,性能上也更趋稳定。通过在项目目录pom 文件中添加依赖包的方式代替复杂的XML配置过程,再利用注解实现各种功能;在application文件中进行数据库地址、用户名、密码以及服务器端口配置;在发布部署时,直接打包为JAR 格式。如此一来,利用java -jar 项目名.jar 指令运行即可,不再需要在服务器上安装Tomact 环境。本文利用Spring Boot 框架编写微信小程序和数据库通信的接口文件,处理生成jar 包,运行在云服务器上,实现微信小程序对于数据库的增删改查功能。为了进一步简化程序,减少繁琐的SQL 语句编写,结合JPA 规范提供的API 接口,利用Hibernate 将Java 实体类对象与数据库表建立映射关系,通过操作实体类、进而操作数据库。在开发过程中,要符合实体类对象与数据库表格中字段的映射规则,保证两者命名相同。
1.2 MINA 框架
MINA 框架是微信开发者开发微信小程序所使用的框架,运行机制为“响应-绑定”,框架中包含微信小程序需要的API。MINA 框架主要包括视图层(View)和逻辑层(Service)。利用官方提供的WXML 和WXSS 语言进行视图层的程序编写,利用JavaScript 脚本语言进行逻辑层程序编写。WXML可利用各种组件搭建页面结构,采用flex 盒子布局的格式,使页面结构更加有条理。WXSS 主要用于描述WXML 的样式,使界面呈现效果更加贴合项目要求。JavaScript 用于逻辑功能的实现,以及与接口文件的数据交互。通过微信开发文档提供的wx.request 接口发送HTTPS 请求,接收json 格式的返回数据。此外,还用到了wx.downloadFile 和wx.uploadFile 接口,配合在服务器上搭建HTTP 网页服务,实现文件下载与上传功能。因为微信小程序在发布后只支持HTTPS 协议,所以在填写这些接口的开发者服务器地址(url)时,需要使用https 的地址。
2 系统设计与实现
系统整体架构如图1 所示。通过在液压抓斗终端设备上安装GPRS/4G 模块,实现入网功能,底层支持TCP/IP 协议,可以与服务器相连接,上传报文数据至服务器端口;上位机软件监听该端口,并根据通信协议对报文的每一位进行解析,将解析后的数据存入数据库。微信小程序发送获取数据的请求,接口文件收到请求后,根据请求要求操作数据库数据,并将数据返回给微信小程序,微信消息程序对这些数据进行加载并显示出来。
图1 系统整体架构Fig.1 Overall architecture diagram of the system
2.1 上位机软件设计
服务器端软件采用C#开发的Windows 窗体应用程序,其主要功能是接收终端设备上传的数据包,并根据自定义的数据包协议对数据包进行解析,并存入数据库中。程序运行后,首先在IP 地址和端口输入框中输入本机IP 和软件使用端口,点击启动服务按钮;根据输入的IP 和端口创建网络节点对象,并创建服务器对象;配置服务端与客户端建立连接时的处理函数、客户端断开连接时的处理函数,以及接收到客户端数据时的处理函数等,最后开启服务。
当有现场终端建立连接时,存储该终端的信息,以便于微信小程序查询现场终端信息,为数据查询显示做准备。当接收到现场设备的监测数据时,将数据格式进行解析,并从数据库中查询是否存在相应ID 的数据。若未查询到,则将新数据插入到数据库,否则选择更新对应数据。上位机软件操作及程序运行流程如图2 所示。
图2 操作及程序流程图Fig.2 Flow chart of operations and the procedure
2.2 数据库设计
MySQL 数据库是一款小型数据库,具有运行速度快、维护成本低,以及代码开源等特点。在设计数据库表格时,尽量减少数据表的数量,减少关联查询。数据库主要存放用户注册信息、错误记录信息、设备数据表等,此外还需另行设计一张关联表格,用于不同公司查询不同的设备。其中,错误记录表主要记录设备发生故障时上传的报警信息;设备数据表中存储设备实时上传的各种传感器数据,每接收一条新的数据,就会覆盖先前存储的数据。所以在查询数据表时,每次获取的都是最新数据。设备数据表结构见表1。
表1 设备数据表结构Tab.1 Devices data table structure
用户注册表(tbRegister)中主要存放用户注册微信小程序时填写的注册信息,以及微信的资料信息,见表2。表2 中,为确定微信用户的唯一标识。通过该字段存储的信息区别用户,判断用户是否注册过,防止重复注册,在获取时需要用户授权才能发送到数据库中。
表2 用户注册表结构Tab.2 Users registry structure
2.3 小程序设计
微信小程序作为与用户交互的界面不仅要实现各种功能,同时需要良好的界面设计,方便用户操作。针对项目要求,主要设计了我的设备、备件预约、服务咨询以及智能设备四个版块。其中,智能设备界面用于显示智能设备的数据信息,对应数据库中tbSHP 表格。在注册小程序填写信息时,会将注册的公司名称存入缓存中,每次点击智能设备时会向服务器发送公司名称,对数据库表格进行关联查询,最终获取公司所包含的设备信息。用户成功登录后,自动跳转至设备信息显示界面,界面中包括设备ID、制造号、型号、状态、量程和自重等。用户可以观察到各个设备的使用状况,从而选择所要测试的设备。
用户选择设备详细信息后,则跳转至实时数据显示界面,显示现场终端设备的测试数据、并实时更新。设备详细信息如图3 所示。当现场终端设备测得的数据超出设置临界值时(如超重、回油压力过大、液压油温过高、电机温度过高等),则视为出现故障。
图3 设备详细信息Fig.3 Devices details
3 系统测试
在完成整个系统的设计开发工作后,对各功能实现进行测试。首先搭建测试环境,设备终端将采集的3 台设备的数据发送至服务器,使用电脑登录服务器后打开上位机软件显示数据接收和解析情况,微信小程序发布后使用手机注册登录、打开设备详细信息界面。观察对比并记录设备终端、服务器、微信小程序的数据显示情况,当现场设备的传输速率大于每帧500 ms 时,微信小程序和设备终端显示单元的数据完全一致,没有数据遗漏现象,也没有明显网络延迟;当传输速率在每帧300 ms 至每帧500 ms时,微信小程序会有部分数据遗漏,正确显示的数据比重在80%~90%之间;当传输速率在每帧200 ms 至每帧300 ms 时,正确显示的数据所占比重为50%以上。对于液压抓斗设备来讲,每帧500 ms的数据发送间隔完全可以满足数据监测功能的要求。
通过反复测试,结果证明该物联云平台的设计实现了最初的设计目标。设备终端显示控制单元、云端服务器程序以及微信小程序实时数据监测对比如图4 所示。
图4 监测对比图Fig.4 Monitoring comparison diagram
4 结束语
本次开发设计的远程监测系统,实现了远程数据查询、远程抓斗状态报警的功能,助力垃圾填料设备在物联网时代的应用和拓展。该系统可实现抓斗状态全面监测,随时掌控抓斗工作历史装货量、抓斗实时工作状态以及抓斗液压系统状态参数。微信小程序移动客户端可进行全天候在线监测,同时支持多设备同时在线监测。一旦抓斗出现故障可以及时发现抓斗故障所在,减少故障处理时间,提高垃圾处理运行效率。该系统可实现近程无线遥控,也改善了现场观察和控制技术人员的工作环境,使得垃圾处理更加智能、高效。