APP下载

一种面向智能家居老人看护系统的实现方案

2018-08-21毛驾燕沈苏彬

计算机技术与发展 2018年8期
关键词:传感智能网智能家居

毛驾燕,沈苏彬

(南京邮电大学 计算机学院,江苏 南京 210003)

0 引 言

近年来,物联网技术的逐渐发展使得智能家居成为继智能手机、智能设备、智能汽车之后的又一大研究领域。据奥维咨询预测[1],2020年中国智能家居的整体产值将突破万亿元,其中智能硬件的产值将达到3 000亿元。与传统家居相比,智能家居[2](smart home)旨在为人们提供更安全、更便捷、更舒适的居住环境。此外,随着社会老龄化问题的加剧以及年轻人忙于事业无法抽身照顾老人,使得空巢老人无人看护问题日益突出。基于该实际情况,文中提出了一种面向智能家居的老人看护系统,该系统的适用人群是具有自理能力的独居老人,采用泛在智能[3]的方式,在不侵犯隐私、不影响老人行为习惯的前提下,辅助老人的日常生活。

Zigbee[4-7]是一种短距离、低复杂度、低功耗、低成本、低传输速率的无线传感网技术,采用IEEE 802.15.4标准。Zigbee协议标准采用分层结构,IEEE 802.15.4标准定义了底层协议:物理层和媒体介质访问层,Zigbee联盟在此基础上定义了网络层和应用层架构。Zigbee网络的拓扑结构分为星型拓扑、树型拓扑和网状拓扑。星型拓扑是一种最简单的拓扑结构,只包含协调器和终端设备,通信规则为每个终端设备只能同协调器通信,若两个终端设备间进行通信,则必须依赖于协调器的辅助转发,星型拓扑适合家庭自动化、个人健康护理等小范围的室内应用。因此,采用星型拓扑实现智能家居环境下老人的看护。

老人看护行为识别模型即将部署于室内的无线传感器所采集到的传感数据,通过分类器映射为行为标签,输入是预处理后的传感事件,输出是行为标签。现阶段,国内外研究面向智能家居老人看护的实验项目主要有CASAS[8-9]、MavHome[10]和CARE[11],采用的行为识别模型主要分为静态分类和动态分类。典型的静态分类法有朴素贝叶斯分类法[12]、支持向量机[9]等。静态分类虽然计算量小,但不考虑上下文关系,识别精度不高;动态分类则考虑上下文关系,借助于近邻和序列关系的建模实现数据的分类。典型的动态分类有隐式马尔可夫模型(hidden Markov model,HMM)[13]、动态贝叶斯网络等;考虑到老人行为识别与时空、上下文的关系,采用隐式马尔可夫作为面向智能家居老人看护的行为识别模型。

C/S体系结构是Client/Server(客户端/服务器)结构,最早由美国Borland公司研发。传统的两层C/S架构中,客户端既要处理业务逻辑又要实现显示用户界面,对客户端硬件资源要求较高,此外,当业务逻辑发生改变时,需要更新所有客户端,维护成本高且安全性低。三层C/S架构分为表示层、业务逻辑层和数据访问层[14]。其中,表示层负责为用户提供交互操作界面;业务逻辑层负责关键业务逻辑处理及数据传递;数据访问层负责访问数据库,为业务逻辑层提供数据。与传统的两层C/S架构相比,三层C/S架构具有结构清晰、耦合度低、可维护性高、对客户端硬件资源要求低、安全性高等优点。

1 系统总体设计

1.1 系统整体设计

面向智能家居的老人看护系统应该以保护用户隐私、不影响用户行为习惯为基础。文中采用泛在智能的方式,利用部署在家居环境中无处不在的无线传感设备实时地采集传感数据,实现老人的行为识别并提供远程登录。图1为面向智能家居老人看护系统的总体结构,该系统涉及四个功能模块,分别为传感数据采集模块、智能网关模块、用户行为识别模块和客户端模块。

图1 老人看护系统总体结构

1.2 无线数据采集模块

无线数据采集模块的主要参与者是无线传感网络管理人员,负责传感数据采集、Zigbee网络组建、数据缓存以及Zigbee数据通信。传感器采集包括光敏传感器、热释电传感器,将传感器感知到的电信号转换为模拟信号或数字信号。光敏传感器感应室内环境的局部光照强度;热释电传感器利用热释电效应感知人是否进入感应范围,通常情况下,热释电传感器和菲涅尔透镜结合使用,增强热释电传感器的灵敏度。Zigbee网络的组建包括Zigbee协调器网络初始化以及终端节点加入Zigbee网络。Zigbee数据通信包括终端节点向协调器发送传感数据和协调器向终端节点发送控制信息,并约定终端节点和协调器双方发送和接收数据的格式。数据缓存是为了防止在传感数据发送失败或超时情况下数据的丢失。

1.3 智能网关模块

智能网关模块的主要参与者是网关管理人员,负责Zigbee网和Internet互联互通、数据缓存以及数据预处理。Zigbee网络和Internet互联互通包括网关通过串口读传感数据和写控制信息、Zigbee协调器通过串口读控制信息和写传感数据,实现异构网络的互联互通。数据缓存的主要目的是防止数据的丢失、减轻服务器端存储压力等。数据预处理包括传感数据异常值处理、特征提取。异常值处理用于判别由于外界噪声干扰、人为误差等导致的实测数据偏离正常结果,并实时剔除;特征提取通过映射或变换的方法将高维空间样本转换到低维空间,利于后续的用户行为识别。

1.4 用户行为识别模块

用户行为识别模块的主要参与者是服务器管理人员,负责用户行为识别、数据通信以及数据库的交互。用户行为识别采用动态分类法中隐式马尔可夫模型,输入是预处理后的传感事件,输出是行为标签。由于家庭布局场景的不同以及居住者行为习惯的不同,同一个行为动作(例如:工作)的执行可能会引发不同类型的传感设备,从而产生不同的传感事件。因此,文中采用监督学习的方式,通过数据标注的方式获取训练集。数据通信包括接收客户端的请求,并对客户端的请求做出响应以及与智能网关系统的信息交互。数据库交互包括查找预处理后的传感数据,插入分类后的行为标签,更新用户基本信息。

1.5 客户端模块

客户端模块的主要参与者是普通用户,负责用户身份认证和老人日常行为查看。用户身份认证主要负责验证用户名是否存在、用户名与登录密码是否一致,若用户名不存在,则提示用户名不存在;若用户名与登录密码错误或者网络超时等,客户端进行相应的提示;若用户名与登录密码认证成功,则进入老人看护主界面。老人日常行为查看包括远程查看当前老人的行为动作以及查看老人行为动作的历史记录。

2 系统实现

随着智能家居环境下部署的传感节点及传感数据的不断增长[15],服务器端采用集中式的分析存储方式无法满足日益增长的传感数据。此外,传感数据从终端节点传输到服务器致使网络带宽负载量增加,造成较长的网络延迟,无法保证实时地识别老人基本的日常行为动作。针对上述问题,在Zigbee节点、智能网关、服务器具有一定计算存储能力的基础上,提出一种面向智能家居老人看护系统的设计方案。

2.1 系统总体设计方案

利用Zigbee节点、智能网关、服务器具有的一定计算存储能力,提出一种边缘计算的设计方案,利用边缘传感节点、边缘网关对采集到的传感数据进行数据抽象、异常值处理、特征提取等操作,有效地降低网络延迟、减少数据传输宽带负载,满足用户要求。具体设计方案如图2所示。Zigbee节点采集部署于智能家居环境下的原始传感数据,并对原始数据进行异常值、缺失值处理;随后,判断数据采集方式为周期性采集或者中断式采集,若采集方式为周期性采集时,对传感数据进行过滤,这样不仅减少通信开销、降低网络延迟,还降低了Zigbee节点能量消耗;当传感数据为中断式采集时,则将传感数据发送给智能网关。智能网关获得传感数据并存储在输入缓存,随后,对缓存中的数据进行特征提取,包括日期、时间、传感器ID、传感值,并将提取的特征发送给服务器。服务器端获取特征并存于输入缓存,当计数器大于60 s时,则获取输入缓存中的序列并利用行为识别模型HMM获取行为标签,否则继续等待数据到达。

图2 系统流程

2.2 系统开发环境的选择

2.2.1 软件开发环境

无线数据采集模块开发环境为IAR Embedded Workbench for ARM,是瑞典IAR Systems公司为ARM微处理器开发的一个集成开发环境,相比于其他ARM开发环境,该平台具有使用方便、代码紧凑、入门容易等优点。数据库采用MySQL-5.5.27,该数据库提供TCP/IP、JDBC等多种数据库连接途径,使用标准SQL语句,开源免费。数据分析采用PyScripter,该软件是一款免费开源的集成开发环境,支持多标签页切换,弥补python IDLE的不足。服务器采用的Tomcat是Apache软件基金会的一个核心项目,该服务器是免费的开放源代码的Web应用服务器,适合于中小型系统且具有扩展性和安全性。客户端为Eclipse+ADT+Android SDK。

2.2.2 硬件设备

传感节点采用德州仪器TI公司生产的CC2530,该芯片支持最新的Zigbee 2007协议栈,而之前TI公司生产的SOC射频芯片CC2430/CC2431不支持该协议栈,此外CC2530具有更优的性能、更低的价格。光敏传感器采用Risym 5549,相比于同类光敏传感器,该型号具有更高的灵敏度、成本低。热释电传感器采用HC-SR501,该传感器具有成本低、器件功耗小、隐蔽性高等优点。智能网关采用S3C2440开发板,ARM920T内核,400 M主频,支持NAND FLASH、NORFLASH,多种电源管理等,相比于S3C2450、S3C6410,S3C2440成本低且参考资料多,易于开发。远程服务器选用Win7操作系统的笔记本一台。客户端为Android操作系统的手机一部。

2.3 系统各功能模块实现

2.3.1 无线数据采集模块

无线数据采集模块主要实现传感数据采集、Zigbee网络组建、Zigbee数据通信、异常处理等功能。传感数据采集功能,首先进行硬件初始化,包括热释电红外引脚初始化、光敏引脚初始化、中断初始化。然后,判断传感数据采用中断方式或者周期性方式,若采用周期性方式,则Zigbee采用基于事件驱动的轮询机制OSAL轮询事件表,当事件GENERICAPP_SEND_MSG_EVT发生时,获取光照传感数据,并设置下次事件触发时间;若采用中断方式,则定义相应的中断函数,获取热释电传感数据。随后采用k最近邻的距离进行缺失值、异常值处理。最后将光照传感数据和热释电传感数据通过AF_DataRequest发送给协调器。Zigbee数据通信功能包括终端节点向协调器发送传感数据以及终端节点接收来自协调器的控制信息,并约定终端节点和协调器双方发送和接收数据的格式。其中,数据发送采用AF_DataRequest函数;当事件AF_INCOMING_MSG_CMD发生时,表明Zigbee节点接收到来自其他节点的应用层数据,调用事件处理函数GenericApp_MessageMSGCB。

Zigbee通信双方应用层自定义数据收发格式为:L表示光敏数据,I表示热释电数据,%表示数据发送开始,#表示数据发送结束。

2.3.2 智能网关模块

智能网关模块主要实现Zigbee与Internet的互联互通、特征提取、网关与服务器通信等功能。Zigbee与Internet互联互通采用串口通信方式,通信双方事先约定好通信端口COM1及波特率9600,协调器通过HalUARTWrite()函数向智能网关发送传感数据,智能网关通过readLine()实时地读取串口数据,并存于输入缓存。传感数据提取的特征主要有日期、时间、传感器ID以及传感器值,例如以下顺序序列为传感事件提取的特征。

2017-08-29 22:23:27 M03 ON

2017-08-29 22:23:29 M02 ON

2017-08-29 22:23:33 M04 ON

2017-08-29 22:23:39 M04 OFF

网关与服务器通信采用socket方式,服务器绑定端口8800并监听此端口,网关通过端口和服务器IP地址发起TCP连接,服务器接收网关连接并产生socket对象。此时,通信双发可获取输出流并构造PrintWriter对象发送数据,获取输入流并构造BufferedReader对象接收数据。

2.3.3 用户行为识别模块

用户行为识别模块主要实现用户行为识别、数据库交互、客户端交互等功能,用户行为识别分类算法采用隐式马尔可夫模型。隐马尔可夫模型由初始状态概率向量、状态转移概率矩阵以及观测概率矩阵确定,因此,首先根据训练样本集确定初始状态概率向量、状态转移概率矩阵以及观测概率矩阵;然后,根据隐式马尔可夫模型三要素预测用户行为标签,采用维特比(Viterbi)算法,采用固定时间的滑动窗口截取数据流,对预处理后的传感序列从后向前逐步求解,得到最优路径,从而预测该固定时间长度内用户的行为标签并存于数据库。根据HMM模型,文中将每个行为标签(例如:work、leave)表示隐藏状态hiddenState,各类传感器ID(M01、M02)表示为观测状态observeState,初始概率矩阵表示为initialDist,状态转移概率矩阵表示为transitionDist,观测概率矩阵表示为observeDist,主要伪代码实现如下:

defhMM(annotatedSensorSeq):

forsensorEvent in annotatedSensorSeq:

sensorEvent=sensorEvent.split()

count += 1

if(len(sensorEvent) > 4):

#某行为开始

if(sensorEvent[5]=='Begin'):

stateIndex=hiddenState.index(sensorEvent[4])

action=sensorEvent[4]

previous=present

present=action

num=0

#某行为结束

if(sensorEvent[5]=='End'):

initialDist[stateIndex]+=num+1

flag=False

if(len(sensorEvent)<=4):

previous=present

present=action

#转移矩阵、观测矩阵

transitionDist[hiddenState.index(previous)][hiddenState.index(present)]+=1

observeDist[stateIndex][observeState.index(sensorEvent[2])]+=1

if(flag==False):

num=0

flag=True

continue

num+=1

transitionDist[hiddenState.index(present)][hiddenState.index(present)]+=1

客户端交互采用Tomcat服务器,通过重写servlet类中doPost()、doGet()方法响应http请求。首先,服务器获取request对象的flag值,当flag为loginCheck时,则获取request对象username和password值,验证用户名密码是否一致;当flag为activityLable时,则表明客户端请求当前用户的行为标签。然后,通过JDBC的方式连接MySQL实现数据库的交互,JDBC是一种用于执行SQL语句的API,可以为多种关系型数据库提供统一访问。接着,当flag为loginCheck时,查询用户信息表userinfo,并判断用户和密码是否一致,若用户名不存在,返回No_Username。若用户名与密码不一致,返回Not_Match,若用户名与密码一致,返回Success;当flag为activityLable时,查询行为标签表activityinfo,并返回当前用户行为标签。最后,服务器向客户端发出http响应,http响应包括响应行、响应头和响应体,响应体为JSON数据格式。

2.3.4 客户端模块

客户端主要实现用户身份认证和老人日常行为查看等功能。用户身份认证主要验证用户名是否存在、用户名和密码是否一致。首先获取用户键入的用户名和密码;然后,通过Handler异步方式向服务器发送get请求,提交的数据除用户名密码外,置flag为loginCheck;最后,解析服务器端返回的JSON数据格式,并根据内容提示用户不存在或用户名与密码不一致或者登陆成功,若登陆成功,则进入老人日常行为查看界面,UI界面如图3所示。老人日常行为查看采用定时timer的方式,在指定时间内周期性地向服务器发送get请求,提交的数据置flag为activityLabel,等待服务器响应,随后根据接收到的服务器响应,解析JSON数据格式并更新UI界面。

图3 客户端主界面

3 测试和分析

测试场景选取南邮无线楼实验室,分别在门、电脑桌、热水壶、书橱等关键位置部署门传感器、位置传感器和光敏传感器,测试行为包括离开(Leave)、工作(Work)、倒水(Drink)、休息(Relax)等4种行为标签。测试方法是第一阶段要求3位参与者模拟老年人的行为动作,按照相同的顺序分别执行工作、倒水、休息、离开;第二阶段要求3位参与者按照各自喜好,将4种行为动作交织在一起,模拟老人的日常行为,获取到的数据集一部分作为训练集,一部分作为检测集,测试结果表1所示。

表1 行为识别混淆矩阵

从表1可知,面向智能家居老人看护系统平均行为识别准确率为92%,且Leave和Drink高于平均值,而Work和Relax低于平均值。由于在实验室环境下,模拟老人工作、休息所触发的传感事件部分重叠,因此测试结果低于平均值。此外,该系统很好地满足了用户实时性的要求,且在Zigbee节点处对周期性传感数据的过滤能有效地减少Zigbee的通信开销、降低能量消耗。

4 结束语

在物联网技术不断发展和空巢老人无人看护的环境下,设计实现了一种面向智能家居的老人看护系统。采用Zigbee技术、异常值处理、特征提取实时地获取传感事件序列,基于Zigbee开源协议栈Z-Stack 2007和智能网关实现传感节点部署采集和异构网络互联互通;利用固定时间滑动窗口法和隐式马尔可夫模型预测老人基本日常行为ADLs,并提供历史记录查询和远程监控功能。实验结果表明,该系统能有效减少通信开销,降低传输时延,实现了智能家居环境下老人的看护。

猜你喜欢

传感智能网智能家居
交通运输部:扩大新能源智能网联汽车应用
《传感技术学报》期刊征订
新型无酶便携式传感平台 两秒内测出果蔬农药残留
基于PLC的智能家居控制系统研究
基于单片机的智能网控风扇设计
智能网联硬实力趋强
IPv6与ZigBee无线传感网互联网关的研究
迎战智能网联大爆发
基于Zigbee的无线通信技术在智能家居中的应用
硅硼掺杂碳点的制备及其在血红蛋白传感中的应用