赵佩凡 李涛 季云峰
【摘 要】为了实现物联网系统硬件层和应用层的稳定的通信,论文基于TCP/IP协议,使用JAVA语言设计了一种用于物联网系统的网络层信息交互系统,本系统由TCP服务器、数据库服务器和应用服务器三部分组成,数据库服务器中的数据表和命令表作为硬件层和应用层都可以看见的“公告板”,TCP服务器连接硬件层和数据库服务器,应用服务器连接应用层和数据库服务器。
【Abstract】In order to realize the stable communication between the hardware layer and the application layer of the internet of things system, this paper designs a network layer information interaction system based on TCP / IP protocol and Java language. The system is composed of TCP server, database server and application server. The data table and command table in the database server can be seen as hardware layer and application layer. The TCP server connects the hardware layer and the database server, and the application server connects the application layer and the database server.
【关键词】物联网系统; TCP/IP协议; 信息交互
【Keywords】internet of things system; TCP / IP protocol; information interaction
【中图分类号】TP393.08 【文献标志码】A 【文章编号】1673-1069(2020)08-0164-02
1 引言
随着5G时代的到来,物联网设备的接入量日益增长,一个完整的物联网系统可以分为硬件层、网络层和应用层三个部分,其中硬件层包含传感器、执行器和网关设备等,应用层则是一些与用户直接交互的软件如WEB、PC软件、小程序,网络层用于处理硬件层和应用层之间的信息交互问题,接下来要介绍的系统作用在网络层,它实现了硬件层网关设备与应用层之间进行信息交互,并且能够对相关数据进行持久化。
2 系统框架设计
2.1 整体设计
目前用于物联网信息交互的协议主要有TCP、UDP协议和MQTT协议,TCP和UDP是传输层协议,用它们直接作为网络层协议使用较为烦琐,而MQTT协议是物联网通信协议的标准,它基于消息发布/订阅范式的消息协议,工作在TCP/IP协议族上,是为性能低下的远程设备及网络状况糟糕的情况下所设计的消息协议。本系统借鉴了MQTT协议的发布订阅模式,最终使用Java语言并借助MySQL数据库进行实现。
系统的框架如图1所示,它主要通过数据库中的数据表和命令表去同步硬件层和应用层的数据。硬件层和应用层可以通过TCP服务器和应用服务器实现对数据库的间接访问,系统通过云端的数据库实现信息交互。系统体量很小使用起来比较灵活,因为是原生系统框架所以用户可以根据项目的需求添加功能模块;它的稳定性很高,可以保证应用层的命令准确下达到测控层;它的包容性很强,可以支持多种应用方式接入;它的扩展性很高,可以支持外部插件接入。
以下将介绍系统主要模块功能以及模块之间的关系与数据流向。当硬件层网关发起TCP连接时,TCP服务器会获取它的socket,并打開一个连接处理线程用来处理本次TCP连接,该线程中包含数据处理和命令处理两个部分,数据处理部分是对NB-IoT上传的传感器数据按照规定的协议进行解析,并通过数据处理线程将数据存入数据库的数据表中,命令处理部分用来读取数据库命令表中是否有未执行的命令,如果有则将命令下达给硬件层网关设备,并在数据库中将该数据标记为已执行。一次连接处理完成后,TCP服务器将会主动关闭本次连接。接下来,应用程序可以通过应用服务器和数据库进行交互,应用服务器可以通过DAO层中的类去访问数据库中的数据表和命令表,实现获取NB-IoT上传的数据和下达应用层指令的功能。
2.2 系统各模块介绍
TCP服务器,系统使用JAVA语言设计并实现了TCP服务器,即“通过TCP短连接模式实现数据存储与命令下发的TCP服务器”。服务器使用Java.net.ServerSocket类占用作为TCPServer的端口,当有客户端发起连接,服务器会获取其Socket并通过该Socket的两组“输入输出流”实现双向通信。
应用服务器,经过TCP服务器后,数据已存在于MySQL数据库中。现在应用程序想要直接获取这些数据依旧有道门槛,即如何与数据库建立连接并获得其中的数据。要越过这道门槛,系统需要一个让应用和数据库建立连接的中间部分,系统中在这个部分使用JAVA+HTTP搭建应用服务器,以期实现获取数据库数据并开放供外部应用接入的接口。应用服务器使用Spring MVC架构由DAO层、Services层和Servlets层组成,分别负责数据库交互、服务逻辑处理、应用层交互。
WEB应用,WEB页面采用BootStrap框架简化开发流程,使用HTML、JavaScript、CSS、JQuery进行代码编写,应用实现设备控制和数据展示这两个主要功能模块。当有客户端访问WEB页面后,数据展示模块会首先被加载,数据展示模块通过CharJS插件在页面中画出图表,之后通过应用会定时触发JavaScript中的DrawChart方法实现实时更新折线图数据。设备控制通过按键触发JQuery插件中的Ajax方法实现。
3 系统实际应用
将本系统作为智慧池塘系统的网络通信层核心构建一个基于NB-IoT的池塘水质云测控系统,智慧池塘系统框架如图2所示,该框架分为硬件层、网络通信层、应用层三个部分,本文的物联网网络层信息交互系统作用在网络通信层,作为硬件层和应用层交互的中间媒介。
如表1所示,是系统硬件层上传的一些数据,其中每条记录包含四个字段,它们分别是数据ID、传感器信息编号、数据值、数据产生时刻,数据ID是每条记录的唯一标识,它用来唯一确定一条数据,在系统的实现中,使用数据ID来查找最新存入的数据。传感器信息编号绑定一个传感器,编号与实际传感器的对应关系存储在另外一张表中,通过数字代替原有名称存储,能够节省可观的存储空间。数据值字段存储的是硬件层传感器上传的真实数据。
在智慧鱼塘系统的监控页面中,使用ChartJS绘制图表,并且可以通过ajax实时请求并刷新显示数据。监控页面中有水体PH、TDS和温度三项数据的折线图,它们的纵坐标是数据值大小,横坐标表示的是数据产生时间,实际测试结果表明本系统能够稳定地工作在智慧池塘系统的网络通信层,并且实现其信息交互和数据持久化的功能。
【参考文献】
【1】安东,石学文,杜勇.基于NB-IoT的智慧鱼塘管理系统的设计[J].电子技术,2018,047(012):63-66.
【2】郑戟明,董云朝,肖宇.MySQL数据库课程的设计[J].电脑知识与技术(学术版),2020(3):21-22.
【3】吴军,黄寅,王金和.物联网系统实时数据与关系数据交互的技术研究与应用[J].中国管理信息化,2020(1):55.
【4】张顺锋,温宗周,田强明.智慧大棚控制系统设计[J].微处理机,2020(1):48-51.
【5】羅亚非.基于TCP的Socket多线程通信[J].电脑知识与技术(学术交流),2009(05):13.
【6】姜妮,张宇,赵志军.基于MQTT物联网消息推送系统[C]//中国科学院声学研究所纪念建所50周年暨学术交流会,2014.
【7】郭冰.基于MySQL数据库的索引优化研究[J].信息与电脑(理论版),2019(09):12.
【8】徐明,柴志雷.基于TCP/IP套接口的嵌入式Web服务器实现[J].江苏科技大学学报(自然科学版),2001,15(05):40-43.
【9】宋海峰.让“智慧”与农业“连线”[J].江西农业,2015(05):1-1.
【作者简介】赵佩凡(1999-),男,江苏淮安人,从事物联网应用技术研究。