APP下载

蓝牙Mesh设备远程控制平台设计与实现

2020-05-25俞为崔佳冬

软件导刊 2020年2期
关键词:远程控制

俞为 崔佳冬

摘 要:为改进蓝牙Mesh设备无法进行远程控制与管理的缺点,设计并实现了基于分布式服务器的远程控制平台。根据分布式特点将平台拆分为注册中心、路由网关、Mesh设备管理服务、Mesh控制服务和WebSocket服务5个模块。注册中心用于管理其它模块,路由网关用于分发请求到下游服务器中,Mesh设备管理服务用于查看Mesh设备信息,Mesh控制服务用于处理控制指令,WebSocket服务用于实现对Mesh设备的控制。测试结果表明,与传统集群设计方式相比,分布式设计方式的平均TPS(每秒事务处理量)提高了约3.3倍,平均响应时间缩短了约3/4,请求成功率提高了1.92%。

关键词:Mesh;远程控制;分布式服务器;WebSocket

DOI:10. 11907/rjdk. 191562 开放科学(资源服务)标识码(OSID):

中图分类号:TP319文献标识码:A 文章编号:1672-7800(2020)002-0039-05

英标:Design and Implementation of Bluetooth Mesh Device Remote Control Platform

英作:YU Wei,CUI Jia-dong

英单:(School of Electronics & Information, Hangzhou Dianzi University, Hangzhou 310018, China)

Abstract:In order to improve the shortcomings of remote control and management of Bluetooth Mesh devices, a remote control platform based on distributed server is designed and implemented. According to the distributed characteristics, the platform is divided into five modules: registration center, routing gateway, Mesh device management service, Mesh control service and WebSocket service. The registration center is used to manage other modules. The routing gateway is used to distribute requests to downstream servers. The Mesh device management service is used to view information about Mesh devices. The Mesh control service is used to process control commands. The WebSocket service is used to control Mesh devices. The test results show that compared with the traditional cluster design method, the average TPS(Transaction Per Second) is increased by about 3.3 times, the average response time is shortened by about 3/4, and the request success rate is increased by 1.92%.

Key Words: Mesh; remote control; distributed server; WebSocket

0 引言

蓝牙Mesh技术最早是在2014年由CSR剑桥大学研发团队提出的,当时仅提出了私有协议(CSR Mesh)。2017年7月19日,蓝牙技术联盟正式宣布蓝牙技术开始全面支持Mesh网状网络[1],制定了蓝牙Mesh的标准协议(SIG Mesh)[2]。全新的SIG Mesh技术可支持设备多对多传输[3],使其更加适用于楼宇自动化、无线传感器等需要让数万个设备在安全、可靠、稳定环境下进行信息传输的物联网解决方案[4]。虽然SIG Mesh技術可以使整个应用的通信覆盖面积增大,但整个应用无法接入到互联网中,只能在楼宇范围内进行控制,无法实现远程控制与统一管理[5],极大限制了其应用范围,所以需要设计开发一个针对蓝牙Mesh应用的远程控制平台。

传统控制平台采用单机或集群服务器设计方式,虽然后者可以利用Nginx[6-7]的负载均衡原理,使其并发量相比前者明显提升,但其本质仍是将所有业务都部署在一台服务器上,每台服务器并发量并没有任何提升,并且当某个服务出现错误时,整台服务器都会瘫痪,无法实现平台的高并发和高可用。蓝牙Mesh应用一般用于楼宇与大型商场中,具有高并发、大数据量的特点,而传统控制平台设计方式无法满足该应用场景。针对以上特点,本文提出一个基于分布式服务器的远程控制平台[8],将各个相对完整的业务拆分成独立模块,并部署在不同服务器上[9- 10],使每台服务器需要处理的业务相对较少,以提高控制平台的并发量和可用性。

1 系统总体框架

如图1所示,系统不再只有蓝牙一种通信方式,而是在原有蓝牙Mesh应用基础上添加了网关、分布式服务器、数据库和浏览器部分,实现了一个远程控制平台。手机APP可通过原有蓝牙通信方式进行控制[11],也可以通过HTTP请求访问服务器,再由服务器通过WebSocket[12-14]通信下发指令到网关,最终实现远程控制。浏览器可通过HTTP请求访问服务器,再由服务器访问MySQL数据库,最终实现对设备信息的远程查看功能。

2 分布式服务器设计与实现

本文控制平台是基于分布式服务器的,如图2所示为分布式服务器设计框架,共有5个模块,分别是注册中心[15]、路由网关[16]、Mesh设备管理服务、Mesh控制服务与WebSocket服务[17]。在注册中心、Mesh设备管理服务和Mesh控制服务3个重要模块中还增添了集群形式,以保证每个模块在一台服务器崩溃时不会受到影响,从而提高了控制平台的可用性。

2.1 注册中心设计与实现

注册中心在整个分布式服务器中的作用是管理其它模块及提供其它模块的IP与端口。所有模块都需要在注册中心进行注册(上传模块IP、端口与模块名称到注册中心),注册完成后,每个模块需要每隔30s向注册中心发送心跳请求,若注册中心90s内没有收到心跳请求,则认为该模块出现故障。当模块1需要调用模块2的服务时,模块1会根据模块2的模块名称从注册中心得到相应IP和端口,通过得到的IP和端口实现对模块2服务的调用。表1为各模块在注册中心注册的信息表。

本文注册中心采用Eureka[18]集群形式。从图2中可以看出有两个Eureka充当注册中心,它们之间的相互注册可以使注册信息同步。其它模块需要配置这两个注册中心的IP和端口,模块会寻找一个正常运行的注册中心进行注册,所以当其中一个注册中心无法使用时,整个平台并不会受到影响,因而提高了平台的可用性。其它模块在注册中心注册配置如下:

spring:

application:

//注册时的模块名称

name:xxx

eureka:

client:

service-url:

//配置两个注册中心

defaultZone:http://xxx/eureka/,http://xxx/eureka/

2.2 路由网关设计与实现

路由网关在整个分布式服务器中的作用是接收用户所有请求与路由分发请求,用户所有请求都会经过路由网关。根据请求路径,路由网关对照自己配置的路由表获得需要转发的模块名称,再从注册中心中获得对应IP和端口,最后完成请求转发。本文采用Zuul组件充当网关[19]。

例如当前有請求118.24.110.30/meshmanage/ login,则该请求首先经过Zuul路由网关,通过查看路由表可以发现该请求需要转发到模块名为mesh-manage的服务器上,即请求路径为mesh-manage/login,再从注册中心中获取mesh-manage的信息。可以从表1看出mesh-manage已有两台服务器进行了注册,分别是39.106.119.55:1112和106.12.196.14:1112,此时真正要转发的请求路径为39.106.119.55:1112/login或106.12.196.14:1112/login。由于两台服务器都可以处理服务,所以Zuul路由网关会自动进行负载均衡,以保证转发到每台服务器的请求数基本相同。路由表配置如下:

zuul:

routes:

manage:

path: /meshmanage/**

//Mesh设备管理模块路由配置

serviceId: mesh-manage

control:

path: /meshcontrol/**

//Mesh控制模块路由配置

serviceId: mesh-control

2.3 业务模块设计与实现

Mesh设备管理服务、Mesh控制服务和WebSocket服务3个模块属于业务模块。Mesh设备管理服务模块接收指令查询请求,并通过查询MySQL数据库获得网关信息(已绑定的网关MAC地址、绑定网关对应用户、该网关下绑定设备数)或设备信息(设备的DeviceID,设备绑定对应网关及用户,设备所实现的Model与设备订阅组地址)返回给用户。Mesh控制服务模块接收控制指令请求,并调用WebSocket服务模块完成控制指令操作,最后对绑定信息进行MySQL数据库存储。WebSocket服务模块通过WebSocket协议实现与网关的长连接,并可实时下发指令操作网关及网关下的设备[20]。同时WebSocket服务模块也提供接口供Mesh控制服务模块调用。平台业务模块如图3所示,业务中涉及的专有标识符如表2所示。

业务操作流程如图4所示,值得注意的是,Mesh控制服务模块需要调用WebSocket服务模块才能完成相应业务,所以需要在分布式处理中实现模块与模块之间的调用。

本文采用ribbon+restTemplate[21]组件实现这种调用,调用原理即上文所述的模块1调用模块2的原理。具体调用程序如下:

//调用WebSocket服务获得未绑定的设备

List devUUIDs = restTemplate.getForObject (“http://MESH-WEBSOCKET/getAllUnbindDevice?gwID=” + gwID, List.class);

3 测试与分析

3.1 性能测试

(1) 测试环境。本文测试中使用的服务器性能参数如表3所示。

由于需要对采用分布式设计方式与集群设计方式的服务器进行性能比较,所以分别对两种设计方式进行测试,两种设计方式测试环境对比如表4所示。

测试并发人数采用阶梯递增方式。并发用户初始值为100人,每过30s人数增加100人,一直增加到1 000人结束,每个用户每500ms发送一次请求模拟真实环境。并发人数设置如表5所示。

(2) 测试工具。测试工具使用腾讯的压测大师,这是一款专业且方便的压测工具。只要给出并发人数设置与需要测试的请求路径,该工具就会自动进行压力测试并得到测试结果。

(3) 测试内容。测试内容有平台的平均TPS(每秒事务处理量)、平台平均响应时间以及请求成功率。

(4) 测试结果。分布式设计方式测试结果如图5所示,集群设计方式测试结果如图6所示。

(5) 结果分析。从图5、图6中发现本文介绍的分布式设计方式相比集群设计方式,平均TPS提高了约3.3倍,平均响应时间缩短了约3/4,请求成功率提高了1.92%。总体来看,分布式设计方式远优于集群设计方式,更适合应用于蓝牙Mesh设备远程控制平台。

3.2 功能测试

3.2.1 手机APP远程功能测试

测试功能有扫描网关、绑定网关、扫描设备、绑定设备与设备控制。手机APP远程功能测试图如图7所示,图7左半部分表明,手机APP可以对网关和网关下的设备进行远程扫描与绑定。图中扫描出两个网关(用Mac地址表示),其中一个网关与用户(用手机号表示)完成了绑定,在该绑定的网关下对设备进行扫描,可以发现有两个设备,其中一个设备未绑定(用UUID表示),另一个完成了绑定(用DeviceID表示);图7右半部分表明,手机APP的Light Model远程控制界面可实现开关控制、RGB灯颜色控制与冷暖灯亮度控制等功能。

3.2.2 浏览器远程功能测试

测试功能有网关信息查询与设备信息查询。浏览器远程功能测试图如图8所示,图8上半部分表明,可以查看绑定的网关信息(包括绑定对应用户,以及在该网关下绑定的设备数量);图8下半部分表明,可以查询某个具体网关下的绑定设备信息(包括设备DeviceID,绑定对应网关及用户,该设备实现的Model与该设备订阅的组地址)。

4 结语

本文设计并实现了一个蓝牙Mesh设备远程控制平台,针对蓝牙Mesh应用高并发与大数据量的特点,平台采用分布式设计方式,相比集群设计方式,该方式提高了平台的并发量与请求成功率,缩短了平台响应时间。该平台实现了对蓝牙Mesh应用的远程管理与控制,弥补了蓝牙Mesh的不足。未来该平台还将针对蓝牙Mesh的特点实现更加丰富的功能(例如对所有Model的远程控制),以搭建一个更为通用的蓝牙Mesh设备远程控制平台。

参考文献:

[1] 迎九. 蓝牙Mesh出台,15.4等面临挑战[J].电子产品世界, 2017, 24(9):79-80.

[2] 王熙. 蓝牙mesh驱动创新打造安全可靠物联网解决方案[J]. 通信世界, 2017 (25):46.

[3] NEIL TYLER. The next frontier in mesh networking[J]. New Electronics, 2017, 50(14):10.

[4] 程琳琳. 藍牙技术联盟发布mesh标准将提供多点互联的工业级解决方案[J]. 通信世界, 2017 (21):49.

[5] 单片机与嵌入式系统应用编辑部. 蓝牙技术联盟开放网关架构[J]. 单片机与嵌入式系统应用, 2016, 16(4):9.

[6] LERNER R M. At the forge: Nginx[J]. Linux Journal, 2016.

[7] 林丽丽. 使用高性能Web服务器Nginx实现开源负载均衡[J]. 大众科技, 2010 (7):37-38

[8] CERNY T. Aspect-oriented challenges in system integration with microservices, SOA and IoT[J]. Enterprise Information Systems, 2018:1-23.

[9] 王方旭. 基于Spring Cloud和Docker的微服务架构设计[J]. 中国信息化, 2018 (3):53-55.

[10] CHRISTOPH F S.Microservice based tool support for business process modelling[J]. Computing reviews, 2016, 57(8):495-495.

[11] 钱建平,李晓兵,茅梅芳,等. 基于蓝牙Mesh组网的智能灯丝灯产品设计[J]. 中国照明电器, 2018 (8):25-29.

[12] WITTHAYAWIROJ N,NILAPHRUEK P. The development of smart home system for controlling and monitoring energy consumption using websocket protocol[J]. IOP Conference Series: Materials Science and Engineering, 2017, 185(1):012019.

[13] 陈淏,高守玮,岳金冬. 基于WebSocket实时物联网数据传输关键技术的研究[J]. 工业控制计算机,2016, 29(11):33-34,36.

[14] 谢佳柏,陈贤祥,胡欣宇,等. 基于低功耗蓝牙和WebSocket的物联网数据网关[J]. 仪表技术与传感器, 2016 (1):76-78.

[15] 李春阳,刘迪,崔蔚,等. 基于微服务架构的统一应用开发平台[J]. 计算机系统应用, 2017, 26(4):43-48.

[16] 刘罡. 基于微服务架构的汽车经销商管理系统[J]. 计算机应用, 2018, 38(z2):243-249.

[17] LIU W T. Research on the development of WebSocket server[J]. Advanced Materials Research, 2014, 886:4.

[18] 刘贤义,冯向阳,冯文和,等. 一种WEB应用无缝接入分布式系统的方法和系统[P]. 北京:CN108667925A, 2018-10-16.

[19] 张杰,司维超,王丽娜,等. 一种面向微服务的通用考核系统设计与应用[J]. 计算机与数字工程,2018,46(12):2463-2467,2533.

[20] PIMENTEL V,NICKERSON B G. Communicating and displaying real-time data with WebSocket[J]. IEEE Internet Computing, 2012, 16(4):45-53.

[21] 丁振凡. Spring REST风格Web服务的Json消息封装及解析研究[J]. 智能计算机与应用, 2012 (2):9-10.

(责任编辑:黄 健)

猜你喜欢

远程控制
智能可调节动作识别型节能风扇的设计
基于GSM的远程控制系统