APP下载

基于云端服务检测设备的虚拟控制面板开发

2021-09-06李志军朱书村

吉林大学学报(信息科学版) 2021年4期
关键词:控制面板按键面板

刘 丹 李志军 朱书村

(吉林大学 通信工程学院,长春 130012)

0 引 言

在第四次工业革命蓬勃发展的大环境下,新理念催生了越来越多智能化实验室[1-3]。智能设备仪器与产品的应用,推动了生产过程智能化,促进了新型生产方式的产生,同时也对实验室的日常管理提出了更高要求。笔者研究的实验室拥有众多的智能化设备,虽然大多数智能设备都提供了相应的控制软件与APP(application),但由于传统的控制方法具有很大的局限性,这种针对每类设备都在APP 上设计与之对应的界面和控制逻辑实现,随着智能设备数量的增多,用户体验将会变得非常艰难[4-5]。诸如数字化检测设备需要预热与调试,实验室内的温度湿度检测传感器与电源控制系统也需要实时监控,面对各种APP 与控制软件,对管理人员是一个艰巨的任务。而且,这种低效率操作模式的最终结果使实验室的利用效率低下,因此急需解决“人等机器”的难题。

笔者针对智能终端检测实验室设备监控和管理的实际问题,提出了检测设备的虚拟控制面板的技术方案,在面向设备管理的IoT(Internet of Things)云服务平台上构建了Web(World Wide Web)接口服务器,建立物联网检测终端的Web 抽象操作接口。基于此Web 服务,在Android wear[6-7]平台上设计开发了一款虚拟面板APP的虚拟客户端,其主要功能是用户可以基于自身喜好,自主定义界面的按键功能,实现实验室设备与虚拟面板的绑定连接交互,以方便用户的操作,从而大大提升移动终端的智能化操作体验。

1 总体方案设计

虚拟面板云服务设备检测系统包括连接平台的设备、云平台服务器、WSGI(Web Server Gateway Interface) Web 服务器、虚拟操控APP。云平台将原检测设备通过适配接入云端服务平台,从而可构建管理者和设备基于Internet的信息交互通道。该服务平台基于SOA(Service-Oriented Architecture)架构[8-10](面向服务的体系结构)和jetty 容器技术,为用户提供标准化的设备连接接口服务。

WSGI Web 服务器,目的是为第三方服务请求提供规范接口,WSGI Web 服务器可将第三方服务请求映射为不同云服务平台上的操作。可实现不同服务平台不同种类设备的一致性操作规范。如图1 所示构建的WSGI Web 服务器,即检测设备Web 服务接口,它为基于智能手表上的虚拟控制面板的APP 提供统一的接口,服务器端响应客户端虚拟面板的请求将之映射成为对底层基础云平台的操作。

图1 物联设备的管控机制Fig.1 Control mechanism of IoT devices

在虚拟操控面板APP的设计中,笔者提出虚拟控制面板的设计,其整体逻辑设计框架如图2 所示。人机交互模块完成虚拟控制面板APP 与人之间的交互,包括实现APP 对用户操作信息的获取和对用户通知的操作;自定义模块完成用户对虚拟面板自定义的逻辑处理;控制模块包括用户对设备进行监控操作的逻辑处理;而逻辑处理模块则协调上述两个模块,实现人机界面操作和设备监控逻辑处理的统一。

图2 虚拟控制面板设计结构Fig.2 Design structure of virtual control panel

2 系统内部消息传递机制

WSGI 服务器和云平台之间、虚拟操控APP 和WSGI 服务器之间采用C/S(Client-Server)架构模式,均采用url 消息格式发出请求和http+json的消息格式接收返回消息完成信息交互。

2.1 WSGI 服务器和云平台的交互

云平台服务器以HTTP(Hyper Text Transfer Protocol)消息的格式给第三方应用暴露了一个设备的接口。这个接口以url的形式呈现:

2.2 虚拟面板APP 和WSGI 服务器的交互

虚拟面板APP 和WSGI 服务器间消息传递的格式,可使用统一HTTP 消息请求格式,例如服务器暴露的HTTP 格式的接口形式为

urlPath 用于映射服务器内不同的处理函数,利用urlPath 建立分类访问控制,例如urlPath 为controlAirconditioner 时表示是对空调进行控制的请求,而param 参数则可为deviceId、temp 等,表示对指定设备号请求温度信息。

WSGI 响应消息格式同云平台服务器返回的消息格式。

3 虚拟控制面板实现

3.1 虚拟控制面板的功能

首先在Android 端建数据库模型[11],虚拟控制面板就可以从后台获取用户和设备的基本信息,但考虑到每次打开虚拟控制面板,都要重新从逻辑处理模块获取信息,会造成内存资源的浪费和线程的占用,严重影响了虚拟控制面板的客户体验。所以在虚拟面板的客户端,基于Android的组件content provider,使用轻量级的数据库SQLite 在客户端保存设备和用户信息。从而当逻辑处理模块的数据更新时,客户端相应的存储信息也会同步更新,在每次重新打开虚拟控制面板时,用户和设备信息也都会保留在虚拟控制面板的客户端上。

如图3 所示,客户端界面设有数个自定义按键,用户可根据实验设备的数量、种类自由添加、减少按键的数量,设置按键与设备的绑定连接(连接部分功能主要由服务器操作)。

图3 虚拟控制面板示例图Fig.3 Example of virtual control panel

当进入虚拟控制面板并完成用户和设备的注册后,选择长按其中一个按钮,此时会触发相应的监听器,通知系统该按键被选中,并通过显式Intent,调转到一个新的虚拟面板界面,在该界面完成按键与设备的绑定,实现虚拟面板自定义模块的核心功能。

在按键自定义界面,输入设备ID 号、设备名称、设备类型、MAC(Media Access Control)地址,并在客户端数据库中进行查找,如果该设备已经在数据库中注册,则检索到该设备信息,并将该家居设备添加到对应按钮的数据模型中[12],然后通知用户绑定成功,并返回虚拟控制面板主界面,此时点击该按键,触发一个监听器,执行监听事件,虚拟面板控制模块的实现主要在该监听事件中完成。

3.2 虚拟控制面板Android 端实现

Android 开发的4 个组件分别是:Activity、Service、BroadcastReceiver、Content Provider[13-15]。笔者使用Activity 组件构建了MainActivity、Conditioner-Activity 等实体提供操作的主界面、空调界面等,利用后台Service 服务构建了ReceiveMessge()等函数与WSGI 服务器交互消息,利用BroadcastReceiver 监听返回的消息然后利用ContentProvider 在各个界面上显示WSGI 服务器的响应消息。

以空调控制界面的实现为例,具体阐释虚拟控制面板的实现。创建一个airconditionerActivity 对象,在这个Activity 中创建一个mButton的按键,然后使用setOnClickListener()实现按键的点击事件,在这个事件的代码中,使用ReceiveMessage()实现设备控制逻辑和APP 界面结果显示。

ReceiveMessage()函数有两个参数,一个是url,可表示为用户进行的设备操控动作意图,另一个是TextView 组件名称,从服务器返回的结果将在这个组件上显示。该函数使用OkHttp 消息通信框架中的Request 对象对服务器发出请求,然后将Request 对象封装在Call 对象中,进一步地在OnFailure()和OnReponse()函数中将返回的结果通过TextView 组件的setText()方法显示在界面上。

4 WGSI 服务器实现

服务器的用户信息存储使用Redis 数据库,以提高服务器的响应速度,因为Redis 读写的速度要远超MySql 数据库读写的速度,并且先要完成MySql 数据库中的数据到Redis 数据库中的迁移,同时给出数据一致的控制机制,即在用户更改消息时,在修改完MySql 中的内容后同时修改Redis 数据库中的内容。

笔者使用基于Python 语言构建的flask 框架,使用该框架实现的微WSGI 服务器接收url 形式的HTTP请求,利用其路由系统分发HTTP 消息的机制,即实现url 和视图函数(实现业务逻辑功能)的绑定。笔者自定义了注册、登录、设备控制等视图函数实现服务器的功能,具体实现如下。

1) 用户注册。如下代码中,在route 方法中,传入‘/register'参数,服务器将HTTP 请求消息传送给flask的前端控制器拦截器包装成request 对象然后传送给路由系统,通过Python 语言的装饰器机制,路由系统建立所有路径部分为register的url 与register()函数的映射,从而实现url 对逻辑处理函数的调用。同时通过flask.request.form.get()方法提取出url 携带的参数部分,即email 和password,然后实现逻辑处理功能。关键代码如下:

Flask 框架通过flask.request.form.get 方法获取用户所输入的email 和密码,当均不为空时将用户信息以users 字段存储在哈希表中,同时在MySql 中修改,完成注册后返回注册成功信息。

2) 用户登录。在接收到客户端发送的url 参数“/login”后,Flask 框架映射到视图函数login()进行用户登录,关键代码如下:

框架通过flask.request.form.get()方法从表单中获取email 和密码。检测所输入的信息是否存在于Redis 数据库中的哈希表users 字段,如果存在,则返回登录成功消息,由客户端自行跳转到主界面。

3) 设备控制。将客户端传送的HTTP 消息中携带的参数传送给getAirCondittionerTempAndHum(),这个函数封装了后台服务器的服务,关键代码如下:

5 系统测试

在智能手表上对实验室设备进行机械特性、电气特性以及通信特性等方面的测试,其顶层界面和第2 层界面如图4a 和图4b 所示,其操作结果对应于实验室的不同种类设备的实测结果,对比如图5 所示。

图4 智能手表操控界面Fig.4 Control interface of smart watch

图5 实验室现场设备运行状况Fig.5 Operation status of laboratory field equipment

测试表明,运行于智能手表上的虚拟操控界面可完成实验室现场设备的远程管理和监控。实验室环境可得到良好的控制。

6 结 语

笔者通过分析实验室的检测设备管理现状,针对设备控制繁琐的实际需求,提出了虚拟控制面板解决方案,给出了检测设备操控平台的整体技术架构与技术路线。基于Web 服务给出了具体的设计方法,完成了系统的WSGI Web 服务器端的逻辑设计与代码编写,设计与实现了虚拟控制面板,并对整个系统进行了测试。系统应用测试说明技术方案的合理性,解放了实验室管理人员的大量工作,为远程实验室及设备管理和监控提供了极大的便利,提高了实验室管理的效率,充分发挥了检测设备的使用效能。

猜你喜欢

控制面板按键面板
基于有限状态机的按键检测程序设计
非触勿动 秒治键盘误触
第 一 季度AMOLED面板出货量京东方全球第二
恢复开始按钮右键菜单“控制面板”选项
FES丙烷制冷机控制系统升级改造
多种方法找回传统控制面板
基于PLC的柑橘根部灌溉施肥控制系统的设计与研究
其实真的很简单教你轻松关闭WP8.1手机按键灯
计算器
面板厂商向大尺寸转移2015年LCD电视面板增长目标仅为3%