王风硕,曾丽
(成都锦城学院计算机与软件学院,四川成都 610000)
随着物联网技术的不断发展,万物互联在不断改变着人们的生活,越来越多的感知设备连接到互联网上,形成了庞大的物联网[1]。基于物联网构建的应用系统可以有效地替代传统人工成本高、高风险、高危害并需要进行现场监控和控制的场景。而如何管理物联网设备、如何管理物联网数据、如何快速提供稳定的应用服务是当前物联网及应用需要解决的核心问题,物联网平台就是为了满足这些需求而产生的[2]。现有的物联网平台大多是针对特定场景进行开发,开发周期长,适配性和稳定性等方面略显不足。本文结合Web2.0 的最新发展技术,研究并设计实现了基于MQTT 协议的物联网平台,和传统的物联网平台相比具有如下特点。
1)平台采用前后端分离的分布式架构,便于平台服务器资源水平扩展。
2)平台采用基于拓扑结构的组态化设计,方便根据场景快速设计并实现一套物联网应用或服务。
3)兼容主流无线通信技术,统一数据传输格式,基于MQTT协议实现平台和多端进行通信[3]。
4)构建统一的接口管理平台,基于RESTful 标准对外提供接口认证及接口调用服务,方便三方应用系统的接入。
MQTT(Message Queuing Telemetry Transport) 是一种基于发布-订阅模式的“轻量级”消息协议,它由IBM公司在1999年开发并发布,并广泛用在物联网、工业互联网等场景,进行低开销、窄带宽、低延时的消息通信[4]。其基本设计理念是开放性、简单性、轻量性和易于性。主要用于连接大量的远端传感器和执行设备,保证在低带宽和不可靠的通信环境下,应用程序端可采用MQTT 协议,在占用较少硬件资源的设备上保持稳定的消息通信。
客户端连接到代理服务器:MQTT 协议是使用代理服务器方式来处理通信消息的发布和订阅。MQTT客户端需要连接到MQTT 代理服务器之后才能进行消息通信。
发布消息:当一个MQTT 客户端需要发布一个消息时,它仅需将消息发送给MQTT 代理服务器的主题。代理再将消息发送给所有已订阅该主题的客户端。在这个过消息通信程中,MQTT协议使用发布-订阅模型,即一个消息被发布到一个或多个主题之上,而订阅该主题的客户端都可以接收到该消息。
订阅主题:当一个客户端已连接到MQTT 代理服务器,并订阅了对应指定的主题。当该客户端收到来自代理服务器的新消息时,它将接收代理发送的新消息,即已订阅的主题消息。
断开连接:当客户端已不再需要与MQTT 代理服务器进行通信时,它可以主动断开与MQTT 代理服务器的连接。断开连接后,客户端无法再向MQTT 代理服务器发送消息,但仍然可以从MQTT 代理服务器接收消息。
轻量级:MQTT 协议包含协议头信息和消息体信息,协议头信息共包含协议的版本号和消息类型,消息体可以为空,也可包含一个消息主题及消息内容[5]。MQTT协议本身比较简单、轻量级,比较适合资源有限的设备、传感器、执行器、移动设备等。
易用性:MQTT 协议采用客户端/服务器模式,通信过程是基于完全松耦合的通信方式,所以客户端在发布和订阅主题时,就不需要知道消息主题的发布方或订阅方的详细信息。这就使MQTT 协议非常适合用在主流的分布式系统中。
扩展性:MQTT 协议还支持多种扩展,如SSL/TLS协议扩展、QoS 多等级服务质量、盲订阅等,这些扩展保证了MQTT协议可以适配更多的应用场景。
可靠性高:MQTT协议还支持QoS等级为1和2的服务质量,QoS 等级为2 的MQTT 消息在传输中会得到更高的可靠性保证,在保证传输速度的基础之上也保证了消息的可靠性。
使用场景:得益于MQTT 协议的轻量级及较小的协议头,它非常适合低功耗和传统电池供电的设备使用。这类设备通常不需要实时通信,就可以将节省下更多的资源用于数据处理等重要环节,当然也可以根据具体场景选择QoS[6]。
MQTT协议提供了三个Level的服务质量(QoS):
QoS 0(等级0):发布的消息最多一次交付,无需进行发布确认,不保证成功。
QoS 1(等级1):发布的消息至少一次交付,并且需要发布确认,可能会多传。
QoS 2(等级2):发布的消息只有一次交付,并且需要发布确认,保证只传送一次,需要多次握手保证只传送一次消息,开销较大。
本平台采用MQTT 作为物联网通信协议标准,采用了分层的体系架构,从上到下分为应用层、管理层、集成层、网关层,感知层,体系架构如图1所示。应用层主要用来对接入平台的应用、项目的设备进行数据展示和交互,结合管理层对设备进行管理。集成层主要集成管理层、网关层以及三方的数据,进行数据的解析,并结合定制的业务场景对外提供标准的RESTful接口。网关层负责整合感知层的感知器和执行器,对常见的无线通信技术提供支持。另平台涉及的应用服务器和中间件都部署在云服务商的ECS 之上,方便应对后期业务的水平扩展。
图1 物联网平台体系架构
整个物联网平台主要分为管理平台和智能网关两个接入端,涉及以下的业务模块,如图2所示。
图2 物联网平台业务模块
场景管理模块:主要用来创建物联网场景,涉及场景名称、描述、图标、背景图片等。
设备注册模块:该模块主要用来注册物联网设备。在该模块维护设备的基本信息,并生成设备全球唯一的UUID 信息,该UUID 会贯穿设备整个生命周期,从通信模块一直到数据的可视化及控制指令的下达。UUID 一共八位16 进制组成,UUID 组成规则如下:大类、设备类型编号、组织ID、序列号。如一个光敏传感器的UUID为04010301。
系统管理模块:该模块主要用来管理系统菜单、角色、用户、权限、网关端口、资源路径、热更新地址等。
项目管理模块:该模块主要用来管理物联网项目,通过该模块可以灵活根据物联网场景创建项目,并进行设备管理,组态化设计等,并通过状态管理实现对该项目的全流程跟踪。
接口管理模块:该模块主要用来管理系统对外的所有API,需要进行注册及授权才能使用API,以便第三方应用和服务的安全接入。
数据解析模块:该模块主要负责解析组态设计的规则数据和设备通过通信模块传送的传感数据,解析之后,缓存到智能网关的存储系统。
通信模块:该模块主要用来监听硬件网关的TCP连接,实现传感数据的接收及发送到数据解析模块,并把控制指令转发给硬件网关。
联机调试模块:该模块主要用来进行软硬件的联机调试,当设备连接并上电后,通过点击调试按钮向硬件网关发送调试指令,通信模块接收到联通指令代表该设备联调通过。
数据同步模块:该模块主要用来实现从云端下载项目数据和配置数据。并把解析后的传感数据通过MQTT协议上传到云端。
平台的业务流程如图3所示,平台分为两个角色,管理员和业务用户。管理员登录系统后进行系统参数的维护、场景基础数据维护,并进行物联网设备的注册、设备参数的维护。业务人员登录账户后进行物联网项目的创建,通过组态设计器进行设备的添加、关联关系创建、参数配置,设计完成后进行设备上电联机调试,所有设备完成调试后项目进入完成状态,完成之后可以在管理平台和智能网关端进行可视化及交互控制。
图3 平台业务流程
结合物联网平台业务特点,可扩展性是一个至关重要的设计考虑因素。因为随着物联网项目的增加,涉及的物联网场景和行业需要进行扩充,设备接入和传感数据也会出现激增,因此本平台需要进行扩展性设计,以便能够进行业务功能和容量的水平扩展。
本平台划分为多个解耦的模块,每个模块负责特定的业务功能,未来需要进行扩展功能时,仅需要增加新的模块或微调现有模块,而不会影响整个平台的稳定性。并通过分布式架构,可以将不同独立功能模块分布到不同的节点上,从而实现更好的扩展性和容错性。
针对一些计算密集型的功能,如果拓扑数据和协议数据,采用云计算提供的弹性计算和自动伸缩功能,在业务高峰时段,平台根据实际负载动态调整资源分配,确保对外能够提供稳定的性能。
在本平台中,针对首页项目、设备的可视化页面,需要频繁的访问,通过使用Redis 缓存和内容分发网络(CDN),以减轻实时计算对后端服务器的压力,以提高首页的响应速度。
平台设计并实现了一个稳定易用的API 管理系统,方便第三方开发人员和生态合作伙伴可以快速构建基于本平台的应用和服务。第三方应用集成API需要进行注册及授权才能使用。
为了方便快速构建基于平台的三方应用或服务,用户可以基于平台的组态化设计器在线设计自己的应用,并同步配置网络和设备参数,当所有设备通过联机调试后,在智能网关的支持下,可以实现数据的可视化和控制设备的交互,如图4所示。
图4 组态化设计器案例
本平台采用了基于SSL协议的加密传输方式,保障平台的数据传输和存储安全,另外平台增加了身份认证和访问控制策略,确保只有经过身份认证的设备、用户或应用程序能够访问平台,通过授权机制限制其操作权限,防止未经授权的访问和操作,三方应用通过注册的AppID 和AppSecre 才可访问指定的API。自动定期备份平台的数据和配置信息,以防止数据丢失,同时建立快速的恢复机制以应对安全事件。
通过平台创建一个基于智慧农业场景的项目,通过设计器选择了光敏传感器、光照传感器和输出多路控制器,设计完成后提交系统进行规则解析。设备上电后,通过智能网关进行联机调试,所有设备调试通过后,打开项目可以实时看到该项目的可视化信息,通过控制按钮可以进行多路控制操作,如图5所示。
图5 系统测试场景
本文基于MQTT 协议,构建了一个通用稳定的物联网平台。本平台集成了ZigBee、NB-IOT、LoRa、蓝牙通信模块,支持常见的无线通信技术。满足了智慧工业、智慧农业、智慧城市、智慧家居、智慧医疗等场景对物联网应用的需求。平台采用了支持高并发的可扩展Web 架构,保证了后期随着业务的发展,集成设备的快速增加。平台还使用了大数据处理技术、多端编程技术、Docker 技术、数据库技术、缓存技术、安全加密等技术,为通用的物联网设备提供了安全可靠的通信及交互能力,支撑感知数据本地采集和集中上云。并对外提供授权认证的接口管理平台,以便平台应用App 及三方接入App 可以进行数据可视化及控制指令的下发。未来,平台还要结合云计算、人工智能等技术对外提供更强大能力,实现边缘计算、智能语音、智能规则、智能数据分析等,以支持更多业务场景和行业应用,并为用户提供更便捷更智能的物联网接入能力。