Reconstructing a personal area network or system after a failure in the network or system

Systems and methods are disclosed for reconstructing a personal area network (“PAN”) after a failure in a system or network. A method can include detecting, by a node, a power failure in a system. The method can further include storing, by the node, data about a parent node in the system at a time of the power failure. The method can further include detecting, by the node, power restoration in the system and entering a restoration state in response to detecting the power restoration. The method can further include transmitting, by the node and to the parent node, an enhanced beacon request via a particular frequency channel associated with the parent node. The method can also include receiving, by the node, an acknowledgement response from the parent node via the frequency channel and receiving, by the node, an enhanced beacon request from the parent node via the frequency channel.

TECHNICAL FIELD

This disclosure relates generally to networking and more particularly relates to reconstructing a personal area network (“PAN”) or system after a failure the network or system.

BACKGROUND

Resource providers (e.g., utility companies, home automation providers, industrial automation providers, scientific and environmental application providers, or other resource providers) may use various systems in which various devices communicate on a network. For example, in some networks, such as a personal area network (“PAN”) or a wireless mesh network defined by the Institute of Electrical and Electronics Engineers (“IEEE”) 802.15.4 family of standards, channel hopping can be used such that nodes in the network can communicate data over a designated channel that changes on a scheduled interval. Some such networks can provide a communications network for the resource providers and the resource providers may use the network to communicate between devices (e.g., endpoints, nodes, electric meters, routers, etc.) that can be used to monitor or manage consumption of resources (e.g., electricity, heat, water, as well as other types of resources). For instance, a child node can communicate data about a monitored resource to a parent node or a headend system (e.g., via the parent node) that can collect or store the data.

In some instances, a power outage or other network failure can terminate a connection or communication path between a child node and a parent node and some existing systems and method may cause the child node to remove information indicating the connection or communication path in response to the power outage or network failure. In some such examples, upon power restoration, existing systems and methods may require the child node and the parent node to attempt to form a new network to reconnect with each other. However, such existing systems and processes may be time consuming or computationally expensive and inefficient.

Thus, existing systems and methods for constructing a network (e.g., a PAN) after power restoration in a system present disadvantages such as, but not limited to, those discussed above and may be unable to efficiently construct or reconstruct a network for communication between child and parent nodes upon power restoration. For these and other reasons, improved techniques for reconstructing a PAN after a failure in a system or network are therefore desirable.

SUMMARY

Covered aspects of the invention are defined by the claims, not this summary. This summary is a high-level overview of various aspects of the invention and introduces some of the concepts that are further described in the Detailed Description section below. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification, any or all drawings, and each claim

Various examples of the present disclosure provide systems and methods for reconstructing a personal area network (“PAN”) or system after a failure in the network or system.

In one example, a method for reconstructing a personal area network (“PAN”) after a failure in the PAN includes detecting, by a node, a power failure in in the node. The method also includes storing, by the node, data about a parent node in the system at a time of the power failure. The method further includes detecting, by the node, power restoration in the node and entering into a restoration state in response to detecting the power restoration. The method also includes transmitting, by the node and in response to entering into the restoration state, an enhanced beacon request via a frequency channel associated with the parent node. The method further includes receiving, by the node, an acknowledgement response from the parent node via the frequency channel associated with the parent node. The node is configurable for listening for communication from the parent node via the frequency channel in response to receiving the acknowledgment response. The method also includes receiving, by the node, an enhanced beacon request response from the parent node via the frequency channel associated with the parent node to synchronize communication between the node and the system.

In another example, a system for reconstructing a personal area network (“PAN”) after a failure in the PAN includes a child node and a parent node. The child includes a processor and a non-transitory computer-readable medium communicatively coupled to the processor. The processor is configured to detect a power failure in the child node. The processor is further configured to store data about the parent node at a time of the power failure. The processor is further configured to detect power restoration in the child node and entering into a restoration state in response to detecting the power restoration. The processor is further configured to transmit, in response to entering into the restoration state, an enhanced beacon request via a frequency channel associated with the parent node. The processor is further configured to receive an acknowledgement response from the parent node via the frequency channel associated with the parent node, wherein the child node is configurable for listening for communication from the parent node via the frequency channel in response to receiving the acknowledgment response. The processor is also configured to receive an enhanced beacon request response from the parent node via the frequency channel associated with the parent node to synchronize communication between the child node and the system.

In another example, a method for reconstructing a personal area network (“PAN”) after a failure in the PAN includes detecting, by a parent node, a power failure in the parent node. The method also includes detecting, by the parent node, power restoration in the parent node and entering into a restoration state in response to detecting the power restoration. The method also includes receiving, by the parent node and in response to entering into the restoration state, an enhanced beacon request from a child node via a frequency channel associated with the parent node. The method also includes transmitting, by the parent node, an acknowledgement response to the child node via the frequency channel associated with the parent node, wherein the child node is configurable for listening for communication from the parent node via the frequency channel in response to receiving the acknowledgment response. The method also includes transmitting, by the parent node, an enhanced beacon request response to the child node via the frequency channel associated with the parent node to synchronize communication between the child node and the system.

The details of one or more aspects and examples are set forth in the accompanying drawings and the description below. Other features and aspects will become apparent from the description, the drawings, and the claims.

DETAILED DESCRIPTION

Certain aspects and features of the present disclosure relate to reconstructing a personal area network (“PAN”) or system after a failure in the network or system (e.g., upon power restoration after a power outage in the system or network). For instance, a network can include a node that is a device for monitoring, managing, and/or collecting data about the consumption of a resource (e.g., electricity, heat, water, gas, etc.). The node can be a child node that is connected to a parent node to communicate data about a monitored resource to the parent node or to a headend system (e.g., via the parent node). In some instances, the child node can store information about the network, such as, data indicating a connection or communication path between the child node and the parent node. In some examples, a power outage or other network failure can terminate the connection or communication path between the child node and the parent node and some existing systems and method may not maintain routing information in an internal memory of the child node in response to the power outage or network failure. In some such examples, upon power restoration, existing systems or methods may require the child node to perform another network joining process to connect with the parent node (e.g., by attempting to rediscover the parent node). However, such existing systems and methods may be time consuming or computationally expensive and inefficient. Certain examples described herein address these issues by allowing a child node to retain information about the connection or communication path between the child node and a parent node during a power or network failure and use the retained information to reconstruct the network or reconnect to the network upon power restoration or restoration of the network, which can provide the ability to reconstruct the network in a manner that is computationally inexpensive and time efficient.

In one example, a system can include various nodes for monitoring, managing, and/or collecting data about the consumption of a resource, various parent nodes (e.g., a router, server, or other node or device), and a PAN coordinator device (e.g., a parent node, server, or other device). A child node can be communicatively coupled to a parent node via a network (e.g., a PAN network). The child node can also be communicatively coupled to the PAN coordinator via its parent node and possibly other intervening nodes to communicate data about a monitored resource to the PAN coordinator (e.g., via the parent node), which can collect, store, or forward the data. In some examples, the various nodes can be connected to the PAN coordinator in layers. For instance, a first layer can include parent nodes communicatively coupled to the PAN coordinator without any intervening nodes. The parent nodes in the first layer can be communicatively coupled to various child nodes in a second layer. The child nodes in the second layer can be communicatively coupled to other child nodes in a third layer, thus child nodes in the second layer can be parent nodes with respect to the child nodes in the third layer.

In this example, a power outage or other failure in the system can terminate a connection between the one or more nodes or between the one or more nodes and the PAN coordinator. The various nodes can detect the power outage (e.g., by detecting that it has lost power) and, in response to detecting the power outage, store data about their parent node and any child nodes prior to shutting down due to the power outage. For instance, a time child node (e.g., a child node at the time of the power outage or failure) can store data indicating a MAC address of its time parent node (e.g., the parent node that is communicatively coupled to the child node at the time of the power outage) in an internal memory. The child node can also store layer information associated with the child node, which can include data indicating a number of nodes between the child node and the PAN coordinator (e.g., a number of the parent nodes used to route data from the child node to the PAN coordinator) or other information indicating the layer of the child node in the network. In some instances, the child node may also store data indicating one or more other time child nodes communicatively coupled to the same parent nodes (e.g., a neighbor node or “sibling” node to the child node that is communicatively coupled to the same parent node as the child node) or a MAC address of one of the other child nodes in the internal memory.

Continuing with this example, one or more of the nodes can subsequently detect power restoration (e.g., detect that power supply is restored to the node, system, or network) and the node can enter into a restoration state or “PAN Restoration State.” Once in the restoration state, a leaf node, such as a child node of the system that was not communicatively coupled to another child node at the time of the power outage, can attempt to synchronize communication with the network (e.g., reconstruct the network) by transmitting, on a randomized basis, an enhanced beacon request. In this example, the child node transmits the enhanced beacon request on a particular frequency channel associated with a MAC address of its parent node communicatively coupled to the child node at the time of the power outage (e.g., using the data stored in the internal memory of the child node at the time of the power outage). In some examples, the child node transmits the enhanced beacon request on a predetermined channel associated with the MAC address of its parent node. In some examples, the child node transmits the enhanced beacon request to its parent node by communicating on a particular period of a time-slotted channel hopping (TSCH) timeslot. As another example, the child node transmits the enhanced beacon request to its parent node during a primary portion of a primary TSCH timeslot on a frequency channel according to a channel hopping pattern utilized by the parent device. In some examples, the child node transmits the enhanced beacon request on a particular frequency channel associated with a MAC address of its parent node by utilizing one or more bits (e.g., one or more lower bits) of the MAC address of the parent node to identify the particular frequency channel. In one example, a hashing function (e.g., SHA-256) or any suitable randomization method or technique can be applied to the MAC address of the parent node and the child node can utilize the lower bits of the output of the hashing function or randomization process to identify a particular frequency channel via which the child node can communicate the enhanced beacon request to its parent node. In some examples, the MAC address of the parent node can be uniquely randomized or hashed and the child node can receive or obtain a pre-determined, randomized key. In this example, the child node uses the randomized or hashed MAC address of the parent node concatenated with the key to determine a particular frequency channel (e.g., the lower bits of the randomized MAC address concatenated with the randomized key) via which the child node can communicate the enhanced beacon request to its parent node. In some instances, a mechanism for selecting, by the child node, the frequency channel, may overload an existing mechanism that details channel selection for primary network hopping or, in the case of the Secondary Network, a child node or Low-Energy-End-Point node hopping profile where the channel destination is determined by combination of a current ASN number and a target MAC address. In some instances, a mechanism for selecting, by the child node, the frequency channel, may overload an existing mechanism that details channel selection for primary network hopping or, in the case of the Secondary Network, a child node or Low-Energy-End-Point node hopping profile where the channel destination is determined by combination of a current ASN number and a target MAC address. In still another embodiment, the parent node may store data to track which child devices are using it as a parent node and the parent node can wait to receive an enhanced beacon request from the child node to synchronize with the child node. The enhanced beacon request can include information for synchronizing communications between the child node and the PAN network, such as, an information element that can indicate that the child node is restored from the power outage or failure.

The parent node of the child node that transmits the enhanced beacon request can also be in a restoration state (e.g., due to the power outage). The parent node may be disconnected from the network and can listen for communications from the child node on the particular frequency channel that is associated with its MAC address. In some instances, the parent node can listen for the communication from the child node for a particular period of time. The parent node can listen for communications from the child node for a period of time (e.g., a period of time based on a layer position of the parent node). As an example, the period of time can be based on whether the parent node is in the first, second, or third layer of the system. For instance, if the parent node is in the third layer, the parent node may listen for communication from its child node for a longer period of time as compared to a parent node that is in the second layer. As another example, the period of time can be based on a number of other parent nodes between the parent node and the PAN coordinator at the time of the power outage.

Continuing with this example, the parent node can receive an enhanced beacon request from the child node, and transmit an acknowledgment response (e.g., a MAC layer acknowledgement) to the child node on the frequency channel associated with the MAC address of the parent node in response to receiving the enhanced beacon request. In some examples, once the child node receives the acknowledgment response from the parent node, the child node can continue to listen for communications (e.g., listen for an enhanced beacon request response) from the parent node on the frequency channel. In this example, the parent node can transmit an enhanced beacon request response to the child node on the frequency channel associated with the MAC address of the parent node and the enhanced beacon request response can include information that can be used by the child node to synchronize communications with the PAN network. As an example, once the child node receives an enhanced beacon request response from a parent node, the child node can synchronize communication with the system based on receiving the enhanced beacon request response (e.g., communicate with the PAN coordinator via one or more parent nodes to send information, such as measurements of the consumption of a resource). As another example, an internal clock of the child node may have switched to an OFF state during the power outage and the child node may realign or synchronize the clock based on the information included in the enhanced beacon request response. In some instances, if the parent node is also in a restoration state, the information in the enhanced beacon request response may include instructions indicating one or more operations (e.g., MAC layer operations) that can be performed by the child node. As an example, the information can include instructions that: indicate that the child node should continue to communicate with the parent node via the frequency channel associated with the parent node; specify or assign an Absolute Slot Number (“ASN”) used by the parent node via which the child node can communicate with the parent node; use a hopping sequence and slot assignment to communicate with the parent node (e.g., by transitioning or “hopping” from one channel to another on a time interval such as, 28 ms); or any other instruction.

As explained above, in this example, the parent node can also be in a restoration state. In this example, once the parent node is connected to, or synchronized with, its child node, the parent node can act as a child node and transmit an enhanced beacon request to its parent node in substantially the same manner as described above to synchronize communication with its parent node. In this example, the parent node in the system can iterate one or more processes described above to synchronize communication between the parent node and its parent node until each node is communicatively coupled to the PAN coordinator device via its parent node. For instance, once a child node in the third layer is synchronized with its parent node in the second layer, the parent node in the second layer can synchronize communications with its parent node in the first layer and the parent node in the first layer can synchronize communications with the PAN coordinator. In this example, each parent node that synchronizes with a child node can be referred to as a routing parent (e.g., a parent node for routing data from the child node to the PAN coordinator). In some instances, synchronizing communication (e.g., transmission and receipt of communications) between child nodes and parent nodes after a power outage or failure as described above can indicate to the nodes that a communication path or route between the nodes is still valid, which can cause the nodes to retain data about the network (e.g., data about a frequency channel via which to communicates stored at the time of the power outage) and use the retained information to reconstruct the network or reconnect to the network upon power restoration or restoration of the network in a manner that is computationally inexpensive and time efficient.

As used herein, the term “child node” is used to refer to any node that is communicatively coupled to at least one parent node. As an example, a child node is a node that is communicatively coupled to a parent node, where the child node is logically farther away from a PAN coordinator as compared to the parent node.

As used herein, the term “parent node” is used to refer to any node that is communicatively coupled to at least one child node. As an example, a parent node is a node that is logically closer to a PAN coordinator as compared to its child node.

As used herein, the term “leaf node” is used to refer to a child node that is not a parent node.

As used herein, the term “time parent node” is used to refer to a parent node that is communicatively coupled to a child node at a time of a failure in the system or network.

As used herein, the term “routing parent node” is used to refer to any parent node that is communicatively coupled to a child node for routing data from the child node to a PAN coordinator.

As used herein, the term “time child node” is used to refer to a child node that is communicatively coupled to a time parent node at a time of a failure in the system or network.

Referring now to the drawings,FIG. 1is an example of a system100(e.g., a network) for reconstructing a personal area network (“PAN”) or system after a failure in the network or system according to one example of the present disclosure.

In the example depicted inFIG. 1, the system100can be a PAN and can include a PAN can include a PAN coordinator device102(e.g., a parent node, server, computing device, network device, storage device, or other device). The system100can also include one or more nodes104a-k, which can each be a device (e.g., an endpoint, data source, module, etc.) for monitoring, managing, and/or collecting data about the consumption of a resource, such as electricity, heat, water, gas, etc. In some examples, the PAN coordinator device102or each node104a-kcan include various components for monitoring, managing, and/or collecting data about a resource, storing the data, and communicating the data to one or more other devices. In some instances, the PAN coordinator device102can serve as a collection point to which the nodes104a-kcan send information, such as measurements of the consumption of the resource. In some examples, each of the nodes104a-kcan be any type of device or node.

In some example the PAN coordinator device102or each node104a-kcan include one or more components, such as a processor, a bus, a database, a memory, input/output interface components, a display device, communication device, etc. for processing, storing, or communicating data. In some instances, the PAN coordinator device102or each node104a-kcan communicate within a network, such as a PAN network, using various communication technologies such as radio frequency (“RF”).

In this example, some of the nodes104a-kare child devices (e.g., child nodes) or parent devices and the various nodes104a-kcan be communicatively coupled. For example, each node104hand104ican be a child node of a parent node104eand communicatively coupled to the parent node104e. Node104jcan be a child node of a parent node104fand communicatively coupled to the parent node104fand node104kcan be a child node of a parent node104gand communicatively coupled to the parent node104g. Node104dcan be a child node of a parent node104aand communicatively coupled to the parent node104a. Nodes104e-fcan each be a child node of a parent node104band communicatively coupled to the parent node104band node104gcan be a child node of a parent node104cand communicatively coupled to the parent node104c. Node104dcan be a child node of a parent node104aand communicatively coupled to the parent node104a. In the example depicted inFIG. 1, nodes104a-ccan each be communicatively coupled to the PAN coordinator device102. In this manner, each of the nodes104a-kcan be communicatively coupled to the PAN coordinator device102(e.g., via one or more parent nodes).

In some examples, the system100can include one or more layers of nodes104a-k. For instance, the system100can include a first layer that includes various nodes104a-ccommunicatively coupled directly to PAN coordinator102. Child nodes104d-gare communicatively coupled to nodes in the first layer and are in a second layer. Nodes104e-gcan be parent nodes that are communicatively coupled to child nodes104h-kin a third layer, thus the child nodes104e-gin the second layer can be parent nodes with respect to child nodes104h-kin the third layer.

In some examples, the system100can be powered by a power supply (not shown). The power supply can include any device or system for providing power for operating one or more of the various nodes104a-kor the PAN coordinator102. In some instances, a power failure (e.g., power outage) can occur in the system100(e.g., a failure or outage of the power supply for the system100). In this example, the power failure can terminate (e.g., cut off) a connection between the one or more nodes104a-kor between the nodes104a-kand the PAN102. As an example, the power failure can terminate the connection between child node104hand the parent node104e.

In some examples, one or more of the nodes104a-kcan detect the power failure in the system100. For example, the node104hcan detect that it has lost power by detecting that a main power supply is no longer providing power to the child node104h(e.g., the node104hdetects that it is no longer being powered by a main power supply and is now being powered by a backup power source, such as an internal battery). In some instances, the one or more nodes104-kcan detect the power failure by detecting that a main power supply is not providing power to the node104a-kfor a period of time. As an example, the node104hcan detect that the main power supply is not providing power to the node104hand the node104hcan continue to detect the loss of power for a period of time (e.g., thirty seconds or any suitable time period) and, in response to detecting the loss of power for the period of time, the node104hcan detect or determine the power failure in the system100. In still another example, the nodes104a-kcan detect or determine the power failure in the system100upon power restoration (e.g., when the power supply begins to provide power to the system100after a power failure). For instance, the main power supply can stop providing power to the system100due to a power failure. Subsequently, the main power supply can be restored and begin providing power to the system100. Upon restoration, the node104hcan determine that there was a previous power failure in the system.

In some examples, in response to detecting a power failure in the system100, the one or more nodes104a-kcan store data about the system100at the time of the power failure. For example, the nodes104a-kcan store, in an internal memory device, data indicating a MAC address of one or more parent nodes communicatively coupled to the node104a-kat the time of the power failure. As an example, the node104hcan detect a power failure and, in response to detecting the power failure, the node104hcan store data indicating the MAC address of one or more parent nodes104eand104bcommunicatively coupled to the node104hfor routing data from the node104hto the PAN coordinator102. As another example, the node104a-kcan store layer information associated with the node104, which can include data indicating a number of parent nodes between the node104a-kand the PAN coordinator102at the time of the power failure (e.g., a number of parent nodes communicatively coupled to the node104a-kto route data from the node104a-kto the PAN coordinator102). As an example, the node104hcan detect a power failure and, in response to detecting the power failure, the node104hcan store data indicating that there are two parent nodes (e.g., node104eand104b) between the node104hand the PAN coordinator102at the time of the power failure. As still another example, the node104a-kcan store data indicating one or more neighbor or “sibling” nodes communicatively coupled to the same parent node or a MAC address of each of the other nodes communicatively coupled to the same parent node at the time of the power failure. As an example, the node104hcan store data indicating that the node104iis communicatively coupled to the same parent node (e.g., parent node104e), data indicating that only one other node is communicatively coupled to the same parent node, and/or a MAC address of the node104iat the time of the power failure. In some examples, the node104a-kcan store data indicating one or more neighbor or “sibling” nodes to synchronize communication with the system100. For instance, the node104hcan store data indicating that the node104iis communicatively coupled to the same parent node104eand transmit one or more signals to the node104ito synchronize with the parent node104evia the node104i.

In still another example, the node104a-kcan store data indicating one or more potential parent nodes or data indicating a scoring algorithm for determining a parent node or potential parent nodes. In some instances, the scoring algorithm can cause the node104a-kto use historical data such as, but not limited to, a strength of a signal between the node104a-kand one or more potential parent nodes, a signal success rate between the node104a-kand one or more potential parent nodes, a rate of data communication between the node104a-kand one or more potential parent nodes, a number of layers between the node104a-kand the PAN coordinator102, etc. to determine a current or potential parent node. As an example, the node104hcan store data indicating that nodes104eand104bare potential parent nodes. In this example, the node104hcan use the scoring algorithm to determine that the node104eis the parent node of the node104hin response to determining that the strength of the signal between the node104hand the node104eis higher than the strength of the signal between the node104hand the node104b. In some examples, the node104a-kcan store data indicating one or more nodes that are not potential parent nodes.

In some embodiments, the nodes104a-kcan store, in an internal memory device, data indicating a full routing path for routing data from the node104a-kto the PAN coordinator102. In this example, the nodes104a-kcan store data indicating each node104a-kbetween the node104a-kand the PAN coordinator102. As an example, the node104ican store data indicating that the nodes104eand104bare between the node104iand the PAN coordinator102for routing information from the node104ito the PAN coordinator102.

In some embodiments, a parent node may store data to track which child devices are using it as a parent node and the parent node can wait to receive a signal from the child node to synchronize with the child node. As an example, the parent node104ecan store data indicating that the child nodes104hand104iare using it as a parent node and the parent node104ecan wait to receive signal from the child nodes104hand104ito synchronize with the child nodes104hand104i. In some example, one or more parent nodes in the system100can store data indicating one or more child nodes communicatively coupled to the parent node. In this example, the parent node can use the data to synchronize communication with the child node upon the child node entering into a restoration state, as described in further detail below. For instance, upon a child node entering into a restoration state, the parent node can wait to receive a signal from the child node or transmit an acknowledgement response (e.g., a MAC layer acknowledgement) to each child node communicatively coupled to the parent node during separate timeslots or broadcast the acknowledgement responses to the various child nodes simultaneously.

Upon power restoration to the system100, one or more nodes104a-kcan detect the power restoration and enter into a restoration state (e.g., “PAN Restoration State.”) In some instances, once in a restoration state, each node104a-kin the system100that was communicatively coupled to at least one child node104a-kat the time of the power failure (e.g., each parent node104a-c,104e-g) can listen for communications from a child node on a particular frequency channel that is associated with the MAC address of the parent node104a-c,104e-g. As an example, once the parent node104eis in a restoration state, the parent node104ecan listen for communications from child nodes104hand104ion a frequency channel associated with the MAC address of the parent node104e. In some examples, the parent node104a-c,104e-gcan listen for communication from a child node for a particular period of time (e.g., a period of time based on a layer position of the parent node104a-c,104e-g). As an example, the period of time can be based on whether the parent node104a-c,104e-gis in the first, second, or third layer of the system100. For instance, the parent nodes104a-cin the third layer of the system100may listen for communication from a child node for a longer period of time as compared to the parent nodes104e-gthat are in the second layer of the system100. As another example, the period of time can be based on a number of other parent nodes between the parent node104a-c,104e-gand the PAN coordinator102at the time of the power outage.

In some examples, once in a restoration state, a leaf node (e.g., a child node in the system100that was not communicatively coupled to another child node at the time of the power failure such as child nodes104d,104h-k) can attempt to synchronize communication with the system100(e.g., attempt to reconstruct the system100) using data stored by the leaf node. In some examples, the child node104d,104d,104h-kcan attempt to synchronize with the system100by transmitting, on a randomized basis, an enhanced beacon request (“EBR”). As an example, the child node104hcan transmit, on a randomized basis, an EBR (e.g., an 802.15.4 EBR) to the system100. In some instances, the child node104d,104h-ktransmits the EBR on a particular frequency channel associated with a MAC address of a parent node104a-c,104e-gcommunicatively coupled to the child node104d,104h-kat the time of the power failure (e.g., using data stored in the internal memory of the child node104d,104h-kat the time of the power failure). In some examples, the EBR can include information for synchronizing communications between the child node104d,104h-kand the system100, such as an information element that can indicate that the child node104d,104h-kis restored from the power failure.

In some examples, the parent node104ecan listen for communications from the child nodes104h,104ion a particular frequency channel as described above, receive an EBR from the child node104h,104i, and transmit an acknowledgement response (e.g., a MAC layer acknowledgement) to the child node104h,104ion the frequency channel. As an example, the child node104hcan transmit an EBR to the parent node104eon a particular frequency channel associated with a MAC address of the parent node104e. In this example, the parent node104ecan then transmit an acknowledgement response to the child node104hon the particular frequency channel. In some instances, if the child node104h,104idoes not receive an acknowledgement response from the parent node104e, the child node104h,104imay attempt to retransmit the EBR to the parent node104e. In this example, if the child node104h,104iretransmits the EBR and still fails to receive an acknowledgement response, the child node104h,104ican transmit a broadcast EBR to any node104a-kin the system100to attempt to synchronize communication with the system100. In this example, a node104a-kreceiving the broadcast EBR can respond with an EBR response using Clear Channel Assessment (“CCA”).

In some examples, once a child node104d,104h-kreceives an acknowledgement response from a parent node104a-c,104e-g, the child node104d,104h-kcan continue to listen for communications from the parent node104a-c,104e-gon the frequency channel. In some examples, the parent node104a-c,104e-gcan transmit an EBR response to the child node104d,104h-kon the frequency channel associated with the parent node104a-c,104e-g. As an example, the parent node104ecan transmit an EBR response to the child node104hon a frequency channel associated with the MAC address of the parent node104e. In some instances, an EBR response can include information that can be used by the child node104d,104h-kto synchronize communications with the system100. As an example, once the child node104d,104h-kreceives an EBR response from a parent node104a-c,104e-g, the child node104d,104h-kcan synchronize communication with the system100in response to receiving the EBR response (e.g., communicate with the PAN coordinator102via one or more parent nodes to send information, such as measurements of the consumption of a resource). As another example, an internal clock of the child node104hmay have switched to an OFF state during the power failure and the child node104hmay realign or synchronize the clock based on information included in the EBR response from the parent node104e. In some examples, if the child node104d,104h-kis in a restoration state and the parent node104a-c,104e-gis also in a restoration state, the information included in the EBR response may include instructions indicating one or more operations (e.g., MAC layer operations) that can be performed by the child node104d,104h-k. As an example, if the child node104hand the parent node104eare both in a restoration state, the parent node104ecan transmit an EBR response that includes instructions indicating that the child node104hshould continue to communicate with the parent node104evia the frequency channel associated with the MAC address of the parent node104e, use an Absolute Slot Number (“ASN”) to communicate with the parent node104e, or use a hopping sequence and slot assignment to determine a time slot and frequency for communicating with the parent node104e.

In some examples, the various child and parent nodes in the system100can iterate one or more processes described above to synchronize communication between the various nodes104a-kuntil each node104a-kis communicatively coupled to the PAN coordinator102via a parent node after power restoration in the system100. As an example, once the child node104his synchronized with parent node104e, the node104ecan become a child node with respect to node104band synchronize communications with the node104bin substantially the same manner as described above. In this example, the node104bcan then synchronize communications with the PAN coordinator102in substantially the same manner as described above.

In some instances, synchronizing communications between child nodes and parent nodes after a power failure as described above can indicate to the nodes104a-kthat a communication path or route between the nodes104a-kis still valid, which can cause the nodes104a-kto retain data about the system100(e.g., data about a frequency channel via which to communicate stored at the time of the power failure) and use the retained information to reconstruct the system100or reconnect to the system100upon power restoration or restoration of the network in a manner that is computationally inexpensive and time efficient.

In another example, once in a restoration state, a parent node in the system100that was communicatively coupled to at least one child node at the time of the power failure can communicate with a child node by utilizing one or more communication technologies or protocols. In this example, the parent node can communicate with the PAN coordinator102or other nodes communicatively coupled to the PAN coordinator using one communication technology or protocol and can communicate with a child node by utilizing a different communication technology or protocol. As an example, the parent node104ecan listen for communication from the child node104hon a primary network. In this example, the parent node104ecan also listen for the communication from the child node104ion a Low Energy End-Point (“LEEP”) network. In this example, the LEEP network can be different from the primary network and the parent node104ecan listen for communications from the child node104hand the child node104iby alternating between the primary network and the LEEP network. In some examples, the parent node104ecan listen for communication from the child node104hon a channel that is based on the MAC address of the parent node104eand can listen for communication from child node104ion the LEEP network and can listen on the LEEP network for an amount of time corresponding to a number of primary network timeslots (e.g., 1024 timeslots).

AlthoughFIG. 1illustrates a particular arrangement of the system100, various additional arrangements are possible. As an example, whileFIG. 1illustrates a certain number of nodes104a-kand PAN coordinator102, the present disclosure is not limited to such configurations. Rather, in other examples, the system100may include any suitable number or types of nodes104a-k, PAN coordinator102, or other devices. As another example, whileFIG. 1illustrates a particular configuration of various connections between the nodes104a-kand the PAN coordinator102, the present disclosure is not limited to such a configuration. Rather, in other examples, the nodes104a-kand the PAN coordinator102can be communicatively coupled in any suitable manner.

FIG. 2is a flow chart depicting an example of a process for 200 reconstructing a PAN after a failure in a system or network according to one example of the present disclosure. In some examples, the steps inFIG. 2may be implemented in program code that is executable by a processor, for example, the processor in a general-purpose computer or a server. In some examples, one or more steps shown inFIG. 2may be omitted or performed in a different order. Similarly, in some examples, additional steps not shown inFIG. 2may also be performed. The method200ofFIG. 2is described with reference toFIG. 1, but other implementations are possible.

In block202, a node104a-kof a system100(e.g., a network) detects a power failure in the node104a-k. For example, the system100can include a PAN and the system100can be powered by a main power supply and one or more of the nodes104a-kcan detect (e.g., determine) a power failure in the system100by detecting that that the main power supply is no longer providing power to the system100or the node104a-k. For example, the node104hcan detect the power failure by determining that the node104his no longer being powered by the main power supply and is now being powered by a limited power source, such as a capacitor. In some examples, the node104a-kcan detect the power failure in the system100by determining that the main power supply is not providing power to the system100or the node104a-kfor a period of time (e.g., by determining that the main power supply has not provided power to the system100or the node104a-kfor period of thirty seconds).

In block204, the node104a-kstores data about another node104a-kin the system100at a time of the power failure in the system100. For example, the node104d,104h-kcan detect a power failure in the system (e.g., in block202) and, in response to detecting the power failure, the node104d,104h-kcan store, in an internal memory device, data indicating a MAC address of one or more parent nodes104a,104e-gcommunicatively coupled to the node104d,104h-kat the time of the power failure. As an example, the node104hcan detect a power failure in the system100and, in response to detecting the power failure, the node104hcan store data indicating the MAC address of one or more parent nodes104eand104bcommunicatively coupled to the node104h.

As another example, in block204, the child node104d,104h-kcan store layer information associated with the child node104d,104h-k, which can include data indicating a number of parent nodes104a-c,104e-gbetween the child node104d,104h-kand the PAN coordinator102at the time of the power failure (e.g., a number of parent nodes104a-c,104e-gcommunicatively coupled to the child node104d,104h-kto route data from the child node104d,104h-kto the PAN coordinator102). For instance, the node104hcan detect a power failure and, in response to detecting the power failure, the node104hcan store data indicating that there are two parent nodes (e.g., node104eand104b) between the node104hand the PAN coordinator102at the time of the power failure. As still another example, in block204, the child nodes104d,104h-kcan store data indicating one or more nodes communicatively coupled to the same parent node104a-c,104e-gor a MAC address of each of the other nodes communicatively coupled to the same parent node104a-c,104e-g. For instance, the node104hcan store data indicating that the node104iis communicatively coupled to the same parent node104e, data indicating that only one other node104iis communicatively coupled to the same parent node104e, and/or a MAC address of the other node104icommunicatively coupled to the same parent node104eat the time of the power failure.

In block206, the node104a-kdetects power restoration in the system100and, in response to detecting the power restoration, enters into a restoration state. For example, upon power restoration to the system100, one or more of the nodes104a-kcan enter into a restoration state (e.g., “PAN Restoration State.”)

In block208, an enhanced beacon request (“EBR”) is transmitted via a particular frequency channel associated with a parent node.

In some examples, once a child node104d,104h-kthat is not communicatively coupled to another child node at a time of a power failure in the system100is in a restoration state (e.g., in block206), the child node104d,104h-kcan attempt to synchronize communication with the system100(e.g., reconstruct the system100). For example, in response to entering into a restoration state, the child node104d,104d,104h-kcan attempt to synchronize with the system100by transmitting, on a randomized basis, an EBR. As an example, the child node104hcan transmit, on a randomized basis, an EBR (e.g., an 802.15.4 EBR) to the system100. In some instances, the child node104d,104h-ktransmits the EBR on a particular frequency channel associated with a MAC address of a parent node104a-c,104e-gcommunicatively coupled to the child node104d,104h-kat the time of the power failure (e.g., using data stored in the internal memory of the child node104d,104h-kat the time of the power failure). In some examples, the EBR can include information for synchronizing communications between the child node104d,104h-kand the system100, such as an information element that can indicate that the child node104d,104h-kis restored from the power failure.

In some instances, once in a restoration state, each node104a-kin the system100that was communicatively coupled to at least one child node104a-kat the time of the power failure (e.g., each parent node104a-c,104e-g) can listen for communications from a child node on a particular frequency channel that is associated with the MAC address of the parent node104a-c,104e-g. As an example, once the parent node104eis in a restoration state, the parent node104ecan listen for communications from child nodes104hand104ion a frequency channel associated with the MAC address of the parent node104e. In some examples, the parent node104a-c,104e-gcan listen for communication from a child node for a particular period of time (e.g., a period of time based on a layer position of the parent node104a-c,104e-g).

In block210, an acknowledgement response from the parent node is received. For example, the parent node104a-c,104e-gcan listen for communications from the child nodes104d,104h-kon a particular frequency channel associated with the parent node104a-c,104e-g, receive an EBR from the child node104d,104h-k, and transmit an acknowledgement response (e.g., a MAC layer acknowledgement) to the child node104d,104h-kon the frequency channel. As an example, the child node104hcan transmit an EBR to the parent node104eon a particular frequency channel associated with a MAC address of the parent node104e. In this example, the child node104hcan then receive an acknowledgement response from the parent node104eon the frequency channel.

In block212, an EBR response is received from the parent node104a-c,104h-kvia the particular frequency channel. For example, once a child node104d,104h-kreceives an acknowledgement response from a parent node104a-c,104e-g(e.g., in block210) the child node104d,104h-kcan continue to listen for communications from the parent node104a-c,104e-gon the frequency channel. In some examples, the child node104d,104h-kcan receive an EBR response from the parent node104a-c,104e-gon the frequency channel associated with the parent node104a-c,104e-g. As an example, the child node104hcan receive an EBR response from the parent node104eon a frequency channel associated with the MAC address of the parent node104e. In some instances, an EBR response can include information that can be used by the child node104d,104h-kto synchronize communications with the system100. As an example, once the child node104d,104h-kreceives an EBR response from a parent node104a-c,104e-g, the child node104d,104h-kcan synchronize communications with the system100in response to receiving the EBR response (e.g., communicate with the PAN coordinator102via one or more parent nodes to send information, such as measurements of the consumption of a resource). As another example, an internal clock of the child node104hmay have switched to an OFF state during the power failure and the child node104hmay realign or synchronize the clock based on information included in the EBR response from the parent node104e. In some examples, if the child node104d,104h-kis in a restoration state and the parent node104a-c,104e-gis also in a restoration state, the information included in the EBR response may include instructions indicating one or more operations (e.g., MAC layer operations) that can be performed by the child node104d,104h-k. As an example, if the child node104hand the parent node104eare both in a restoration state, the child node104hcan receive an EBR response from the parent node104ethat includes instructions indicating that the child node104hshould continue to communicate with the parent node104evia the frequency channel associated with the MAC address of the parent node104e, synchronize to an Absolute Slot Number (“ASN”) used by the parent node104eto communicate in the system100by transitioning or “hopping” from one channel to another on a time interval.

While in some examples described above, a node104a-kcan synchronize communications between the node104a-kand a parent node after a power failure (e.g., after detecting a power failure in the node104a-kor system100), the present disclosure is not limited to such configurations. Rather, in other examples, a node104a-kof the system100may not detect a power failure in the node104a-k(e.g., in block202) and the node104a-kcan store data about another node104a-kin the system100. In some examples, the node104a-kmay periodically store data about one or more nodes104a-kor the system100regardless of detecting a power failure and the node104a-kcan use the stored data to synchronize communication with the system100. As an example, a node104d,104h-kcan periodically or continuously (e.g., over a period of time) store, in an internal memory device, data indicating a MAC address of one or more parent nodes104a,104e-gcommunicatively coupled to the node104d,104h-kregardless of the node104d,104h-kdetecting a power failure. As another example, the child node104d,104h-kcan store layer information associated with the child node104d,104h-k, which can include data indicating a number of parent nodes104a-c,104e-gbetween the child node104d,104h-kand the PAN coordinator102regardless of the node104d,104h-kdetecting a power failure. In this example, a child node104a-kcan attempt to synchronize communication with the system100or a parent node (e.g., attempt to construct or reconstruct the system100) using data stored by the child node104a-kin substantially the same manner as described above.

FIG. 3is a schematic block diagram of an example of a node300of the system ofFIG. 1(e.g., a node104a-kor a PAN coordinator102) according to one example of the present disclosure. In some examples, the node300can be used to reconstruct a PAN or system after a failure in the network or system.

The node300can include a processing device302. Non-limiting examples of the processing device302can include a microprocessor, an application-specific integrated circuit (“ASIC”), a state machine, or other suitable processing device. The processing device302can include any number of processing devices, including one. The processing device302can be communicatively coupled to computer-readable media, such as a memory device304. The processing device302can execute computer-executable program instructions and/or access information respectively stored in the memory device304.

The memory device304can store instructions that, when executed by the processing device302, cause the processing device302to perform operations described herein. The memory device304may be a computer-readable medium such as (but not limited to) an electronic, optical, magnetic, or other storage device capable of providing a processor with computer-readable instructions. Non-limiting examples of such optical, magnetic, or other storage devices include read-only (“ROM”) device(s), random-access memory (“RAM”) device(s), magnetic disk(s), magnetic tape(s) or other magnetic storage, memory chip(s), an ASIC, configured processor(s), optical storage device(s), or any other medium from which a computer processor can read instructions. The instructions may comprise processor-specific instructions generated by a compiler and/or an interpreter from code written in any suitable computer-programming language. Non-limiting examples of suitable computer-programming languages include C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, and the like.

The node300can include a bus306that can communicatively couple one or more components of the node300. Although the processor302, the memory304, and the bus306are depicted inFIG. 3as separate components in communication with one another, other implementations are possible. For example, the processor302, the memory304, and the bus306can be components of printed circuit boards or other suitable devices that can be disposed in a node300to store and execute programming code.

The node300can also include network interface device308. The network interface device308can be a transceiving device configured to establish a one or more of the wireless communication links via an antenna310. A non-limiting example of the network interface device308is an RF transceiver, a power line communication device, a cellular device, etc. and can include one or more components for establishing a communication links to other node300in the system or network100ofFIG. 1.