物联网网关实时双向通信模块化设计

vagoo2021年5月计算机工程与设计May2021第42卷第5期COMPUTER ENGINEERING AND DESIGN Vol.42No5
物联网网关实时双向通信模块化设计
陈文艺】,高婧2+,杨辉1
(1.西安邮电大学现代邮政学院,陕西西安710061;
2.西安邮电大学通信与信息工程学院,陕西西安710121)
摘要:针对物联网系统数据的传输问题,以Node.js为运行平台、采用Socket.IO通信机制和Redis数据库缓存技术实现网关与云平台之间的实时数据传输的双向通信系统。对网关进行功能模块划分,实现网关与平台之间关于底层设备认证、设备数据传输以及设备心跳的交互过程。对于系统进行功能及性能测试,实验结果表明,采用Socket.IO双向通信技术可以实现物联网网关物理模型与物联网云平台虚拟模型的同步更新,有效提高系统的数据传输效率。
关键词:物联网网关;资源平台;实时双向通信;Socket.IO协议;功能模块
中图法分类号:TP311文献标识号:A文章编号:1000-7024(2021)05-1215-07
doi:10.16208/j.issnl000-702-l.2021.05.003
Modular design of real-time two-way communication for IoT gateway
CHEN Wen-y1,GAO Jin g2+,YANG Hui1
(1.School of Modern Post,Xi'n University of Posts and Telecommunications,Xi'n710061,China;
2.School of Communicaion and Information Engineering,Xian University of Posts and
Telecommunications,Xi'n710121,China)
Abstract:Aiming a the problem of data transmission of the Internet of Things system,a two-way communication system that used Node,js as the operating platform,and used Socket.IO communication mechanism and Redis database cache technology to realize real-time data transmission between the gateway and the cloud platform was proposed.The functional modules of the gateway were divided to realize the interaction process between the gateway and the platform in terms of the underlying device authentication,device data transmission,and device heartbeat.The system was tested for function and performance.Experi­mental results show that the Socket.IO two-way communication technology can be used to synchronize the physical model of the IoT gateway a
nd the IoT cloud platform virtual model,effectively improving the data transmission efficiency of the system. Keywords:IoT gateway;resource platform;real-time two-way communication;Socket.IO protocol;function module
0引言
基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络就是物联网(internet of things,IOT)L1,2J…文献[3]提岀了物联网系统中网关的作用。在物联网通信协议的选择中,HTTP 协议采用“请求-应答”的方式实现通信,优点是方便、敏捷且易于扩展,缺点是无法实现数据的实时双向传输4。在文献[]中提到的MQTT是一种构建于TCP/IP上的基于发布/订阅(publish./subscribe)模式的"轻量级”通讯协议,它的有优点是开源、简单和实现方便6,缺点是功耗很高,且缺乏加密机制。
为了实现物联网网关和云平台的实时双向通信,提高传输效率,本文采用在设计好的开放性的物联网平台上,以Node.js服务器为运行平台,利用Redis数据库快速存取技术7,设计基于Socket IO通信协议的物联网网关和资源平台实时双向通信系统8的模块化处理。与传统物联网通信协议相比之下,Socket IO的优点是只需要在客户端与 服务器之间进行一次握手,便可快速建立Socket双向通道,可以实现数据的实时双向传送,有效节约宽带资源,从而 提高系统对数据模型的实时更新效率,保证系统的稳定性和可靠性。
收稿日期:2020-02-18;修订日期:2021-03-10
作者简介:陈文艺(1964-),男,重庆人,博士,教授,研究方向为物联网与大数据处理;+通讯作者:高婧(1995-),女,陕西渭南人,硕士研究生,研究方向为物联网技术及应用;杨辉(1988-),男,陕西西安人,硕士,助理工程师,研究方向为物联网大数据研究及应用。E-mail:*****************
・1216・计算机工程与设计2021年
1物联网开放平台与网关
物联网系统从上至下分别为web前端界面、物联网云平台、物联网网关和传感设备。通过构建物联网系统架构、云平台以及网关,实现物联网系统的实时双向通信传输。1.1物联网系统架构
为方便底层传感设备数据安全、稳定、高效传输及存储,建立物联网系统架构,如图1所示。
图1物联网系统架构
物联网系统架构主要由底层设备、物联网网关、物联网云平台以及浏览器组成。物联网系统使用基于平台+网关的开放设备体系,完成对底层传感设备数据的接入、处理以及传输操作,最终通过前端以界面形式展现给PC端用户或者移动端用户。
1.2物联网云平台
云平台采用统一的资源描述和面向资源的架构(ROA),利用异步非阻塞特性,在长连接、多请求的环境下优势非常明显[]。利用Node.js语言高效的数据事件引擎、高并发的处理机制特点[0],来完成云平台的设计与实现。物联网云平台架构如图2所示。
用户web服务器<----->物联网资源服务器
图2物联网云平台架构
为了完成对底层设备数据的实时传输和拥有更高效率的处理机制,解决了HTTP协议不具有实时性和MQTT 协议只能在处理器和内存资源有限制的硬件设备中运行的缺点,因此本文采用基于Socket.IO通信协议的实时双向传输机制,对云平台进行模块划分,可以更快速和高效完成对底层设备数据的处理与应用。
将云平台划分为机器服务器、资源服务器、事件服务器和用户服务器4部分。其中用户web服务器用来实现平台与web端的交互,物联网资源服务器则用来完成平台数据的增删改查、平台事件的检测和事件操作任务分发,物联网事件服务器则用来维护事件和操作处理队列,实时处 理事件,通过在机器服务器中构建Socket.IO服务器端来完成平台与网关的数据实时双向传输。设备成功接入以后在网关对设
备数据进行解析和处理,将设备的数据通过物联网网关传输到云平台,完成设备与平台之间的数据传输过程,让平台对设备的操作变得更加简单和方便,工作量得以减少,拥有较高的工作效率。
1.3物联网网关
物联网网关作为连接云平台和底层设备的桥梁,完成对底层设备的认证、数据上传、数据更新等管理与应用。为了实现网关对设备的协议的转换、管理与广泛接入,因此我们对网关进行分层架构和系统模块设计。
1.3.1构建网关分层架构
在网关分层架构中,可将其分为由平台通信层和数据模型管理同步层组成的网关内部模块,由协议适配层和感知接口层组成的设备接入模块两部分组成,并且在两个模块之间采用TCP进行通信,来实现设备的接入认证,设备的管理以及设备数据的协议转化。网关分层架构如图3所示。
刷毛辊入
图3网关分层架构
图3中,物联网网关分层架构主要由感知接口层、协议适配层、数据模型同步与处理层以及平台通信
层组成其中通过在平台通信层构建Socket.IO客户端,以及在机器服务器中构建服务器端,来完成物联网平台双向通信系统的实现;数据模型同步与处理层用来实现平台数据下发以及设备数据上传的过程,实现平台模型与网关模型的同步更新;
协议适配层来完成设备数据模型与实际设备间的
第42卷第5期
陈文艺,高婧,杨辉:物联网网关实时双向通信模块化设计・1217・
数据转换,实现物联网平台对各类设备的接入;感知接口
层实现设备的接入驱动程序,对于大多数通用设备,提供 通用适配程序;开发程序来连接非标设备。
修鞋技术1. 3. 2构建网关系统
网关系统的功能是完成底层传感设备数据的获取和存
储、在原有基础上加快事件处理速度、减缓云平台的压力,
实现物联网网关对底层传感设备的应用和管理。网关系统
模块如图4所示。
图5机器服务器模块
设备通信模块
TCP  client
图4网关系统模块
-----------T ----------
Socket.IO
通信模块
<—►网关和 设备管 理与事
件处理 模块
<—►设备通信模块
TCP  server
网关和设备 模型<—►网关心跳、加
密处理等模块
图4中,网关系统模块由Socket. IO 通信模块、网关和 设备模型模块、网关和设备管理与事件处理模块、设备通信
模块以及网关心跳、加密处理模块5部分组成。Socket. IO  通信模块功能是实现物联网平台和网关的实时双向通信,
完成设备的接入等一系列操作;网关和设备模型模块功能
是在网关上电后自动与平台通信,按平台注册数据模型创 建网关和设备物理模型,并维持与平台实时同步更新;网 关和设备管理与事件处理模块功能是完成对网关和设备的
状态管理、 网关的配置管理和设备的位置及操作管理, 同
时实现对网关设备模型事件处理模块和事件监测模块的处 理;设备通信模块功能是通过TCP 通信来实现底层设备的
接入, 完成传感设备数据和物理网关设备模型数据的转换;
网关心跳管理模块功能是需要定时上传心跳消息到机器服 务器,否则机器服务器认为网关关机,并上传状态到平台
数据库;加密处理模块功能是采用MD5加密方式对网关接
入认证时分配的userKey 和网关ID 进行认证授权网关。
2网关平台双向通信系统
通过构建机器服务器、物联网双向通信系统以及物联 网网关分模块设计,实现物联网系统双向通信传输。
2.1机器服务器设计
在物联网资源平台内部构建机器服务器,用来实现网
关设备的接入、身份验证以及模型同步。机器服务器模块 如图5所示。
图5中,机器服务器模块主要由Redis 消息队列模块、 消息处理模块、接口模块和Socket. IO 服务器模块构成。
Redis 消息队列可以缓存数据,解决数据高并发情况,
Socket  IO 服务器端与Socket. IO 客户端进行数据的实时双
向交互;消息处理模块来实现对消息的解析、处理和分发;
接口模块用来实现数据的交互和缓存读取的作用。
通过在物联网平台机器服务器中建立Socket. IO 服务 器和网关中建立Socket. IO 客户端,来完成平台
与网关的 双向实时通信,并完成网关设备的认证、网关设备数据的 上传与更新和网关/设备的心跳传输。在完成网关设备的认 证接入后,从物联网资源平台读取已注册好的模型,完成
网关设备模型的同步更新。
2. 2双向通信系统设计
Socket. IO 是Node, js 平台下基于WebSocket 协议的实
时通信模块,它由客户端的JavaScript 和服务端的Node, js
组成[1」。其通信方式和传统的HTTP 协议不同之处在于, 客户端和服务端之间只需要进行一次握手过程,之后便建
立快速的Socket 双向通道,在原理上有效地节约了服务端 宽带资源,且提高系统传输效率。
在物联网系统中,基于Socket. IO 双向通信协议完成
物联网网关和云平台的数据传输,其中包括底层传感设备 的接入认证、数据和心跳消息传输。设备认证过程主要实
现底层设备的安全接入,保证系统的安全性,并返回相应 的数据模型到网关侧;数据传输过程不仅实现设备数据的 有效收集并将其存入系统数据库中,同时也可根据平台侧微型振动马达
需求完成数据模型的同步更新与修改,最后需要定时上传 设备心 跳 消 息, 保 证 设 备 保 持 在 线 状 态, 同 时 发 送 给
云平台。
苹果削皮机2.3网关模块化设计
根据需求的不同,完成网关的功能模块划分,对划分 好的模块进行封装管理与开发,且各模块之间不存在耦合, 方便后续的软件程序化设计。网关模块化设计如图6所示。
如图6所示,针对本系统,网关主要完成3部分操作: 一是网关设备认证模块,当有底层设备接入时,网关发送 认证请求到平台端,认证成功,返回物理网关数据模型;
二是数据上传与指令下发模块,底层传感设备可以实现将 数据实时上传到平台并且存入系统的数据库中 , 与此同时,
完成平台模拟数据类型和设备数据数据类型的同步,平台 可以将更新好的数据模型下发到网关中;三是网关设备心
跳的管理模块,
定时发送网关和设备的心跳消息到机器服
・1218・计算机工程与设计2021年
平台
T Socket.IO |设备2.3.2数据上传与下发模块
(1)设备数据上传
设备需与平台建立连接来完成设备数据的实时传输,及设备认证成功后平台与设备数据模型的同步更新。底层设备数据经由TCP协议传送至网关端,实现数据模型的同步更新过程,每当平台注册的虚拟数据模型发生更改时,对应的物理数据模型也必须更改,完成设备实时数据与状态更新数据与定义好数据模型的同步转换。数据上传流程如图8所示。
图6网关模块化设计
务器中,长时间断开会被认为处于关机状态,同时还需上传状态到数据库中,完成网关和设备的心跳管理过程。
2.3.1设备认证模块
设备首次接入时,需经两次认证,完成系统对底层设备的权限认证管理,其目的是确保设备接入合理及整个系统的安全,认证流程如图7所示。
返回认
证失败
图7设备注册认证流程
图7中,底层传感设备接入注册时,网关端需发送认证请求数据包到平台端,平台端通过建立端口监听来自网关端发送的数据。初次注册认证时,网关端发送不携带userKey的数据包到平台端,平台端接收数据包并进行解析,判断数据包中userKey是否为空,如果为空则生成认证随机数,并存入Redis数据库中,对网关userKey和生成的认证随机数通过MD5方式进行加密,得到加密后的user Key。反之,则根据网关ID从数据库中读取已经生成好的认证随机数,并按照上述加密方式完成加密流程。对上述加密内容进行解密工作,若解密后的userKey与二次认证请求时的userKey—致,则说明认证成功,返回认证成功标识和数据模型到网关端,否则返回认证失败,结束流程。
图8设备数据上传流程
图8中,设备数据上传前,首先完成流程初始化工作。网关客户端监听来自底层设备上传的数据,并对数据类型做出判断和处理。若监听到的为设备认证消息,则通过设备认证流程完成设备认证,并返回平台中的网关设备模型若监听到的为设备数据更新消息,则需通过数据上传流程同步更新数据至平台端,完成底层设备数据的实时更新过程;若监听到的为设备心跳消息,需定时上传网关和设备的心跳消息到机器服务器中,判断二者是否关机,并上传网关和设备状态到平台数据库中。
(2)平台数据下发
在平台端构造JSON格式设备控制指令,经网关下发指令消息到具体设备,实现对底层设备的操作,操作流程如图9所示。
图9中,当平台需要对设备进行操作时,进行初始化,对于平台下发的JSON消息数据进行监听,对于接收到的消息类型进行判断和对应处理,并通过Socket.IO协议由平台下发给网关。若监听到的为指令消息,则通过网关下发给具体的底层传感设备,对其进行具体的操作;若监听到的为模型消息,平台端则会返回认证完成时相应的设备模型和网关模型到网关中,至此,平台数据下发过程结束。
2.3.3心跳消息模块
系统建立连接后,设置网关心跳间隔为30s,主要包含两方面作用:一是验证设备、
网关与平台之间的是否保
第42卷第5期陈文艺,高婧,杨辉:物联网网关实时双向通信模块化设计・1219・
图9数据下发
持连接;二是确保网关保持在线,完成数据有序传输,心跳消息上传如图10所示。
图10设备心跳上传
图10中,设备需要定时通过TCP通信协议向网关发送相应的心跳消息,用以确定设备是否与网关之间保持联系,同时需要网关通过Socket.IO通信协议将设备的心跳消息定时发送给平台,用来判断设备与平台之间的联系,并将设备的实时状态上传到平台数据库中。
2.4网关平台实时双向通信系统模块化实现
采用Socket.IO双向通信机制和Redis数据库的数据缓存功能来完成物联网网关实时双向通信模块化设计的实现。
2.4.1Socket.IO双向通信机制
Socket.IO实现了实时、双向的通信机制,它解决了实 时的通讯问题,并统一了服务器与客户端的编程方式,启动了socket以后,就像建立了一条客户端与服务端的管道,两边可以互通有无[2]。其连接流程包括:服务器端启动一个socket服务,监听'connection,事件;客户端创建一个Websocket,并连接服务器端的socket,并绑定接收socket 事件的方法;客户成功接入后,服务器端socket就可以向客户端发消息了。socket通讯可以简单的理解为一个真正意义上的长链接,不主动断开的话该通道一直存在,并且 通道的两端可以互相喊话。
物联网网关与云平台之间采用基于Websocket协议的Socket.IO机制进行双向通信,其中Socket.IO消息机制如图11所示。
图11中,通过Socket.IO双向通信消息机制实现物联
图11Socket.IO消息机制图解
网关客
网关服
户端务器
<(u消息名称",消息内容)
网网关与云平台之间的数据传输。Socket.IO双向通信流程为:网关服务器被创建成功,然后设置相应的端口号和IP 参数,网关客户端便根据访问设置好的IP参数和端口号来完成与服务器的连接;当需要对底层传感设备进行认证、数据更新以及网关/设备定时心跳上传时,通过图11的Socket.IO消息机制,利用socket,meit(“消息名称",json 格式消息内容)方式将数据传输到资源平台,同时也可实现服务器将数据推送给客户端,并且通过socket,on(“消息名称”,json格式消息内容)方式来监听数据是否成功被接收,来完成物联网网关与资源平台的双向通信。
2.4.2Redis数据库
Redis是基于key-value的一种NoSql数据库,广泛应用于分布式的应用中,一般用于放置缓存数据[3]。通过对 key做一致性哈希,实现key对应Redis结点的分布,Redis 支持异步将内存中的数据写到硬盘上,同时不影响继续服务。为了确保一定的运行效率,它的数据暂存在内存中,因此支持对复杂数据结构的高速操作。在云平台中Socket.IO 服务器跟数据库Redis相连,用来完成对于设备数据的缓存存储,当数据类型比较多、数据量较大或者出现高并发情况时,将数据暂存到Redis缓存队列中,提高系统的效率,减少内存占用。缓存的数据有首次认证时服务端产生的认证随机数、每个成功连接且在线的网关Socket.ID号、网关/设备状态和网关/设备心跳时的超时时间。
3测试
对整个系统完成功能测试和性能测试来验证系统的可行性,其中硬件设备包括温湿度传感器/摄像机(DM365)、曙光Sugon服务器和PC机一台。性能测试采用Jmeter软件测试整个双向通信系统相关参数等。
3.1功能测试
设计相关测试用例对物联网网关通信各个模块进行具体测试,该测试的具体功能有:设备认证、设备数据上传和状态更新、平台指令数据下发和平台模型数据下发、网关/设备心跳。
(1)设备认证
当有底层设备需要接入物联网平台时,需要对于底层设备进行认证,认证成功后平台返回网关/设备数据模型。设备认证服务器端数据和客户端数据图传输图如图12、图13所示。
(2)图片数据上传
当底层设备为摄像机时,
杀螺剂需要将采集到的图片发送至

本文发布于:2024-09-22 17:20:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/106452.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设备   网关   平台   数据   认证
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议