具体实施方式
下面结合附图对本发明实施例提供的技术方案进一步详细描述。
参见图1,图1为本发明实施例提供的一种外部设备控制家庭网络内部设备的方法的流程图,包括:
步骤101,外部设备与家庭网关建立连接通道。
本发明实施例提供的外部设备与家庭网关建立连接通道的方法流程,参见图2,包括步骤:
步骤201,外部设备向家庭网关发送SIP INVITE消息,所述SIP INVITE消息携带会话描述协议SDP信息。
外部设备利用配置信息获得家庭网关的SIP地址,向家庭网关发送SIPINVITE消息,所携带的会话描述协议SDP信息的媒体行的格式为:
m=<application><port><proto>,其中,
<proto>字段的值取‘TCP/HN’或‘TCP/TLS/HN’或‘SCTP/HN’以及‘SCTP/TLS/HN’中的一个,表示底层使用TCP或TCP/TLS或SCTP或SCTP/TLS协议连接,采用家庭网络(HomeNetwork,HN)控制协议进行通讯,该HN控制协议对SOAP协议的扩展如下:
在媒体控制框架中使用Control-Package:soap;当发送SOAP消息时,在连接通道上发送CONTROL消息,设置Content-Type为“application/soap”,并将SOAP消息置于CONTROL消息的消息体中。
<port>为连接通道的端口号,例如协商的连接通道端口号值为1。
步骤202,家庭网关向外部设备返回200OK响应消息,所述响应消息携带SDP响应。
步骤203,外部设备向家庭网关返回ACK确认消息,并根据所述ACK确认消息与家庭网关建立连接通道。
外部设备根据以上SDP协商结果,与家庭网关建立连接通道后,立即向家庭网关发送一个同步SYN消息,所述SYN消息包括Keep-Alive头域和Packages头域,分别用于协商连接通道的超时时间和用于协商连接通道上传输的协议包。
在本发明实施例中,连接通道上传输的协议包为简单对象访问协议SOAP控制包。
步骤102,外部设备通过建立的连接通道从家庭网关上获取家庭网络内部设备信息。
在外部设备通过建立的连接通道从家庭网关上获取家庭网络内部设备信息的步骤之前,家庭网关首先要生成或更新家庭网络内部设备列表信息。
家庭网关生成家庭网络内部设备列表信息的方法为:
家庭网关获取家庭网络内部设备发送的UPnP ssdp:alive消息;家庭网关根据所述UPnP ssdp:alive消息生成家庭网络内部设备列表文件。
家庭网关作为UPnP控制点,获取家庭网络内部设备发送的ssdp:alive消息,根据该消息生成设备列表文件,例如可以命名为devicelist.xml。设备列表文件的根元素为<devices>,其子元素为<device>元素列表,每个<device>元素包括子元素<location>、<nt>和<usn>;各子元素的值分别从接收到的ssdp:alive消息中的LOCATION头域、NT头域和USN头域中获取。例如,设备列表文件devicelist.xml的格式如下:
<devices>
<device>
<location>[设备1的根设备描述文件URL地址]</location>
<nt>[设备1的通知类型]</nt>
<usn>[设备1的唯一服务名]</usn>
</device>
<device>
<location>[设备2的根设备描述文件的URL地址]</location>
<nt>[设备2的通知类型]</nt>
<usn>[设备2的唯一服务名]</usn>
</device>
</devices>
家庭网关更新家庭网络内部设备列表信息的方法为:
家庭网关获取家庭网络内部设备发送的UPnP ssdp:byebye消息;家庭网关根据所述UPnP ssdp:byebye消息,从家庭网络内部设备列表文件中删除相应内部设备,更新家庭网络内部设备列表文件;或者,家庭网关根据获取的家庭网络内部设备发送的UPnP ssdp:alive消息,从家庭网络内部设备列表文件中更新或增加相应内部设备,更新家庭网络内部设备列表文件。
当家庭网关UPnP控制点收到家庭网络内部设备发送的ssdp:byebye消息时,需要更新此设备列表文件,删除与此设备对应的<device>元素的值。
或者,家庭网关收到家庭网络内部设备发送的ssdp:alive消息时,首先获取ssdp:alive消息中的USN头域的值,并查看设备列表文件,如果该值出现在设备列表的一个<device>元素的<usn>子元素的值中,说明设备列表中已经记录了此设备的信息,此时需要根据获取的设备信息更新设备列表中这个<device>元素的值;如果未出现在设备列表的一个<device>元素的<usn>子元素的值中,说明设备列表中未曾记录此设备的信息,此时需要在设备列表中增加一个新的<device>元素,并根据获取的设备信息设置<device>元素的值。
家庭网关在生成或更新家庭网络内部设备列表信息后,还可以进行如下操作:
家庭网关根据家庭网络内部设备列表文件,向家庭网络内部设备发送设备描述检索消息;
家庭网关根据获取的家庭网络内部设备的设备描述信息,生成家庭网络内部设备的设备描述信息文件,并向家庭网络内部设备发送服务描述检索消息;
家庭网关根据获取的家庭网络内部设备的服务描述信息,生成家庭网络内部设备的服务描述信息文件。
以上操作都是在家庭网关接收到外部设备请求之前进行的,例如家庭网关在接收到家庭网络设备的ssdp:alive消息后,根据ssdp:alive消息中的LOCATION头域所提供的设备URL地址来检索设备描述信息,并根据检索到的设备描述信息中的所有服务URL地址,检索这些服务的服务描述信息,并将这些设备描述信息和服务描述信息分别保存为不同的XML文件。对于这些XML文件,可以使用相应的设备URL地址或服务URL地址来标识,也可以使用映射将一个设备URL和其所有服务URL映射为一个唯一的XML文件。
家庭网关进行完以上操作后,外部设备就可以通过建立的连接通道从家庭网关上获取家庭网络内部设备信息。外部设备通过建立的连接通道从家庭网关上获取家庭网络内部设备信息的方法,参见图3,包括如下步骤:
步骤301,外部设备从家庭网关上获取家庭网络内部设备列表文件。
外部设备从家庭网关上获取家庭网络内部设备列表文件的方法为:
外部设备向家庭网关发送HTTP GET消息,请求获取家庭网络内部设备列表文件;家庭网关生成所述HTTP GET消息的响应消息,将家庭网络内部设备列表文件置于该响应消息的消息体中返回给外部设备。
家庭网关提供HTTP服务器功能,当外部设备需要获取家庭网络内部设备列表文件时,外部设备通过连接通道向家庭网关发送HTTP GET消息,以获取家庭网关上的设备列表文件。GET消息中Request-URL域填写设备列表文件名,在本发明实施例中例如Request-URL的值为“/devicelist.xml”;Host头域填写家庭网关的主机名。
例如,一个获取设备列表文件的HTTP GET消息的例子:
GET/devicelist.xml HTTP/1.1
HOST:gateway.home.net
一个获取设备列表文件的HTTP GET消息的响应消息的例子:
HTTP/1.1200OK
CONTENT-LANGUAGE:<用于设备列表文件的语言>
CONTENT-LENGTH:<消息体字节数>
CONTENT-TYPE:text/xml
DATE:<响应时间>
<设备列表文件>
步骤302,根据获取的家庭网络内部设备列表文件,外部设备从家庭网关上获取家庭网络内部设备的设备描述信息。
外部设备从家庭网关上获取家庭网络内部设备的设备描述信息的方法为:
外部设备向家庭网关发送设备描述HTTP GET检索消息,请求获取家庭网络内部设备的设备描述信息;家庭网关接收到所述HTTP GET消息后,向家庭网络内部设备发送设备描述UPnP GET检索消息;家庭网关接收所述UPnP GET消息的响应消息,获取所述家庭网络内部设备的设备描述信息;家庭网关生成所述HTTP GET消息的响应消息,将获取的设备描述信息置于该响应消息的消息体中返回给外部设备。
或者,如果家庭网关在接收到外部设备获取家庭网络内部设备的设备描述信息的HTTP GET检索消息之前,家庭网关已经生成家庭网络内部设备的设备描述信息文件,则外部设备从家庭网关上获取家庭网络内部设备的设备描述信息的方法为:
外部设备向家庭网关发送设备描述HTTP GET检索消息,请求获取家庭网络内部设备的设备描述信息;家庭网关生成所述HTTP GET消息的响应消息,将家庭网络内部设备的设备描述信息文件置于该响应消息的消息体中返回给外部设备。
外部设备获取了设备列表文件后,可以选择其中一个内部设备,根据其中的<location>元素等信息,构成一个新的HTTP GET消息,将消息发送给家庭网关,请求获取特定设备的设备描述信息。该HTTP GET消息的Request-URL值取<device>元素的<location>子元素的值,消息的Host头域取家庭网关HTTP服务器的网络主机名。例如,外部设备向家庭网关发送设备描述HTTP GET检索消息的例子:
GET<设备描述文件路径>HTTP/1.1
Host:gateway.home.net
家庭网关在接收到该设备描述HTTP GET检索消息后,构造一个UPnP GET设备描述检索消息,向相应内部设备发送该UPnP GET设备描述检索消息,家庭网关从接收到的UPnP GET消息的响应消息中获取设备描述信息后,生成所述HTTP GET消息的响应消息,将设备描述信息放入响应消息的消息体中,通过连接通道返回给外部设备;或者,外部设备将设备描述信息文件置于该响应消息的消息体中返回给外部设备。例如,一个设备描述HTTP GET消息的响应消息的例子:
HTTP/1.1200OK
CONTENT-LANGUAGE:<用于设备列表文件的语言>
CONTENT-LENGTH:<消息体字节数>
CONTENT-TYPE:text/xml
DATE:<响应时间>
<设备描述文件>...
步骤303,根据获取的家庭网络内部设备的设备描述信息,外部设备从家庭网关上获取家庭网络内部设备的服务描述信息。
外部设备从家庭网关上获取家庭网络内部设备的服务描述信息的方法为:
外部设备向家庭网关发送服务描述HTTP GET检索消息,请求获取家庭网络内部设备的服务描述信息;家庭网关接收到所述HTTP GET消息后,向家庭网络内部设备发送服务描述UPnP GET检索消息;家庭网关接收所述UPnP GET消息的响应消息,获取所述家庭网络内部设备的服务描述信息;家庭网关生成所述HTTP GET消息的响应消息,将获取的服务描述信息置于该响应消息的消息体中返回给外部设备。
或者,如果家庭网关在接收到外部设备获取家庭网络内部设备的服务描述信息的HTTP GET检索消息之前,家庭网关已经生成家庭网络内部设备的服务描述信息文件,则外部设备从家庭网关上获取家庭网络内部设备的服务描述信息的方法为:
外部设备向家庭网关发送服务描述HTTP GET检索消息,请求获取家庭网络内部设备的服务描述信息;家庭网关生成所述HTTP GET消息的响应消息,将家庭网络内部设备的服务描述信息文件置于响应消息的消息体中返回给外部设备。
外部设备根据设备描述信息中某个服务的<服务描述URL>的值,获取检索服务器描述的URL地址,并将这个URL地址作为HTTP GET请求消息的Request-URL值,发送HTTP GET请求消息给家庭网关;家庭网关根据接收到的HTTP GET请求消息构造UPnP GET服务描述检索消息:首先,拷贝接收到的HTTP GET请求消息;然后修改Host头域的值为:服务描述URL的主机部分、服务描述URL的端口部分。
家庭网关将构造的UPnP GET服务描述检索消息发送到相应的设备,从接收到的UPnP GET消息的响应消息中获取服务描述信息后,生成所述HTTP GET消息的响应消息,将服务描述信息放入响应消息的消息体中,通过连接通道返回给外部设备;或者,外部设备将服务描述信息文件置于该响应消息的消息体中返回给外部设备。
至此,外部设备通过建立的连接通道从家庭网关上获取到需要的家庭网络内部设备信息。
步骤103,外部设备根据获取的家庭网络内部设备信息通过建立的连接通道对家庭网络内部设备进行控制。
外部设备通过建立的连接通道对家庭网络内部设备进行控制的方法为:
外部设备向家庭网关发送CONTROL命令,所述CONTROL命令中携带SOAP消息;家庭网关根据收到的SOAP消息,向家庭网络内部设备发送UPnPSOAP消息;家庭网关接收家庭网络内部设备返回的UPnP SOAP响应消息;家庭网关生成所述CONTROL命令的响应消息,将SOAP响应消息置于CONTROL命令的响应消息的消息体中返回给外部设备。
外部设备要对家庭网络内部设备进行控制,可以构造一个SOAP请求消息并将SOAP消息通过控制命令发送给家庭网关,控制命令消息的构造是根据获得的服务描述信息进行的。例如一个控制命令中的SOAP消息的例子:
POST<控制URL>HTTP/1.1
HOST:<家庭网关主机部分>:<家庭网关端口部分>
CONTENT-LENGTH:bytes in body
CONTENT-TYPE:text/xml;charset=″utf-8″
SOAPACTION:″urn:schemas-UPnP-org:service:serviceType:v#actionName″
<SOAP消息>
家庭网关接收到上述CONTROL命令后,根据收到的SOAP消息构造UPnPSOAP请求消息;家庭网关根据UPnP协议规范向内部设备发送该UPnP SOAP消息,家庭网关接收到内部设备返回的所述UPnP SOAP消息的响应消息后,生成所述CONTROL命令的响应消息,通过建立的连接通道返回给外部设备,所述CONTROL命令的响应消息中携带所述SOAP响应消息。
本发明实施例提供的外部设备控制家庭网络内部设备的方法,利用SIP协议的会话协商功能,建立外部设备与家庭网关的连接通道,外部设备要获取家庭网络内部设备信息时,通过在建立的连接通道向家庭网关发送HTTP GET检索消息,在家庭网络内部家庭网关使用UPnP协议获取内部设备信息后,通过连接通道向外部设备返回HTTP GET检索消息的响应消息,所述HTTP GET检索消息的响应消息中携带要检索的内部设备信息,使外部设备可以直接从家庭网关上获取家庭网络内部设备列表及设备描述信息;外部设备要对家庭网络内部设备进行控制时,仅需在连接通道上向家庭网关发送CONTROL命令,CONTROL命令中携带SOAP控制消息,家庭网关根据收到的SOAP消息,向家庭网络内部设备发送UPnP SOAP消息;家庭网关根据接收到的UPnP SOAP响应消息,生成所述CONTROL命令的响应消息,并将SOAP响应消息置于CONTROL命令的响应消息的消息体中返回给外部设备。因此,本发明实施例提供的方法解决了外部设备与家庭网络内部设备通讯数据的传输问题,而且,外部设备与家庭网络内部设备进行通讯,仅需建立与家庭网关的单点连接即可与家庭网络上每个内部设备进行通讯,减少了网络流量。
下面以一个具体的实施例对本发明实施例提供的外部设备控制家庭网络内部设备的方法进行说明。参见图4,图4为本发明具体实施例的方法流程图。
步骤401,外部设备R经过与家庭网关GW的SIP信令交互后,获得家庭网关GW的网络地址,建立与家庭网关的连接通道。
步骤402,灯光设备L在UPnP发现阶段发送ssdp:alive消息广播。
当家庭网关GW接收到该ssdp:alive广播消息,检查设备列表中是否包含相应此设备的<device>元素。该步骤中,发送的ssdp:alive广播消息如下:
NOTIFY*HTTP/1.1
HOST:239.255.255.250:1900
CACHE-CONTROL:max-age=<过期秒数>
LOCATION:<根设备描述的URL>
NT:<搜索目标>
NTS:ssdp:alive
SERVER:OS/version UPnP/1.0<产品>/<版本>
USN:<唯一服务名>
步骤403,家庭网关GW获取此设备的<device>信息后更新设备列表文件。
家庭网关GW首先获取ssdp:alive消息中的USN头域的值,并查看此值是否出现在设备列表的一个<device>元素的<usn>子元素的值中。如果出现,说明表中已记录了此设备的信息,这时就根据上述消息更新设备列表中这个<device>元素的值;如果未出现,说明设备表中未曾记录此设备的信息,这时就在设备列表中增加一个新的<device>元素,并根据上述消息中的信息设置<device>元素的内容,当家庭网关GW收到此设备的UPnP ssdp:byebye消息时,就删除设备列表中相应<device>元素的值。
步骤404,外部设备R通过HTTP GET消息请求获取设备列表文件。
具体HTTP GET消息内容如下:
GET/homenetwork/devicelist.xml HTTP/1.1
HOST:gateway.home.net
步骤405,家庭网关GW在响应消息中将设备列表文件发送给外部设备R。
具体响应消息如下:
HTTP/1.1200OK
Content-Type:text/xml
<devices>
<device>
<location><二进制灯光设备URL地址></location>
<nt>urn:schemas-UPnP-org:device:BinaryLight:0.9</nt>
<usn>uuid:<设备唯一标识></usn>
</device>
</devices>
步骤406,外部设备R根据设备列表中的<device>元素<locaton>元素,向家庭网关GW发送HTTP GET请求消息以获取二进制灯光设备的设备描述信息。
具体HTTP GET消息内容如下:
GET<二进制灯光设备URL地址>HTTP/1.1
HOST:gateway.home.net
步骤407,家庭网关向二进制灯光设备请求设备描述信息。
具体UPnP GET消息内容如下:
GET<二进制灯光设备URL地址>HTTP/1.1
HOST<二进制灯光设备URL地址主机部分>:<二进制灯光设备URL地址端口部分>
步骤408,家庭网关接收到响应消息,获取二进制灯光设备的设备描述信息。
具体响应信息如下:
HTTP/1.1200OK
Content-Type:text/xml
<?xml version=″1.0″?>
<root xmlns=″urn:schemas-UPnP-org:device-1-0″>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<URLBase>base URL for all relative URLs</URLBase>
<device>
<deviceType>urn:schemas-UPnP-org:device:BinaryLight:0.9</deviceType>
<friendlyName>面向用户的短名称</friendlyName>
<manufacturer>制造商名称</manufacturer>
<manufacturerURL>制造商网址</manufacturerURL>
<modelDescription>面向用户的长描述</modelDescription>
<modelName>型号名称</modelName>
<modelNumber>型号</modelNumber>
<modelURL>型号的URL</modelURL>
<serialNumber>产品序列号</serialNumber>
<UDN>uuid:产品UUID</UDN>
<UPC>唯一产品编码</UPC>
<iconList>
<icon>
<mimetype>image/图片格式</mimetype>
<width>宽度像素数</width>
<height>高度像素数</height>
<depth>颜色深度</depth>
<url>图标URL</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-UPnP-org:service:SwitchPower:1</serviceType>
<serviceId>urn:UPnP-org:serviceId:SwitchPower:1</serviceId>
<SCPDURL>服务描述URL</SCPDURL>
<controlURL>控制URL</controlURL>
<eventSubURL>事件URL</eventSubURL>
</service>
</serviceList>
<presentationURL>展现URL</presentationURL>
</device>
</root>
步骤409,家庭网关GW将上述二进制灯光设备的设备描述信息通过响应消息返回给外部设备R。
具体响应信息如下:
HTTP/1.1200OK
Content-Type:text/xml
<二进制灯光设备的设备描述信息>
步骤410,外部设备R从上述二进制灯光设备的设备描述信息中获取设备的“控制URL”,“服务描述URL”,根据“服务描述URL”检索服务描述信息,外部设备R向家庭网关GW发送HTTP GET请求消息以获取二进制灯光设备的服务描述信息。具体HTTP GET消息内容如下:
GET<服务描述URL>HTTP/1.1
HOST:gateway.home.net
步骤411,家庭网关GW使用获取的“服务描述URL”发送UPnP GET服务检索消息。具体的UPnP GET服务检索消息如下:
GET<服务描述URL>HTTP/1.1
HOST:<服务描述URL主机部分>:<服务描述URL端口部分>
步骤412,家庭网关GW接收到响应消息,获取二进制灯光设备的服务描述信息。
具体响应信息如下:
HTTP/1.1200OK
CONTENT-LENGTH:<消息体长度>
CONTENT-TYPE:text/xml
DATE:<响应时间>
<服务描述>
步骤413,家庭网关GW响应外部设备的服务描述检索请求,并将上述服务描述信息在响应消息中发送给远程设备R:
HTTP/1.1200OK
CONTENT-LENGTH:<消息体长度>
CONTENT-TYPE:text/xml
DATE:<响应时间>
<服务描述>
步骤414,外部设备R根据上述服务描述信息在控制命令中发送SOAP控制信息,将二进制灯光设备打开,其SOAP控制信息具体如下:
POST<控制URL>
HOST:gateway.home.net
CONTENT-LENGTH:<消息体长度>
CONTENT-TYPE:text/xml;charset=”utf-8”
SOAPACTION:″urn:schemas-UPnP-org:service:SwitchPower:1#SwitchPower″
其中,上面SOAPACTION头域的第二个SwitchPower表示“动作名称”,从服务描述信息中获得。
步骤415,家庭网关GW接收到SOAP控制命令后,构造UPnPPOST消息将SOAP控制命令消息发送到二进制灯光设备。
步骤416,二进制的灯光设备L将响应消息发送给家庭网关GW,该SOAP响应消息具体如下:
HTTP/1.1200OK
CONTENT-LENGTH:<消息体字节大小>
CONTENT-TYPE:text/xml;charset=″utf-8″
DATE:when response was generated
EXT:
SERVER:OS/version UPnP/1.0product/version
<SOAP响应消息体>
步骤417,家庭网关GW在返回给外部设备R的响应中将上述SOAP响应信息发送给外部设备R。
在本具体实施例中,外部设备R通过Internet连接家庭网络的网关GW,使用SIP媒体控制框架协议,通过SIP协议建立与家庭网关GW的控制连接。外部设备R向家庭网关GW发送HTTP GET消息获取设备列表文件,然后外部设备R从设备列表文件中选取一个<device>元素,此<device>元素代表一个UPnP二进制灯光设备,此<device>元素的子元素<location>的值对应灯光设备的设备描述文件的URL地址。外部设备使用这个URL地址,通过控制命令向家庭网关发送HTTP GET消息获取灯光设备的设备描述文件;外部设备根据获取的设备描述文件,向家庭网关发送SOAP控制命令,控制此灯光设备打开。
本发明实施例还提供了第二种外部设备控制家庭网络内部设备的方法,如图5所示,图5为本发明实施例提供的第二种外部设备控制家庭网络内部设备的方法的流程图,包括:
步骤501,外部设备与家庭网关建立UPnP连接通道。
本发明实施例提供的外部设备与家庭网关建立UPnP连接通道的方法流程,参见图6,包括步骤:
步骤601,外部设备向家庭网关发送SIP Register消息,所述SIP Register消息携带会话描述协议SDP消息。
外部设备利用配置信息获得家庭网关的SIP地址,向家庭网关发送SIPRegister消息,所携带的会话描述协议SDP消息的媒体行的格式为:
m=<application><port><proto>,其中,
<proto>字段的值取‘TCP/UPnP’或‘TCP/TLS/UPnP’中的一个,表示底层使用TCP或TCP/TLS连接,通过UPnP协议进行通讯;
<port>为UPnP连接通道的端口号,例如协商的UPnP连接通道端口号值为1。
步骤602,家庭网关向外部设备返200OK响应消息,所述响应消息中携带会话描述协议SDP响应。
步骤603,外部设备向家庭网关返回ACK确认消息,并根据所述ACK确认消息与家庭网关建立UPnP连接通道。
外部设备根据以上SDP协商结果,与家庭网关建立UPnP连接通道。在本发明实施例中,外部设备将在家庭网关上生成一个备份,家庭网络上的其它控制点可以发现这个备份,这样,外部设备备份将作为家庭网络的一个组成部分,通过发送UPnP消息实现外部设备与家庭网络内部设备的通讯。
步骤502,外部设备通过建立的UPnP连接通道从家庭网关上获取家庭网络内部设备信息。
在外部设备通过建立的UPnP连接通道从家庭网关上获取家庭网络内部设备信息的步骤之前,家庭网关首先要生成或更新外部设备信息表。
家庭网关生成外部设备信息表的方法为:
家庭网关接收外部设备发送的UpnP ssdp:alive消息;家庭网关根据所述UpnP ssdp:alive消息为外部设备获取一个家庭网络内部的IP地址,并生成外部设备信息表,所述外部设备信息表每一行包括外部设备的UUID、外部设备的IP地址、外部设备的SIP地址、有效期信息和外部设备的家庭网络内部IP地址。
例如,一个外部设备发送的UPnP ssdp:alive消息的例子:
NOTIFY*HTTP/1.1
HOST:239.255.255.250:1900
CACHE_CONTROL:max-age=<广播的有效期>
LOCATION:<UPnP根设备描述的URL>
NT:<搜索目标>
NTS:ssdp:alive
USN:<外部设备的UUID>
为获取外部设备在家庭网络内部使用的IP地址,家庭网关可以发送动态主机配置协议DHCP消息从DHCP服务器获取一个IP地址,或通过其它方式获取一个IP地址。根据获取的UPnP ssdp:alive消息外部设备生成外部设备信息表,表中每一行包括一个外部设备的UUID、外部设备的IP地址、外部设备的SIP地址、有效期信息和外部设备的家庭网络内部IP地址。
生成的外部设备信息表的格式如下:
外部设备UUID |
外部设备IP地址 |
外部设备SIP地址 |
有效期 |
外部设备家庭网络内部IP地址 |
家庭网关更新外部设备信息表的方法为:
家庭网关从接收到的外部设备发送的UPnP ssdp:alive消息中获取外部设备的UUID,并在外部设备信息表中查找所述UUID对应的外部设备信息;
如果未查找到所述UUID对应的外部设备信息,则家庭网关为该外部设备获取一个家庭网络内部IP地址,并向外部设备信息表中填入该外部设备的UUID、SIP地址、IP地址、有效期信息和该外部设备的家庭网络内部IP地址。
家庭网关进行完以上操作后,外部设备就可以通过建立的UPnP连接通道从家庭网关上获取家庭网络内部设备信息。外部设备通过建立的UPnP连接通道从家庭网关上获取家庭网络内部设备信息的方法,参见图7,包括如下步骤:
步骤701,外部设备从家庭网关上获取家庭网络内部设备的设备信息。
外部设备从家庭网关上获取家庭网络内部设备的设备信息的方法为:
家庭网关在接收到家庭网络内部设备发送的UPnP ssdp:alive消息后,在外部设备信息表中查找外部设备的家庭网络内部IP地址;并向使用所述家庭网络内部IP地址的外部设备转发所述UPnP ssdp:alive消息;外部设备从接收到的所述UPnP ssdp:alive消息中获取家庭网络内部设备的设备信息。或者,
外部设备向家庭网关发送UPnP ssdp:search消息,请求获取家庭网络内部设备的设备信息;家庭网关从接收到的所述UPnP ssdp:search消息中获取外部设备的UUID,并在外部设备信息表中查找所述UUID对应的外部设备信息,家庭网关使用查找到的外部设备的家庭网络内部IP地址向家庭网络内部设备转发所述UPnP ssdp:search消息;家庭网关接收家庭网络内部设备返回的所述UPnPssdp:search消息的响应消息,并通过UPnP连接通道向所述外部设备的家庭网络内部IP地址转发该响应消息,所述响应消息中携带家庭网络内部设备的设备信息。
步骤702,根据获取的家庭网络内部设备的设备信息,外部设备从家庭网关上获取家庭网络内部设备的设备描述信息。
外部设备从家庭网关上获取家庭网络内部设备的设备描述信息的方法为:
外部设备向家庭网关发送设备描述UPnP GET检索消息,请求获取家庭网络内部设备的设备描述信息;家庭网关接收到所述设备描述UPnP GET检索消息后,在外部设备信息表中查找外部设备的家庭网络内部IP地址,并使用该家庭网络内部IP地址向家庭网络内部设备转发该UPnP GET消息;家庭网关接收到所述UPnP GET消息的响应消息后,通过UPnP连接通道向使用所述家庭网络内部IP地址的外部设备转发该UPnP GET消息的响应消息,所述响应消息中携带家庭网络内部设备的设备描述信息。
例如,外部设备在接收到从UPnP连接通道发送的UPnP ssdp:search消息后,提取LOCATION头域的值得到根设备UPnP描述的URL,获取根设备UPnP描述的URL后,外部设备可以向家庭网关发送设备描述检索消息:
GET<UPnP描述URL>HTTP/1.1
HOST:<UPnP描述URL的Host部分>:<UPnP描述URL的Port部分>
ACCEPT-LANGUAGE:<远程设备的语言选择>
家庭网关接收到该设备描述检索消息后,向家庭网络内部设备转发此消息,得到响应消息后再将消息转发给外部设备。
步骤703,根据获取的家庭网络内部设备的设备描述信息,外部设备从家庭网关上获取家庭网络内部设备的服务描述信息。
外部设备从家庭网关上获取家庭网络内部设备的服务描述信息的方法为:
外部设备向家庭网关发送服务描述UPnP GET检索消息,请求获取家庭网络内部设备的服务描述信息;家庭网关接收到所述服务描述UPnP GET检索消息后,在外部设备信息表中查找外部设备的家庭网络内部IP地址,并使用该家庭网络内部IP地址向家庭网络内部设备转发该UPnP GET消息;家庭网关接收到所述UPnP GET消息的响应消息后,通过UPnP连接通道向使用所述家庭网络内部IP地址的外部设备转发该UPnP GET消息的响应消息,所述响应消息中携带家庭网络内部设备的服务描述信息。
例如,外部设备获得设备描述信息后,可以从中得到服务列表<servicelist>元素,并获得内部设备提供的每个服务的<service>元素,<service>元素的<SCPDURL>子元素的值代表这个<service>元素的“服务URL”,外部设备使用这个“服务URL”来检索服务描述信息:
GET<服务描述URL>HTTP/1.1
HOST:<服务描述URL主机部分>:<服务描述URL端口部分>
家庭网关向家庭网络内部设备转发此消息,并接收响应消息,经响应消息通过UPnP连接通道转发给外部设备,所述响应消息中携带家庭网络内部设备的服务描述信息:
HTTP/1.1200OK
CONTENT-TYPE:text/xml
CONTENT-LENGTH:<消息体字节大小>
<服务描述>
至此,外部设备通过建立的UPnP连接通道从家庭网关上获取到需要的家庭网络内部设备信息。
步骤503,外部设备根据获取的家庭网络内部设备信息通过建立的连接通道对家庭网络内部设备进行控制。
外部设备通过建立的UPnP连接通道对家庭网络内部设备进行控制的方法为:
外部设备向家庭网关发送CONTROL命令,所述CONTROL命令中携带SOAP消息;家庭网关接收到所述CONTROL命令后,在外部设备信息表中查找外部设备的家庭网络内部IP地址,并使用该家庭网络内部IP地址向家庭网络内部设备转发所述SOAP消息;家庭网关接收到所述SOAP消息的响应消息后,生成所述CONTROL命令的响应消息,向使用所述家庭网络内部IP地址的外部设备转发所述CONTROL命令的响应消息,该CONTROL命令的响应消息中携带所述SOAP消息的响应消息。
外部设备在获得家庭网络内部设备的设备描述信息后,可以根据设备描述信息获得设备支持的命令及其格式。这样,外部设备可以在控制命令中携带以HTTP为承载的SOAP请求消息向家庭网络内部设备发送控制命令。SOAP消息中请求行的Request-URL值为检索到的服务描述信息中获得的“控制URL”。一个具体的控制命令的例子如下:
POST<控制URL>HTTP/1.1
HOST:<控制URL主机部分>:<控制URL端口部分>
CONTENT-LENGTH:<消息体字节数>
CONTENT-TYPE:text/xml;charset=″utf-8″
SOAPACTION:″urn:schemas-UPnP-org:service:serviceType:v#actionName″
<?xml version=″1.0″?>
<s:Envelope
xmlns:s=″http://schemas.xmlsoap.org/soap/envelope/″
s:encodingStyle=″http://schemas.xmlsoap.org/soap/encoding/″>
<s:Body>
<u:actionName xmlns:u=″urn:schemas-UPnP-org:service:serviceType:v″>
<argumentName>in arg value</argumentName>
other in args and their values go here,if any
</u:actionName>
</s:Body>
</s:Envelope>
本发明实施例提供的第二种外部设备控制家庭网络内部设备的方法,通过SIP协议的会话协商功能,建立外部设备与家庭网关的UPnP连接通道,外部设备与家庭网络的通讯通过发送UPnP消息实现,外部设备要获取家庭网络内部设备信息时,通过向家庭网关发送UPnP GET检索消息,家庭网关接收到所述UPnPGET检索消息后,使用外部设备在家庭网络内部的IP地址向家庭网络内部设备转发该UPnP GET消息;并向使用所述家庭网络内部IP地址的外部设备转发该UPnP GET消息的响应消息,所述响应消息中携带要检索的内部设备信息;外部设备对家庭网络内部设备进行控制时,通过向家庭网关发送CONTROL命令,CONTROL命令中携带SOAP消息;家庭网关通过使用外部设备在家庭网络内部IP地址,向家庭网络内部设备转发所述SOAP消息;以及向使用所述家庭网络内部IP地址的外部设备转发所述CONTROL命令的响应消息,并将所述SOAP消息的响应消息置于CONTROL命令的响应消息中返回给外部设备。因此,本发明实施例提供的方法解决了外部设备与家庭网络内部设备通讯数据的传输问题,而且,外部设备与家庭网络内部设备进行通讯,仅需建立与家庭网关的单点连接即可与家庭网络上每个内部设备进行通讯,减少了网络流量。
本发明实施例还提供了一种外部设备订阅家庭网络内部设备状态信息的方法,如图8所示,包括:
步骤801,外部设备向家庭网关发送SIP订阅消息。
SIP订阅消息中Request-URL的值为家庭网关的SIP地址,Event头域为:UPnP-event;publisher=”<发布者URL>”。例如,一个SIP订阅消息的例子为:
SUBSCRIBE sip:gatewayhome.net SIP/2.0
Via:SIP/2.0/TCP userremote.com;branch=z9hG4bKnashds7
To:<sip:gatewayhome.net>
From:<sip:userremote.com>;tag=xfg9
Call-ID:2010user.remote.com
CSeq:17766SUBSCRIBE
Max-Forwards:70
Event:UPnP-event;publisher=”<发布者URL>”;
Expire:3600
发布者URL的值包括基础URL部分和相对URL部分,其中,发布者URL基础URL部分根据目标设备的设备描述文件中的<root>根元素的子元素<baseURL>元素的值确定,发布者URL的相对URL部分根据路径root/serviceList/service/eventSubURL确定的元素<eventSubURL>的值确定。
步骤802,家庭网关接受该订阅请求消息,并根据所述SIP订阅消息向家庭网络内部设备发送UPnP订阅消息。
例如,家庭网关从上述SIP订阅消息中获取事件包名称UPnP-event,以及从订阅消息的Event头域publisher参数获取发布者URL。根据这些参数,家庭网关向家庭网络内部设备发送UPnP订阅消息如下:
SUBSCRIBE<发布者URL>HTTP/1.1
HOST:<发布者URL主机>:<发布者URL端口号>
CALLBACK:<家庭网关的UPnP网络地址>
NT:UPnP:event
TIMEOUT:<过期时间>
步骤803,家庭网关接收所述UPnP订阅消息的成功响应消息。例如:
HTTP/1.1200OK
步骤804,家庭网关向外部设备发送所述SIP订阅消息的成功响应消息,建立与外部设备的订阅关系。
例如,家庭网关接收到的SIP订阅消息的成功响应消息为:
SIP/2.0200OK
Via:SIP/2.0/TCP gateway.home.net;branch=z9hG4bKnashds7;received=192.0.2.1
To:<sip:gateway.home.net>;tag=ffd2
From:<sip:userremote.com>;tag=xfg9
Call-ID:2010user.remote.com
CSeq:17766SUBSCRIBE
Expires:600
Contact:sip:gateway.home.net
Content-Length:0
步骤805,家庭网关接收家庭网络内部设备的UPnP通知消息,所述UPnP通知消息中携带家庭网络内部设备的状态信息。
例如,家庭网关接收的家庭网络内部设备的UPnP通知消息为:
NOTIFY<家庭网关的UPnP网络地址>HTTP/1.1
HOST:<家庭网关的UPnP网络主机>:<家庭网关的UPnP网络端口>
CONTENT-TYPE:text/xml
CONTENT-LENGTH:Bytes in body
NT:UPnP:event
NTS:UPnP:propchange
SID:uuid:subscription-UUID
SEQ:event key
<?xml version=″1.0″?>
<e:propertyset xmlns:e=″urn:schemas-UPnP-org:event-1-0″>
<e:property>
<variableName>new value</variableName>
</e:property>
Other variable names and values(if any)go here.
</e:propertyset>
步骤806,家庭网关根据所述UPnP通知消息向外部设备发送SIP通知消息,所述SIP通知消息携带家庭网络内部设备的状态信息。
例如,家庭网关向外部设备发送的SIP通知消息为:
NOTIFY sip:userremote.com SIP/2.0
Via:SIP/2.0/TCP gateway.home.net;branch=z9hG4bKna998sk
From:<sip:gatewayhome.net>;tag=ffd2
To:<sip:userremote.com>;tag=xfg9
Call-ID:2010userhost.remote.com
Event:UPnP-event
Subscription-State:active;expires=599
Max-Forwards:70
CSeq:8775NOTIFY
Contact:sip:gateway.home.net
Content-Type:text/xml
Content-Length:...
<?xml version=″1.0″?>
<e:propertyset xmlns:e=″urn:schemas-UPnP-org:event-1-0″>
<e:property>
<variableName>new value</variableName>
</e:property>
Other variable names and values(if any)go here.
</e:propertyset>
本发明实施例提供的外部设备订阅家庭网络内部设备状态信息的方法,通过与家庭网关建立SIP订阅关系,家庭网络内部设备主动向家庭网关发送UPnP通知消息,在UPnP通知消息中携带家庭网络内部设备的状态信息,家庭网关根据接收到UPnP通知消息构造SIP通知消息,并发送给外部设备,在SIP通知消息携带家庭网络内部设备的状态信息,使得外部设备使用SIP协议可以单独订阅某个家庭网络内部设备的状态信息。
本发明实施例还提供了第二种外部设备订阅家庭网络内部设备状态信息的方法,可以订阅家庭网络中所有内部设备的状态信息,如图9所示,包括:
步骤901,家庭网关获取家庭网络内部设备的每个设备的状态信息,并组合成全状态信息文件。
在UPnP协议中,一个设备描述文件的结构可以如下所示:
<?xml version=″1.0″?>
<root xmlns=″urn:schemas-UPnP-org:device-1-0″>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<URLBase>base URL for all relative URLs</URLBase>
<device>
<deviceType>urn:schemas-UPnP-org:device:deviceType:v</deviceType>
<friendlyName>short user-friendly title</friendlyName>
<manufacturer>manufacturer name</manufacturer>
<manufacturerURL>URL to manufacturer site</manufacturerURL>
<modelDescription>long user-friendly title</modelDescription>
<modelName>model name</modelName>
<modelNumber>model number</modelNumber>
<modelURL>URL to model site</modelURL>
<serialNumber>manufacturer′s serial number</serialNumber>
<UDN>uuid:UUID</UDN>
<UPC>Universal Product Code</UPC>
<iconList>
<icon>
<mimetype>image/format</mimetype>
<width>horizontal pixels</width>
<height>vertical pixels</height>
<depth>color depth</depth>
<url>URL to icon</url>
</icon>
XML to declare other icons,if any,go here
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-UPnP-org:service:serviceType:v</serviceType>
<serviceId>urn:UPnP-org:serviceId:serviceID</serviceId>
<SCPDURL>URL to service description</SCPDURL>
<controlURL>URL for control</controlURL>
<eventSubURL>URL for eventing</eventSubURL>
</service>
Declarations for other services defined by a UPnP Forum working committee(if any)
go here
Declarations for other services added by UPnP vendor(if any)go here
</serviceList>
<deviceList>
Description of embedded devices defined by a UPnP Forum working committee(if any)
go here
Description of embedded devices added by UPnP vendor(if any)go here
</deviceList>
<presentationURL>URL for presentation</presentationURL>
</device>
</root>
根据单个设备描述文件的结构,因此,可以定义一个家庭网络的全状态信息文件格式为:
<?xml version=″1.0″?>
<root>
<device>
<UDN>uuid:UUID</UDN>
<servicelist>
<service>
<serviceId>urn:UPnP-org:serviceId:serviceID</serviceId>
<event>
<propertyset>
<property>
<variableName>new value</variableName>
</property>
</propertyset>
</event>
</service>
</servicelist>
</device>
<device>
</device>
</root>
在该全状态信息文件格式XML文档结构中,<root>为根元素,<root>元素包含若干<device>子元素,每个<device>元素包含的子元素<UDN>,表示内部设备的唯一标识,每个<device>元素还包含一个<servicelist>元素,表示设备提供的服务列表,<servicelist>元素包含若干<service>元素,表示设备提供的一个服务,<service>元素包含<serviceId>子元素,表示服务标识,还包含一个<event>子元素,表示服务包含的变量状态信息。<event>元素包含<propertyset>子元素,<propertyset>元素的定义与UPnP协议中的相关定义相同。
一个家庭网络的全状态信息文件格式还可以定义为:
<HomeNetwork>
<house id=″a1211″>
<OccupancyState>Occupied</OccupancyState>
<ActivityLevel>Asleep</ActivityLevel>
<DormancyLevel>Vacation</DormancyLevel>
</house>
<device id=″a1222″>
<URLBase>base URL for all relative URLs</URLBase>
<friendlyName>Bedroom Fan</friendlyName>
<deviceType>urn:schemas-UPnP-org:device:HVAC_System:1</deviceType>
<deviceID>urn:uuid:d27459b7-8213-4395-aa77-ed859a3e5b3a</pdm:deviceID>
</device>
<serviceList>
<service id=″a1233″>
<FanSpeedStatus>50</FanSpeedStatus>
<serviceType>urn:schemas-UPnP-org:service:FanSpeed:1</serviceType>
<serviceId>urn:UPnP-org:serviceId:SystemFanSpeed</serviceId>
<SCPDURL>URL to service description</SCPDURL>
<controlURL>URL for control</controlURL>
<deviceID>urn:uuid:d27459b7-8213-4395-aa77-ed859a3e5b3a</deviceID>
</service>
<service id=″a1244″>
<CurrentTemperature>25</CurrentTemperature>
<serviceType>urn:schemas-UPnP-org:service:TemperatureSensor:1</serviceType>
<serviceId>urn:UPnP-org:serviceId:RoomTemperature</serviceId>
<SCPDURL>URL to service description</SCPDURL>
<controlURL>URL for control</controlURL>
</service>
</serviceList>
</HomeNetwork>
在该全状态信息文件格式XML文档结构中,根元素<HomeNetwork>内部包含若干<house>元素,表示房屋状况;<house>元素包含子元素<OccupancyState>、<ActivityLevel>、<DormancyLevel>,这些子元素的含义与UPnP协议规范中HouseStatus规范中的含义相同,其值是从服务类型为“urn:shemas-UPnP-org:service:HouseStatus:1”的服务中获得的。
根元素<HomeNetwork>还包含若干<device>元素,代表家庭网络中的设备,其中的各个子元素是从UPnP设备描述信息中获得的。
根元素<HomeNetwork>还一个若干<serviceList>元素,<serviceList>元素包含若干<service>元素,每个<service>元素代表一个服务,每个<service>元素包含<serviceTpe>元素,代表服务类型;包含<serviceId>元素,代表服务Id;包含<SCPDURL>元素代表服务描述URL;包含<controlURL>,代表控制URL;包含<deviceID>,代表提供此服务的设备ID,这些元素的值都是家庭网关作为家庭网络控制点从家庭网络中接收到的设备广播消息或检索到的服务描述信息以及设备描述信息中获得的。
家庭网关作为家庭网络内的UPnP控制点,订阅家庭网络上所有内部设备的状态信息,根据所获得的每个内部设备的状态信息,按照上述全状态文件的格式组合成全状态信息文件。
获取家庭网络内部设备每个设备的状态信息的方法,如图10所示,包括:
步骤1010,家庭网关向家庭网络内部设备发送UPnP ssdp:search消息。
步骤1020,家庭网关根据接收到的所述UPnP ssdp:search消息的响应消息,收集家庭网络内部设备的所有设备信息。
步骤1030,根据收集的所有设备信息,家庭网关向每个设备分别发送设备描述信息检索消息,获取家庭网络每个设备的设备描述信息。
步骤1040,根据获取的每个设备的设备描述信息,家庭网关向每个设备中的每个服务发送服务订阅消息,订阅每个设备中的每个服务的状态变量。
步骤1050,根据所述服务订阅消息的响应消息,家庭网关获取每个设备的通知消息,所述通知消息中携带家庭网络内部设备的每个设备的状态信息。
根据所获得的每个内部设备的状态信息,家庭网关按照上述全状态文件的格式组合成全状态信息文件。家庭网关生成全状态信息文件的过程可以在家庭网关接入网络时进行。
步骤902,外部设备向家庭网关发送SIP订阅消息。
步骤903,家庭网关向外部设备返回所述SIP订阅消息的响应消息,该响应消息中携带所述全状态信息文件。
本发明实施例提供的外部设备订阅家庭网络内部设备状态信息的方法,通过家庭网关预先生成全状态信息文件,当外部设备向家庭网关发送SIP订阅消息时,由家庭网关向外部设备返回所述SIP订阅消息的响应消息,在该响应消息中携带所述全状态信息文件,使得外部设备使用SIP协议可以订阅整个家庭网络内部设备的状态信息。
在本发明实施例提供的外部设备控制家庭网络内部设备的方法的基础上,本发明实施例提供了一种家庭网络系统,如图11所示,包括:
家庭网关1110,用于与外部设备1130建立连接通道,获取内部设备1120信息;并通过建立的连接通道实现外部设备对内部设备1120的控制。
内部设备1120,用于接收家庭网关1110发送的检索消息,向家庭网关1110提供自身设备信息。
外部设备1130,用于与家庭网关1110建立连接通道,并通过建立的连接通道从家庭网关1110上获取家庭网络内部设备信息,实现对内部设备1120的控制。
所述家庭网关1110,还用于通过建立的连接通道接收外部设备1130发送的HTTP GET检索消息,并向内部设备1120发送UPnP GET检索消息;以及接收内部设备1120发送的所述UPnP GET检索消息的响应消息,并向外部设备1130返回所述HTTP GET检索消息的响应消息,所述响应消息中携带检索的内部设备信息;或者,
所述家庭网关1110,还用于通过建立的连接通道接收外部设备1130发送的UPnP GET检索消息,并向内部设备1120转发该UPnP GET检索消息;以及接收内部设备1120发送的所述UPnP GET检索消息的响应消息,并向外部设备1130转发该UPnP GET检索消息的响应消息,所述响应消息中携带检索的内部设备信息。
所述家庭网关1110,还用于与外部设备1130建立SIP订阅关系,接收内部设备1120的UPnP通知消息,并向外部设备1130发送SIP通知消息,所述UPnP/SIP通知消息中携带内部设备1120的状态信息;或者,
所述家庭网关1110,还用于获取内部设备1120的每个设备的状态信息,并组合成全状态信息文件;接收外部设备1120发送的SIP订阅消息,并向外部设备1120返回所述SIP订阅消息的响应消息,该响应消息中携带所述全状态信息文件。
所述外部设备1130,还用于通过建立的连接通道向家庭网关1110发送HTTPGET检索消息,并接收家庭网关1110返回的所述HTTP GET检索消息的响应消息,所述响应消息中携带检索的内部设备信息;或者,
所述外部设备1130,还用于通过建立的连接通道向家庭网关1110发送UPnPGET检索消息,接收家庭网关1110转发的内部设备1120发送的所述UPnP GET检索消息的响应消息,所述响应消息中携带检索的内部设备信息。
所述外部设备1130,还用于与家庭网关1110建立SIP订阅关系,接收家庭网关1110发送的SIP通知消息,所述SIP通知消息中携带家庭网络内部设备1020的状态信息;或者,
所述外部设备1130,还用于向家庭网关1110发送SIP订阅消息,并接收家庭网关1110返回的所述SIP订阅消息的响应消息,该响应消息中携带内部设备1120的全状态信息文件。
本发明实施例提供的家庭网络系统,外部设备1130通过SIP协议的会话协商功能,与家庭网关1110建立连接通道,家庭网关通过UPnP协议获取内部设备1120信息;外部设备1030获取家庭网络内部设备1120信息时,通过建立的连接通道向家庭网关发送HTTP GET检索消息,并接收家庭网关返回所述HTTPGET检索消息的响应消息,所述响应消息中携带检索的内部设备信息;或者通过建立的连接通道向家庭网关发送UPnP GET检索消息,家庭网关接收到所述UPnP GET检索消息后,使用外部设备在家庭网络内部的IP地址向家庭网络内部设备转发该UPnP GET消息;并向使用所述家庭网络内部IP地址的外部设备转发该UPnP GET消息的响应消息,所述响应消息中携带要检索的内部设备信息;外部设备对家庭网络内部设备进行控制时,通过向家庭网关1110发送CONTROL命令,CONTROL命令中携带SOAP消息;家庭网关1110通过构造UPnP SOAP消息发送给家庭网络内部设备,或者使用外部设备在家庭网络内部IP地址,向家庭网络内部设备转发所述SOAP消息;以及接收家庭网络内部设备返回的SOAP消息的响应消息,并将所述SOAP消息的响应消息置于CONTROL命令的响应消息中返回给外部设备。因此,本发明实施例提供的家庭网络系统解决了外部设备与家庭网络内部设备通讯数据的传输问题,而且,外部设备与家庭网络内部设备进行通讯,仅需建立与家庭网关的单点连接即可与家庭网络上每个内部设备进行通讯,减少了网络流量;同时,本发明实施例提供的家庭网络系统还可以实现外部设备对家庭网络内部设备的状态信息的订阅。
在本发明实施例提供的外部设备控制家庭网络内部设备的方法的基础上,本发明实施例还提供了一种家庭网关,如图12所示,包括:
连接模块1211,用于与外部设备建立连接通道。
信息获取模块1212,用于获取家庭网络内部设备信息。
控制模块1213,用于通过建立的连接通道向外部设备提供家庭网络内部设备信息,实现外部设备对家庭网络内部设备的控制。
所述连接模块1211,还用于通过建立的连接通道接收外部设备发送的HTTPGET检索消息,并向家庭网络内部设备发送UPnP GET检索消息;以及接收家庭网络内部设备发送的所述UPnP GET检索消息的响应消息,并向外部设备返回所述HTTP GET检索消息的响应消息,所述响应消息中携带检索的家庭网络内部设备信息。
所述信息获取模块1212,还用于通过建立的连接通道接收外部设备发送的UPnP GET检索消息,并向家庭网络内部设备转发该UPnP GET检索消息;以及接收家庭网络内部设备发送的所述UPnP GET检索消息的响应消息,并向外部设备转发该UPnP GET检索消息的响应消息,所述响应消息中携带检索的家庭网络内部设备信息。
所述家庭网关还包括:
订阅模块1214,用于与外部设备建立订阅关系,根据家庭网络内部设备的状态信息消息,向外部设备发送通知消息,所述通知消息中携带家庭网络内部设备的状态信息。
所述订阅模块1214,还用于获取家庭网络内部设备的每个设备的状态信息,并组合成全状态信息文件;接收外部设备发送的订阅消息,并向外部设备返回所述订阅消息的响应消息,该响应消息中携带所述全状态信息文件。
本发明实施例提供的家庭网关,通过连接模块1211与外部设备建立连接通道,通过信息获取模块1212获取家庭网络内部设备信息,并通过控制模块1213通过建立的连接通道向外部设备提供家庭网络内部设备信息,实现外部设备对家庭网络内部设备的控制,以及通过订阅模块1214使得外部设备可以订阅家庭网络内部设备的状态信息。因此,本发明实施例提供的家庭网关解决了外部设备与家庭网络内部设备通讯的数据传输问题,而且,外部设备与家庭网络内部设备进行通讯,仅需建立与家庭网关的单点连接即可与家庭网络上每个内部设备进行通讯,减少了网络流量。
在本发明实施例提供的外部设备控制家庭网络内部设备的方法的基础上,本发明实施例还提供了一种外部设备,仍如图12所示,包括:
连接模块1221,用于与家庭网关建立连接通道。
控制模块1222,用于通过建立的连接通道根据获取的家庭网络内部设备信息,对家庭网络内部设备进行控制。
所述连接模块1221,还用于通过建立的连接通道向家庭网关发送HTTP GET检索消息,并接收家庭网关返回的所述HTTP GET检索消息的响应消息,所述响应消息中携带检索的家庭网络内部设备信息。
所述连接模块1221,还用于与家庭网关建立订阅关系,接收家庭网关发送的通知消息,所述通知消息中携带家庭网络内部设备的状态信息;或者,
所述连接模块1221,还用于向家庭网关发送订阅消息,接收家庭网关返回的所述订阅消息的响应消息,该响应消息中携带内部设备的全状态信息文件。
所述外部设备还包括:
信息获取模块1223,用于通过建立的连接通道向家庭网关发送UPnP GET检索消息,接收家庭网关转发的家庭网络内部设备发送的所述UPnP GET检索消息的响应消息,所述响应消息中携带检索的家庭网络内部设备信息。
本发明实施例提供的外部设备,通过通道模块1221与外部设备建立连接通道,通过控制模块1222在建立的连接通道根据获取的家庭网络内部设备信息,对家庭网络内部设备进行控制,以及通过通道模块1221与家庭网关建立订阅关系或向家庭网关发送订阅消息,使得外部设备可以订阅家庭网络内部设备的状态信息。因此,本发明实施例提供的外部设备解决了外部设备与家庭网络内部设备通讯的数据传输问题,而且,外部设备与家庭网络内部设备进行通讯,仅需建立与家庭网关的单点连接即可与家庭网络上每个内部设备进行通讯,减少了网络流量。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,该的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明实施例所提供的外部设备控制家庭网络内部设备的方法、家庭网络系统及设备进行了详细介绍,实施例的说明只是用于帮助理解本发明的方法及其思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。