基于微信公众平台的工业物联网系统设计与实现
2019-06-06孙进王凯王亚刚
孙进 王凯 王亚刚
摘 要:物联网在工业领域的应用日益广泛,是引领现代工业发展的重要技术。为实现对工业设备的远程监控,提出一种基于微信公众平台的工业物联网系统。该系统由设备端、服务器和移动终端组成。服务器采用Node平台搭建,利用Node平台异步特性,实现服务器高并发。实验表明,该设计能实现设备端和服务器的HTTP和MQTT协议通信,用户可在微信公众号嵌入的网页上实现对设备端的远程监控。
关键词:微信公众平台;服务器;Node;HTTP;MQTT
DOI:10. 11907/rjdk. 182078
中图分类号:TP319文献标识码:A文章编号:1672-7800(2019)003-0091-03
0 引言
传统制造业正在经历前所未有的转型,物联网、 云计算、大数据分析,作为工业物联网和智能制造的核心技术,正在从各个方面改变着工业行业,包括产品的设计、运营、维护以及供应链管理[3]。随着工业物联网(IIo T)技术[1]的应用,提出了更智能更高效的解决方案以提高生产效率[2]。在德国工业4.0影响下,制造业掀起了物联网应用热潮。自2017年开始,工业物联网发展正式进入第二阶段[4]。在工业物联网发展过程中,PC设备扮演着重要角色。
智能手机迅速普及,应用广泛。本文以移动设备为主要终端,提出一种基于微信公众平台的工业物联网系统,用户可通过便于携带的移动终端实现对工业物联网设备的远程监控,将工业物联网与微信公众平台结合是本文的研究成果。
1 微信公众平台
随着微信平台市场需求的增长和物联网技术的高速发展,基于微信开发应用成为一个新的热点[5]。本文实现了将服务器与微信公众平台对接,采用在公众号嵌入网页的形式实现,用户可通过网页实现对物联网设备远程监控。微信公众号界面如图1所示,用户可通过点击云服务菜单栏下“我的设备”按钮进入物联网设备监控界面,服务器自动获取用户在微信公众号下的openid作为登陆账号,因为openid的唯一性,从而实现免密码登陆。
2 系统总体设计
系统框架如图2所示,总体设计为物联网设备、微信服务器、网页服务器、HTTP服务器、MQTT服务器和ESP8266通信模块。ESP8266通信模块和工业设备通过RS485通讯接口互相传输数据,传输的数据包括工业设备实时参数和用户控制指令数据。ESP8266通信模块将工业设备实时参数通过MQTT协议发送给MQTT服务器,MQTT服务器负责将设备实时数据和指令轉发。MQTT是IBM 和 Arcom 公司发明的一项为物联网设计的消息传递技术,它基于TCP/IP 的应用层通信协议[6]。HTTP服务器负责响应微信的请求和处理用户向微信公众号发送的语音、文本等消息。在云服务器中采用ngnix负载均衡,根据不同二级域名向不同服务器转发HTTP请求,从而实现服务器的高稳定性和高并发。HTTP协议是一种面向对象的传送协议,用于从服务器传输超文本到本地浏览器[7]。
3 系统硬件设计
系统硬件主要是ESP8266通信模块,其电路原理如图3所示。ESP8266通信模块采用ESP8266芯片,该芯片是一款高性能的UART-WIFI (串口-无线)模块[8],凭借其高集成度、低功耗和易用性在物联网应用领域获得好评[9]。电源芯片采用AMS117为系统提供3.3V稳压电源。串口通讯芯片采用RS485芯片,该芯片采用RS485通讯接口,只需要两根通讯线即可在两个或两个以上的设备之间进行数据传输,采用半双工通讯方式连接。
4 系统软件设计
系统软件设计包括ESP8266通信模块软件设计、服务器软件设计。为减轻快速增长的网络负载压力,本文为Web后端服务器集群搭建了基于Nginx的负载均衡服务器[10]。Nginx是反向代理服务器,通过设置不同二级域名,实现将HTTP请求分发给不同服务器,本系统中Nginx与PHP构成网页服务器。服务端采用Node平台,利用Node平台异步特性实现服务器高并发。在互联网快速发展的潮流下,物联网以及嵌入式开发也在快速发展,传统的开发方式逐渐被新型物联网嵌入式开发所替代[11],Node.js让JavaScript在物联网和机器人领域有了广泛应用[12]。
4.1 ESP8266通信模块软件设计
ESP8266通信模块软件设计包括MQTT通信接口和历史数据上传接口,包括MQTT初始化和数据上传接口。通过MQTT初始化连接可实现与MQTT服务器建立实时通信。历史数据上传接口是将物联网设备的实时数据通过主题消息发送给MQTT服务器。将采集的数据打包成JSON数据包,通过发送POST请求的方式将JSON数据包上传给服务器。JSON(JavaScript?Object Notation)是一种轻量级数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式[13]。
4.2 服务器软件设计
MQTT服务器由Node平台搭建,通过开源的Mosca模块实现MQTT服务器设计。本文MQTT服务器解决方案包括用Mosca模块搭建和Mosquito软件搭建。Mosca是MQTT在Node.js中的一个Broker的开源实现,通俗讲也就是MQTT中的Server实现[14]。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件[15]。在移动互联网中, 消息推送是很重要的部分,是手机客户端信息发布和通信的重要方式[16]。消息推送服务器设计包括消息发布接口、客户端消息处理接口、客户端订阅接口。MQTT是专门为低带宽、不稳定网络以及计算和处理能力受限的设备所设计的,协议采用小型传输,耗电量小,能大大降低网络流量,最小化数据包并有效分配及传输[17]。消息发布接口实现向客户端发布指定主题消息,只有订阅了主题的客户端才可以接受消息。客户端订阅接口负责客户端订阅主题事件。绝大多数的Web开发都是构建在HTTP协议之上的Web应用[18]。HTTP服务器是Web服务器的一种,它是基于超文本传输协议HTTP的服务器[19]。HTTP协议是目前Internet上使用最广泛的协议,其语法定义较为宽松[20]。基于HTTP协议的HTTP服务器采用Express框架设计,设备历史数据上传接口负责将解析设备发送请求的Body解析成JSON数据,处理好后调用数据库接口进行存储。接受网页端发送的历史数据GET请求,然后调用数据库接口,将指定设备的历史数据打包成JSON数据发送给网页端。Express 是一个基于Node.js平台的极简、灵活的Web应用开发框架,它提供一系列强大功能,帮助创建各种Web和移动设备应用[21]。
5 系统测试
5.1 系统软件测试
用户通过在微信公众号中嵌入的网页就可对物联网设备进行远程监控,查看设备网页界面如图4所示。用户可通过单击菜单栏中的“实时”按钮查看设备实时参数,也可单击菜单栏其它按钮查看设备历史参数,设备参数通过曲线形式显示。设备控制网页界面如图5所示,在输入框中输入数值,在“请选择类型”下拉栏中选择控制指令类型,便可实现对设备的控制,例如设置温度、湿度等。
5.2 系统负载测试
测试设备客户端0.01s与服务器建立一个长连接,并且发送JSON数据包到服务器,采用逐渐增加长连接方式,每秒增加100个连接测试,Node.js单进程的服务器最大并发连接数是1245个,可在多核服务器上多开Node.js进程以提高服务器性能,高的环境配置能提高Node.js服务器性能。
6 结语
本文应用物联网技术,实现对传统工业设备的远程监控,用户可通过微信公众号嵌入的网页对设备进行远程监控。但要重视工业物联网存在的网络安全问题,在后续工作中要参考互联网安全问题解决思路,提出相应解决方案。
参考文献:
[1] 李士宁,罗国佳. 工业物联网技术及应用概述[J]. 电信网技术,2014(3):1-2.
[2] 王莹,王金旺. 工业物联网技术方案及发展大潮[J]. 电子产品世界,2018(3):1-2.
[3] 智能制造编辑部. 2018年工业物联网将有哪些发展趋势[EB/OL]. http://www.elecfans.com/d/697038.html.
[4] 孙邱伟. 基于微信控制物联网设备的服务器系统[D]. 广州:广州工业大学,2015.
[5] 王培元,杜玉胜. 一种基于MQTT协议的物联网智能监控系统[J]. 信息技术与信息化,2018(1):1-2.
[6] 刘波涛,冯翠丽. 物联网应用中嵌入式HTTP协议的设计与实现[J]. 佳木斯大学学报:自然科学版,2011(5):1-2.
[7] 刘孝赵. 基于ESP8266模块的远程数据采集系统设计[J]. 电子测试,2017(21):2-3.
[8] 曹振民,陈年生,马强,等. 基于ESP8266的无线控制电路设计[J]. 工业控制计算机,2017(1):1-2.
[9] 张云,许江淳,李玉惠,等. 基于Nginx服务器负载均衡技术的研究与改进[J]. 软件,2017(8):3-4.
[10] 苑臣芒. Node.js成为新型物联网开发的催化剂[J]. 中小企业管理与科技,2016(10):1-2.
[11] 潘从祥,蒋乐天. 基于Node.js的TurtleBot机器人JavaScript API设计[J]. 信息技术,2018(3):1-2.
[12] 字无忌. js读取解析JSON数据[EB/OL]. https://www.cnblogs.com/jtlgb/p/6137915.html.
[13] YUANSC. MQTT-Node.js实现-Mosca简介[EB/OL]. https://www.jianshu.com/p/8315acec4e6b.
[14] XUKAI. MQTT学习笔记—MQTT协议体验 Mosquitto安装和使用[EB/OL]. https://blog.csdn.net/xukai871105.
[15] 马跃,颜睿陽,孙建伟. 基于RocketMQ的MQTT消息推送服务器分布式部署方案[J]. 计算机系统应用,2018(6):1-2.
[16] 任亨,马跃,杨海波,等. 基于MQTT协议的消息推送服务器[J]. 计算机系统应用,2014(3):2-3.
[17] 祝瑞,车敏. 基于HTTP协议的服务器程序分析[J]. 现代电子技术,2012(4):1-2.
[18] 邵芬,于国防,张宁. 基于多线程的HTTP服务器的设计与实现[J]. 工矿自动化, 2008(4):1-2.
[19] 吴其祥,李祖华. 基于HTTP协议的隐蔽信道研究[J]. 信息安全与通信保密,2009(1):1-2.
[20] HELLOKANG. nodeJs之express框架學习笔记[EB/OL]. https://www.jianshu.com/p/94360745c4ae.
(责任编辑:杜能钢)