The present invention relates generally to the field of personal area networks (PANs) and, more particularly, to a method for connecting a personal area network to an IP-based network.
Zigbee is a wireless networking standard for low power, low data rate, and lost cost applications. Zigbee is well suited for automation, control, monitoring, and sensing applications in which data is transmitted infrequently at low rates from battery-powered devices. The Zigbee protocol builds upon the Institute of Electrical and Electronics Engineers (IEEE) 802.15.4 standard. This IEEE standard defines a short range, low power, low data rate wireless interface for small devices that have constrained power, CPU, and memory resources.
Zigbee is an open standard with broad industry support. Because of the open standard, Zigbee devices made by different manufacturers will inter-operate. The Zigbee protocol allows ad hoc networking so that devices can be easily added and removed from existing networks. For these reasons, Zigbee technology is expected to emerge as one of the leading technologies for machine-to-machine (M2M) applications.
To realize the full potential of Zigbee technology, it will be necessary to enable Zigbee devices residing in a personal area network to communicate with other devices connected to I P networks.
The present invention relates to communications between diverse networks, such as a Zigbee personal area network, and an IP network. The gateway includes a first interface device for connecting to the IP network, a second interface device for connecting to the Zigbee network, and a gateway controller. The gateway controller routes messages between the IP network and the Zigbee network.
In one exemplary embodiment, the gateway controller allocates ports on the IP interface device to clients in the Zigbee network. The gateway controller maintains a routing table associating the assigned ports with their corresponding Zigbee clients. The routing table may, for example, include a network address for the Zigbee clients and the corresponding port. When a message arrives at the gateway from the IP network, the port on which the message arrived is used to look up the network address of the corresponding Zigbee client. Conversely, messages from Zigbee clients are output to corresponding ports based on the network address of the originating Zigbee client.
In some embodiments, the gateway may operate in conjunction with a gateway proxy that assigns ports to Zigbee clients and maintains the routing tables.
In another embodiment, the gateway controller includes a node manager that can create Zigbee agents responsive to requests from IP clients. The Zigbee agents provide a presence on the Zigbee network for the requesting IP clients. The Zigbee agents appear like any other Zigbee application to Zigbee clients. The Zigbee agents can be remotely configured and controlled by the IP clients.
Referring now to the drawings, one exemplary embodiment of a communication network 10 according to the present invention is shown in
The Zigbee standard is built upon the Institute of Electrical and Electronics Engineers (IEEE) 802.15.4 standard that defines a short-range, low-power, low-data rate wireless interface for small devices with limited power, CPU, and memory resources. The Zigbee standard comprises a set of network and application-level protocols to enable networking between Zigbee clients 32. The Zigbee clients 32 comprise nodes within the Zigbee network 30. There are three types of nodes: coordinator, router, and end device. The various nodes may be interconnected in a star topology, tree topology, or mesh topology. Regardless of the network topology, each Zigbee network 30 comprises one (and only one) coordinator. The coordinator is responsible for setting up and managing the Zigbee network 30 to which the other nodes may join. In some embodiments, the coordinator may also maintain binding tables for routing of messages between various nodes of the Zigbee network 30.
A Zigbee network 30 that uses a tree or mesh topology requires the presence of at least one router. The router relays messages from one node in the Zigbee network 30 to another and allows child nodes to connect to it. A router acts as a local coordinator for end devices joining the Zigbee network 30. End devices typically host one or more applications to perform specified tasks. For example, end devices may have applications to collect and report data, and to control home devices such as lights within the home.
Within a Zigbee network 30, each node is identified by a unique address. Zigbee networks 30 employ two addressing schemes. Each node has a long address and a short address. The long address, also called the IEEE address or MAC address, is a 64-bit address allocated by the IEEE, which uniquely identifies the node. The short address, also referred to as the network address, is a 16-bit address that identifies the nodes of the Zigbee network 30 to the network coordinator. Network addresses are allocated by a coordinator or router when a node joins the Zigbee network 30.
A node may host one or more user applications. For example, there may be one application in the network 30 to monitor temperature and humidity. Such applications are referred to as endpoints on the node. These applications may send and receive messages to other applications either inside or outside of the Zigbee network 30.
In order to direct messages arriving at a node to the appropriate application, each endpoint is identified by an endpoint address. Endpoint addresses are similar to ports in IP addresses. A client 32 may have up to 240 applications or endpoints numbered from 1-240. Endpoint 255 is a broadcast endpoint address. Messages addressed to endpoint 255 will be delivered to all applications on the node.
Applications are modeled as application objects. An application profile defines the interactions between related or complementary application objects. An application profile may be public or private. A public application profile enables devices from different vendors to interoperate. Private application profiles are proprietary. The Zigbee Alliance provides a number of public profiles. One such public profile is the Home Control, Lighting Profile, which focuses on sensing and controlling light levels in a home environment. The profile defines a number of devices including Light Sensor Monochromatic, Switch Remote Control, Switching Load Controller, and Dimmer Remote Control.
Application objects communicate with one another through object attributes and clusters. An object attribute is a data item that is communicated between application objects. Each attribute has its own unique identifier. The Zigbee standard defines a set of data types for object attributes. A grouping of attributes comprises a cluster, which also has its own unique identifier. Attributes within a cluster may be mandatory or optional. Each cluster can contain up to 216 attributes. Input clusters consist of attributes that can be sent by other application objects. For example, an application object for monitoring a sensor may have an attribute called “report time” which controls the time interval between sensor readings. Output clusters comprise attributes that supply data to other application objects. Application objects with complementary input and output clusters can communicate with one another.
Application objects can initiate communications through a process known as binding. Binding creates a logical link between application objects. The binding mechanism associates applications that generate information with applications that can use the information. The information is exchanged as clusters. In order for two application objects to be bound, they must have complementary input and output clusters. When two application objects bind, the output cluster of one application object is connected with the input cluster of another application object. The binding between two application objects is specified by the network address and endpoint of the application object where the cluster is generated (the source), the network address and endpoint of the application object that consumes the cluster (the destination), and the cluster ID for the cluster being sent between them. Bound application objects can send and receive messages using the MSG and KVP message services.
Depending on where the binding information is stored, transmission of the cluster information from source to destination is direct or indirect. With direct addressing, the node sending the information determines the network address for the node where the destination application object resides and inserts the destination address into the message. If multiple application objects at different nodes receive the message, the message is replicated and a copy is sent to each node where at least one destination application object resides. With indirect addressing, the output cluster is sent to the coordinator, which maintains the binding tables. The coordinator determines the destination node based on the source address of the sending node and the cluster ID. The coordinator finds all entries in its binding table containing the source cluster and application address and generates a message for each receiving node. For each message, the coordinator inserts the destination address from the binding table into the message.
The Zigbee standard includes a discovery mechanism that enables Zigbee clients 32 in the network to discover the address and capabilities of other clients 32. Device discovery enables Zigbee clients 32 to query the network 30 to discover the network addresses of other clients on the network. Service discovery allows a Zigbee client 32 to request information about the capabilities of another Zigbee client 32. Service information is stored as descriptors and may include information such as the device type and capabilities of the Zigbee client 32, and the types of applications running on the Zigbee client 32. There are three mandatory descriptors and two optional descriptors stored in a Zigbee client 32. The mandatory descriptors are the node, node power, and simple descriptors. The optional descriptors are called the complex and user descriptors. For each Zigbee client 32, there is only one node and node power descriptor. For each application attached to an endpoint, there is a simple descriptor and possibly a complex descriptor and/or user descriptor.
The node descriptor describes the type (i.e., coordinator, router, or end device) and capabilities of the Zigbee client 32. The capabilities of a Zigbee client 32 or node are properties such as the frequency band in use, and the maximum buffer size. The power descriptor contains information about how the client 32 is powered. Such information may include the power mode (i.e., whether the device is on at all times or wakes up periodically), the available power sources, the current power sources in use, and the current power source level. The simple descriptor contains information about an application attached to the endpoint of a Zigbee client 32. This information includes the endpoint address that the application resides on, the application profile that the application implements, and lists of input and output clusters supported. The simple descriptor also indicates whether there are corresponding complex and user descriptors.
The application layer includes an application framework (AF), an application support sublayer (APS), and the Zigbee device object. The application framework provides an interface between the applications and the APS. The APS implements a binding mechanism to create logical associations between application objects. When a message arrives at a Zigbee client 32, the APS is responsible for delivering the message to the appropriate application. The Zigbee device object (ZDO) represents the Zigbee node type of the device (e.g., coordinator, router, or end device). The Zigbee device object also initiates device and service discovery on the Zigbee network 30.
The Zigbee protocols allow two or more Zigbee clients 32 within the same Zigbee network 30 to communicate with one another. However, the Zigbee protocols do not provide a mechanism to enable a Zigbee client 32 to communicate with IP clients 22 in an IP network 20. The present invention provides a gateway function to facilitate such communications.
An application residing on a Zigbee client 32 may use standard MSG or KVP messages to communicate with the gateway 100. For communications between the Zigbee client 32 and the gateway 100, one CID (e.g., CID=1) is used for data messages (data that is being sent or received). A second CID (e.g., CID=2) is used for control messages. When the Zigbee client 32 wants to send data, it sends a MSG or KVP message to the gateway 100 with the CID set equal to “1.” The data field contains the data to be transmitted. Similarly, the gateway 100 uses CID=1 to forward data from an IP client 22 to the Zigbee client 32. The Zigbee client and gateway may use CID=2 to send control messages. Alternatively, application layer messages can be encapsulated into standard Zigbee messages as shown in
Gateway 100 is responsible for maintaining connections with IP network 20 and for transferring messages between Zigbee clients 32 and IP clients 22 in the IP network 20. The gateway 100 maintains logical relationships between IP clients 22 in the IP network 20 and Zigbee clients 32 in the Zigbee network 30. These logical relationships may be maintained, for example, in a routing table 110 stored in the memory of gateway 100. The gateway 100 assigns each Zigbee client 32 a unique IP port at the gateway IP address. For each Zigbee client 32, routing table 110 stores the MAC address or short address and corresponding port number. When messages arrive at gateway 100, the gateway 100 uses the routing table 110 to determine where to forward the message. Data arriving at a particular port from the IP network 20 is sent to the Zigbee client 32 identified by the corresponding MAC address or short address stored in routing table 110. Similarly, when a message arrives at the gateway 100 from a Zigbee client 32 in the Zigbee network 30, gateway 100 determines the MAC address or short address of the originating node and outputs the data to the corresponding port identified in the routing table 110.
The presence and state fields contain state information pertaining to a Zigbee client 32. The presence field indicates whether a node is detected by the gateway 100. This field may be set to TRUE when the node is detected and FALSE otherwise. The state field indicates the current state of the port. The state is “connected” when an IP client 22 is connected to the port and “disconnected” otherwise.
An exemplary procedure for setting up the gateway 100 is shown in
Once gateway 100 is operating, an IP client 22 can establish a connection with a Zigbee client 32. Also, a Zigbee client 32 may initiate a connection with an IP client 22.
A simple serial communication protocol is used to transfer data between the IP controller 106A and the Zigbee controller 106B. An exemplary message format for transfer of messages between the I P controller 106A and the Zigbee controller 106B is shown in
Exemplary message types include SEND, CONNECT/DISCONNECT, ACK/NACK. The SEND message is sent between the IP controller 106A and the Zigbee controller 106B to transfer message data. The CONNECT/DISCONNECT message is sent from the Zigbee controller 106B to the IP controller 106A to open or terminate a connection to a specified IP client 22. The ACK/NACK message is used to acknowledge a SEND or CONNECT/DISCONNECT messages. Other messages could also be defined.
The message parameters will vary depending on the message type. For example, message parameter fields for the SEND messages may include an ADDRESS element and DATA TYPE element. The ADDRESS element may contain the MAC address of an originating or terminating Zigbee client 32. For transmissions going from the Zigbee network 30 toward the IP network 20, this field would include the MAC address or short address of the originating Zigbee client 32. As described below, gateway 100 may use this address to determine the appropriate port to which the data is output. For communications from the IP network 20 toward the Zigbee network 30, the ADDRESS element may include the MAC address or short address of the terminating Zigbee client 32. The DATA TYPE element could be used to indicate the type of data, e.g., text, audio, video, binary, etc. being sent.
Gateway 100 may be used to facilitate communications between a standard Zigbee client 32 and an IP Multimedia Subsystem (IMS) client 40 residing in the IP network 20. The IMS client 40 is a software application residing on a host computer connected to the IP network 20. The IMS client 40 implements the Session Initiation Protocol (SIP). An IMS aware application residing on a Zigbee client 32 could generate IMS and/or SIIP messages and use the Zigbee protocols to send the IMS and/or SIP messages to the gateway 100 encapsulated within standard Zigbee messages. In this case, gateway 100 may simply forward the encapsulated IMS and/or SIP message to the final destination. However, IMS and SIP messages are generally large and the connection between the gateway 100 and the IP network may be expensive and/or unrealizable. Therefore, it may not be desirable to send IMS and SIP messages over the interface between gateway 100 and IP network 20.
In the embodiment shown in
There may be instances where it is desirable for an IMS client 40 to communicate with an industry standard Zigbee application that lacks awareness of the IMS. Such communications can be facilitated through the use of a message translator 50 as shown in
To provide an example, assume that an IMS client 40 wants to gather information from one or more Zigbee light sensors that operate according to the Home Control, Lighting profile. It is presumed that the light sensor has been assigned a SIP username and that the SIP username has been registered with a SIP registrar.
The primary functions of the IP controller 106A at the gateway 100 is to connect with the gateway proxy 120 and to forward messages between Zigbee clients 32 and the gateway proxy 120. The gateway proxy 120 assigns ports to Zigbee clients 32 and maintains a routing table 110 as previously described. IP clients 22 that want to communicate with a Zigbee client 32 connect to the gateway proxy 120. The use of a gateway proxy 120 as shown in
As an example, assume that an IP client 22 desires to monitor a light sensor in the Zigbee network 30. The IP client 22 may connect to the gateway 100 and request that a Zigbee agent 108 be created to monitor the light sensor. In this example, the gateway 100 would create a Zigbee agent 108 having a Profile ID and Cluster ID that enables binding with the light sensor. The Zigbee agent 108 may receive light sensor readings from the standard Zigbee light sensor and forward those readings to the IP client 22. The Zigbee light sensor does not need any special capabilities.
To implement the Zigbee agents 108, Zigbee controller 106B includes a node manager 112 to instantiate the Zigbee agents 108. Node manager 112 may be assigned a dedicated port on the gateway 100 for communicating directly with I P clients 22. Each Zigbee agent 108 is assigned a unique port that is stored in the routing table 110. An IP client 22 may send a request to the node manager 112 to create a Zigbee agent 108. When a Zigbee agent 108 is instantiated by the node manager 112, the Zigbee agent 108 requests the IP controller 106A to assign a port to the Zigbee agent 108 and to add an entry to the routing table 110 associating the Zigbee agent 108 with the corresponding port. The I P controller 106A returns the assigned port to the node manager 112, which informs the IP client 22. Alternatively, IP controller 106A could send a message directly to the IP client 22 after assigning the port. Once the Zigbee agent 108 is instantiated and a port is assigned, the IP client 22 can communicate directly with the Zigbee agent 108 using the designated port. Gateway 100 handles communications between Zigbee agents 108 and IP clients 22 the same as Zigbee clients 32.
Those skilled in the art will appreciate that the techniques described above for establishing communication between a Zigbee agent 108 and IMS client 40 could be used with standard SIP methods other than the SUBSCRIBE method.
The present invention may, of course, be carried out in other specific ways than those herein set forth without departing from the scope and essential characteristics of the invention. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive, and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein.
Number | Name | Date | Kind |
---|---|---|---|
6775258 | van Valkenburg et al. | Aug 2004 | B1 |
7733885 | Ayyagari et al. | Jun 2010 | B2 |
20010010061 | Matsumoto | Jul 2001 | A1 |
20020027569 | Manni et al. | Mar 2002 | A1 |
20020045424 | Lee | Apr 2002 | A1 |
20020163895 | Haller et al. | Nov 2002 | A1 |
20020196771 | Vij et al. | Dec 2002 | A1 |
20030061110 | Bodin | Mar 2003 | A1 |
20050193249 | Poustchi et al. | Sep 2005 | A1 |
20060067209 | Sheehan et al. | Mar 2006 | A1 |
20060090165 | Martin et al. | Apr 2006 | A1 |
20070030848 | Miyata et al. | Feb 2007 | A1 |
20070097993 | Bojahra et al. | May 2007 | A1 |
20070115934 | Dauster et al. | May 2007 | A1 |
20080069121 | Adamson et al. | Mar 2008 | A1 |
20080205419 | Shin et al. | Aug 2008 | A1 |
20090070431 | Malik et al. | Mar 2009 | A1 |
20090178142 | Lieblich et al. | Jul 2009 | A1 |
20090296642 | Keller et al. | Dec 2009 | A1 |
Number | Date | Country |
---|---|---|
10245760 | Apr 2004 | DE |
2004236096 | Jan 2003 | JP |
2004015927 | Feb 2004 | WO |
Number | Date | Country | |
---|---|---|---|
20080056261 A1 | Mar 2008 | US |