基于OneNET的智能门锁系统平台软件设计与实现

2018-10-25 01:21姬鹏飞
现代计算机 2018年27期
关键词:终端设备门锁网页

姬鹏飞

(郑州安然测控技术股份有限公司,郑州 450001)

0 引言

智能门锁系统应用于各类需要进行管制的出入口通道,由传统的机械锁[1]发展而来,目前市场上充斥着各类智能门锁,如指纹门锁系统[2]、虹膜门锁系统[3]等,在便利性和安全性方面逐渐成熟。但与物联网时代的新兴技术相比,这些产品仍然缺乏便利性、安全性、大规模民用性和商用性的能力。

在物联网基础平台方面,国内外一些企业都推出了各具特色的服务。阿里云[5]物联网套件是专门为物联网领域而开发的,具有功能强大、全球多节点、低延时等特点,但此物联网套件面向的是开发人员,而非智能设备管理系统平台软件。腾讯[6]物联网通信(IoT Hub)服务,旨在提供一个安全、稳定、高效的连接平台,但也是面向开发人员,且主攻物联网通信领域。百度[7]物管理是一个智能设备管理平台,提供覆盖设备全生命周期的、一站式的设备管理服务,包括设备的层级管理、监测、遥控、固件升级和维护保养等各种场景,但是该平台面向的是硬件设备。华为[8]智能边缘平台满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求,为用户提供完整的边缘和云协同的一体化服务,但是价格昂贵。亚马逊[9]的AWS IoT De⁃vice Management提供轻松而安全地大规模注册、组织、监控和远程管理IoT设备,但此系统是面向设备的。

本文基于中国移动OneNET[4]物联网平台设计并实现了一个具有易用性、安全性、价格普惠、可快速推广的智能门锁系统平台软件。前期已经完成了硬件以及嵌入式的软件部分,本文描述对应系统平台软件的设计与实现。系统软件平台包括服务器端和用户端,服务器端使用Linux系统,利用Java开发基于Apache Tomcat的 Web应用,为用户提供 Web服务,为OneNET平台的数据推送提供HTTP协议的方式;用户端基于微信开发,用户通过该网页与服务器通信,由服务器向OneNET平台发送指令,即可实现对智能门锁的控制。

1 总体方案设计

本文设计并实现的智能门锁系统平台软件由服务器后端和用户前端两部分组成。服务器后端使用Linux 操作系统,基于 Spring、MyBatis、Maven 开发系统,利用Apache Tomcat Server运行Web应用系统平台软件,为用户提供网页交互接口和HTTP接口服务,同时提供与OneNET平台数据推送服务的HTTP协议接口;用户前端基于微信公众号实现,提供微信网页版用户交互接口,用户可在网页内选择需要打开的智能门锁进行操作,也可直接通过微信扫描智能门锁二维码开锁。系统总体架构设计如图1所示。

图1 系统总体架构设计

服务器后端主要负责接收智能门锁终端设备委托OneNET平台转发的运行数据,及通过OneNET平台向某一个特定的智能门锁终端设备发送指令,或者向多个特定的终端设备发送指令,也可以向所有终端设备发送指令;运行监听程序,等待由OneNET平台转发的来自终端设备的数据;利用负载均衡对多台云服务器进行流量分发,通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性和可靠性。

前端也包括两部分,分别是基于PC浏览器的后台管理应用系统,为管理人员提供运营管理、历史数据分析查看、设备添加与设置及用户管理等服务;基于微信公众号的网页版智能门锁应用,通过调用微信接口提供用户扫码开门和关门操作,通过网页表单的方式为用户提供申请智能门锁使用权限服务。两部分均基于HTML、CSS和JavaScript三种语言实现,在浏览器环境下运行。

2 具体设计

智能门锁系统平台软件包括后端、前端后台管理、前端微信网页三部分,后端基于Linux系统开发,对外提供Web服务,主要负责业务数据的处理和存储,前端后台管理基于PC浏览器进行开发,主要负责为管理员提供智能门锁终端设备和终端用户的管理配置功能,前端微信网页基于微信公众号进行开发,主要为终端用户提供智能门锁终端设备的交互接口。

2.1 数据库

数据库基于MySQL,包含4个表,分别是users(用户表)、devices(设备表)、authorization(授权表)、opera⁃tions(操作记录表)。

users包含智能门锁终端设备用户和后台管理员,以字段is_admin区分,其值为0表示智能门锁终端设备用户,值为1表示后台管理员,后台管理员与智能门锁终端设备用户在系统中的权限范围是包含关系,后台管理员可以使用智能门锁和登录系统后台,智能门锁终端设备用户只能使用智能门锁,不可登录系统后台进行管理操作。

device记录智能门锁终端设备信息,包括设备基本信息、位置等信息,其中设备信号强度用阿拉伯数字表示,含义为M6312通信模组的信号强度,值越大即信号越强,设备硬件状态表示设备是否开机。

authorization记录智能门锁终端设备与用户之间的授权关系,关系存在且在有效期内的用户才能开门。授权表中status字段表示授权记录状态,后台管理员添加的授权记录默认为1,不可修改,用户申请的授权记录默认值为0,待后台管理员审核后,状态可为1或2。

operations记录用户开关门操作,包括用户和智能门锁终端设备、操作时间、操作结果等信息。操作记录表中status字段表示操作结果,0表示系统正在处理中,1表示允许开门,2表示拒绝开门。

2.2 事件监听与发送

为了满足后端运行的高性能、并发性、稳定性需求,在处理来自智能门锁终端设备的数据时,采用启动一个监听进程的方式进行并发高效处理,其主要作用是起到导流作用。数据接收监听进程收到来自由OneNET平台转发的设备数据,首先解析出该数据所属的事件类型,再根据事件类型,启动相应的线程对该事件进行处理,处理完成后再根据事件类型,确定是否需要向智能门锁终端设备反馈事件结果。数据接收监听进程处理的流程如图2所示。数据接收监听进程收到的事件类型如下:

(1)状态上报

(2)打开/关闭门锁响应

(3)门锁终端设备异常

图2 数据接收监听进程数据处理流程

为了提高程序代码模块化、降低耦合性、提高可扩展性,向门锁终端发送数据时,也采用启动一个监听进程专门处理的方式,其主要作用是起到汇流的作用。监听进程收到来自应用系统各个模块发送的数据,首先解析出数据的目标类型,如果目标类型是智能门锁终端设备,则直接将数据委托给OneNET平台,由OneNET平台代为向智能门锁终端设备转发数据,如果目标类型就是应用系统本身,则将数据转发给数据接收监听进程。数据发送监听进程处理的流程如图3所示。数据发送监听进程的发送给智能门锁终端设备的事件类型相应的有如下三种:

(1)请求上报设备状态

(2)请求打开/关闭门锁

(3)请求门锁终端设备自检数据

专门设置一个数据发送进程的另一个优势是便于开发过程中调试应用系统的程序逻辑,可模拟智能门锁终端设备发送的数据,无需真正与设备进行联调,从而提高开发效率。

图3 数据发送监听进程数据处理流程

2.3 微信网页授权

智能门锁终端设备用户的操作接口是由基于微信公众号开发的网页所承载的,为了减少用户需要输入较多信息才能使用,提高用户使用的便利性,应用系统通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑,即免去用户注册的流程。

在微信公众号请求用户网页授权之前,需要先到公众平台官网中的“开发-接口权限-网页服务-网页帐号-网页授权获取用户基本信息”的配置选项中,修改授权后的回调域名,即应用系统需要用户打开的页面。微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息、扫描二维码等。

整个授权过程可分解为下述4步:

(1)引导用户进入授权页面同意授权,获取code。

(2)通过code换取网页授权access_token。

(3)必要时刷新网页授权access_token,避免过期。

(4)通过网页授权access_token和openid获取用户基本信息。

微信网页授权流程如图4所示。

图4 微信网页授权流程

通过微信网页授权机制,用户可在不关注公众号的情况下,直接使用微信内置扫码功能扫描智能门锁终端设备二维码开门,极大提高用户使用体验。

2.4 门锁授权确认

智能门锁终端用户请求打开门锁的方式有2种,分别是扫描智能门锁终端设备二维码和从公众号进入开锁网页根据向导完成开门操作。扫码方式最简便,但是扫描之后的处理过程极其重要,直接影响到用户使用体验。对此,在对智能门锁二维码编码时,将请求打开智能门锁的应用系统接口地址和智能门锁终端设备序列号组合成一个完整的请求接口地址,将此接口地址写入二维码,每个智能门锁终端设备的二维码所承载的信息是唯一的。

图5 扫码打开门锁终端设备

当用户通过微信扫码成功时,微信将自动跳转到该接口地址,服务器收到请求后,解析出门锁终端设备序列号和门锁终端用户标识,并调用授权确认接口,查询该用户与该智能门锁终端设备是否存在授权关系、授权关系状态是否通过、授权关系是否仍在有效期。如果三个条件都验证通过,则向数据发送监听进程发送数据,数据内容包括数据目标、智能门锁终端设备序列号、用户标识、操作类型。数据发送监听进程再委托OneNET平台代为向智能门锁终端设备转发数据。同时,向用户反馈智能门锁授权确认通过,智能门锁终端设备正在打开。待打开后,智能门锁终端设备委托OneNET平台转发打开门锁响应,数据接收监听进程接收到该消息后,启动相应线程处理,并告诉用户门锁已成功打开。用户扫码打开门锁终端设备的流程如图5所示。

3 对接OneNET平台

OneNET平台作为PaaS层,在物联网中为SaaS层和IaaS层搭建连接桥梁,分别向上下游提供中间层核心能力,在本系统中,上游是智能门锁应用系统,下游是智能门锁终端设备。OneNET架构示意图如图6所示。首先在OneNET平台注册用户,进入开发者中心并创建产品。创建产品时操作系统选择“Linux”,联网方式选择“移动蜂窝网络”,设备接入方式选择“公开协议”,设备接入协议选择“TCP透传”。

产品创建之后,即可接入门锁终端设备,步骤如下:

(1)创建设备,记录设备序列号等信息;创建设备有2种方式,应用系统在添加智能门锁终端设备时会调用OneNET平台的创建设备API实现设备的创建,也可以人工手动在OneNET平台创建设备。

(2)通过OneNET平台上传Lua脚本,并解析脚本到产品下。

(3)设备上电,与OneNET接入服务建立TCP连接,发送登录报文。

(4)在OneNET上的设备管理下点击数据展示,进入数据展示页面,点击下拉菜单,查看近期上传的数据点。

图6 OneNET平台架构示意图

硬件接入完成后,即可根据相关所接入的硬件设备以及所上传的数据进行相关产品的开发和接入。在OneNET平台与智能门锁应用系统之间是数据推送和数据接收的关系。需要对数据推送服务进行配置,当OneNet平台接收到智能门锁终端设备的数据时,通过平台的“第三方平台开发”功能设置的数据接收地址,OneNet平台才会把数据推送到该接收地址。需要对数据接收服务进行配置,步骤如下:

(1)点击进入配置页。

(2)填写智能门锁应用系统URL地址。

(3)写用户 Token。

(4)随机生成 EncodingAESKey。

(5)选择消息加解密方式。

4 结语

本文重点设计并实现了基于OneNET平台的智能门锁系统平台软件,系统运行高效稳定,实时性好,容错性高,微信端应用软件使用简便,运行流畅,用户体验好。可用于普通家庭防盗门、企事业单位出入口通道门锁、高度机要部门安防,为相关的物联网项目提供了一种新的解决方案。

猜你喜欢
终端设备门锁网页
2011款别克凯越车中控门锁失灵
基于HTML5与CSS3的网页设计技术研究
6款热门智能门锁推荐
旋转门锁
基于HTML5静态网页设计
搜索引擎怎样对网页排序
行车记录仪通信连接方法、行车记录仪及终端设备
电力配网自动化中配电自动化终端设备的应用
电网终端设备信息安全研究
电网监视终端与自动化设备的运行维护技术