基于MQTT协议的物联网实训云平台设计

《工业控制计算机》2018年第31卷第9
在科技迅猛发展的大环境下,物联网技术也得到了快速发展,这也促使高校开设相关的物联网课程[1]。但物联网实践中,仅就监测环境温湿度信息这一简单功能,就需要分别对感知层、网络层、应用层进行设计实现。在感知层将环境的温湿度信息进行采集,在网络层将感知层获取的温湿度数据进行传输处理,并对实时采集到的数据解析统计,在应用层主要实现客户端与数据的交互功能,对温湿度信息进行实时监控,同时在有必要的情况下对温湿度进行实时负反馈控制,而这对于大多数物联网设备开发者尤其刚接触物联网的学生开发过程繁琐且难度较大。针对上述问题,本文设计了基于MQTT 协议的物联网实训云平台,标准了数据传输接口,简化了物联网开发流程,提高了物联网设备的并发性,提高了物联网的开发效率。1系统设计
1.1系统功能综述
学生通过手机号码在物联网平台注册,然后创建物联网项目,在每一个物联网项目下可以添加传感器信息节点或控制节点,对应每一个项目平台都会生成唯一的UUID ,用户按照平台提供的协议帧格式将UUID 以及子节点编号填入,便得到对应此节点的数据传输协议,下位机按照对应的数据协议向物联网云平台提供的IP 与端口发送数据,物联网平台便可以将传感器采集的数据存储并以图表的形式可视化给用户或是对控制节点进行操控,通过使用MQTT 代理服务器,平台可同时支持数以万计的节点处理,此外平台也提供学生进行物联网技术的交流圈。1.2系统设计目标
在平台的设计过程中,首先考虑到平台的并发性能,基于此我们选择基于MQTT 协议进行物联网服务器设计,其次需要考虑到传输层与应用层之间的数据传输协议设计,通过统一通信接口,使平台具有普适性,最后设计了便于与用户交互的UI 界面,实现了数据监控与数据可视化。1.3系统架构
系统结构图如图1所示。整个系统基于B /S 架构设计实
现,主要包含前端网页、服务器、数据库、协议设计四部分。前端网页主要实现了与用户交互相关的功能;服务器又分为Web 服务器和物联网服务器,其中Web 服务器主要是为前端网页用户的操作提供后台服务支持,使用户操作得到实现,物联网服务器使用了MQTT 代理服务器,能够为数以万计物联网设备同时提供服务;数据库主要实现了物联网设备数据、用户数据、物联网技术交流数据存储功能,
考虑到实际需求,使用了MySQL 和Redis 两种数据库。协议部分主要设定了一整套支持开关量、数字量、心跳包的数据传输协议,任何按照此协议进行数据传输的物联网设备将能使用本平台对数据进行采集、处理、监控以及可视化。
图1系统结构图
2模块设计
2.1前端网页设计实现
用户直接交互的是前端网页,如图2所示,在本平台需要实现用户注册、用户登录、用户信息修改、添加项目、数据监控、数据可视化以及一个类似于朋友圈的物联网技术交流圈的功能。鉴于目前移动互联网技术的高速发展,用户更乐于使用移动端去完成各种事物处理,故本平台选择了响应式网页框架实现[2]。通过利用响应式技术的开发方式,使网站页面随浏览设备的不同尺寸而自行响应,动态调整布局结构、元素规格样式,将内容
基于MQTT 协议的物联网实训云平台设计∗
Design of an Internet of Things Cloud Platform Based on MQTT Protocol
兀玉洁
李燕苹(上海大学通信与信息工程学院,上海200444)
摘要:随着物联网技术的飞速发展,很多高校也开展了相应的物联网实践课程。针对物联网开发主要面临的数据传输协议不统一,开发门槛高、周期长等问题,研发了一种基于MQTT 协议的物联网实训云平台。在支持高并发的情况下,能够快速、便捷、可靠地将传感器数据采集并可视化,降低新入门开发者的开发难度。该平台应用于实际的教学工作中,能够激发学生学习热情,充实教学内容,提高教学效果。
关键词:MQTT ,物联网云平台,实训平台
Abstract 押The threshold for exploiting is high and the cycle length is long熏a kind of Internet training cloud platform based on MQTT protocol is developed in this paper.In the case of high concurrency熏the sensor data can be collected and visualized quickly熏conveniently and reliably熏which greatly reduces the difficulties that new introducer's experience.To apply this platform in practical teaching熏the learning enthusiasm of students can be stimulated熏the teaching contents can be enrich and the teaching effect can be improved.
Keywords 押MQTT熏IOT Cloud Platform熏training platform
∗国家自然科学基金项目(61771299,61301027)资助
101
基于MQTT协议的物联网实训云平台设计
按照不同的格式呈现给使用不同设备尺寸的用户。前端开发框架是指一系列产品化的HTML/CSS/Java Script组件的集合,本平台使用的前端开发框架是BootStrap。
图2用户操作流程图
磨内喷水在数据可视化部分,通常对数据实时更新采用AJAX轮训方式,但这种方式会大大加重服务器负担,显然对物联网云平台而言不是最优选择,故选择了使用了WebSocket技术[3],Web⁃Socket协议是基于TCP的一种新的网络协议。它实现了浏览器
充气模型与服务器全双工通信——
—允许服务器主动发送信息给客户端,能够做到前端数据毫秒级更新,且能够降低服务器负载,此外为了使数据显示更为直观,平台选择使用百度ECharts插件,能够使各类传感器数据以图表形式显示。
2.2设备数据传输协议实现
考虑到目前传感器种类繁多,数据格式不同,这就需要设计一个标准的数据格式,使无论是哪种传感器的数据都可以转换为平台可以识别的标准格式,通过对现有的传感器数据类型归类,主要分为数字量和开光量,考虑到易用原则,定义了最有代表性的三个协议,分别为心跳包协议,用于保持物联网设备长连接;第二为开关量协议,用于发送控制指令;第三为数字量协议,用于传感器采集信息上传。如表1所示,以数字量协议为例,协议总共长度为24Byte,每一个Byte位用16进制表示,第一位代表了协议类型,0x01~0x03分别代表心跳包协议、开关量协议、数字量协议,第二位代表子设备编号,由云平台生成,第三位保留,第5~20位代表从物联网云平台对应该传感器生成的u⁃uid,用户只要将其对应填入协议即可,21位代表协议长度,22位代表数据类型,系统预留了温度、湿度、PM2.5等常用传感器描述,并将0x08作为保留位,第23~26位则用4个Byte表示Float数据量,对于绝大多数数字量传感器精度已足够。
2.3服务器设计实现
2.3.1Web服务器设计
Web服务后台使用了现在较为流行的SSM框架实现,与图2用户操作相对应,后台通过Controller接收到前端提交的HTTP请求,通过CURD操作,将请求的数据以JSON格式返回给前端,但前端数据可视
化功能的实现,需要服务器后台创建WebSocket服务,每当物联网服务器接收到感知层数据,便可以使用WebSocket直接通过Session推送给前端ECharts显示。
为了保障平台安全并使平台具有较高的负载能力,平台使用了Nginx实现了负载均衡[4],如图3所示,使用三台服务器,其中两台安装Tomcat并部署物联网云平台,另外一台部署Nginx服务器,并在f增加upstream字段,配置两台Tomcat服务器的IP端口信息,使用的负载均衡算法为最小连接算法。
图3Nginx负载均衡
为保证用户账号安全性,平台采用了短信验证机制,使用了阿里云的云通信的短信功能,需在项目中引入阿里云的Maven依赖,并申请阿里云的AccessKey Id,认证短信签名以及短信模板。
2.3.2物联网服务器设计
物联网服务器是基于MQTT协议实现的,MQTT是IBM开发的一个即时通讯协议,它基于简单、开放、轻量、易于实现的设计思想,是一种轻量级的为了物联网场景而设计的基于TCP的发布/订阅消息传输协议[5]。可用于计算能力有限,低带宽且不可靠的网络远程传感器和控制设备,可支持用户根据已发布的协议编写自己的客户端。如图4所示,MQTT协议中有三种身份,发布者(Publisher)、代理(Broker)
、订阅者(Subscriber),其中消息的发布者和订阅者都属于客户端且消息发布者同时也可以是订阅者,消息代理是MQTT代理服务器。发布者和订阅者并不需要知道对方是否存在,只需要通过IP和端口连接到Broker,Broker能够过滤所有的消息,并且根据话题分发这些消息,就可实现发布和订阅消息,此外MQTT对信息传输有三种服务质量(Qos)——
—最多一次(Qos0),至少一次(Qos1)以及
外置电源
只表1数字量数据
协议
图4MQTT框架
服务器平台
102
《工业控制计算机》2018年第31卷第9期
(上接第100页)
[6]Epps T H熏Hitchcock D R熏Jayakaran A D熏et al.Characteri⁃
zation of Storm Flow Dynamics of Headwater Streams in the South Carolina Lower Coastal Plain 1眼J演.Jawra Journal of the
American Water Resources Association熏2013熏49穴1雪押76-89
[7]Cao Z熏Lin J熏Wan C熏et al.Hadoop-based framework for
big data analysis of synchronised harmonics in active distri⁃bution network 眼J演.IET Generation Transmission &Distribution熏
2017熏11穴16雪押3930-3937
[收稿日期:2018.4.15]
有一次(Qos2)。
物联网服务器选择了Apache Apollo ,其是在ActiveMQ 基础上发展而来,除了支持MQTT 协议,也可
支持STOMP 、AMQP 、Openwire 、SSL 和WebSockets 等多种协议。在测试机上搭建好Apollo 代理服务器,使用Java 编写压力测试脚本,不断向代理服务器发送数据和发送连接请求,进入Apollo 控制页面,如图5所示,可以看到MQTT 代理服务器可以同时支持万级客户端同时连接,且消息能够正常订阅发布,显然满足平台设计目标。
图5MQTT 代理服务器负载
2.3.3数据库设计
本平台使用的数据库软件是Redis 和MySQL ,Redis 是一个开源的使用ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库;MySQL 是一个典型的多线程,
多用户的C /S 结构的数据库,使用简单方便且开源,使用的持久化框架是MyBatis ,支持定制化SQL ,存储过程以及高级映射。
数据库设计考虑到物联网海量数据对数据库有较高的读取并发能力,而在这一块基于Key-Value 的内存数据库有着更好的表现,能够提高查询存储效率,所以使用Redis 对数物联网设备数据进行存储,而用户信息、短信验证码、物联网项目、项目下对应的子设备、用户发表的交流圈状态以及用户评论交流圈状态的评论等用户数据使用MySQL 进行存储。
此外为了保障数据安全,在第二台Web 服务器写了脚本并注册服务,使其每天对第一台服务器上的数据库进行备份。3设计结果与分析
生殖器疱疹新药平台部署后,使用Arduino 开发板以及温湿度传感器DHT11对平台进行了测试。首先在云平台为此次测试申请项目,并添加子设备,获取平台生成的UUID ,然后根据平台规定的数据协议生成对应的数据协议,因为MQTT 已经为大多数开发板提供了类库,其中也包括Arduino [6],因此Arduino 只需要采集温湿度信息,导入MQTT 类库,与部署在云服务器上的MQTT 代理服务器建立连接,然后将满足格式的协议帧发布,便可以在本文设计的物联网云平台上对温湿度信息进行监控以及可视化显示。测试结果如图6所示,包括平台主页、项目主页、添加设备页面、数据可视化页面、物联网交流圈界面。4结束语
本文介绍了基于MQTT 协议的物联网实训云平台的设计,简化了物联网开发流程,可以使学生可以快速、便捷、可靠地将传感器数据可视化,降低了开发难度。通过与实践教学相结合,使大学生乃至中学生能够快速高效地了解、学习和应用物联网技术,激发其物联网学习的热情,加强了学生物联网实践能力的培养,提高创新意识和创新实践能力以及应用型人次培养的水平,达到更好的实践教学效果。
参考文献
[1]覃敏杰.物联网产业发展影响研究[D ].北京:北京邮电大学,2012
[2]杨叶,陈琳,董启标,等.响应式Web 移动学习资源的技术实现与设计研究[J ].现代教育技术,2013
[3]Hasibuan A熏Mustadi M熏Syamsuddin I E Y熏et al.Design and
implementation of modular home automation based on wire⁃less network熏REST API熏and WebSocket眼C演∥International Sym⁃posium on Intelligent Signal Processing and Communication Systems.IEEE熏2015[4]徐小龙,王纯.统一管理Tomcat 和Nginx 软件栈[J ].电信工程技术与标准化,2014(8):86-90
[5]Soni D熏Makwana A.A SURVEY ON MQTT押A PROTOCOL
OF INTERNET OF THINGS 穴IOT雪眼C演∥International Conference on Telecommunication熏Power Analysis and Computing Tech⁃niques熏2017
[6]张波,杨国华.MQTT 发布/订阅消息机制在Arduino 传感节点的实
现[J ].电子世界,2013
[收稿日期:2018.5.7
水过滤板]
图6
设计结果
103

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

本文链接:https://www.17tex.com/tex/3/345102.html

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

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