Systems and methods for efficient electronic communication in a distributed routing environment

A system for managing communications with a provider is disclosed. A provider includes a provider binding. A requestor requests a requested binding. An intervening access node is in electronic communication with the provider and the requestor. The intervening access node includes program instructions stored in memory and implementing a method for managing communications with a provider. The provider binding is received from the provider. The provider binding is stored. A request signal sent from the requestor specifies the requested binding. It is determined whether the requested binding is provided by the provider. The request signal is sent to the provider only if it is determined that the requested binding is provided by the provider.

TECHNICAL FIELD

The present invention relates generally to computers and computer-related technology. More specifically, the present invention relates to systems and methods for efficient electronic communication in a distributed routing environment.

BACKGROUND

Computer and communication technologies continue to advance at a rapid pace. Indeed, computer and communication technologies are involved in many aspects of a person's day. For example, many devices being used today by consumers have a small computer inside of the device. These small computers come in varying sizes and degrees of sophistication. These small computers include everything from one microcontroller to a fully-functional complete computer system. For example, these small computers may be a one-chip computer, such as a microcontroller, a one-board type of computer, such as a controller, a typical desktop computer, such as an IBM-PC compatible, etc.

Computers typically have one or more processors at the heart of the computer. The processor(s) usually are interconnected to different external inputs and outputs and function to manage the particular computer or device. For example, a processor in a thermostat may be connected to buttons used to select the temperature setting, to the furnace or air conditioner to change the temperature, and to temperature sensors to read and display the current temperature on a display.

Many appliances, devices, etc., include one or more small computers. For example, thermostats, furnaces, air conditioning systems, refrigerators, telephones, typewriters, automobiles, vending machines, and many different types of industrial equipment now typically have small computers, or processors, inside of them. Computer software runs the processors of these computers and instructs the processors how to carry out certain tasks. For example, the computer software running on a thermostat may cause an air conditioner to stop running when a particular temperature is reached or may cause a heater to turn on when needed.

These types of small computers that are a part of a device, appliance, tool, etc., are often referred to as embedded systems. The term “embedded system” usually refers to computer hardware and software that is part of a larger system. Embedded systems may not have typical input and output devices such as a keyboard, mouse, and/or monitor. Usually, at the heart of each embedded system is one or more processor(s).

A lighting system may incorporate an embedded system. The embedded system may be used to monitor and control the effects of the lighting system. For example, the embedded system may provide controls to dim the brightness of the lights within the lighting system. Alternatively, the embedded system may provide controls to increase the brightness of the lights. The embedded system may provide controls to initiate a specific lighting pattern among the individual lights within the lighting system. Embedded systems may be coupled to individual switches within the lighting system. These embedded systems may instruct the switches to power up or power down individual lights or the entire lighting system. Similarly, embedded systems may be coupled to individual lights within the lighting system. The brightness or power state of each individual light may be controlled by the embedded system.

A security system may also incorporate an embedded system. The embedded system may be used to control the individual security sensors that comprise the security system. For example, the embedded system may provide controls to power up each of the security sensors automatically. Embedded systems may be coupled to each of the individual security sensors. For example, an embedded system may be coupled to a motion sensor. The embedded system may power up the individual motion sensor automatically and provide controls to activate the motion sensor if motion is detected. Activating a motion sensor may include providing instructions to power up an LED located within the motion sensor, output an alarm from the output ports of the motion sensor, and the like. Embedded systems may also be coupled to sensors monitoring a door. The embedded system may provide instructions to the sensor monitoring the door to activate when the door is opened or closed. Similarly, embedded systems may be coupled to sensors monitoring a window. The embedded system may provide instructions to activate the sensor monitoring the window if the window is opened or closed.

Some embedded systems may also be used to control wireless products such as cell phones. The embedded system may provide instructions to power up the LED display of the cell phone. The embedded system may also activate the audio speakers within the cell phone to provide the user with an audio notification relating to the cell phone.

Home appliances may also incorporate an embedded system. Home appliances may include appliances typically used in a conventional kitchen, e.g., stove, refrigerator, microwave, etc. Home appliances may also include appliances that relate to the health and well-being of the user. For example, a massage recliner may incorporate an embedded system. The embedded system may provide instructions to automatically recline the back portion of the chair according to the preferences of the user. The embedded system may also provide instructions to initiate the oscillating components within the chair that cause vibrations within the recliner according to the preferences of the user.

Additional products typically found in homes may also incorporate embedded systems. For example, an embedded system may be used within a toilet to control the level of water used to refill the container tank. Embedded systems may be used within a jetted bathtub to control the outflow of air.

As stated, embedded systems may be used to monitor or control many different systems, resources, products, etc. With the growth of the Internet and the World Wide Web, embedded systems are increasingly connected to the Internet so that they can be remotely monitored and/or controlled. Other embedded systems may be connected to computer networks including local area networks, wide area networks, etc.

Some embedded systems may provide data and/or services to other computing devices using a computer network. Alternatively there may be typical computers or computing devices that provide data and/or services to other computing devices using a computer network. Sometimes the provider of the data and/or services may have a suboptimal connection to the computer network. In other situations there may be a great number of providers on the network. These situations, as well as others, may cause inefficiencies in communication across the network. Benefits may be realized if systems and methods were provided to optimize electronic communication in computer networks.

DETAILED DESCRIPTION

A system for managing communications with a provider is disclosed. A provider includes a provider binding. A requestor requests a requested binding. An intervening access node is in electronic communication with the provider and the requestor. The intervening access node includes program instructions stored in memory and implementing a method for managing communications with a provider. The provider binding is received from the provider. The provider binding is stored. A request signal sent from the requestor specifies the requested binding. It is determined whether the requested binding is provided by the provider by comparing an object of the provider binding with an object from the requested binding. The request signal is sent to the provider only if it is determined that the requested binding is provided by the provider. In some embodiments the request signal may be acknowledged without sending the request signal to the provider.

In certain embodiments it may be determined that the provider is not an intervening access node. Thus, in certain embodiments the provider is not an intervening access node.

The intervening access node may also send the request signal to any other intervening access nodes. A plurality of intervening access nodes may also be included in the system. In this embodiment the method may send the request signal to the plurality of intervening access nodes.

The intervening access node may include a list of request signals received. In addition, the intervening access node may also include a list of providers that are not intervening access nodes. The intervening access node may have a list of bindings for the providers that are not intervening access nodes. The provider binding and the requested binding may each include an object and an interface.

The provider may be embodied in various forms. For example, the provider may be an embedded device that is part of a lighting control system. The provider may be an embedded device that is part of a security system. Additionally, the provider may be an embedded device that is part of a home control system.

A method for managing electronic communications between a requestor and a provider is also disclosed. An intervening access node is in electronic communication with the provider and the requestor. The provider binding is received from the provider at the intervening access node. The provider binding is stored at the intervening access node. A request signal sent from the requester specifies the requested binding. It is determined whether the requested binding is provided by the provider by comparing an object of the provider binding with an object from the requested binding. The request signal is sent to the provider only if it is determined that the requested binding is provided by the provider.

A computing device that is configured to implement a method for managing electronic communications between a requestor and a provider is also disclosed. A processor is in electronic communication with memory. Instructions are stored in the memory and implementing a method. The provider binding is received from the provider at the computing device. The provider binding is stored on the computing device. A request signal sent from the requestor specifies the requested binding. It is determined whether the requested binding is provided by the provider by comparing an object of the provider binding with an object from the requested binding. The request signal is sent to the provider only if it is determined that the requested binding is provided by the provider.

A computer-readable medium comprising executable instructions for implementing a method for managing electronic communications between a requestor and a provider is also disclosed. An intervening access node is in electronic communication with the provider and the requestor. The provider binding is received from the provider at the intervening access node. The provider binding is stored on the intervening access node. A request signal sent from the requestor specifies the requested binding. It is determined whether the requested binding is provided by the provider by comparing an object of the provider binding with an object from the requested binding. The request signal is sent to the provider only if it is determined that the requested binding is provided by the provider. In certain embodiments, other items may be stored including a list of request signals received, a list of providers that are not intervening access nodes, and a list of bindings for the providers that are not intervening access nodes.

Various embodiments of the invention are now described with reference to the Figures, where like reference numbers indicate identical or functionally similar elements. The embodiments of the present invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of several exemplary embodiments of the present invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of the embodiments of the invention.

Many features of the embodiments disclosed herein may be implemented as computer software, electronic hardware, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various components will be described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.

Where the described functionality is implemented as computer software, such software may include any type of computer instruction or computer executable code located within a memory device and/or transmitted as electronic signals over a system bus or network. Software that implements the functionality associated with components described herein may comprise a single instruction, or many instructions, and may be distributed over several different code segments, among different programs, and across several memory devices.

FIG. 1is a network block diagram illustrating two intervening access nodes in the network100. A provider102is in electronic communication with the network100. The network embodiment100ofFIG. 1includes two requestors104in electronic communication with the network100. The intervening access nodes106are also on the network100. There may be more nodes on the network100.

An intervening access node106is a network node that provides features and services to the network100. An intervening access node106may be used in a variety of ways. For example, an intervening access node106may be present on a network to provide services to computers, applications and/or objects on the network100. An intervening access node106may also be used to provide a protocol converter. An intervening access node106may be embedded or it106may be large enough to handle enterprise traffic.

One feature that an intervening access node106may include relates to object refinement. Object refinement refers to the situation where an intervening access node106places itself in place of an object and provides different implementations of the same interfaces. This allows, among other things, for problems in the implementation of an interface to be fixed without changing the actual end provider of the interface.

An additional feature of an intervening access node106is that of object augmentation. Object augmentation is where the intervening access node106adds new interfaces to an object that the end provider does not support.

In current design, the intervening access node106does not differentiate between clients and devices, so any service added is available to any (authorized) connected entity or node.

The network as shown inFIG. 1may inherit many features of web services. Web services are accessed using web protocols, usually HTTP and SOAP. The architecture is based on the peer-to-peer paradigm of networking.

Multiple intervening access nodes106in communication with one another form an intervening access node network110. To requestors104and/or providers102, the one or more intervening access nodes106of the intervening access node network110appear as a single intervening access node106. The size or number included in the intervening access node network110is transparent to providers102and/or requestors104.

A provider102is a node on the network100that is the source of a service108. A requestor104is a node on the network100that is the user of the service108. A requestor104is a software entity implemented on a node that may directly discover a service108to control or interact with it.

The service108may be any kind of service that may be provided by a computing device. Some possible examples of services108include providing temperature data from a location, providing surveillance data, providing weather information, providing an audio stream, providing a video stream, etc. Many different kinds of services and/or data may be provided over a computer network100from a provider102.

The service108is accessed through one or more bindings112. A binding112includes an object identifier114and an interface identifier116. Typically the object114and the interface116are in pairs. A provider can provide a plurality of bindings. It is possible that multiple providers can be providing the same service108, binding112, object114or interface116. Each binding112can be represented with a unique binding ID118. The binding ID118must be unique to the network100.

The provider102may be an embedded provider. An embedded provider is a provider102being implemented on an embedded device. An embedded device is a type of computing device that does not include all the same components associated with a typical desktop computer. For example, some embedded devices do not include monitors, others do not include a keyboard or a mouse, and some embedded devices do not include either a monitor or a keyboard/mouse. Many embedded devices are microcontroller-based devices, i.e., the central processor for the embedded device is a microcontroller.

The term “network” as used herein refers to a system in which a series of nodes are interconnected by a communications path. A node is a physical computing device that communicates with other nodes. The specific behavior of a node is determined by the applications or software it executes. Applications running on nodes of a network communicate with each other through software modules that implement protocols, formalized rules for how data is sent over a network. Some protocols deal with the timing, sequencing, and error checking of data transmission. Others deal more with how the data is formatted and the commands and responses that the nodes exchange. A set of protocols that work together is called a protocol stack, with each protocol acting as a layer in the stack that is built on top of another layer. The top layer of a protocol stack is used by an application, the middle layers deal with transferring groups (packets and frames) of data between nodes, and the bottom layer deals directly with the networking hardware that transfers data.

Physical networks consist of nodes that are connected by some sort of physical medium (e.g., electrical wire, optical fiber, air). This physical connection may sometimes be referred to as a link. A physical network limited to two nodes may be referred to as point-to-point, while a physical network that may support more than two nodes may be referred to, as multiple-access. Each node on a multiple-access network has a physical address that is used to distinguish it from the other nodes on the network.

Logical networks may be superimposed onto physical networks to specify a unique group of nodes. Each node in a logical network has a logical address that is mapped by a protocol to the node's physical address. A sub-network, or subnet, is a physically or logically independent portion of a network, distinguished by a subnet number.

Most protocols deal with logical networks because most physical network issues already have many well-defined implementations and defining new physical layers is not required. Logical networks also have the benefit of being insulated from the physical network, and are therefore more generally useful. For example, TCP/IP is defined on top of a logical network (IP). IP can run on many physical networks (Ethernet, serial, wireless, etc.). This makes TCP/IP a more generic solution than had it been defined only in terms of some specific physical network.

Any number of intervening access nodes106may be used in a network100.FIG. 2illustrates a network200that includes a number of intervening access nodes206as shown. Three requestors204,205are in electronic communication with the intervening access nodes206. In the network embodiment200shown inFIG. 2, the three requesters204,205all request the services208,228,248being provided by the providers202,205,206e. The data from the services208,228,248is sent through the intervening access node network210.

The intervening access node network210ofFIG. 2operates similarly to the intervening access node network110ofFIG. 1. In typical operation, the requestors104,204,205and the providers102,202,205,206ewould not distinguish between the intervening access node network110ofFIG. 1and the intervening access node network210ofFIG. 2.FIG. 2also illustrates that a node may serve as both a requestor and a provider, as shown by the illustrated requestor/provider205. This requestor/provider205provides a service228and binding232.FIG. 2also illustrates that a service/binding may be provided by an intervening access node206e.

As shown above, there may be many services and many bindings that are available on a network. It would be beneficial to allow these services to be “signaled” to provide a binding rather than always providing it. Through the systems and methods disclosed herein, requests are allowed to propagate through the network in an efficient manner, allowing for both loops in the connections and also allowing for a high number of disinterested providers (meaning providers that cannot provide additional services).

The intervening access nodes106,206may be connected in an arbitrary way, which includes loops. InFIGS. 1 and 2requesters104,204,205and providers102,202,205,206ewere illustrated. Requestors and providers may be separate nodes or may coexist on an intervening access node.

Referring now toFIG. 3, when a particular binding309is desired by a requestor304, a request signal305is sent through the system. The signal305should reach all the intervening access nodes and should reach only the providers that may possibly be capable of providing the binding309. The request signal305includes a signal ID307that uniquely identifies the signal and a binding309that identifies the binding that is being sought. Because the system of intervening access nodes may contain loops, each signal305is uniquely identified. In this way loopback can be detected. It may also be possible for an intermediate node to declare that it is not interested in receiving any signals.

FIG. 4is a flow diagram illustrating a method400for signal propagation by an intervening access node106. A request signal305is received402. Then it is determined404whether the request signal305is a duplicate by checking the unique identifier307of the signal305. If the signal is a duplicate, then the node acknowledges406the signal305immediately.

If the signal305is not a duplicate, then the signal is propagated408to all intervening access nodes that are connected to the present node except for the node that sent the present node the signal. Then the node waits410for acknowledgement from the connected nodes that it sent the signal to. When the acknowledgements are received and/or when a timeout is reached, an acknowledgement is sent412to the node that sent the present node the signal.

The method400as outlined inFIG. 4results in optimal behavior for intervening nodes106that may contain loops. Providers that are directly connected (coexist) on an intermediate node can use the same logic with very low overhead.

A problem may exist in how to get the signal to certain providers that are not intervening nodes.FIG. 5is a block diagram illustrating a network500that may cause such issues. The provider nodes502that may present problems are typically small embedded devices that may be using a variety of methods to establish connections (like slow modem lines, for example). As shown, a requester504is in electronic communication with a set of intervening access nodes506a-c. One intervening access node506bis connected to a single provider502athrough a poor connection507a(e.g., a slow modem, an inconsistent connection, etc.). Another intervening node506cis connected to a great number of providers502b-cby a gateway503. The intervening node506chas a poor connection507bwith the gateway503, which is exacerbated by the number of providers502b-con the other side of the gateway503. Because of the type of provider and/or type of connection it has, the logic above inFIG. 4(sending the signal and waiting for an acknowledgement) would result in poor behavior (slow speeds). A further problem may arise if there are a relatively large number of these difficult providers (devices) connected to the network at any time.

Some filtering logic may be used to determine which of the providers should be signaled. Further, the assumption can be made that these providers are not intermediate nodes, so there is no possibility that they form part of a “loop”. The system may assume that a provider is not on an intervening access node if it does not identify itself as an intervening access node or if the type of connection does not meet with certain criteria. This means that the unique identifier307of the signal305is unused by a non-intervening provider because it will not need to forward the signal to any other node. This also means that there is no need to wait for an acknowledgement from these non-intervening providers.

Based on the above logic, the intervening access node that is connected to a non-intervening provider can determine if the signal should be forwarded by comparing the binding that is requested with the set of bindings that the non-intervening provider is providing. If the non-intervening provider may provide the binding that is being requested, the signal is sent on to that provider. Otherwise the signal is not sent. This determination is made by comparing the object portion of binding309and the object portions of each binding112. Other ways to determine if the signal should be forwarded may be based on configuration or other information known by the intervening node.

FIG. 6is a block diagram of an embodiment of an intervening access node606. The intervening access node606includes the information necessary to enable it to determine whether a request signal305should be forwarded on to a provider102. The intervening node606includes a list of the request signals received608so that it may determine whether it has already received the request or not. A list of non-intervening providers610is also included so that the node606can identify the providers that are not intervening access nodes that it is connected to. A list of bindings612for the non-intervening providers is also included. The intervening node606may use this list to determine whether a request signal should be forwarded on to one or more non-intervening providers. The intervening access node606may also include a database of bindings614that includes all of the bindings on the network which it is aware of.

FIG. 7is a flow diagram of an embodiment of a method700of a provider102connecting to a network100. The provider102connects702to the network100. Then the provider102advertises704its bindings to the intervening access node106in the network100. When the provider102advertises704its bindings, its advertisements are received by the intervening access nodes106on the network100. The intervening access nodes106then stores706this information. At this time the intervening access nodes106also store whether the provider is a non-intervening provider. The new provider advertisement that is communicated to one or more nodes may be referred to as an availability notification.

One or more intervening access nodes106may be configured to serve as a directory. A directory is a node that provides information to other nodes regarding availability of providers and how to communicate with such providers. Any intervening access nodes106serving as directories would store the provider102information in the directory.

The roles of requestor and provider can be taken on by devices and software nodes connected to intervening access nodes106. In addition, an intervening access node106may be a requestor and/or a provider. For example, the intervening access node106may be a requestor/provider when setting up the communication between intervening access nodes106. An intervening access node106serves as a requestor when it106requests information about providers when it106connects to another intervening access node106. An intervening access node106serves as provider when it is providing information about other providers to other intervening access nodes106.

FIG. 8is a flow diagram of an embodiment of a method800of a requestor104establishing a service communication link with a network100. The requestor104connects802to the network100. Then the requester104may request804a list of bindings from the intervening access node(s)106. Using the list of bindings, the requestor is able to determine what service it needs and it requests806the service108from a provider102by sending a signal305including a provider binding112. The intervening access node network110,210communicates808the request from the requestor104to the provider102. The provider102then begins providing810the service(s) requested.

FIG. 9is a flow diagram of an embodiment of a method900of an intervening access node to determine if a request signal should be forwarded on to a particular provider. A request signal305is received902by the access node. The access node then forwards904this signal on to any other intervening access nodes. For any non-intervening providers, the access node then determines906whether the binding being requested could be provided by the non-intervening providers. The access node may make this determination by examining its non-intervening providers610and the bindings612from the non-intervening providers to determine whether the binding being requested could be provided by the non-intervening providers. If the non-intervening provider could provide the binding that is being requested, the signal is sent908on to that provider. Otherwise the signal is not sent910.

FIG. 10is a flow diagram of another embodiment of a method1000of an intervening access node to determine if a request signal should be forwarded on to a particular provider. A provider102connects1002to the network. Then the provider advertises1004its bindings112to the intervening access node in the network. When the provider advertises1004its bindings, its advertisements are received by the intervening access nodes on the network. The intervening access node then stores1006this information. At this time the intervening access nodes also determines1008or assumes that the provider is a non-intervening provider based on its quality of network connection considering such factors as whether the connection is persistent, the speed of the network connection, the response time from the provider and the capabilities of the provider.

A request signal is received1010by the intervening access node. The intervening access node then forwards1012this signal on to any other intervening access nodes. The intervening access node then determines1014whether it has any non-intervening access node providers that it is directly connected to. For any non-intervening providers, the intervening access node then determines1016whether the binding being requested could be provided by the non-intervening providers. The intervening access node may make this determination by examining its non-intervening providers610and the bindings612from the non-intervening providers to determine whether the binding being requested could be provided by the non-intervening providers. If the non-intervening provider could provide the binding that is being requested, the signal is sent1018on to that provider. Otherwise the signal is not sent on to that non-intervening provider.

FIG. 11is a block diagram of hardware components that may be used in an embodiment of an embedded device which may be used as either an embedded provider or as an embedded requester.

A CPU1110or processor may be provided to control the operation of the embedded device1102, including the other components thereof, which are coupled to the CPU1110via a bus1112. The CPU1110may be embodied as a microprocessor, microcontroller, digital signal processor or other device known in the art. The CPU1110performs logical and arithmetic operations based on program code stored within the memory1114. In certain embodiments, the memory1114may be on-board memory included with the CPU1110. For example, microcontrollers often include a certain amount of on-board memory.

The embedded device1102may also include a network interface1116. The network interface1116facilitates communication between the embedded device1102and other devices connected to the network100. The network100may be a pager network, a cellular network, a global communications network, the Internet, a computer network, a telephone network, etc. The network interface1116operates according to standard protocols for the applicable network100.

The embedded device1102may also include memory1114. The memory1114may include a random access memory (RAM) for storing temporary data. Alternatively, or in addition, the memory1114may include a read-only memory (ROM) for storing more permanent data, such as fixed code and configuration data. The memory1114may also be embodied as a magnetic storage device, such as a hard disk drive. The memory1114may be any type of electronic device capable of storing electronic information.

The embedded device1102may also include communication ports1118, which facilitate communication with other devices. The embedded device1102may also include input/output devices1120, such as a keyboard, a mouse, a joystick, a touchscreen, a monitor, speakers, a printer, etc.

The present systems and methods may be used in several contexts.FIG. 12illustrates one embodiment of a system wherein the present systems and methods may be implemented.FIG. 12is a block diagram that illustrates one embodiment of a lighting system1200that includes a lighting controller system1208. The lighting system1200ofFIG. 12may be incorporated in various rooms in a home. As illustrated, the system1200includes a room A1202, a room B1204, and a room C1206. Although three rooms are shown inFIG. 12, the system1200may be implemented in any number and variety of rooms within a home, dwelling, or other environment.

The lighting controller system1208may monitor and control additional embedded systems and components within the system1200. In one embodiment, the room A1202and the room B1204each include a switch component1214,1218. The switch components1214,1218may also include a secondary embedded system1216,1220. The secondary embedded systems1216,1220may receive instructions from the lighting controller system1208. The secondary embedded systems1216,1220may then execute these instructions. The instructions may include powering on or powering off various light components1210,1212,1222, and1224. The instructions may also include dimming the brightness or increasing the brightness of the various light components1210,1212,1222, and1224. The instructions may further include arranging the brightness of the light components1210,1212,1222, and1224in various patterns. The secondary embedded systems1216,1220facilitate the lighting controller system1208to monitor and control each light component1210,1212,1222, and1224located in the room A1202and the room B1204.

The lighting controller system1208might also provide instructions directly to a light component1226that includes a secondary embedded system1228in the depicted room C1206. The lighting controller system1208may instruct the secondary embedded system1228to power down or power up the individual light component1226. Similarly, the instructions received from the lighting controller system1208may include dimming the brightness or increasing the brightness of the individual light component1226.

The lighting controller system1208may also monitor and provide instructions directly to individual light components1230and1232within the system1200. These instructions may include similar instructions as described previously.

FIG. 13is an additional embodiment of a system wherein the present systems and methods of the present invention may be implemented.FIG. 13is a block diagram illustrating a security system1300. The security system1300in the depicted embodiment is implemented in a room A1302, a room B1304, and a room C1306. These rooms may be in the confines of a home or other enclosed environment. The system1300may also be implemented in an open environment where the rooms A, B and C,1302,1304, and1306respectively represent territories or boundaries.

The system1300includes a security controller system1308. The security controller system1308monitors and receives information from the various components within the system1300. For example, a motion sensor1314,1318may include a secondary embedded system1316,1320. The motion sensors1314,1318may monitor an immediate space for motion and alert the security controller system1308when motion is detected via the secondary embedded system1316,1320. The security controller system1308may also provide instructions to the various components within the system1300. For example, the security controller system1308may provide instructions to the secondary embedded systems1316,1320to power up or power down a window sensor1310,1322and a door sensor1312,1324. In one embodiment, the secondary embedded systems1316,1320notify the security controller system1308when the window sensors1310,1322detect movement of a window. Similarly, the secondary embedded systems1316,1320notify the security controller system1308when the door sensors1312,1324detect movement of a door. The secondary embedded systems1316,1320may instruct the motion sensors1314,1318to activate the LED (not shown) located within the motion sensors1314,1318.

The security controller system1308may also monitor and provide instructions directly to individual components within the system1300. For example, the security controller system1308may monitor and provide instructions to power up or power down to a motion sensor1330or a window sensor1332. The security controller system1308may also instruct the motion sensor1330and the window sensor1332to activate the LED (not shown) or audio alert notifications within the sensors1330and1332.

Each individual component comprising the system1300may also include a secondary embedded system. For example,FIG. 13illustrates a door sensor1326including a secondary embedded system1328. The security controller system1308may monitor and provide instructions to the secondary embedded system1328in a similar manner as previously described.

FIG. 14is a block diagram illustrating one embodiment of a home system1400. The home system1400includes a home controller1408that facilitates the monitoring of various systems such as the lighting system1200, the security system1300, and the like. The home system1400allows a user to control various components and systems through one or more embedded systems. In one embodiment, the home controller system1408monitors and provides information in the same manner as previously described in relation toFIGS. 12 and 13. In the depicted embodiment, the home controller1408provides instructions to a heating component1424via a secondary embedded system1420. The heating component1424may include a furnace or other heating device typically found in resident locations or offices. The home controller system1408may provide instructions to power up or power down the heating component1424via the secondary embedded system1420.

Similarly, the home controller1408may monitor and provide instructions directly to a component within the home system1400such as a cooling component1430. The cooling component1430may include an air conditioner or other cooling device typically found in resident locations or offices. The central home controller1408may instruct the cooling component1430to power up or power down depending on the temperature reading collected by the central embedded system1408. The home system1400functions in a similar manner as previously described in relation toFIGS. 12 and 13.

There are many types of embedded devices and many reasons for creating device networks. Several examples of device networking applications will be set forth. It will be appreciated by those skilled in the art that the examples discussed are not exhaustive.

One example of a device networking application is remote monitoring. Many useful device networks involve remote monitoring, the one-way transfer of information from one node to another. In these applications, providers typically act as small servers that report certain information in response to a requester. Providers can also be set up to publish their state information to subscribers. A requester may ask for periodic reports or for updates whenever the state changes, perhaps with some means of limiting how often updates are to be sent. Providers can be set up to notify requestors when some event or exceptional condition occurs.

Another example of a device network application is remote control, where requesters are able to send commands to providers to invoke some specific action. In most cases, remote control involves some sort of feedback.

A still further example of a device networking application is distributed control systems. The functions and data associated with individual providers can be combined and coordinated through a network to create a distributed system that provides additional value. Sometimes these distributed control systems can be established more or less automatically. In many cases, a more sophisticated device joins a peer-to-peer network to perform configuration, monitoring or diagnostic duties. Such systems may be created by objects that communicate as peers or through a master-slave configuration, in which each object in the system communicates with a single, central node that contains all of the control logic.

With each category of networking application, there are a variety of ways in which requestors may connect to providers. When a relatively small number of providers are involved, a requestor may use a web browser, pager or even a WAP-enabled cell phone to communicate with a provider in a more or less interactive manner. As the number of providers grows, however, these methods may become unworkable and requestors may employ more general data management techniques such as a spreadsheet or database application.

As a variety of networks are implemented over time and with different technologies, the situation can arise in which multiple networks might sit in the same home or facility, each using their own protocols and unable to communicate with the others. In this case the various networks and protocols can be bridged to create a single, larger network. This can allow a single application to access each provider, simplifying the interaction with all of the providers.