基于UPnP与ZigBee的智能办公室研究
扫描二维码
随时随地手机看文章
引言
20世纪80年代末,随着通信与信息技术的发展,出现了通过总线技术对住宅或办公室中各种通信、电器、安防设备进行监控与管理的商用系统。近几年来,随着市场上智能化楼宇的不断升温,智能化办公室亦得到空前的发展,应用日渐增多,特别是在专业的写字楼。
随着科学技术的发展和网络的普及,物联网与互联网的结合是必然的趋势。ZigBee是基于IEEE802.15.4标准的低功耗个域网协议。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低复杂度、自组织、低功耗、高数据速率、低成本。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。微软提出的通用即插即用协议UPnP(UniversalPlugandPlay)是由UPnPForum提出的一种标准化协议,其分布式的开放网络架构可以根据不同的应用场景完成不同的智能框架。将UPnP协议与ZigBee相结合,是未来智能办公室发展的一大趋势,旨在打造一个安全舒适、节能环保的智能办公室。
1系统设计
现在许多智能办公室使用了总线技术,如X10、LonWorks、CAN等或者使用无线组网技术来控制和监控整个办公环境,比如灯光、安防和其他设备等。目前,总线技术之间的开放性和互操作性还难以统一。使用UPnP设备可以桥接这些网络成为一个网络,并提供用户更多设备存取家庭网络中的设备。在实现时也无须对像X10网络中的现有布线和设备进行昂贵的升级,只需要将设备变成UPnP设备并能够与控制点通讯并接受控制点的控制命令。除此之外,使用UPnP可以对这布在不同PC端上的音乐库进行统一管理。这些设备能被发现然后被其他控制点(比如个人电脑、UPnP接收器)控制。同时这些控制点也可以控制办公室中的任何一个扬声器。图片库可以自己作为一个设备存在,并自动在网络上声明。这使得一个图片库可能临时为多个应用程序使用,例如可以进行幻灯片显示的同时,在电子像框、机顶盒和电视上进行显示。
为了实现以上功能特点,本文设计的智能办公室是基于UPnP网络与ZigBee技术。系统总体框架如图1所示。
该系统将智能办公室中的设备分为两大类,一类是具有读写功能的设备,这些设备不仅能够读取反馈自身实时状态,还能接收外部控制指令进行控制,比如智能空调、智能电灯、智能电视等;另一类就是具备只读功能的设备,它无法从外部写入,只读自身感知元件数据,像温度传感器、照度传感器、湿度传感器等。
将各类计算机、智能办公设备、智能照明、安全报警设备等相连接构成UPnP网络,以实现设备自动发现、动态组网、资源内同共享和协同服务控制,形成一个多层次统一的办公网络,解决设备间互联、互通、互操作性问题。
在UPnP网络中,凡是具备IP地址的设备都必须直接使用网络的IP地址,但有些设备可能并不具备直接使用网络IP地址的能力,例如,电灯开关的控制就是这样,这是非IP设备。这类非IP设备可利用ZigBee技术通过网桥来与控制指针交换信息,同样也可达到预期控制效果。
2系统网桥设计
目前传统办公设备,大多都不具有网络接口,要使其成为UPnP设备,不仅需要为其添加网络接口,若是通过有线局域网还需要重新铺设网络线路,具有较大难度且费用高。但若要是传统办公设备成为ZigBee节点,则相对比较容易,只需为其加上ZigBee模块即可实现对设备的无线控制
若将ZigBee技术融入UPnP网络中,让每个ZigBee节点都成为UPnP设备,构成混合型智能办公网络,则既能发挥ZigBee设备的灵活、无线传输的特性,又能实现设备的即插即用和网络远程控制的功能。
ZigBee/UPnP网桥主要的作用有两点:一是将ZigBee节点信息提供给UPnP网络,并建立与UPnP的连接;二是当ZigBee网络建立后,则通过网桥来进行相关控制。网桥架构如图2所示。
图2ZigBee/UPnP网桥架构
ZigBee/UPnP网桥通过网口连接UPnP网络,并通过串口通信来连接ZigBee协调器,通过ZigBee协调器来获取信息并对ZigBee终端节点进行控制。网桥中运行UPnP协议的设备部分,为ZigBee网络的每一个节点创建一个虚拟UPnP设备,实现信息的准确传输。这样一来,ZigBee节点均实现了UPnP功能。
为实现其功能,ZigBee/UPnP网桥工作流程大致为以下几步:
注册:当接收到ZigBee网络送来的信息时,必须执行一连串的注册程序,并将该设备的相关信息写入XML文件中。
配对:当任一装置加入UPnP网络之后,必须针对设备的行为与功能做配对才能让才能让相同性质的设备进行通信,UPnP网络虽然提供了自动配对功能,但为了符合ZigBee网络的灵活性,需增加手动配对功能。
控制:在配对成功后,由UPnP的控制点发出控制命令必须经过转换,才能对ZigBee节点进行控制,相对地,由ZigBee节点发出的控制命令也必须经过转换才能对UPnP的控制点进行控制。
3系统软件设计
3.1UPnP网络建立
UPnP网络的建立如图3所示,分为设备寻址、设备发现、设备描述、设备控制、设备事件和设备表达这6个环节叫其中,设备寻址、设备发现和设备描述这3个环节是所有设备必须实现的部分,而设备控制、设备事件和设备表示这3个环节则根据设备自身特点选择是否实现该功能。例如,多媒体服务器就不需要实现设备表达,其只向外提供本地资源。图3UPnP网络建立流程图
设备寻址是指当一个设备接入网络时,通过动态主机配置协议DHCP(DynamicHostConfigurationProtocol)服务器,或者通过AutoIP取得设备唯一的IP地址。一旦设备连接到网上并且分配了地址,设备就根据简单服务发现协议SSDP(SimpleServiceDiscoveryProtocol)来发现。在设备发现操作之后,控制点可以发现感兴趣的设备,并使得控制点获得设备能力的描述,同时控制点也可以向设备发送命令,侦听设备状态的改变,并将设备展示给用户。对于一个设备的UPnP描述一般分成两个部分:描述设备和描述设备提供的服务。UPnP对某一设备的描述以XML形式表示出来,设备描述包括制造商信息,包括模块名称和编号、序列号、制造商名称、制造商网站的URL等。在获取了设备以及其服务的信息后,控制点可以向这些服务发出动作,并且接收动作回馈响应。最后,设备表示则采用HTML页的形式进行表示,使控制点能做浏览器中打开,用来浏览设备状态或控制设备図。
目前比较常用的UPnP软件开发工具SDK有Intel的libUPnP-1.2.1C语言)、Cyberlink的cybergarag(Java语言)等。本文选择了Intel的libUPnP-1.2.1作为原型开发用的SDK。
UPnP设备端程序流程图如图4所示。
其中,初始化内容包括初始化SDK、设置根目录、注册设备描述文件、执行设备相关初始化和向网络发出宣告消息。处理异步请求是,设备有订阅请求、获取服务状态当前值的请求和改变服务状态值这三种不同类型的请求。节点发出事件消息,保持控制点信息的更新。当发出SSDP”bye-bye”消息时,先从SDK取消设备注册,随后关闭SDK网。UPnP控制点端程序流程图如图5所示。
与设备类似,控制点也需初始化SDK,同时注册控制点的回调函数。初始化完成后,就可以在UPnP网络上捜索感兴趣的设备。对于网络电视而言,捜索目标定义为
charTVDeviceType[]="urn:schemas-cyoffice-org:NetworkTV:1";
控制点对感兴趣的设备进行订阅服务,每当设备中的状态列表改变时,设备会向订阅过这些事件的控制点发出事件消息。控制点根据这些信息来控制设备状态。
3.2网桥设备端实现
网桥设备端的运行流程如图6所示。
启动用户命令线程,持续等待接受用户输入的命令,并执行相应的动作。启动UPnP框架包括初始化线程池,以及创建相关处理机和注册表。启动Webserver独立线程,开始接受用户Web访问。启动串口独立线程,开始接收来自串口(ZigBee网络)的消息,并对信息做出相应处理。当完成以上环节后,设备进入正常运行状态,对各种命令、消息做出处理和响应。
根据本文网桥设计方案,网桥设备端需要为每个连上网桥的的ZigBee设备创建一个虚拟UPnP设备节点,现将虚拟设备节点结构定义如下:
structdev_Info
{
char*UDN;
char*DevType;
char*ServiceType[SERVICE_NUM];char*ServiceId[SERVICE_NUM];char*EventURL[SERVICE_NUM];char*CtrlURL[SERVICE_NUM];char*SCPDURL[SERVICE_NUM];structServiceContentSeeviceTable[SERVICE_NUM];intServiceCount;
unsignedcharDevKind;
unsignedcharDevId;
intDeviceHandle;
};
其中,服务列表节点结构定义如下:
structServiceContent
{
char*VarName[VAR_NUM];char*VarValStr[VAR_NUM];char*ActionName[ACTION_NUM];
upnp_actionAction[ACTION_NUM];
unsignedintVarCount;
unsignedintActionCount;
};
3.3XML文档设计
设备所具备的功能是设备服务描述的主体部分。例如,支持UPnP的空调设备包含温度调节、模式调节、风力方向等服务;支持UPnP的照明系统包含电灯的开关调节和亮度调节。基于XML的UPnP设备/服务描述是实现服务发现、资源共享的基础,UPnP论坛制定了如下设备XML描述模板[2]:
<?xmlversion=”1.0”?>
<rootxmlns="…">
<specVersion>
<device>
<serviceList>
<service>
</servise>
</serviceList>
</device>
</root>
下面以网络电视机为例,详细介绍基于上述模板开发的XML描述文档:
首先,进行设备类型描述设计为:
<deviceType>urn:schemas-cyoffice-org:NetworkTV:1
</deviceType>
接下来需设计唯一设备名字(UDN)。遵循唯一性原则,这里我们取设备名与该设备的MAC地址组合而成。设该设备的MAC地址为8888888888888。因此,UDN元素可表达为:
<UDN>uuid:Upnp-Net_TV-1_0-8888888888888</UDN>
至此,便完成了设备描述文档第一部分的设计,如下所示:
<?xmlversion=”1.0”?>
<rootxmlns="urn:schemas-cyoffice-org:NetworkTV-1-0”>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-cyoffice-org:NetworkTV:1</deviceType>
<UDN>uuid:Upnp-Net_TV-1_0-8888888888888</UDN>
<serviceList>
</serviceList>
<presentationURL>/NetTVpres.html</presentationURL>
</device>
</root>
本文所选择的网络电视设备包含音量调节、亮度调节、频道选择等服务。服务描述文档定义了这些服务动作的调用接口。所以必须做出进一步的XML文档设计。
例如,可把音量当前值的状态变量定义为VolAdjust,默认值名定义为DefaultVolAdjust,数据类型为整型。对于VolAdjust来说,定义minimum=1,maximum=100,step=l。当其sendEventAttribute(事件发生属性)的属性值为真时,将发出事件通知。于是,网络电视音量变量的定义如下所示:
<stateVariable>
<name>VolAdjust</name>
<sendEventAttribute>yes
</sendEventAttribute>
<dataType>int</dataType>
<allowedValueRange>
<minimum>1</minimum><maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
<stateVariable>
<name></name>
<sendEventAttribute>no</sendEventAttribute>
<dataType>int</dataType>
<allowedValueRange>
<minimum>1</minimum>
<maximum>100</maximum>
<step>1</step>
</allowedValueRange>
</stateVariable>
可设计与音量的相关动作:GetVolAdjust、SetVolAdjust、GetDefaultVolAdjust、SetDefaultVolAdjust。
网络电视的其他功能的状态变量与动作设计与此类似,具体设计不再赘述。
总结上述过程,我们首先确定服务所包含的功能类型,然后为每一个功能设计两个状态变量(当前值和默认值);然后为每一个状态变量设计查询动作和设置动作。设计过程符合规范且扩充方便。
4结语
本文所研究的基于UPnP网络与ZigBee技术智能办公室系统,使用低成本、低功耗、高灵活性的ZigBee无线网络来构建相关感应节点,通过ZigBee/UPnP网桥,即可实现ZigBee设备到虚拟UPnP的映射。利用UPnP网络是即插即用性,是各智能终端不需要任何设定就可以操作。在系统启动后,不管在办公室内,或在外,均可通过浏览器连接到本系统进而达到远程监控的目的。
20211223_61c34c7eebc59__基于UPnP与ZigBee的智能办公室研究