一种可定制的智能家居系统的设计与实现
2018-07-11倪海鸥
倪海鸥
(福建星网锐捷通讯股份有限公司,福州 350000)
0 引言
随着科技飞速发展,计算机技术、网络技术、移动通信、物联网和机器人等各种高科技迅速改变人类生活,以住宅为核心的智能家居技术快速发展[1]。近年来,我国的智能家居产业蓬勃发展,智能家居设备厂商和集成商纷纷推出基于各种协议的智能面板、智能家电、智能灯光、窗帘、传感器、智能门锁、对讲、监控、机器人等等。这些协议中有线的如 X10、KNX、ISDN、DSL、Traditional Telphone、Ethernet[1]、Lonworks、485,无线的有zigbee、Wi-Fi[1],Blue-Tooth、IR,以及SIP等。在智能家居技术快速推广的同时,一些问题也逐渐暴露出来:在部署家庭智能时采用“云+端”的模式[2],使用不同厂家的单品或套装,操控时在多个APP之间切换,大大降低了用户体验[3];功能不同的智能设备往往采用不同的协议,这些智能单品之间不能互联互通,无法实现输入传感器到执行智能设备的智能联动,达不到住宅智能的目的[4]。后续家庭智能网关的典型解决方案是“云+主机+端”的模式[5],该模式以主机为核心,在控制主机出厂时预置某种协议或某些协议间的转换机制、支持该协议的某些智能设备的驱动和算法[2]。家庭的智能设备局限于协议要求,对于灵活搭配其他协议的智能设备,智能主机需要面对全面升级的风险,否则无法实现操控和设备间的互联。市场期待适时适度地满足个性化需求的第四代智能家居产品[6-7]。
图1 “云+轻量主机+端”的智能家居模式
1 智能家居系统的模式
为了解决上述问题,本文介绍了一种以用户配置为核心、可订制、跨协议的智能家居系统的架构实现全协议的住宅智能。本系统根据智能家居组网模型[5]的“云+轻量主机+端”的智能家居模式。
该模式以服务云提供的用户配置作为协调者,智能主机充当各种配置容器和执行者,完成配置的要求。“轻量主机”出厂没有预置智能家居的协议转换、计算处理等业务功能,只提供基本服务,对于具体的家庭业务动态加载。
2 系统结构设计
基于“云+轻量主机+端”的智能家居模式,本系统通过对智能住宅施工阶段和维护阶段的用户需求和智能设备产品所表现的共同特性建模,定义了一系列的协议规范,形成一套个性化、可扩展的配置内容。如图2所示,以一个家庭使用一台智能主机为例,纵向展示了以用户配置为核心的可定制化的系统解决方案。本系统中各部分主要功能为:1)服务云存储用户配置、提供协议动态库、智能设备的指令集和驱动库、UI资源等。2)智能主机下载用户配置中的设备配置,根据配置的设备和协议内容,从服务云加载相应的动态库、管理设备、模块间协同工作。3)APP下载用户配置中的UI配置,忽略智能终端的差异,兼容不同手机类型和分辨率[8],动态布局和呈现界面控件与用户交互。
图2 一种基于云的智能家居系统结构
本系统实现通过用户云配置、智能主机动态加载定制的协议库,支持跨协议的智能设备之间互相联动。该系统支持局域网Wifi[8]操作和远距离操作、监控视频;能够通过各种环境传感、侦测、语音装置驱使智能设备、机器人等执行相应动作;在部署前期、期间或后期,都可以通过修改云配置和同步功能实现轻松维护。
2.1 服务云
本系统的服务云符合基本的云架构[9]。主要模块有云数据管理、通信交互、消息订阅、媒体播放和系统安全管控。云数据管理主要包括帐号系统、智能设备管理、用户配置数据、版本管理、业务大数据等。其中可定制化内容的设计如下:
2.1.1智能设备管理
本系统定义了智能家居协议接口规范、智能设备类接口规范。协议接口规范定义了主机动态加载协议的必要内容和有用信息,这部分将在智能主机部分详细描述。系统目前支持的智能家居系统的主流协议有Zigbee、KNX、Lonworks、485以及SIP等。协议模型的关键项有:协议类型唯一标示,动态库下载地址,动态库版本。服务云管理员在Web页面导入研发输出的协议库,生成库文件的MD5值作为版本控制,譬如:(knx,http∶//smarthome.sc.cn/knx-driver-39456.so,1c661c4dff1b5847de6d0042574 3eac)。上传文件保存到文件服务器,以供智能主机适时下载。智能设备类模型的关键项有:设备类型唯一标示,指令数据集,驱动库下载地址,驱动库版本。譬如:(zigbee-sensor,{"cid"∶"010001","lab"∶""},http∶//smarthomesc.cn/knx-driver-39456.so,21c661c4 dff1b5847de6d00425743e ac)。
2.1.2指令数据规范
指令数据规范是系统家庭业务具有扩展性的基础。本系统认为智能家居的用户操控行为、人体感受和物联行为都有共同的属性,可以用统一的领域模型描述这些动作的不同内容,因此建立了指令数据规范,定义了指令模型、数据类型、指令动作和指令值的运算规则。指令模型的关键项有:指令ID,指令值,值类型。譬如Zigbee开关面板的一个键开动作或开着状态:(010001,1,1)。数据类型主要有数字、字符串、RGB、Json对象。指令动作主要有:读、写、等待。指令模型的作用范围包括:1)智能设备类型的指令数据集:根据智能设备的输入输出特性,定义指令集合,描述和值范围。2)用于UI配置。随着用户布局感兴趣的智能设备和输入输出,把布局配置同步到APP,指令也已经预先设定。当用户需要操控设备,就在APP上点击或双击或长按控件,发送写指令;对于配置中的状态控件,APP主动发送读指令,呈现设备的实时状态。3)用于设备的智能业务:在用户配置场景、定时、联动中的触发条件和执行动作、订阅关注的状态等家庭业务时,指令数据承载了家庭业务的具体需求。4)用于大数据采集:在智能主机上报状态时云平台执行大数据采集。在统一的指令数据规范约束下,智能主机、服务云和APP具备了按照用户需求定制家庭业务的基础。
2.1.3透传的通信方式
通过服务云的通信交互模型为智能主机-云-APP,采用透传的通信方式使云平台具备高度扩展的特性。智能家居系统中的APP与智能主机的通信交互可以归纳为三个方面:APP向主机下发操控指令、主机向APP报告状态变化和主机向APP报告联动告警。服务云建立了通信报文模型,模型的关键项有:报文ID,发送方唯一标示(from),接收方唯一ID(to),请求参数(request),返回(response)。request和response携带了符合指令模型的指令数据。譬如:用户在APP上远距离开灯(如图3所示)。
APP把UI配置中的指令填入request发送给平台,平台收到指令后根据报文的to字传送给主机,该主机的指令模块接收后,向灯的驱动模块发送开灯指令,request的指令值为新状态塞入response,发送给平台。云平台根据主机的返回报文中的to透传给该主机多个用户的APP,从而实现APP远程操控智能设备的功能。无论智能家居业务如何扩展,只要把动作、人体感受和智能联动的触发抽象成指令集,输入到系统,同步用户配置和订阅云服务后,就能实现远距离操控和被通知的效果。
图3 开灯的交互过程
2.1.4定制安全验证
智能家居系统的安全验证一般集中在设备硬件节点、软件单方面[12],本系统通过云平台、设备硬件、软件、用户配置等多方面,提供了包括访问验证、通信加密、权限管控和PIN码等多种验证方式。其中访问验证包括了客户端与智能主机的入网验证、用户帐号使用云数据需要经过票据验证和权限验证、访问家庭的隐私设备(譬如监控、门锁)需要PIN码验证等。这些隐私设备的操控都可以在设备驱动的属性中控制,要求UI操控时使用PIN码验证。这些安全验证凭据具有临时申请、动态变更,更新周期短的特点。智能主机启动后随机生成密钥Key,上报云平台的服务器,隐私设备上线时根据Key生成设备访问密钥。譬如APP建立远程加密连接,在播放监控前先获取密钥,以此密钥访问服务云的媒体服务器,媒体服务经过密钥验证和帐号系统的权限验证,建立RTP通道,完成播放。
2.2 智能主机
智能主机以OpenWRT为核心系统[13],对KNX设备、KNX 的 TCP/IP 转换[11]、Zigbee传感器[13]、Zigbee设备路由算法[16]等协议算法和设备功能单独实现,形成独立的so文件,使用时动态加载,根据定制业务支持异构智能设备之间的互联互通[14]。因此智能主机的设计目标是搭建一个互联互通的管理平台,各种定制的协议、智能设备、智能业务能够根据用户家庭业务的需求进行自动地装载和卸载。
管理平台主要包括:模块管理、入网管理、管理中心、智能联动、权限管理、数据模块、交互模块以及其他网络管理部分。系统设计图4所示。
图4 智能主机可定制化的设计
其中交互模块提供Socket和http服务[10],实现与APP本地发现、本地交互、与平台远程通信。模块管理根据配置动态加载模块驱动、协议驱动、版本升级等,管理中心负责模块协同、智能联动等环节充分体现了可定制化的特点。
2.2.1根据配置管理模块
配置管理是实现根据用户需求使用家庭业务的入口。出厂状态的智能主机初次上电后,主机的配置管理模块携带配置的版本信息向云服务请求最新配置,云服务通过版本比较,推送一份最新的设备配置:根据工程师与用户沟通后形成的智能设备列表等计算输出一份数据,该数据根据需求定制,并符合协议模型规范和智能设备类模型规范。随后通知模块管理检查模块版本:比较协议的动态库MD5的版本,根据协议的下载地址下载最新动态库文件,比较智能设备类的驱动库MD5的版本,根据驱动的下载地址下载最新的驱动文件。重启主机后,根据协议提供的方式添加智能设备,该设备即可加入家庭业务,实现智能控制。这样的接口设计具有扩展性,是根据用户需求添加设备,充分发挥主机性能的重要设计。
2.2.2嵌套的智能联动
系统的智能联动模块主要负责执行配置中的智能家庭业务部分。家庭常见业务有序列、联动、情景模式和定时,都可以统一为一种基本的业务模型,关键项包括:业务ID、条件组合、组合中等待时间、执行序列、序列中间隔时间、布防标示。条件组合和执行序列都符合指令数据规范。当把这些业务的使能也视为指令,就实现了联动嵌套。在业务中执行其他业务的布防和撤防,这个业务嵌套能力使得系统能够实现复杂的情景模式。譬如用户需要一个简单的布防策略:当5秒内门磁触发且PIR触发时,执行报警器声光报警、发送消息通知主人、保安。在不同的情景模式中布防或撤防,例如当一个情景按钮按下时,执行以下模式:7∶00—18∶00撤防;18∶00—23∶00 客厅灯光开启;撤防;23∶00—7∶00客厅灯光关闭;布防。为了避免循环,增加了环路检测,在一个事务中,当设备同时出现在条件和执行动作中时,在配置过程中模拟,事务执行过程中联动中止。智能联动支持家庭的具体个性要求,支持多种复杂条件的组合,使系统在可定制的基础上提升住宅的智能化程度。
2.3 APP UI定制
智能家居系统的UI布局需要为每个用户考虑以下个性定制的内容:经常操作哪些设备、看哪些情况、当下喜欢怎么显示、放在哪个位置、视觉疲劳时改颜色、换图片、改变位置、用不同的手机[8]等问题,简化操作步骤、简单易用。本系统定义了一系列的UI布局规范,通过分析用户变化莫测的需求,形成符合规范的云配置,APP根据规范解析配置数据,实现UI灵活多变的效果[17]。
2.3.1布局
布局规范设计包括:1)为一个界面用行数列数划分坐标,对应到APP上的位置和距离的百分比;2)所有UI控件抽象为一种基础的UI控件模型,其中的关键项有:位置行、位置列、宽、高、读序列、写序列,通过坐标实现位置的相互约束。
2.3.2视觉效果
定义一套控件:标签、图片、按钮、图片按钮、多键按钮、滑动开关、多值枚举等;定义一些容器:组、模板组、表格;定义一些独立功能组件:视频组件、历史数据组件、语音组件等;各种控件各有特征项,譬如滑动开关有频率设置,在连续滑动手势的基础上以合适的间隔操控智能设备。
每种控件都可以通过配置,保留用户特别关注的颜色、文字等视觉效果。其中的模板组是某一设备类驱动规范中提供的相关功能的集合,譬如电视接入,通过拖入布局,关联到用户的设备ID,用来提高UI设计的效率。
2.3.3操控和状态呈现
用户通过界面的控件的事件操作设备,或者通过语音功能,在平台过滤后,得出匹配的指令数据,操控设备[15]。这些事件包含了根据用户需求定制的设备操控指令序列。这些控件的设置中还可能包括读取智能设备状态的指令,譬如APP定时主动刷新状态,通过这些设置还可以在收到状态变化上报时,改变界面的控件的状态呈现。UI动态更新智能设备状态的过程如图5所示。
图5 智能设备操控和状态更新的流程
3 系统成果和分析
图6 用户配置和APP界面呈现
我司进入智能家居行业多年,随着市场推广,用户诉求不断个性化、维护成本不断升高,因此对整个智能家居系统进行全面改进,从用户需求“求异”出发,在云平台、智能主机和APP各方面实现最大的定制化设计。本系统的用户配置和APP界面如图6所示。在以用户需求为核心的智能家居系统的实践过程中,因为定制内容丰富,使得配置过程相对复杂。如何让工程商轻松地把新设备的驱动等输入到系统的云服务,如何简化智能主机上线配置,如何让用户自定义UI布局轻松有趣、语音匹配更优等等,还需要继续深入研究。
4 结语
本文基于“云+轻量主机+端”的智能家居模式,以用户配置为核心的智能家居系统架构,并且介绍了关键模块的实现方法。该系统的云、主机和APP基于一系列的协议规范,贴近需求、通过配置使不同协议的智能设备间互联互通,解决市场问题,实现家庭业务个性化定制,提升住宅智能的舒适度,向下一代智能家居产品迈进。