【学习笔记】智能家居(5):一种即插即用的智能家居系统设计
0 引言
目前市场上智能家居系统的智能设备通过有线或无线与家庭网关直接相连,智能设备与系统的耦合性高,且未实现智能设备的即插即用,扩展性和易用性差。
现有即插即用协议有通用即插即用(Universal Plug and Play,UPnP)和Jini(Java Intelligent Network Infrastructure),UPnP技术是基于TCP/IP协议之上,用于PC等复杂设备的对等互联;Jini技术是基于Java平台的一种动态分布技术。以上技术在智能家居系统中都有一定的应用,但都是针对资源丰富且有网络连接能力的设备。家庭内智能设备(如传感设备)数量众多,而其存储资源、计算能力有限,无网络互联能力,因此现有即插即用技术不完全适用于智能家居系统中。
针对即插即用技术在物联网领域的应用,方远提出一种物联网即加即用设计框架,但没有给出实现方法。为此本文面向智能家居系统,设计一种基于智能插座的家庭网络拓扑结构,并自定义一种简单的即插即用协议,使一些简单设备也能实现即插即用。
1 家庭网络拓扑结构设计
在智能家居系统中,一般可将智能设备分为复杂设备和简单设备两种,复杂设备具有网络连接能力且功能复杂,简单设备一般不具有网络连接能力,且在智能家居系统中占多数。采用ZigBee网络连接家庭设备,节点成本高且存在供电问题,因此本文引入一种带数据交互和网络通信功能的智能插座,为简单设备供电的同时还解决了简单设备的网络连接问题,其所构成的智能家居网络拓扑结构如图1所示。
采用该智能家居网络拓扑结构有如下优势:(1)引入智能插座,降低家庭网关与智能设备之间的依赖性,减少家庭网关和系统结构的复杂度;(2)智能插座可以随意地增加或撤除,具有良好的扩展性;(3)智能插座屏蔽了简单设备特定的接口类型和底层通信协议,智能设备对家庭网关而言保持了一致性,是家庭网关设计的基础。
2 协议规范设计
2.1 协议设计
要实现智能家居系统中智能设备的即插即用,智能设备与家庭网关之间的交互需要符合一定协议,本文将该协议称为HPnP(Home network Plug and Play)。
在家庭网关和智能插座进行交互时,数据缓冲区内可能同时存在两个或多个交互数据包,即所谓的粘包。为区分多个数据包,解决粘包问题,HPnP协议数据包采用包头+包体的格式。其包头的具体结构如表1所示。
不同的命令代码对Value和Length字段值的意义会不一样,表2是各种命令的结构。
其中,Length域为0时,说明该数据包没有包体,大于0则为该数据包的包体长度。HPnP协议的包体主要包括设备描述符、图标描述符、动作指令和状态报告等,详见下节。
家庭网关与智能插座及设备之间的交互需满足一定的应答要求,主要包括设备的注册和设备正常工作时与家庭网关之间的交互。其中,智能设备还会以状态报告形式定时发送心跳包,判断家庭网关与智能设备的连接状况,具体如图2所示。
2.2 设备描述规范
智能设备在智能家居系统中主要是实现具体功能,例如用学习型红外遥控设备控制电视、机顶盒等,灯光集中控制器控制多盏灯。但要实现智能设备的即插即用,在设备注册阶段,要向家庭网关提交设备本身的描述信息。一般智能设备的描述信息包含了设备的基本属性、所能执行的动作和能够提供的状态。为更好地描述设备,参考UPnP协议对设备的描述,并提出适合本系统的设备描述规范。
UPnP协议对设备的描述分成设备描述和服务描述,对于设备的图标和控制界面,通过在设备描述中提供其URL的方式来提供。当家庭网络没有连入Internet时,无法添加新的智能设备,因此本文对设备的描述分成设备描述、图标描述及界面描述等几部分,在设备注册阶段再一一提交给家庭网关。其中设备描述是必备的,其框架如图3所示。
该设备描述文件主要包括:
(1)设备属性(唯一设备名、设备别名、厂商名称等);
(2)动作列表(动作名称、参数、动作返回值等);
(3)状态列表(状态名称、数据类型、有效值范围等)。
3 家庭网关设计
家庭网关是智能家居系统的核心,负责控制家庭内部的智能设备,本文设计的家庭网关其软件架构如图4所示。
该家庭网关主要由网络及线程管理单元、设备管理单元和界面管理单元三部分组成。为提高设备的响应速度,采用多线程方式为每个插座及插座上的设备服务,网络及线程管理单元负责线程的创建与销毁。以下是该家庭网关对数据的处理过程:
(1)线程通过HPnP协议处理单元解析接收到的数据。
(2)设备管理单元将解析结果分发到入网注册管理等各个子管理单元处理,以维护设备句柄表上的数据信息。
(3)当解析结果为设备注册、状态更新或退出时,设备管理单元发出相应信号给界面管理单元,如果为设备注册或退出信号,则根据图标设备映射表维护界面图标;如果为状态更新信号,则通知当前动态生成的界面更新状态。
(4)当用户操控设备界面产生控制信息时,设备管理单元将控制信息交给网络及线程管理单元。
(5)网络及线程管理单元负责把待发送消息分发到指定线程,指定线程通过HPnP协议处理单元将消息打包并发送。
动态生成的界面采用基于数据驱动的图形界面开发方案,实现了设备控制界面和设备逻辑功能的分离。界面生成主要有以下3种方式:(1)根据动作和状态链表生成控制界面。此种方式适用于简单设备,如环境传感设备。通过分析动作和状态的特征,找到与之匹配的控件。(2)根据设备提供的界面描述文档生成控制界面。此种方式适用于较复杂的和希望生成个性化界面的设备。(3)通过Web浏览器获得控制界面。此种方式适用于具有提供Web服务的设备,服务地址可在设备描述中提供。
4 实验验证
4.1 即插即用验证
为验证该智能家居系统具有即插即用的特性,基于HPnP自定义协议和Qt5 SDK实现本文所述的家庭网关,并模拟一个智能插座及两个不同智能设备,不同设备其设备描述符不同。
图5显示了智能插座注册成功后,家庭网关上创建该设备的图标Socket和控制界面,以及家庭网关一侧控制智能插座的交互过程。
图6显示了另一个智能设备(灯光集中控制设备)注册成功后,家庭网关上生成该设备的图标Light和控制界面,以及智能设备状态改变时与家庭网关的交互过程。
4.2 可行性验证
将上述实现的家庭网关程序交叉编译,运行于搭载Linux操作系统的S3C2440处理器上,在PC上模拟智能插座及设备。1个智能插座(包括3个设备)向家庭网关发起1个连接,针对不同参数进行测试,共测试41组数据,其中5组数据如表3所示。
从表3可以看出,随着连接数的增加,该家庭网关对设备的响应速度都维持在7 ms左右,且丢包率为0%,说明在通信链路正常连接的情况下,该家庭网关能及时响应每个设备,具有较高的稳定性和可靠性。但随着连接数的增加,该家庭网关内存消耗量几乎呈线性增加,其趋势如图7所示。从图7可推测出,当家庭网关承受240个连接共计720个设备时,内存消耗量约为20 MB左右,因此用一般的嵌入式设备充当家庭网关即可满足普通家庭的需求,具有较好的可行性。
5 结论
本文设计的一种即插即用的智能家居系统,使无 计算能力和无网络连接能力的简单设备也能实现即插即用。此外,可对系统作简单修改,使之适用于其他物联网的应用中。实验结果表明,该系统在不更新家庭网关的前提下,可实现智能设备零配置地接入系统,方便设备的添加、升级和撤除。
◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆