APP下载

基于蓝牙4.0的移动健康管理平台的设计与实现

2018-01-09孙文学郑自强段言成李卓

电脑知识与技术 2017年34期
关键词:服务端手环蓝牙

孙文学+郑自强+段言成+李卓

摘要:在科技日新月异的今天,随着生活水平的提高,人们对于自身的身体健康问题,特别是日常生活方式的关注更是日益增加。而日常生活中产生的各种身体健康数据,能够显示出人们当前的身体健康状况,若长期收集起来,就可以更好的帮助人们监测自身身体健康水平变化。该系统是一款基于蓝牙4.0技术和Android系统的移动健康管理平台,能够做到收集用户运动与睡眠等数据并存储至云端,同时以美观的可视化界面友好地展示给用户,实现对用户身体健康的监测,帮助用户养成良好的生活方式。

关键词:蓝牙4.0;Android;REST;移动健康

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)34-0024-03

1 背景

随着社会的发展,大家的生活也变得越来越便利,与此同时,我们却慢慢的忽视了自身的身体健康,导致身体不断地向我们发出“警告”。但是我们却很少能及时意识到这些“警告”,当我们的身体再也承受不住的时候,往往就为时已晚了。因为现在移动电子越来越便捷,人们也越来越依赖一些移动式的设备,移动手环就是其中的一类,它用电少,便于携带,主要使用蓝牙技术作为通信协议,不需要连接互联网就可以使用,所以我们希望开发一款可以通过蓝牙通信协议与手环进行交互的app。通过蓝牙手环对我们身体状况进行监控并将相关的数据传给app,让我们仅仅通过使用手机app就能够时刻对自己的健康状况进行了解。

我们的先解决了手环与app之间的通信问题,然后再进行服务器的搭建,并进行存储数据测试,最后处理app与服务器之间数据传输问题。

系统全部搭建完成后,可以成功的通过手环随时查看自己已经走过的步数和自己在睡眠时的睡眠质量,了解自己是有达到每天自己要达到的运动量。

下文将具体介绍本项目的系统架构、开发流程、测试结果以及硬件的详细参数。

2 设计思路

2.1 主体设计

该管理平台主要分为两个部分:服务端和客户端。其中服务端主要使用Tomcat 8.0、MongoDB等技术存储用户的基本信息和步行与睡眠记录。客户端则是一个基于Android系统和蓝牙4.0技术的手机应用程序。

2.2 服务端设计

服务端参考了REST设计原则,采用RESTful架构构建API,即是RESTful API。由于用户的身体运动数据主要是根据时间段、步数、睡眠时间等结合而成的十分复杂的数据类型,所以我们选择采用MongoDB这个模式自由的数据库。

2.3 客户端设计

客户端通过蓝牙4.0让手机和智能手环连接起来,并且两者之间能够进行数据交互,从而手机能够获取到智能手环收集到的身体数据,智能手环也能及时收到手机的提示信息,实现一个以手机为主要节点的体域网。客户端和服务端的连接主要是通过互联网连接,即是客户端可以通过WiFi或4g网络来向服务端发送和接收数据。

3 服务器实现

在本平台中,服务端主要用于存储用户的基本信息,并且通过网络与客户端进行数据传输,从而使得客户端能够实现获取用户的基本信息,上传用户的运动数据,更新用户的身体信息与健康目标等功能。

3.1 RESTful架构

REST这一词是Roy Thomas Fielding在他2000年的博士论文中提出的,如果一个架构符合REST原则,就称它为RESTful架构。REST是Representational State Transfer的縮写,翻译过来是“表现层状态转化”,意思是网络中的资源在网络中以某种方式进行状态转换。其中资源指的是网络中的一个实体或是信息,如一张图片,一段文字等。我们可以用一个URI指向它,并且每个资源有自己单独的URI。如果们要使用某个资源,我只需要调用其URI即可。表现则是实体资源的表现方式,例如一段文字我们能够用txt格式表现出来,也可以使用xml或则html等格式表现。而网络中我们可以通过改变HTTP请求头中的相关字段来改变资源的表现形式以及资源本身的状态,即是状态转化。

总结来说RESTful架构就是:

1) 每一个URI代表一种资源;

2) 客户端和服务器之间,传递这种资源的某种表现层;

3) 客户端通过四个HTTP动词,对服务器端资源进行操作,实现“表现层状态转化”。

3.2 服务端功能实现

作为RESTful Web API,通过HTTP动词对资源进行操作。比如注册用户,对用户信息施加 HTTP POST 即可完成注册。在用户登录客户端后,不需要将密码保存在客户端本地,只需保存一个Token作为标识来完成后续请求。

本平台的用户登录是基于Token的认证机制。用户登录时,服务端接收到发送的登录请求,然后验证用户名和密码是否匹配正确。若正确,则生成一个唯一Token字符串返回给客户端,之后的请求中,客户端不必再发送用户名密码的信息,只需携带Token字符串。而服务器则需验证Token是否过期,验证成功则用户验证成功。

由于用户的运动数据包括有时间段,步数等复杂的数据结构,所以我们选择使用对数据类型模式自由的MongoDB数据库。当客户端发起同步数据请求时,使用 HTTP PUT 方法向地址 /users/{username} 提交要更新的用户信息。服务器首先验证请求头中的Token是否合法,如果合法,则更新服务器中MongoDB数据库里对应用户的信息,并返回请求成功状态码200。否则返回请求失败码。

如果在验证Token过程中,发现Token距离过期时间小于一天,则返回刷新过期时间的Token。对于过期的Token,在服务器数据库中存在一个黑名单,存储过期Token的唯一身份标识。在每次请求中服务器会先在黑名单中查找是否存在,如果存在则返回认证失败,提示客户端重新登录获取新的token,如果不存在则进行正常请求。

4 客户端实现

4.1 主体部分

4.1.1 Android系统介绍

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。同时由于Google公司将Android项目源代码以Apache Software License开源了出来,使得该系统迅速发展完善,成为现今两大智能手机系统之一,并且已经保持着十足的发展劲头。这也是如今智能手机如此普及的原因之一。

4.1.2 模块功能

本平台的移动端主要包含了3个应用模块——用户信息管理模块,计步监测模块,睡眠监测模块。

用户信息管理模块:该模块包含了用户的注册登录操作,管理用户身体数据,制定运动目标的功能。当用户注册登录时,需要添加用户的身体数据,如身高,体重等。注册成功后会将这些数据存储到服务器端,当用戶登录后能够获取到,并且在设置界面能够随时修改基本的身体数据。

计步检测模块:该模块包含了记录用户运动的功能。我们通过蓝牙4.0协议使得移动端和我们的智能手环进行数据交互。当我们在运动时,手环会通过算法即时记录我们运动的步数等运动信息,然后在通过蓝牙将这些运动数据传输到移动端,最后再由移动端通过网络将数据传输储存在服务端上完成用户运动数据的记录储存。储存完成后,用户也可以利用移动端来获取到自己以前的历史记录,了解相关运动健康状况。

睡眠监测模块:该模块包含了记录用户睡眠数据的功能。在我们睡觉之前,点击移动端上的睡眠监测按钮,开始记录用户睡眠状况。结束后,和计步检测功能一样,我们也可以查看睡眠记录。

4.2 蓝牙部分

这是本平台中与移动端相连接的智能手环FSBand:

手环参数表如表1所示:

1) 蓝牙4.0协议介绍

蓝牙是一种无线传输标准,能够实现固定设备,移动设备等相互之间短距离的数据交换。其最开始是由爱立信公司于1994年创制的,而如今由蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)管理。

随着蓝牙技术的逐渐发展,蓝牙4.0标准出现在了大众面前。由于蓝牙4.0的出现,使得计步器,医疗器械,智能仪表等能够实现无线传输。因为蓝牙4.0最重要的特性是省电,极低的运行和待机功耗可以使一粒纽扣电池连续工作数年之久。此外,低成本和跨厂商互操作性,3毫秒低延迟、AES-128加密等诸多特色也使得蓝牙4.0协议越来越受到无线技术开发者的追捧。

2) 数据传输实现

蓝牙4.0通过GATT协议进行通信,它是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很短的数据段被称为属性(Attribute)。GATT的全称是Generic Attribute Profile,它定义两个 BLE 设备通过叫做Service和Characteristic的东西进行通信。GATT 就是使用了 ATT(Attribute Protocol)协议,ATT 协议把 Service, Characteristic遗迹对应的数据保存在一个查找表中,次查找表使用 16 bit ID 作为每一项的索引。一旦两个设备建立起了连接,GATT 就开始起作用了,所以必须完成GAP 协议。GAP协议(Generic Access Profile)用来控制设备连接和广播,它使蓝牙设备对其他设备可见,并决定了蓝牙设备是否可以或者怎样与合同设备进行交互。GATT 事务是建立在嵌套的Profiles, Services 和 Characteristics之上的,如图4所示:

Service 把数据分成一个个的独立逻辑项,它包含一个或者多个 Characteristic。每个 Service 有一个 UUID 唯一标识。 UUID 有 16 bit 的,或者 128 bit 的。在 GATT 事务中的最低界别的是 Characteristic,Characteristic 是最小的逻辑数据单元,同样用一个UUID作为唯一标识,它也可能包含一个组关联的数据,例如加速度计的 X/Y/Z 三轴值。和 BLE 外设通信,主要是通过 Characteristic。可以从 Characteristic 读取数据,也可以往 Characteristic 写数据。这样就实现了双向的通信。

5 平台测试

本节测试主要是模拟用户正常使用情况,以此来测试服务端、客户端以及智能手环之间数据传输的具体情况。

5.1 注册登录

用户第一次使用客户端时需要注册一个新的账号,同时添加其身体数据、运动目标的信息。然后使用账号登录我们的客户端,之后产生的运动数据信息是基于账号来存储在后端服务器中的。

5.2 日常记录

正常登录客户端后,我们的智能手环就可以通过蓝牙4.0与手机相连接,保持数据的交换。在用户运动的过程中,智能手环利用自身的传感器获取到的数据,根据相关的算法数据化出用户运动情况。之后再通过蓝牙将运动数据传输到手机客户端。手机接收到数据后,就会将数据通过互联网传输到云端的服务器中存储。

5.3 修改数据

我们的身体数据,以及运动目标总是会变化的,所以这些数据时支持修改的。在设置界面,可以选择点击个人信息(修改运动目标时点击目标栏下的相关选项),进入相关界面后根据情况修改数据,最后点击保存并更新。

6 结束语

本平台利用蓝牙4.0技术实现无线体域网收集身体健康数据,并将智能手机作为其中的核心节点,通过WiFi或4G等网络将数据数据传输至云端服务器中并存储。而且随着智能手环技术水平的提高,我们能够检测到的健康数据类型也会越来越多,这时我们只需要修改客户端中数据上传部分的代码即可,无需修改服务端中数据库的数据结构,拓展性良好。用户使用该平台能够随时查看其过去身体健康数据,以到达检测自身身体状况的效果。

参考文献:

[1] Android (operating system) [EB/OL]. [2017-09-20].https://en.wikipedia.org/wiki/Android_(operating_system)#Market_share

[2] 阮一峰, 理解RESTful架构 [EB/OL]. [2017-09-23].http://www.ruanyifeng.com/blog/2011/09/restful.html.

[3] Race604, GATT Profile 简介 [EB/OL]. [2017-09-26].https://race604.com/gatt-profile-intro/.

[4] 郭霖. 第一行代码[M]. 北京: 人民邮电出版社, 2014.

猜你喜欢

服务端手环蓝牙
爱心手环
蓝牙音箱的直线之美
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
在Windows Server 2008上创建应用
紧急:蓝牙指尖陀螺自燃!安全隐患频出
红手环志愿者服务团欢迎您的加入
学习监测手环