基于iBeacon及DPoS共识机制的宿舍管理系统设计与实现
2022-11-11覃勇铖何凤英
覃勇铖 何凤英
(云南工商学院 云南省昆明市 650000)
1 引言
随着教育的普及,在校学生人数剧增,学校宿舍管理成为一个突出的难题。传统人为手工式操作,效率偏低。因此如何应用互联网信息化技术,实现学生宿舍的高效率安全性管理,尤其是智能化查寝技术方案的探索与研究一直是近几年各单位研究的主要课题之一。目前市面上比较流行的查寝技术方案主要有以下几种:基于IC智能卡、指纹识别、人脸识别考勤机技术;基于RFID射频识别技术;基于二维码+GPS定位技术;基于手机人脸识别的生物特征+GPS定位技术等。本文通过研究分析基于以上技术的查寝方案,设计出一种基于 iBeacon技术+DPoS共识机制的多重认证查寝方案,极大提高了宿舍管理的效率和便捷性,实现让家长放心的安全校园服务。
2 主流的查寝方案比较与分析
2.1 基于IC智能卡、指纹识别、人脸识别考勤机技术的查寝方案
IC卡也称智能卡(Smart Card),它是一个将微电子芯片嵌入符合ISO 7816标准的卡中做成的卡片。IC卡具有体积小便于携带、可靠性高、成本低等特点,但是IC卡的缺点是不能防代签征。虽然指纹识别和人脸识别考勤机在很大程度上能有效防代签,但是缺点是对于大体量的人群识别速度较慢。另外,对于学校来说,宿舍数量多,导致考勤机和卡片的需求量增多,从而增加了成本,部署较困难。
2.2 基于RFID射频识别技术的查寝方案
RFID无线电射频识别是一种非接触式的自动识别技术,识别工作无需人工干预,具有读取距离大、可以同时对多个物体进行识读等优点,不像考勤机只能一个一个刷卡[1]。因而识别速度快,不需要到指定地点刷卡,但是读卡器需要布线,实施复杂,部署成本较高,移动性较差,不能防代签安全性不能保证。
2.3 基于二维码+GPS定位技术的查寝方案
二维码是一个近几年来移动设备上超流行的一种编码方式。基于二维码的查寝方案部署简单,成本低,但是需要多处张贴,存在代签或远程签到等问题。虽然可以结合GPS定位,但GPS定位本身可以更改的问题,安全性无法保证。
2.4 基于手机人脸识别的生物特征+GPS定位技术的查寝方案
手机已经成为现代生活必不可少的一个重要工具,当代大学生已实现了人手一部手机。通过手机拍照识别人脸,再经过人工智能算法分析宿舍环境[2],可以在一定程度上防代签,并且不需要额外的硬件设备投入,能有效降低成本。但也有弊端,如光线差或宿舍停电熄灯导致人脸无法识别或识别有误无法签到;有些同学不喜欢拍照或隐私问题;宿舍环境可以PS作弊;GPS定位可以更改等问题。
2.5 轻量可信任查寝方案的重要特性
通过以上四种方案的分析发现,目前流行的方案要么不可信要么重量,设计一款既轻量又可信的查寝系统是本文的目标。
首先是轻量。满足轻量的特性是借助于学生已有的设备如手机,不部署或最少量部署硬件设备。
其次是可信任。查寝系统要满足两个关键特性,才能确保签到数据的可信任。第一、签到介质(如卡片、手机、电脑等)是否在现场;第二、是否本人使用签到介质[3]。
上文介绍的四种考勤方案中,第一种和第二种比较重量,需要复杂的硬件部署,建设成本较高;第三种和第四种,虽然成本较低,但信任度不足。因此本文提出并设计了一种基于 iBeacon技术+DPoS共识机制的查寝方案,既满足轻量又满足可信任。
3 基于iBeacon+DPoS共识机制的查寝方案设计
3.1 iBeacon技术
3.1.1 iBeacon简介
iBeacon是苹果在2013年WWDC上推出的一项基于蓝牙4.0低功耗蓝牙(Bluetooth LE,简称BLE)的精准微定位技术。OS7与Android4.3及其以上版本支持iBeacon技术。通常分为两种类型的设备:一种是Peripheral devices(外围设备),一种是Central devices(中心设备)。外围设备通常是小型的,低功耗的,资源有限的设备(如手环),作为基站时刻广播向外发送BLE数据包,只要在范围内的中心设备都可以收到该BLE广播数据。中心设备一般具有很强的处理能力和极大的内存,通常为手机或者Pad等设备,检测接收由一个iBeacon外围设备基站发出的蓝牙信号并做出处理。与蓝牙不同的是,iBeacon不需要配对和连接过程,iBeacon基站通过BLE蓝牙的广播频道不断向外发送位置信息,当中心设备进入设定区域时,不需要连接就能够接收信号。相比蓝牙有更快的传输速度、更长的传输距离、更精确的测距,更有体积小、耗电量小的优势。
iBeacon作为外围设备广播的数据主要包含UUID、Major、Minor、Rssi[4]。UUID即厂商识别号;Major相当于群组ID,同一个群组里的iBeacon设备有相同的Major值;Minor相当于群组里某个iBeacon设备的ID;Rssi蓝牙信标发射的信号强度,用于测量中心设备(如手机)与iBeacon外围设备(基站)的距离。UUID+Major+Minor构成了一个iBeacon外围设备的识别号,类似IP地址。
3.1.2 RISS测距
iBeacon可通过RSSI(信号强度)和设备在1米时的RSSI值计算中心设备与基站的距离,通过软件和硬件的结合,从而大大提高定位精度,从原来的几百米、几十米,提高到一米以内的定位精度,增强了室内定位的功能。计算公式如下[5]:
d = 10 ^ (abs(RSSI) - txPower) / (10 * n)
其中,d表示计算得到的距离;RSSI表示接收信号的强度(负值),越接近0信号越强,等于0时无法获取信号强度;txPower发射端和接收端相隔1米时的信号强度的RSSI值;n表示环境衰减因子,取值依赖于环境和建筑物情况。
3.2 DPoS共识机制
DPoS (Delegated Proof of Stake) 股份授权证明机制,是一种区块链的共识算法。DPoS是一种基于投票选举的共识算法,类似股东大会。在DPoS中,股东投票给某个代理人[6],系统根据股东所持股权在系统中占比计算出票数最高的一定数量代理人,代理人按照规则负责生成区块。通过所有股东的投票后,系统中的信任已经由全体参与者集中到了少数参与者,节点发起交易后不用再等待相当数量未授信任节点的确认,而只需要让代理人对交易进行验证,大大缩短了交易的确认时间。
3.3 系统方案设计
3.3.1 核心功能模块设计
本系统根据不同角色,主要划分为管理员、教师、宿舍管理员、宿舍长、学生等功能模块。系统功能模块如图1所示。
图1:系统功能模块
管理员模块。维护系统信息如学院、专业、年级、班级、学生、教师、宿舍管理员、辅导员、楼栋、宿舍、设备、设备分配及考勤、通知等信息。
教师模块。维护我的班级、我的学生信息;查看/审批学生请假事项;查看考勤记录、发送消息通知等。
宿舍管理员模块。维护我的宿舍、楼栋学生信息;发起签到查寝;查看考勤信息、发送消息通知等。
宿舍长模块。持续发送ibeacon蓝牙签到信号等待宿舍人员签到。
学生模块。扫码教师班级专属二维码加入班级;扫码管理员宿舍专属二维码加入宿舍;打开ibeacon蓝牙接收宿舍长的ibeacon蓝牙签到信号进行签到,如有缺人查看是否请假,若有异常发送信息通知并后台记录;发起请假;申请报修;查看考勤记录和通知等。
3.3.2 核心业务流程设计
本系统的核心业务是使用ibeacon蓝牙信号实现宿舍签到,签到流程如图2所示。
图2:签到流程图
(1)宿舍管理员客户端发起签到事件,也可以定时发起签到事件,系统服务端将签到信息保存到数据库。
(2)宿舍长客户端从服务端数据库获取签到信息,然后启动ibeacon蓝牙,将签到信息通过蓝牙信号持续广播出去(此时ibeacon设备作为外围设备)。
(3)学生(宿舍成员)客户端点击“戳一戳”(指纹/语音识别)启动ibeacon蓝牙设备,扫描并接收宿舍长广播的蓝牙签到信号(此时ibeacon设备作为中心设备)。
(4)学生(宿舍成员)客户端扫描到宿舍长发出的蓝牙签到信号后,发送签到信息到服务端进行签到。
上文讨论了轻量可信任查寝方案的重要特性,本方案借助学生已有手机不额外部署硬件设备,满足轻量特性。通过指纹或语音等生物识别,可以确保本人使用签到介质的特性。但本方案假设条件是宿舍长具有诚信在宿舍发起签到,不排除宿舍长和宿舍成员一同在校外签到的情况,因而无法保证签到介质在现场这一重要特性,具有不可信任因素。解决此问题方案有很多,比如学生端增加GPS定位辅助,但手机GPS定位可以通过技术篡改并不能保证签到设备在现场。另一方案是在宿舍楼每一层部署一台ibeacon外围设备广播签到信息,由于ibeacon设备信号传输距离有限可以一定程度上保证学生签到手机就在宿舍至少在宿舍楼,虽然ibeacon设备价格较便宜成本不高,但仍然需要部署设备少了轻量的特性,因此不在本文讨论范围,本文重点探索如何用DPoS共识机制来解决本方案现场问题。
DPoS上文已经介绍过,其原理是各节点投票将权重集中到某一个受托节点,这个受托节点做出的决策就具有权威和可信度。本方案选出的宿舍长就是受托节点,也就是股东,但目前这个股东是不可信的,想要这个股东可信必须增加他的权重,也就是其他节点投票给他,证明他就在宿舍。因此改进方案是,宿舍长打开ibeacon蓝牙每接收到其他宿舍长广播的ibeacon蓝牙信号,其权重即信任值加1,如果接收到的是其他宿舍的成员ibeacon信号,其权重加0.5。宿舍长客户端在广播ibeacon签到信号的时候附加上权重值,宿舍成员客户端接收宿舍长广播的签到信号和权重值,如果权重值大于设定的阈值则签到成功并且是可信任的,如果权重值小于设定的阈值虽然签到成功,但在数据库加以备注以便宿舍管理员或辅导员核查。改进后的方案只要有一个宿舍长投票证明就基本可信,因为除非两个宿舍的人在一起作弊。DPoS投票如图3所示。3.3.3 核心架构设计
图3:DPoS投票图
本系统面向在校学生,签到时间通常为固定的某个时间段,因而在这个时间段的签到活动极易引发瞬时的高并发请求,从而造成服务器崩溃,因此系统需要对瞬时高并发请求进行削峰处理,也就是对瞬时高并发请求进行限制、延迟处理。本系统采用Redis缓存和RabbitMQ消息中间件等来实现高并发削峰处理。高并发削峰处理架构如图4所示。
图4:高并发削峰处理架构如图
Redis缓存。当宿舍管理员发起签到的时候,学生会频繁请求服务器获取签到信息,从而频繁的访问数据库造成数据库读取压力,可以将当次需要频繁访问的签到信息从数据库提取出来预存到Redis缓存,避免透穿数据库;当学生提交签到的时候,服务器将签到信息直接保存到数据库,造成频繁的数据库写入,可以将当次学生提交的签到信息缓存到Redis,然后定时一次性的将签到信息保存到数据库。
RabbitMQ消息中间件。RabbitMQ主要作用是对瞬时高并发请求进行削峰处理。当签到请求到来时,控制器的处理方法接收到该签到请求后,并不直接调用Service组件的方法来处理签到请求,而是简单地发送该签到消息到RabbitMQ消息队列。系统会定义一个消息消费者,消费者会按照自己的节奏逐条读取RabbitMQ消息队列中的消息,每读取一条消息,就处理一个签到请求。如此,不管来自客户端的瞬时并发请求有多少,控制器的处理方法只管一股脑儿地接收这些请求,并按照“先来先服务”的方式将这些请求添加到RabbitMQ消息队列中,然后让消息消费者有条不紊地逐个处理这些瞬时的高并发请求。
4 系统实现
4.1 平台与技术选择
本系统服务端采用主流的Spring Boot框架。通过Spring MVC提供Restful API接口;Spring Security+JWT实现实现认证和授权;Redis实现数据缓存;RabbitMQ实现高并发削峰处理;Spring Data Jpa实现数据持久化;数据库采用Mysql。客户端选择微信小程序平台。其原因有:一无需安装,“用完即走”,使用便捷;二跨平台,无需开发IOS 和Android两个版本,只需开发维护一个微信小程序版本,节省成本。
4.2 服务端实现
签到预热,每天固定时间比如23点启动签到任务,正式开始签到前10分钟,从数据库查询本次签到学生集合保存到Redis缓存,当学生签到时直接更新Redis缓存数据,避免数据穿透。实现技术是使用定时任务Quartz框架定义一个后台任务Task,这个后台Task类实现Job接口的execute方法,在此方法中,查询签到学生信息保存到Redis。签到开始,控制器接收签到请求,并将签到请求传递到消息队列,消息消费者从消息队列获取签到请求并处理,即更新Redis缓存。签到结束,定时将签到结果保存到数据库。关键代码如表1。
表1:签到处理代码
4.3 客户端实现
微信小程序提供了iBeacon相关的一系列API接口。首先,作为外围设备。小程序作为外围设备持续不断的向外广播数据,这适合宿舍长发送ibeacon签到信息的场景。为支持小程序作为外围设备提供的关键接口有wx.createBLEPeripheralServer()建立本地作为蓝牙低功耗外围设备的服务端、BLEPeripheralServer.startAdvertising(Object Object)开始广播本地创建的外围设备等。
第1步:打开蓝牙适配器wx.openBluetoothAdapter ({mode:'peripheral',success:res => {①}});其中mode必须为peripheral表示打开的模式为外围设备;①处填写蓝牙打开成功后创建外围设备的代码。
第2步:创建外围设备wx.createBLEPeripheralServer().then(res => {this.server = res.server;②;});其中res.server表示创建成功后的外围设备服务端BLEPeripheralServer实例;②处填写外围设备服务端创建成功后广播蓝牙签到信息的代码。
第3步:广播蓝牙信息,如表2。uuid是xxxxxxxx-xxxx- xxxx-xxxx-xxxxxxxxxxxx(8-4-4-4-12) 16字节128位的字符串,用来标识设备ID,本系统设计中定义uuid为学校楼栋标识,其中,前20位数代表学校id,后12位数字代表楼栋id。Major为签到码(答案),Minor为权重值(投票数)。
表2:外围设备广播信息
其次,作为中心设备。小程序作为中心设备接收广播数据,这适合宿舍成员接收ibeacon签到信息的场景。作为中心设备调用的接口有wx.startBeaconDiscovery() 搜索附近的iBeacon设备,wx.onBeaconUpdate() 监听Beacon设备更新事件。
(1)打开蓝牙适配器wx.openBluetoothAdapter({success:res => {①}});其中①处填写蓝牙打开成功后搜索ibeacon设备的代码。
(2)搜索ibeacon设备,如表3。当宿舍人员持有手机进入宿舍区域打开小程序时,小程序就可通过uuid搜索宿舍长的ibeacon广播数据,包含UUID、Major、Minor等,然后发送到服务端实现签到。
表3:中心设备接收信息
5 结语
本文提出的基于iBeacon及DPoS共识机制的多重认证智能宿舍管理系统结合指纹等生物识别、实时定位技术以及物联网技术,极大提高了宿舍管理部门的工作效率,系统具有部署简单、成本低、使用便捷、通用性好、准确性强、效率高等特点,既轻量又可信。本系统充分利用现代化计算机技术,使得宿舍管理变得更加规范化、智慧化、科学化。