A user environment, such as a residence or an office building, for example, may be configured using various types of load control systems. A lighting control system may be used to control the lighting loads providing artificial light in the user environment. A motorized window treatment control system may be used to control the natural light provided to the user environment. An HVAC system may be used to control the temperature in the user environment.
Each load control system may include various control devices, including input devices and load control devices. The control devices may receive messages, which may include load control instructions, for controlling a corresponding electrical load. For example, the messages, which may include load control instructions, may be generated in response to a user input or interaction at one or more of the input devices. The control devices may be capable of directly controlling an electrical load. The input devices may be capable of indirectly controlling the electrical load via the load control device. Examples of load control devices may include lighting control devices (e.g., a dimmer switch, an electronic switch, a ballast, or a light-emitting diode (LED) driver), a motorized window treatment, a temperature control device (e.g., a thermostat), an AC plug-in load control device, and/or the like. Examples of input devices may include remote control devices, occupancy sensors, daylight sensors, glare sensors, color temperature sensors, temperature sensors, and/or the like. Remote control devices may receive user input for performing load control. And the control devices may communicate (e.g., send and/or receive messages) in a network using radio frequency (RF) communications, such as ZIGBEE communications, BLUETOOTH communications, and/or THREAD communications, and/or any suitable internet of things communications network. In addition, or in conjunction, the RF communications may be performed via a proprietary protocol, such as the CLEAR CONNECT™ protocol.
A control device may be configured to form a network at a unique coordinated startup time. The control device may identify a role assigned to the control device in a previously-formed network that the control device was attached to. The control device may determine a unique coordinated startup time for the control device based on the role assigned to the control device in the previously-formed network. The control device may initiate a network formation procedure at the unique coordinated startup time for the device. For example, the network formation procedure may cause the control device to attach to another control device in the network. The network formation procedure is configured to enable the control device to assume the role assigned to the control device in the previously-formed network in the next network.
The unique coordinated startup time may be determined by the role assigned to the control device in a previously-formed network. For example, the unique coordinated startup time may be equal to a first time when the role assigned to the control device in the previously-formed network is a router device. Similarly, the unique coordinated startup time may be equal to a second time that is later than the first time when the role assigned to the control device in the previously-formed network is an end device. The unique coordinated startup time may also, or alternatively, be a predetermined amount of time from when the control device powers up (e.g., plus an offset based on a number of hops between the control device and the leader device in the previously formed network).
The network reformation procedure for the control device may also be based on the role assigned to the control device in a previously formed network. For example, if the role assigned to the control device in the previously formed network is a leader device, the network reformation procedure may comprise transmitting an attachment message to enable the control device to detect the existence of formed networks. And, if the control device detects the existence of another network (e.g., in response to receiving a response to the attachment message), the control device may initiate an attachment procedure with the other network. If, however the control device fails to detect the existence of another network, the control device may transmit a leader advertisement message. For example, the leader advertisement message may be configured to trigger devices assigned the role of router devices in the previously-formed network to initiate an attachment procedure with the network.
When the role assigned to the control device in the previously-formed network is a router device, the network formation procedure may include waiting to receive a leader advertisement message from a leader device in the network. After receiving the leader advertisement, the control device may initiate an attachment procedure with the leader device. Similarly, when the role assigned to the control device in the previously-formed network is an end device, the control device may wait until it receives a router advertisement message from a router device that was a parent device of the control device in the previously-formed network. And, after receiving the router advertisement, the control device may initiate an attachment procedure with the router device.
The control-source devices may be configured to transmit messages directly to the control-target devices. In addition, the load control system 100 may comprise a system controller 110 (e.g., a central processor or load controller) operable to communicate messages to and from the control devices (e.g., the control-source devices and/or the control-target devices). For example, the system controller 110 may be configured to receive messages from the control-source devices and transmit messages to the control-target devices in response to the messages received from the control-source devices. The control-source and control-target devices and the system controller 110 may be configured to transmit and receive the RF signals 108 using a proprietary RF protocol, such as the ClearConnect protocol. Alternatively, or in conjunction with, the RF signals 108 may be transmitted using a different RF protocol, such as, a standard protocol, for example, one of WIFI, ZIGBEE, Z-WAVE, THREAD, KNX-RF, ENOCEAN RADIO protocols, or a different proprietary protocol.
The load control system 100 may comprise one or more load control devices, e.g., lighting control device 120, for controlling a lighting load, e.g., lighting loads 122 in lighting fixture 124. For example, the lighting control devices 120 may comprise light-emitting diode (LED) drivers and the lighting loads 122 may comprise LED light sources. While each lighting fixture 124 is shown having a single lighting load 122, each lighting fixture 124 may comprise one or more individual light sources (e.g., lamps and/or LED emitters) that may be controlled individually and/or in unison by the respective lighting control device 120.
The load control system 100 may comprise one or more load control devices or appliances that are able to directly receive the wireless signals 108 from the system controller 110, such as a speaker 146 (e.g., part of an audio/visual or intercom system), which is able to generate audible sounds, such as alarms, music, intercom functionality, etc.
The load control system 100 may comprise one or more daylight control devices, e.g., motorized window treatments 150, such as motorized cellular shades, for controlling the amount of daylight entering the room 102. Each motorized window treatments 150 may comprise a window treatment fabric 152 hanging from a headrail 154 in front of a respective window 104. Each motorized window treatment 150 may further comprise a motor drive unit (not shown) located inside of the headrail 154 for raising and lowering the window treatment fabric 152 for controlling the amount of daylight entering the room 102. The motor drive units of the motorized window treatments 150 may be configured to receive messages via the RF signals 108 (e.g., from the system controller 110) and adjust the position of the respective window treatment fabric 152 in response to the received messages. For example, the motorized window treatments may be battery-powered. The load control system 100 may comprise other types of daylight control devices, such as, for example, a cellular shade, a drapery, a Roman shade, a Venetian blind, a Persian blind, a pleated blind, a tensioned roller shade system, an electrochromic or smart window, and/or other suitable daylight control device. Examples of battery-powered motorized window treatments are described in greater detail in U.S. Pat. No. 8,950,461, issued Feb. 10, 2015, entitled MOTORIZED WINDOW TREATMENT, and U.S. Pat. No. 9,488,000, issued Nov. 8, 2016, entitled INTEGRATED ACCESSIBLE BATTERY COMPARTMENT FOR MOTORIZED WINDOW TREATMENT, the entire disclosures of which are hereby incorporated by reference.
The load control system 100 may comprise one or more temperature control devices, e.g., a thermostat 160 for controlling a room temperature in the room 102. The thermostat 160 may be coupled to a heating, ventilation, and air conditioning (HVAC) system 162 via a control link (e.g., an analog control link or a wired digital communication link). The thermostat 160 may be configured to wirelessly communicate messages with a controller of the HVAC system 162. The thermostat 160 may comprise a temperature sensor for measuring the room temperature of the room 102 and may control the HVAC system 162 to adjust the temperature in the room to a setpoint temperature. The load control system 100 may comprise one or more wireless temperature sensors (not shown) located in the room 102 for measuring the room temperatures. The HVAC system 162 may be configured to turn a compressor on and off for cooling the room 102 and to turn a heating source on and off for heating the rooms in response to the control signals received from the thermostat 160. The HVAC system 162 may be configured to turn a fan of the HVAC system on and off in response to the control signals received from the thermostat 160. The thermostat 160 and/or the HVAC system 162 may be configured to control one or more controllable dampers to control the air flow in the room 102. The thermostat 160 may be configured to receive messages via the RF signals 108 (e.g., from the system controller 110) and adjust heating, ventilation, and cooling in response to the received messages.
The load control system 100 may comprise one or more other types of load control devices, such as, for example, a screw-in luminaire including a dimmer circuit and an incandescent or halogen lamp; a screw-in luminaire including a ballast and a compact fluorescent lamp; a screw-in luminaire including an LED driver and an LED light source; an electronic switch, controllable circuit breaker, or other switching device for turning an appliance on and off; a plug-in load control device, controllable electrical receptacle, or controllable power strip for controlling one or more plug-in loads; a motor control unit for controlling a motor load, such as a ceiling fan or an exhaust fan; a drive unit for controlling a motorized window treatment or a projection screen; motorized interior or exterior shutters; a thermostat for a heating and/or cooling system; a temperature control device for controlling a setpoint temperature of an HVAC system; an air conditioner; a compressor; an electric baseboard heater controller; a controllable damper; a variable air volume controller; a fresh air intake controller; a ventilation controller; a hydraulic valves for use radiators and radiant heating system; a humidity control unit; a humidifier; a dehumidifier; a water heater; a boiler controller; a pool pump; a refrigerator; a freezer; a television or computer monitor; a video camera; an audio system or amplifier; an elevator; a power supply; a generator; an electric charger, such as an electric vehicle charger; and an alternative energy controller.
The load control system 100 may comprise one or more input devices, e.g., such as a remote control device 170. The input devices may be fixed or movable input devices. The system controller 110 may be configured to transmit one or more messages to the load control devices (e.g., the lighting control device 120, the motorized window treatments 150, and/or the thermostat 160) in response to the messages received from the remote control device 170. The remote control device 170 may be configured to transmit messages directly to the lighting control device 120, the motorized window treatments 150, and the temperature control device 160.
The remote control device 170 may be configured to transmit messages via the RF signals 108 to the system controller 110 (e.g., directly to the system controller) in response to an actuation of one or more buttons of the remote control device. For example, the remote control device 170 may be battery-powered. The load control system 100 may comprise other types of input devices, such as, for example, temperature sensors, humidity sensors, radiometers, cloudy-day sensors, shadow sensors, pressure sensors, smoke detectors, carbon monoxide detectors, air-quality sensors, motion sensors, security sensors, proximity sensors, fixture sensors, partition sensors, keypads, multi-zone control units, slider control units, kinetic or solar-powered remote controls, key fobs, cell phones, smart phones, tablets, personal digital assistants, personal computers, laptops, timeclocks, audio-visual controls, safety devices, power monitoring devices (e.g., such as power meters, energy meters, utility submeters, utility rate meters, etc.), central control transmitters, residential, commercial, or industrial controllers, and/or any combination thereof.
The system controller 110 may be coupled to a network, such as a wireless or wired local area network (LAN), e.g., for access to the Internet. The system controller 110 may be wirelessly connected to the network, e.g., using Wi-Fi technology. The system controller 110 may be coupled to the network via a network communication bus (e.g., an Ethernet communication link). The system controller 110 may be configured to communicate via the network with one or more network devices, e.g., a mobile device 190, such as, a personal computing device and/or a wearable wireless device. The mobile device 190 may be located on an occupant 192, for example, may be attached to the occupant's body or clothing or may be held by the occupant. The mobile device 190 may be characterized by a unique identifier (e.g., a serial number or address stored in memory) that uniquely identifies the mobile device 190 and thus the occupant 192. Examples of personal computing devices may include a smart phone (for example, an iPhone® smart phone, an Android® smart phone, or a Blackberry® smart phone), a laptop, and/or a tablet device (for example, an iPad® hand-held computing device). Examples of wearable wireless devices may include an activity tracking device (such as a FitBit® device, a Misfit® device, and/or a Sony Smartband® device), a smart watch, smart clothing (e.g., OMsignal® smartwear, etc.), and/or smart glasses (such as Google Glass® eyewear). In addition, the system controller 110 may be configured to communicate via the network with one or more other control systems (e.g., a building management system, a security system, etc.).
The mobile device 190 may be configured to transmit messages to the system controller 110, for example, in one or more Internet Protocol packets. For example, the mobile device 190 may be configured to transmit messages to the system controller 110 over the LAN and/or via the internet. The mobile device 190 may be configured to transmit messages over the internet to an external service (e.g., If This Then That (IFTTT®) service), and then the messages may be received by the system controller 110. The mobile device 190 may transmit and receive RF signals 109 via a Wi-Fi communication link, a Wi-MAX communications link, a Bluetooth communications link, a near field communication (NFC) link, a cellular communications link, a television white space (TVWS) communication link, or any combination thereof. The RF signals 109 may be the same signal type and/or transmitted using the same protocol as the RF signals 108. Alternatively, or additionally, the mobile device 190 may be configured to transmit RF signals according to another signal type and/or protocol. The load control system 100 may comprise other types of network devices coupled to the network, such as a desktop personal computer, a Wi-Fi or wireless-communication-capable television, or any other suitable Internet-Protocol-enabled device. Examples of load control systems operable to communicate with mobile and/or network devices on a network are described in greater detail in commonly-assigned U.S. Patent Application Publication No. 2013/0030589, published Jan. 31, 2013, entitled LOAD CONTROL DEVICE HAVING INTERNET CONNECTIVITY, the entire disclosure of which is hereby incorporated by reference.
The operation of the load control system 100 may be programmed and configured using, for example, the mobile device 190 or other network device (e.g., when the mobile device is a personal computing device). The mobile device 190 may execute a graphical user interface (GUI) configuration software for allowing a user to program how the load control system 100 will operate. For example, the configuration software may run as a PC application or a web interface. The configuration software and/or the system controller 110 (e.g., via instructions from the configuration software) may generate a load control database that defines the operation of the load control system 100. For example, the load control database may include information regarding the operational settings of different load control devices of the load control system (e.g., lighting control device 120, the motorized window treatments 150, and/or the thermostat 160). The load control database may comprise association information that identifies associations between the load control devices and the input devices (e.g., the remote control device 170, etc.). The associations may comprise device identifiers that are stored together, such that devices may recognize the identifiers of associated devices to enable communication between the devices. Devices may recognize the stored identifiers of associated devices and communicate messages to and/or identify messages received from the associated devices. The load control database may comprise information regarding how the load control devices respond to inputs received from the input devices. Examples of configuration procedures for load control systems are described in greater detail in commonly-assigned U.S. Pat. No. 7,391,297, issued Jun. 24, 2008, entitled HANDHELD PROGRAMMER FOR A LIGHTING CONTROL SYSTEM; U.S. Patent Application Publication No. 2008/0092075, published Apr. 17, 2008, entitled METHOD OF BUILDING A DATABASE OF A LIGHTING CONTROL SYSTEM; and U.S. Patent Application Publication No. 2014/0265568, published Sep. 18, 2014, entitled COMMISSIONING LOAD CONTROL SYSTEMS, the entire disclosure of which is hereby incorporated by reference.
The control devices of the load control system may communicate with each other via a network. For example, the control devices may join the network by initiating a joining procedure. During the joining procedure, the control devices may send and receive joining messages, and the joining messages may be used to exchange credentials with a network commissioning device. After exchanging credentials, a control device may be provided with a network key, which may enable the control device to communicate over the network. The control devices may each then attempt to attach to another device (e.g., a router device) joined to the network, forming a mesh network. For example, a control device may attempt to attach to another device joined to the network by initiating an attachment procedure with the other device. As described herein, a control device may send and/or receive attachment messages to the other device on a network during the attachment procedure. And based the type of attachment message transmitted during an attachment procedure, the control device may establish a link (e.g., parent-child link, auxiliary parent link, router-to-router link) with the router device. For example, the control device may transmit attachment messages configured to establish a parent-child link (e.g., parent-request messages and/or parent-response messages) during an attachment procedure to establish a parent-child link with the router device, such that the control device may become a child device of the router device and the router device may become a parent device of the control device. Similarly, the control device may transmit attachment messages configured to establish an auxiliary parent link (e.g., link-request messages and/or link-response messages) during an attachment procedure to establish an auxiliary parent link with the router device. After establishing a parent-child link, the control device may transmit and receive messages over the network through the other device. As described herein, the router device that a respective control device is attached to may be also be referred to as the parent device of the control device.
A control device may also attach to and establish links with additional devices (e.g., router devices) joined to a network. For example, a control device may initiate an attachment procedure to attach to an additional router device (e.g., a router device that is not the parent device of the control device). As a result of the attachment procedure, the control device may establish an auxiliary parent link with the other router device, such that the other device becomes an auxiliary parent of the control device. And during the attachment procedure, for example, the control device may send and receive a number of attachment messages configured to establish an auxiliary parent link, such as link-request messages or link-response messages, to/from the other router device. Control devices may receive and process messages from the auxiliary parent devices that they are attached to (e.g., in addition to the parent device they are attached to), which may increase the reliability of the network information received in the network. As described herein, the process of control devices joining a network (e.g., via a joining procedure), and/or attaching to another device already joined to the network (e.g., via an attachment procedure) may be referred to as network formation.
During network formation, as described herein, a plurality of control devices may join a network and attach to other devices already joined to the network (e.g., via an attachment procedure with another device). The plurality of control may, however, each initiate their respective attachment procedures, which includes sending and receiving attachment messages over the network at the same or substantially the same time. As a result, multiple control devices may transmit attachment messages on the network at the same or substantially the same time. When multiple devices send messages over the network at the same or substantially the same time, the messages may collide with each other and/or result in the messages failing to be received. Message collisions during network formation may, for example, cause the attachment messages to fail to be received, delaying network formation and installation or operation of the load control system.
As the scale of a network installation increases (e.g., the number of devices attached to the network), the number of collisions that occur during network formation may increase. In addition, after a control device continually fails to attach to the network (e.g., as a result of message collisions and/or lack of connectivity with an already formed network), the device may attempt to form another network (e.g., a network partition). The network partitions may communicate in parallel with one another, but may not communicate with each other (e.g., at least for a period of time and/or until the network partitions combine into a single network partition). For example, the devices attached to a first network partition may not be able to communicate with the device attached to a second network partition. As communication links are established between devices in a location, each network may grow and one or more devices in one network may join the other network. The devices that leave a network may cause undue processing delay for the devices that remain on the network, as the devices reconfigure or discover their roles in the network.
A network, such as the network 200a, may be used to facilitate communications for the devices that are joined to the network. The process of these devices joining the network and/or forming their respective links to one another may be referred to herein as network formation. As described herein, the devices that are joined to a network may form links with one another during network formation. For example, a control device may attach to another device (e.g., a router device) and establish a parent-child link with the other device. After attaching to the router device (e.g., establishing a parent-child link between the device and the router device), the device may send messages to other devices in the network through the router device and receive messages comprising network information through the router device. The circled nodes of
The control devices that are joined to the network 200a may take on and/or be assigned a respective role in the network. For example, the roles may include: a leader device (e.g., leader device 210), a router device (e.g., router devices 220a-220d), an end device (e.g., end devices 230a and 230b), a router eligible end device (REED) (e.g., router eligible end device 240), and/or a sleepy end device (e.g., sleepy end device 250). The role of a control device may indicate the functions and/or capabilities of the control device with respect to the network 200a. In addition, the role of a control device may be based on the control device's attachments.
As illustrated in
The leader device 210 may be attached to multiple router devices (e.g., more than 30 router devices) by establishing one or more router-to-router links, as illustrated by the solid lines connected to the leader device 210. The leader device 210 may operate as a router device. The router devices 220a-220d on the network 200a (e.g., attached to the leader device 210 on the network 200a) may also establish router-to-router links with each other and thus in communication with each other, for example, to form a mesh network. As described herein, router-to-router links may be establish by an attachment procedure that includes transmitting attachment messages that are configured to establish router-to-router link (e.g., link request messages and/or link response messages). The router devices 220a-220d may be in communication with one another (e.g., as indicated by the solid lines connecting the router devices 220a-220d). The router devices 220a-220d may be in communication with the leader device 210, either directly or through one or more other router devices (e.g., as indicated by the solid lines connecting the leader device 210 to the router devices 220a and 220c). The router devices 220a-220d may receive and route messages to other devices on the network 200a (e.g., the end devices 230a, 230b, the router eligible end device 240, and/or the sleepy end device 250). For example, the router devices 220a-220d may receive and/or transmit messages between devices, or between each other for communicating messages received from an attached device to another device attached to another router device. Referring now to the load control system 100, a control device that is, for example, externally powered (e.g., a control device that is not battery powered) may be assigned to the role of a router device, such as, the system controller 110, the lighting control device 120, the motorized window treatments 150, and/or the thermostat 160.
The network 200a may include one or more end devices 230a, 230b (e.g., also referred to herein as full or minimal end devices). The end devices 230a, 230b may be attached to another device (e.g., a parent device, such as the leader device 210 and/or the router devices 220a, 220b, 220c, 220d) on the network 200a and may transmit and/or receive messages via the attached leader device and/or router device. As described herein, end devices 230a, 230b may attach to another device by using an attachment procedure. For example, the end device may perform an attachment procedure to establish a parent-child link (e.g., as illustrated by the dashed lines in
Referring again to
The network 200a may also include the sleepy end device 250. The sleepy end device 250 may include, or may be similar to, an end device. For example, the sleepy end device 250 may be an end device that is powered by a finite power source (e.g., a battery). The sleepy end device 250 may be aware of its role as a sleepy end device based on, for example, an indication that is stored at the sleepy end device 250. Communication with the sleepy end device 250 may be performed such that the finite power source is preserved and/or is efficiently consumed. For example, the sleepy end device 250 may periodically disable their respective communication circuits in between message transmissions. The sleepy end device 250 may transmit and/or receive messages via an attached router device 220a. As shown in
The leader device 210 may update the roles (e.g., or confirm role updates) of the devices communicating within the network 200a, for example, based on changes to the network 200a. In an example, a control device may be assigned to a certain role when the device attaches to the network 200a, and the leader device 210 may update the role of the device based on changes in network conditions. Changes in network conditions may include: increased message traffic, attachment of other devices, changes in signal strength, etc. Updates to the assigned role of a control device may be based on the capabilities of the device. For example, the leader device 210 may update the role of a control device from a router eligible end device to a router device (e.g., as a router eligible end device is an end device that is eligible to perform the role of a router device). The leader device 210 may update the role of a control device to a router device by assigning a router identifier (ID) to the device.
As the leader device 210 updates the roles of the devices in the network 200, the leader device may maintain the number of router devices in the network 200a and/or the router identifiers in use in the network 200. For example, the leader device 210 may store and/or maintain a bitmap 217 that may be used to indicate the number of routers and/or the router identifiers being used in the network 200. The bitmap 217 may include a number of bits that each correspond to a different router identifier being used in the network 200. In an example, the leader device 210 may support 64 router devices and the leader device 210 may store a 64-bit bitmap for tracking the router identifiers in use in the network 200. Each bit in the bitmap may indicate whether a router identifier is identified by the leader device 210 as being used (e.g., with a value of “1”) or unused (e.g., with a value of “0”). The leader device 210 may determine that a control device should be upgraded to a router device and, so long as a router identifier is available, assign a router identifier to the router device. The leader device 210 may downgrade router devices (e.g., to end devices) or remove router devices from the network 200. As router devices are added or removed, the bitmap 217 may be updated to indicate the number of router devices and/or router identifiers that are in use in the network 200.
The leader device 210 may send the bitmap 217 to the other router devices in the network 200. Each router device, including the leader device 210, may maintain network information about each of the router devices identified as being used in the network 200. For example, each router device may maintain network information about each of the router devices in a router table, such as the router table 219. For example, the network information in the router table 219 may identify the router devices in the network 200a and the quality of communications that a corresponding router device has with the other router devices being maintained in the router table stored locally thereon. Each router table, such as the router table 219, may include a row for each router identifier indicated in the bitmap 217. Each router device in the network, including the leader device 210, may perform communications on the network 200a based on the network information being stored and maintained in the locally stored router table. For example, a router device, such as the router devices 220a-220d and/or the leader device 210, may transmit messages differently within the network 200a based on the quality of the communications with corresponding router devices identified in the router table stored locally thereon.
The control devices attached to the network 200a may further operate as parent devices and/or child devices. Leader devices (e.g., the leader device 210) and router devices (e.g., the router devices 220a-220d) that are attached to one or more end devices (e.g., the end devices 230a, 230b, the router eligible end device 240, and/or the sleepy end device 250) may operate as parent devices. End devices (e.g., the end devices 230a, 230b, the router eligible end device 240, and/or the sleepy end device 250) that are attached to a leader device (e.g., the leader device 210) or a router device (e.g., one of the router devices 220a-220d) may operate as child devices. As a parent device, the leader device 210 and the router devices 220a-220d may each be attached to one or more child devices (e.g., one or more of the end devices 230a, 230b, the router eligible end device 240, and/or the sleepy end device 250, as described herein). In addition, the leader device 210 and the router devices 220a-220d may store and/or relay messages that are sent by their respective attached child devices. For example, the leader device 210 and the router devices 220 may receive messages from their respective child devices and route the received messages to the intended recipient device (e.g., either directly to the intended recipient device, via the respective parent device of the intended recipient device, and/or to a router device or leader device this is on the path to the intended recipient). Similarly, the leader device 210 and the router devices 220a-220d may receive messages intended for their respective child device and route the message to the appropriate child device. The parent of a respective sleepy end device may schedule communications with the sleepy end device when the communication circuit of the sleepy end device is enabled.
As indicated in
Child devices may be configured to transmit unicast messages to their respective parent device. A control device may transmit unicast messages to another control device in the network directly or via hops through other devices in the network. Each unicast message may be individually addressed to another control device by including a unique identifier of the control device to which the unicast message being transmitted. Control devices may generate separate unicast messages for each control device with which they are communicating and address the unicast messages to each control device independently. The unicast messages may also include the unique identifier of the control device that is to receive the unicast message. A control device may determine that it is the intended recipient of a unicast message by identifying its own unique identifier in the unicast message.
Messages may be sent in the network using multicast messages and/or broadcast messages. Multicast messages may be sent to a group of control devices in the network. A multicast message may include a group identifier. The control devices that are members of the group may recognize the group identifier and process the message accordingly. Broadcast messages may be sent to each control device in the network capable of receiving the message. The broadcast messages may include an indication that the message is a broadcast message (e.g., a broadcast address). Each device that receives a broadcast message may process the message accordingly. A network may use either multicast messages or broadcast messages, and the two terms may be used interchangeably herein.
The messages transmitted by a child device to its respective parent device may include an indication (e.g., a unique identifier) of the intended recipient, and the parent device may route the message accordingly. Referring again to
Child devices may be configured to communicate with an auxiliary parent device (e.g., configured to communicate with more than one parent device). Referring to
A child device may be attached to a single parent device (e.g., also referred to as primary parent device herein) and one or more auxiliary parent devices. For example, the child device may transmit and/or receive unicast messages over the network through the parent devices. Additionally, the child device may process the messages received from the one or more auxiliary parent devices. The number of auxiliary parent devices that a respective child device is attached to may be limited to a threshold number of auxiliary parent devices, which may be pre-defined and/or configured. A child device may attach to an auxiliary parent device by transmitting attachment messages configured to an establish auxiliary parent link with a router device (referred to herein as a link-request messages or link-response messages) to the auxiliary parent device. For example, referring to
A child device may receive advertisement messages from a router device other than the parent device of the child device or a router device other than an auxiliary parent device of the child device. For example, the router device may transmit advertisement messages to enable other control devices to determine that a network has been formed and that the control device hearing the advertisement message may attempt to attach to the router device (e.g., to communicate via the network). Control devices may receive and track the advertisement messages transmitted by router devices to determine whether the device is able to communicate via the network. Also, or alternatively, the advertisement messages transmitted by a respective router device may provide other router devices with the ability to measure a communication metric (e.g., RSSI) between the respective routers attached to the network (e.g., which the routers may use to update their respective routing tables or routing information). For example, the communication metric may indicate the quality of a communication link between two devices, which may be used. As described herein, the router devices may determine the quality of the communication links between the respective router devices by measuring a communication metric, such as a received signal strength magnitude (e.g., an average received signal strength magnitude) of the advertisement messages transmitted between the router devices. For example, the received signal strength magnitude may be determined by measuring a received signal strength indicator (RSSI) of the received advertisement messages.
Certain messages may be propagated and broadcast by multiple devices in the network 200a, which may increase the likelihood that a respective child device hears a message. For example, rather than sending multiple transmissions, multicast messages that are substantially similar (e.g., messages that include the same load control instructions that are sent to multiple load control devices) may be broadcasted. Referring again to the load control system 100, an actuation of a button of the remote control device 170 may adjust the intensity of multiple lighting loads (e.g., the lighting load 122 and the plug-in lighting load 142) and a message may be broadcasted to adjust the respective lighting loads. In addition, the devices that receive the broadcast transmission may be configured to process and repeat (e.g., forward the message over the network or otherwise acting as a repeater) the message in response to receiving the broadcast transmission.
Child devices may create and maintain an auxiliary parent table. The auxiliary parent table may include a list of auxiliary parent devices with which a respective child device is configured to communicate (e.g., attached to via an auxiliary parent link and/or able to process messages received from). In addition, the auxiliary parent table may include an indication of a communication metric that indicates the quality of a communications link between the child device and each of the auxiliary parent devices of the child device, such as a received signal magnitude (e.g., an average RSSI). For example, the auxiliary parent table may include a rolling average of the communication metric for each of the auxiliary parent devices of the child device. Child devices may similarly create and/or maintain a router table. The router table may include the routers that a respective child device has received messages from (e.g., advertisement messages). In addition, the router table may include an indication of the a communication metric for messages received from each of the routers in the router table. Also, or alternatively, child devices may maintain a generic router table. The router table may include each of the routers that a respective child device has received messages from and a received signal strength indicator for each of the respective routers. The router table may also include an indication of whether a respective router is a parent of the child device or an auxiliary parent of the child device. As used herein, the term auxiliary parent table may refer to a separate table from the router table or a subset of the router table that include the routers that are attached as auxiliary parent devices of the child device.
As described herein, the network 200a may allow for communication between devices in a load control system (e.g., the load control system 100 shown in
Referring to
A control device may attach to another control device on a network or network partition (e.g., the network 200a shown in
Router devices (e.g., the leader device 210 and/or the router devices 220 of the network 200a) may respond to the attachment messages they receive. For example, a router device that receives a parent-request message (e.g., a multicast parent-request message) may respond by transmitting a parent-response message. For example, router devices that receive a multicast parent-request message may each transmit a parent-response message (e.g., as a unicast message) to the control device that transmitted the parent-request message. A parent-response message may indicate that the control device that transmits the parent-response message is available to act as a parent device. Accordingly, a control device that transmits a parent-request message may receive a plurality of responses to the parent-request message and determine a parent to attach to based on the received parent-response messages. The control device transmitting the parent-request message may identify a communication metric, such as a received signal strength magnitude (e.g., RSSI), associated with the response messages and attempt attachment to the parent device having the largest received signal strength indicator for the response message.
As multiple control devices transmit parent-request messages as multicast messages within the same period of time, the parent devices may each receive multiple parent-request messages at the same time or within a short time period. The number of parent-request messages being received at a parent device may prevent the parent devices from being able to fully process attachment request messages (e.g. received previously or subsequently). In addition, the parent-response messages transmitted by each of the parent devices that receive the parent-request message may be transmitted at the same or substantially the same time. The number of parent-request messages and parent-response messages that are transmitted within the same period of time may congest the network due to the number of control devices in the network (e.g., each leader device may support more than 30 router devices and each router device may support more than 500 end devices) and/or cause messages to collide with one another, which may cause one or more of the parent-request messages or parent-response messages to fail to be properly received. When a control device attempting to attach to another control device on the network fails to receive a parent-response message, the control device may fail to attach to the other control device on the network, which may increase the amount of time for formation of the network to complete. When each of the devices in the load control system are provided with power, many control devices may attempt to attach to other control devices on the network by transmitting the parent-request messages at the same time or within the same time period.
A control device attempting to attach to router devices on a network may be configured to delay attachment to allow for other control devices to attach to router devices on the network. As described herein, when control devices attempt to attach to router devices on a network, a plurality of attachment messages may be transmitted at the same or substantially the same time, which may increase the likelihood of message collisions on the network. Accordingly, a control device attempting to attach to a router device on the network may delay attachment when the control device determines that another control device is attempting to attach to router devices on the network. For example, the control device may delay attachment by adding time to a back-off timer after the expiration of which the control device may attempt to attach to a control device on the network.
A control device may decrease the frequency at which the control device attempts to attach to an auxiliary parent device and/or decrease the number of auxiliary parent devices that the control device is attached to improve the likelihood of attachment when requests are sent. Similar to network attachment, when a control device attempts to attach to an auxiliary parent device, a plurality of messages may be transmitted at the same or substantially the same time, which may increase the likelihood of message collisions on the network. Accordingly, the control device may decrease the frequency at which the control device attempts to attach to an auxiliary parent device (e.g., decrease the execution rate of a procedure to attach to an auxiliary parent device), which may decrease the likelihood of message collisions. In addition, the control device may decrease the number of attached auxiliary parent devices, which may also decrease the likelihood of message collisions.
As illustrated in
The network 200b may allow for communication between control devices in a load control system (e.g., the load control system 100). In addition, the network partitions 201, 202, 203 may be formed as a result of certain control devices being unable for attach to an already formed network partition. For example, as described herein, a control device may attempt to attach to another control device on a network partition by transmitting a parent-request message (e.g., a multicast parent-request message). If, however, the control device fails to receive a response message to the parent-request message (e.g., because the control device is outside of a communication range of the router devices of an already formed network partition), the control device may attempt to form its own network partition (e.g., become a leader device of a new network partition).
A control device that is unable to attach to a network partition may form another network partition. For example, referring to
A network partition may be associated with a partition identifier (e.g., a partition ID). The partition identifier may be randomly or pseudo-randomly assigned (e.g., randomly assigned from a range or list of identifiers). For example, a priority of the respective network partition may be based on the partition identifier for the network partition. The partition identifier may be assigned by randomly selecting a number from a range of partition identifier values. Referring now to
A priority may be assigned to a respective network partition based on the control devices (e.g., router devices and/or end devices) in the network partition. For example, a network partition having at least one router device in addition to the leader device may be given a higher priority than a network partition having only a leader device and no other router devices. Referring to
As control devices attach to each of the network partitions 201, 202, 203, the effective communication range of each of the network partitions may increase. In addition, control devices that were initially unable to attach to one or more of the network partitions 201, 202, 203 (e.g., because the control device was previously outside of the communication ranges of all of the network partitions), may subsequently be able to attach to one of the network partitions 201, 202, 203. Moreover, communication within a load control system may be better facilitated when a single network partition is formed (e.g., the network 200a having a single network partition as illustrated in
The router devices attached to each of the network partitions 201, 202 may each be associated with a communication range. The communication range of each of the respective router devices may be pre-defined and/or pre-configured. For example, the communication range of each of the respective router devices may be pre-defined and/or pre-configured based on the hardware components of each of the respective router devices. The effective communication range of a respective network or network partition may be based on the communication range of the routers attached the respective network (e.g., a summation of the communication range of each of the routers attached to the respective network). As a result, the communication range of a respective network or network partition may increase as the number of router devices attached to the respective network increases.
As described herein, the control devices attached to a lower-priority network partition may attempt to attach to a higher-priority network partition. For example, the control devices attached to the network partition 202 may attempt to attach to the network partition 201 (e.g., as the network partition 201 has a priority value of 3 and the network partition 202 has a priority value of 1). The router device 222a may receive a partition advertisement message from a control device attached to the network partition 201 (e.g., from the router device 221d). The advertisement message may include an indication of the partition identifier of the network 201 (e.g., 3) may be greater than the partition identifier of the network partition 202 and may indicate that the network partition 201 is a higher-priority network partition than the network 202. The router device 222a may determine to attach to the network partition 201 (e.g., as the network partition 201 has a higher priority).
The router device 222a may attempt to attach to the network partition 201 by transmitting a request to the leader device of the network partition 201 (e.g., the leader device 211). The request may include a request to attach to the network partition 201 as a router device, for example, by requesting to attach to the network partition 201 and be assigned a certain router identifier. For example, the router device 222a may request to attach to the network partition 201 and be assigned the router identifier that the router device 222a is assigned in the network partition 202. In response, the leader device 211 may reject the request if another router device 212a-212d attached to the network partition 201 is already assigned the requested router identifier. The leader device 211 may accept the request if none of the router devices 212a-212d attached to the network partition 201 are assigned the requested router identifier. If the router device 222a attaches to the network partition 201 and is assigned the requested router identifier, the child devices of the router device 222a (e.g., the end device 232a and the sleepy end device 252) may automatically attach to the network partition 201. If the router device 222a is assigned the requested identifier by the leader device 211 of the network partition 201 (e.g., the router identifier as assigned in the network partition 202), the child devices may continue to communicate with router device 222a using the same router identifier (e.g., as the child devices communicate with the router device 222a using the router identifier).
As network formation progresses or advances additional devices attach to the network. As a result, the end device 234a may experience better communication over the network 200c if the end device 234a determines to detach from an initial parent device (e.g., the leader device 214) and to attach to an updated parent device (e.g., the router device 224a or the router device 224b). For example, as described herein, the updated parent device may be positioned to closer to the end device 234a than the initial parent device (e.g., such that the updated parent device and the end device 234a may have a stronger communication link), which may increase the likelihood that message transmission and/or receptions are successful. As a result, as network formation advances, the end device may determine whether to attach to an updated parent device. Although
Each router device (e.g., leader device 215 and router devices 225a, 225b, 225c, 225d, 225e, 225f) may send an advertisement message as a multicast message. The advertisement messages transmitted by a router device may be received by neighboring router devices that share a single-hop communication link with the router device transmitting the advertisement messages. A single-hop communication link may be capable of communicating messages (e.g., digital messages) from a router device via a unicast and/or multicast communication directly to another router device. For example, the router devices 225a, 225c may be neighboring devices that share a single-hop communication link with the leader device 215, as the router devices 225a, 225c are capable of sending digital messages directly to and/or receiving digital messages directly from the leader device 215. The single-hop communication link may be a communication link on which router devices may be capable of directly receiving the advertisement messages above a given link quality (e.g., LQI greater than 0).
After a router device receives a periodic advertisement message from another router device, the router device may calculate a communication metric such as the link quality in (e.g., LQI) of the communication link via which the advertisement message is received. The LQI may be calculated as a predefined number that is within a range indicating different link qualities for the communication link between two devices. For example, the LQI may be indicated by values of 0, 1, 2, or 3. The different indicators of LQI may be assigned based on the RSSI of the received advertisement message and a link margin relative to a predefined receive level. The receive level may be a predefined minimum receive level. The receive level may be established as a predefined RSSI value for communications on the network. For example, the receive level may be defined by a noise floor that is set to an average RSSI value for noise generated on the network over a period of time. In an example using the receive level as a noise floor, a router device (e.g., leader device 215 or router device 225c) may calculate an LQI of 1 for communications received on a link from a neighboring router device when the RSSI value of one or more advertisement messages (e.g., average RSSI for advertisement messages over a period of time) is at least a link margin of 2 dB above the noise floor. The router device (e.g., leader device 215 or router device 225c) may calculate a link quality of 2 for communications received on a link with a neighboring router device when the RSSI value of one or more advertisement messages (e.g., average RSSI for advertisement messages over a period of time) is at least a link margin of 10 dB above the noise floor. The router device (e.g., leader device 215 or router device 225c) may calculate a link quality of 3 for communications received on a link with a neighboring router device when the RSSI value of one or more advertisement messages (e.g., average RSSI for advertisement messages over a period of time) is at least a link margin of 20 dB above the noise floor. A link quality value of zero may indicate that the link quality is unknown or infinite when the RSSI value of one or more advertisement messages (e.g., average RSSI value for advertisement messages over a period of time) is unable to be determined above the noise floor. Though examples are provided for predefined numbers indicating different levels of link quality, and/or different link margins that may be assigned to those levels, other indicators and/or values may be used to define link quality between two routing devices. Additionally, though individual routing devices may be provided as an example (e.g., leader device 215 or router device 225c), other routing devices may similarly calculate link quality for communication links between neighboring routing devices.
The LQI of the communication links measured locally at each control device (e.g., the leader device 215 and the router device 225c) may be exchanged with the other device on the communication link. For example, the LQI may be measured locally at each control device and transmitted to the other device via an advertisement message. The LQI that is measured by another router device (e.g., on the other side of the communication link) and received at a router device may be stored as the link quality out (LQO) for the communication link. The LQI and/or the LQO may be stored in a local router table at each routing device. For example, the leader device 215 may store the LQI and/or the LQO for the communication link with each router device in the network 200d in a router table 229. Similarly, the router device 225c may store the LQI and the LQO for communicating with each router device in the network 200d in a router table 261.
As described herein, the router tables 229, 261 may each identify network information for communicating with each router in the network 200d from the perspective of the devices at which the router tables 229, 261 are stored. The number of router devices in the network 200d and/or the router identifiers in use in the network 200d may be determined from a bitmap 227, as described herein. The bitmap 227 may be maintained by the leader device 215 and distributed to the other routing devices for locally maintaining their router tables. For example, the router devices 225a, 225c may receive the bitmap 227 and update their local router tables. The bitmap 227 may indicate the number of rows in the router tables (e.g., indicating the number of identified router devices in the network) and/or the router identifiers to include in the router tables. The router devices may maintain updated network information for the indicated router identifiers in the router tables. The updated network information in the router tables may include the LQI and/or LQO for the communication link between the routers identified in the bitmap 227. For example, the router 225c may receive the bitmap 227 from the leader device 215 and update the router table 261 to include routers in the table 261 that are indicated in the bitmap 277, or remove routers in the table 261 that are indicated in the bitmap 277 as failing to be used in the network.
The leader device 215 and router devices 225a, 225b, 225c, 225d, 225e, 225f may each use the LQI and LQO in their respective router tables to calculate a link cost for communicating on a communication link with other router devices. The link quality for the communication link between the two router devices may be the lesser of the value of the link quality for digital messages being transmitted out (e.g., LQO) and the value of the link quality for digital messages being received (e.g., LQI) on a single-hop communication link between two devices. An LQO or an LQI of zero may indicate that the router device fails to have a direct communication link with the router device listed in the router table.
A link cost for sending communications between devices on a communication link may correspond directly to the link quality of communications on the communication link. The link cost may indicate a relative cost or loss of communications on the communication link. Table 262, shown in
The link cost for each communication link may be used by a router device to calculate a path cost for communications between the router device and another router device in the network 200d. The path cost may indicate the relative cost or loss of communications on an entire communication path that may include one or more router devices. The path cost for one communication path may be compared to another to determine a higher quality communication path for sending digital communications that may have a lower relative cost associated with transmission of digital messages.
The path cost may indicate the overall cost for communicating a digital message from a starting router device to an ending router device. For example, the path cost may be calculated as the total of the link costs for each hop between the starting router device from which a digital message may originate and the ending router device at which the digital message may be received in the network 200d. Each router device may calculate the path cost to a neighboring device on a single-hop communication link as being equal to the link cost and store the path cost in the locally-stored router table. For example, the router device 225c may set the path cost for communications with the leader device 215 equal to the link cost (e.g., lower of LQI and LQO) on the communication link and store the path cost in the router table 261. Similarly, the router device 225c may set the path cost for communications with the router device 225b equal to the link cost (e.g., lower of LQI and LQO) on communication link and store the path cost in the router table.
Each router device (e.g., leader device 215 and router devices 225a, 225b, 225c, 225d, 225e, 225f) may update the path cost for communicating digital messages to/from each router device in their respective router table based on the path cost information received from another router device. For example, as the router device 225b may be unable to directly communicate with the leader device 215, the router device 225b may receive path cost information for communicating digital messages through another router in the network 200d. The router 225c may transmit the path cost for communicating digital messages to/from the leader device 215 (e.g., path cost=2) in a multicast message that is received by other router devices. The multicast message may be an advertisement message, for example. The router device 225b may receive the path cost for communicating digital messages between the leader device 215 and the router device 225c (e.g., path cost=2). To calculate the total path cost for communicating digital messages between the router device 225b and the leader device 215 through the router device 225c, the router device 225b may add the link cost for communications between the router device 225b and the router device 225c (e.g., link cost=1) to the path cost received from the router device 225c (e.g., path cost=1) to get a total path cost (e.g., path cost=3). The link cost for communications between the router device 225b and the router device 225c may be determined from the link quality of the communication link between the router device 225b and the router device 225c, which may be the smaller of the LQI and LQO of the communication link (e.g., link quality=3).
Each router device may send/broadcast an advertisement message that includes the path cost to one or more other router devices in the network 200d. The router devices that receive the path cost information from the router device that sent the advertisement message may update their respective path cost information in their local router tables (e.g., by adding their link cost for communications with the router device that sent the advertisement message to the path cost in the received message). Each router device may use the locally-stored path cost information to identify the path through which digital messages may be communicated. For example, digital messages transmitted from the router device 225b to the leader device 215 may be communicated through the router device 225a or the router device 225c. The router device 225b may receive respective advertisement messages from the router device 225a and the router device 225c that indicate the path cost for communication of digital messages between the router device 225a and the leader device 215 is the same as the path cost for communication of digital messages between the router device 225c and the leader device 215 (e.g., path cost=2 on each communication link). The router device 225b may add the link cost calculated for communicating messages between the router device 225b and the router device 225c (e.g., link cost=1) to the path cost information received in the advertisement message from the router 225c (e.g., path cost=2) to determine the total path cost for communicating with the leader device 215 through the router device 225c (e.g., total path cost=3). The router device 225b may similarly add the link cost calculated for communicating messages between the router 225b and the router 225a (e.g., link cost=2) to the path cost information received in the advertisement message from the router 225a (e.g., path cost=2) to determine the total path cost for communicating with the leader device 215 through the router device 225a (e.g., total path cost=4). The router device 225b may update a locally-stored router table with the lowest calculated path cost for communicating with the leader device 215 and/or the identifier of the router device through which digital messages are to be transmitted (e.g., router 225c). Each router device may similarly update their respective locally-stored router table with the lowest calculated path cost for communicating with the other router devices in the network 200d. For example, as shown in
Through periodically updating the link quality (e.g., LQI and/or LQO), link cost, and/or path cost, and communicating the path cost to other router devices in periodic advertisement messages, each router device may have up-to-date path cost information for communicating digital messages to other router devices in the network 200d. The router device may use the best communication path (e.g., lowest cost path) for communicating digital messages to another device. This routing mechanism may allow router devices to detect when other router devices have dropped off the network 200d, or a path cost between routers has changed, and calculate the next lowest cost path to maintain connectivity to other router devices in the network 200d.
In an effort to distinguish relatively older data being transmitted in the periodic advertisement messages from relatively newer data transmitted in the periodic advertisement messages, the advertisement messages may be communicated with a sequence number. The leader device, such as leader device 215, may be responsible for updating the sequence number and distributing the updated sequence number to the other router devices in the network (e.g., router devices 225a, 225b, 225c, 225d, 225e, 225f in network 200d). For example, the leader device 215 may increment the sequence number periodically (e.g., after transmission of one or more advertisement messages) and/or after a router device is added to the network. The sequence number may be updated to allow router devices in the network (e.g., leader device 215 and/or router devices 225a, 225b, 225c, 225d, 225e, 225f in network 200d) to identify updated network information transmitted in advertisement messages. For example, as router devices (e.g., leader device 215 and/or router devices 225a, 225b, 225c, 225d, 225e, 225f in network 200d) may be periodically communicating advertisement messages that include path cost information that indicates the path cost for communicating with other router devices in the network, the sequence number may be updated to identify the updated path cost information.
After the leader device 215 updates the sequence number, the leader device 215 may distribute the sequence number to other router devices in the network. For example, the leader device 215 may use the sequence number in its own advertisement messages. After receiving the updated sequence number, each router device may use the updated sequence number for subsequent advertisement messages transmitted from the router device on the network. Each sequence number transmitted from the leader device 215 to the other router devices may be used in the advertisement messages for the router devices until a subsequent sequence number is distributed by the leader device 215. For example, the router device 225c may receive the sequence number directly from the leader device 215 and use the sequence number in subsequent advertisement messages. The router device 225b may receive the sequence number in the advertisement messages transmitted from the router device 225c and use the sequence number in subsequent advertisement messages transmitted from the router device 225b. The routers may each use the current sequence number until an updated sequence number is received that is originated at and distributed from the leader device 215. Each router device may update the locally-stored network information in the router table when the router device receives an advertisement message from a non-leader router device (e.g., router devices 225a, 225b, 225c, 225d, 225e, 225f) that has an updated sequence number. If a router device receives an advertisement message that has the same sequence number as a previously received advertisement message, and/or previously received from the same non-leader router device, the router device may fail to process the advertisement message. If a router device fails to receive an updated sequence number within a predefined period of time (e.g., minutes, seconds, etc.), the router may assume the leader device 215 is unavailable for communications (e.g., offline, powered off, dropped from the network, changed roles, or is otherwise unable to communicate with the router device) and attempt to form another network or network partition having another leader device 215.
As described herein, the control devices that are attached to a network, such as the network 200a, 200b, 200d, may each be assigned a respective role. Control devices that are assigned certain roles, such as a leader device or a router device, may facilitate communication with control devices that are assigned other roles, such as end devices. The roles of control devices may be assigned on a first-come-first-serve basis. For example, the control devices that join a network first are assigned roles that facilitate the communication of other control devices that subsequently join the network. This may result in degradation of the quality of communication links as the network evolves and other devices are added to the network, or in the vicinity of the network. For example, control devices may establish links (e.g., parent-child link, auxiliary parent link, router-to-router links) with one another that provide the best quality communication link at the time.
After the network 200d is formed (e.g., claiming procedures initially performed, joining procedures initially performed, attachment procedures initially performed and/or other procedures performed for establishing the network), the control devices may lose power and/or be reset upon receiving power. For example, the control devices in the network 200d may be turned off and turned back on after a power outage or some other event that causes the network 200d to lose power. After the reset (e.g., after power is restored), the leader device 215 and the router devices 225a, 225b, 225c, 225d, 225e, 225f may attempt to re-form the network 200d, for example, by reattaching to the network and resuming their previous roles on the network. However, if the leader device 215 and the router devices 225a, 225b, 225c, 225d, 225e, 225f attempt to reattach to the network at the same or substantially the same time, the likelihood of message collisions may increase, which may cause network re-formation to fail or become delayed.
After a reset, the control devices that were attached to the network 200d may attempt to re-form the network. In an attempt to decrease the likelihood of message collisions and decrease the period of time for network re-formation to complete, the control devices that were attached to the network 200d prior to the reset may attempt to attach to the network in a predefined manner (e.g., sequentially). For example, the control devices that were attached to the network 200d may sequentially attach to the network in a set sequential manner according to a value of a stored identifier. In addition, the control devices that were attached to the network 200d may attach to the network based on their respective hop count from the leader device 215. The hop count and/or role in the previously-formed network may be stored at each control device, or otherwise communicated from another device after being powered on.
Referring to
The router devices 225a, 225b, 225c, 225d, 225e, 225f may attempt to join the previously-formed network 200d and/or attach to the parent device in the previously-formed network based on a coordinated startup time for each device. The coordinated startup time may be individualized for a respective router devices 225a, 225b, 225c, 225d, 225e, 225f, such that the coordinated startup times trigger the router devices 225a, 225b, 225c, 225d, 225e, 225f to start their respective joining procedures, and/or attachment procedures. Referring to
As described herein, a network may be used to facilitate communication between the respective devices of a load control system. For a respective control device to communicate via the network, the control device may join the network, for example, by initiating a commissioning procedure.
At 302, the control device may perform a claiming procedure. The claiming procedure may be used to discover and claim control devices for being added to the network. For example, control devices in the load control system (e.g., load control system 100 shown in
The mobile device may identify one or more control device beacons from which a respective beacon was received at a received signal strength indicator (RSSI) above a predefined value. For example, the mobile device may identify one or more of the beacons transmitting the beacons that are received having the strongest receives signal strength indicators, and the mobile device may transmit a connection message to the control device(s). The control device performing the commissioning procedure 300 may receive the connection message from the mobile device may be configured to establish a connection (e.g., a two-way communication connection) with the mobile device.
The connection message may indicate to the control device that the control device has been selected for claiming. The connection message may operate as a claiming message, or a separate claiming message may be sent after the connection is established between the mobile device and the control device. The claiming message may indicate that the control device has been claimed for being added to the network. In response to receiving the claiming message, the control device may transmit a claim confirmation message to the mobile device. The claim confirmation message may include a configuration information that may be used to join the control device to the network. For example, the configuration information may include a unique device identifier (e.g., serial number) of the control device and/or network credentials for joining a network. The network credentials may include a network key for the network, a network address for the control device (e.g., a Thread network address) and/or a joiner identifier for the control device. The control device may be programmed with the network credentials by receiving the credentials for the network via an RF communication (e.g., Bluetooth or other short-range communication) from a commissioning device, or the credentials may be prestored at the control device (e.g., at the time of manufacture). The unique device identifier (e.g., serial number) of the control device may be sent in the claim confirmation message when the unique beacon identifier is not the unique device identifier of the control device. The network address and/or the joining identifier may be used during the joining procedure to allow the control device to join the network.
During the claiming procedure at 302, or otherwise during the commissioning procedure 300, the mobile device may write information to the control device that is being claimed. For example, the mobile device may write a time the control device was claimed, an identifier of the mobile device and/or application executing a claiming procedure on the mobile device, and/or channel information to assist the control device in getting onto the thread network through the joining procedure. The information may be sent in the claiming message or in a separate message on the connection established with the mobile device for being stored at the control device. When the mobile device receives the claim confirmation message from the control device to which the mobile device is connected, the mobile device may store the unique device identifier of the control device, the network address for the control device (e.g., a Thread network address), and/or the joiner identifier for the control device in memory.
The user may continue to move the mobile device around the space in which the load control system is installed to perform the claiming procedure with additional control devices. When the user is done claiming control devices (e.g., the mobile device has claimed all or a portion of the control devices of the load control system), the mobile device may upload the configuration information from the claimed devices to a central computing device, such as a commissioning device (e.g., the system controller 110). The uploaded configuration information may be used to identify the devices for being joined to the network. The central computing device may be a system controller or other device capable of communicating with other control devices in the load control system. The central computing device may be installed at the space being commissioned, or may be a remote computing device. Though the mobile device is described as the device performing communications with the control device(s) during the claiming procedure at 302, other computing devices may perform similar communications with the control device(s) during the claiming procedure. For example, another computing device, such as the commissioning device or system controller, may perform the communications with the control device(s) to perform the claiming procedure, or portions thereof.
At 304, the control device may perform a joining procedure. During the joining procedure at 304, the control device may look for a network to join. The control device may periodically switch between a beaconing mode for being claimed during the claiming procedure at 302 and listening for a network to join during the joining procedure at 304. The control device may begin the joining procedure at 304 after being claimed. As described herein, during the joining procedure, the control device may transmit and/or receive joining messages (e.g., message to join a wireless network, such as joining request messages and/or joining response messages). As a result of the joining procedure, and as further described herein, the control device may be with a network key that may allow the device to send and/or receive messages over the network.
During the joining procedure, the control device may stop transmitting (e.g., periodically transmitting) the control device beacon continuously on a first wireless communication medium (e.g., using BLE technology) and/or a second wireless communication medium (e.g., the wireless communication network). The control device may listen on the wireless communication network to determine if joining messages (e.g., joining request messages) being transmitted on the wireless communication network. The control device may continue to periodically transmit the control device beacon via the first wireless communication medium (e.g., at a slower rate than in the claiming procedure) in case the mobile device attempts to reconnect to the control device while the mobile device is performing the claiming procedure.
The control device may receive a joining request message from the central computing device or the commissioning device during the joining procedure. The control device may respond with a request to join the network. The central computing device or the commissioning device may challenge the control device with one or more portions of the configuration information obtained during the claiming procedure. For example, the joining request message, or another message from the central computing device or the commissioning device, may include a request for one or more portions of the network credentials (e.g., a network key) from the user device. In an example, the central computing device or the commissioning device may identify the network address in the network credentials in the joining request message and request the joiner identifier from the control device. The control device may respond with the joiner identifier or the network address and the joiner identifier to join the network or network partition. The central computing device or the commissioning device may identify the control device from the unique identifier in the message as being a claimed device and confirm the accuracy of the network credentials to join the control device to the network. The central computing device may transmit the network key to the control device, which may use the network key to connect to the network.
At 306, the control device may initiate an attachment procedure. After the control device joins the network, the control device may, for example, attempt to attach to another device (e.g., a leader device or a router device) on the network to form the mesh network (e.g., formation of the network) at 306. In order to attach to another device on the network, the control device may send and receive a number of attachment messages via the network. For example, the control device may, at 306, initiate an execution of the procedure 500 (e.g., to start a back-off timer). The control device may also, or alternatively, perform other attachment procedures as described herein.
Though
In addition, the central computing device may transmit the network credentials to the control device during the claiming procedure at 302. The network credentials may be used by a control device to directly attach to another device on the network. For example, the network device to which the control device attempts attachment may challenge the control device for the network credentials as described herein. As described herein one or more of the claiming, joining, and/or attachment procedures may be performed after power is provided to a control device and the device is turned on. One or more of these procedures may also be performed to re-form the network or reattach control devices to the network.
As described herein, a control device may join a network and/or attach to another device on the network in order to communicate with the other control devices on the network. However, if the control device attempts to attach to another device on the network at the same or substantially the same time as other control devices, the likelihood of message collisions may increase and/or the control device may fail to attach to another device on the network. In an attempt to decrease the likelihood of message collisions, the control device may delay its respective attachment procedure such that control devices attach to other devices on the network (e.g., attach sequentially rather than simultaneously, which may increase the likelihood of message collisions and/or increase the likelihood that a respective control device fails to attach to another device on the network). For example, the control devices that are attempting to attach to other devices on a network may delay their respective attachment procedures based on a coordinated startup time. In addition, the coordinated startup time may be individualized for a respective control device, such that the coordinated startup times trigger the control devices to start their respective attachment procedures in a coordinated manner.
As part of an initial startup procedure, when a control device is initially powered on and/or attempts to initially attach to another device on a network or network partition (e.g., initial attachment after initially being powered on after being configured and/or reconfigured) the device may perform a startup procedure that is coordinated with other devices on the network or network partition. As an initial startup procedure may be performed at a control device prior to the control device establishing a role on the network for performing communications, a coordinated startup of the devices on the network may be performed to decrease latency and/or potential collisions of messages on the network as devices are attempting to perform an attachment procedure. After the control device has been commissioned, the control device may perform an attachment procedure or initial startup procedure when turning on.
At 402, the control device may determine the unique coordinated startup time, which may be based on an identifier associated with the control device. The identifier may be the unique identifier (e.g., serial number) assigned to the control device, as described herein, which may enable the determined coordinated startup time to also be unique. For example, each respective control device may be assigned or configured with an identifier. Identifiers may be assigned or configured such that a different identifier is assigned/configured for each control device. For example, identifiers may be sequentially assigned to and stored at control devices. The identifiers may be the same identifiers stored in the association information described herein and/or used for communicating messages between devices in the system. The identifiers may be stored at time of manufacture, or during an initial configuration or commissioning procedure at the load control system after installation of the control devices. The identifiers may be determined during operation or runtime of the control device based on the previous network status. The control device may determine the coordinated startup time by adding a delay for each identifier. For example, the control device may add an additional one second delay for each identifier in the sequence (e.g., first identifier gets a one-second delay, second identifier gets a two-second delay, etc.). The identifiers may be grouped for determining the coordinated startup time. For example, the control device may determine that its identifier is in a first group of identifiers and set the delay equal to the value for the first group. In an example, the control device may determine its identifier is in a first group of five control devices and wait a coordinated startup time of five to ten seconds, then the control devices in the next group may wait an additional five to ten seconds, and so on. The delay of each device in the group may be randomized within a time frame.
The unique coordinated startup time may be used by the control device to delay the start of a joining procedure. As described herein, a joining procedure may be performed by a control device to join a network (e.g., to enable the control device to send and receive messages to other devices joined to the network). For example, a joining procedure may include an attachment procedure for the control device to attach to another device joined to the network (e.g., a router device). Further, the attachment procedure may establish a parent-child link between the control device and the other device, such that the control device may send and receive messages from over the network through the other device. The unique coordinated startup time may be used by control devices such that each control device delays a respective joining procedure for a different period of time. As described herein, if numerous devices start their respective attachment procedures (e.g., to establish parent-child link, auxiliary parent link, and/or router-to-router links procedures) at the same or substantially the same time, the likelihood of message collisions may increase and/or the time for network formation to complete may increase.
The unique coordinated startup time may be determined such that control devices in the system delay initiating their respective joining procedures, allowing other devices in the system to begin joining the network, for example, by attaching to other devices on the network during an attachment procedure. For example, the unique coordinated startup times may be determined based on the identifier of the respective control device, which, as described herein, may be assigned or configured sequentially. The control device having the lowest or highest numbered identifier may begin a respective attachment procedure prior to the other control devices in the load control system.
The identifiers of the control devices may be used to determine the unique coordinated startup time of the control devices. Each control device may assign a predefined delay to the unique identifier stored thereon. For example, a control device with a unique identifier “0001” may initiate a first delay time (e.g., one-second delay, ten-second delay) from the triggering event, a control device with a unique identifier “0002” may initiate a second delay time that is longer than the first delay time (e.g., a two-second delay) from the triggering event, and so on. The predefined delay may be applied to any character (e.g., integer, letter, alphanumeric character, etc.) or series of characters in the identifier.
As the unique identifiers of control devices may be assigned at the time of manufacture, or otherwise prior to installation of the devices in the load control system, each period of delay may be assigned to control devices that come within a group of identifiers. For example, the control devices in a first group of identifiers (e.g., identifiers less than “0100”) may initiate a first delay time, the control devices in a next group of identifiers (e.g., identifiers less than “0200”) may initiate a second delay time, and so on.
The control devices may know their relative location in the sequence of devices and delay the coordinated startup time based on the relative location in the sequence. For example, a control device may receive a list or table of the identifiers of the other control devices in the system. The list or table may be received in a message from the central computing device, such as the commissioning device. For example, the other identifiers may be received in the message from the central computing device or commissioning device that is transmitted as the triggering event for initiating the attachment procedure at each control devices. The control device that identifies its identifier as the first or last in the list or table may begin its attachment procedure, or initiate the first delay time (e.g., a one-second delay). The next control device that identifies its identifier as the first or last in the list or table may begin its attachment procedure after a next delay time (e.g., a one-second delay when the first device initiates a delay, or a two-second delay when the first device does not).
The control devices may receive the delay time for the unique coordinated startup time from the central computing device or commissioning device. For example, the central computing device or commissioning device may identify the delay time for each device or group of devices herein and communicate the unique coordinated startup time for each control device to the respective devices. The unique coordinated startup time may be individually communicated to the control devices in a unicast message, or the coordinated startup times may be communicated in a multicast message.
The unique coordinated startup time of control devices may be grouped within a time frame. For example, the coordinated startup time of a group of control devices may be randomized within a time frame. Control devices having identifiers in a first group may be given a randomized coordinated startup time within a first time frame, control devices having identifiers in a second group may be given a randomized coordinated startup time within a second time frame, and so on.
Though the delay time for a unique coordinated startup time may be described using a certain magnitude of time (e.g., seconds), other magnitudes of time may be implemented (e.g., milliseconds, tens of seconds, etc.). The coordinated startup time of the control devices may be set at a time period to allow one or more control devices to power on and perform the described procedures prior to other devices in the system.
At 404, the control device may wait for the unique coordinated startup time determined at 402, and, after the waiting for the coordinated startup time, the control device may start a joining procedure at 406. Waiting for the coordinated startup time determined at 402 may allow the control device to start its respective joining procedure, which, as described herein, may include an attachment procedure, at a time before and/or after other control devices start their joining procedures, which may decrease the likelihood of message collisions and/or decrease the amount of time for network formation to complete. For example, if the unique coordinated startup times are determined based on the identifiers that are sequentially assigned or configured to the respective control devices, the unique coordinated startup times of the respective control devices may expire sequentially and the respective control devices may start their joining procedures sequentially.
The networks described herein may be used to facilitate communication within a load control system. The load control system may experience a loss of power (e.g., due to a blackout or another event that causes the power supplied to the load control system to cease) after formation of the network, or portions thereof. If the load control system experiences a loss of power (e.g., the control devices attached to the network attached to the network experience a loss of power) and/or the control devices are reset, the respective control devices within the load control system may regain power and attempt to re-form the network. However, the control devices within the control system may regain power and attempt to re-form the network at the same or substantially the same time, which may increase the likelihood of message collisions and/or increase the amount of time for network formation to complete. Additionally, the control devices may attempt to perform an attachment procedure, even though a network, or portions thereof, have already been formed.
Control devices may apply a back-off timer (e.g. a timer to run for a back-off period of time) before initiating an attachment procedure. In examples, the back-off period of time may be a period of time for which the control device will delay before attempting to attach to another device on the network. For example, the back-off timer may allow other control devices attempting to join the network to perform and complete their respective attachment procedures. The back-off timer may also decrease the likelihood that multiple control devices are initiating attachment procedures at the same or substantially the same time, which, as described herein, may cause message collisions/failures and increase the amount of time that it takes for network formation to complete. The back-off timer may be determined by the control device, for example, such that the control device initiates its attachment procedure while the network is not busy (e.g., when other devices are not currently performing an attachment procedure). Further, if the control device initiates its attachment procedure while the network is not busy, the likelihood that message collisions occur will be low and network formation will not be delayed. For example, the control device may listen to the network traffic (e.g., messages being transmitted over the network), and determine the back-off timer based on network traffic (e.g., estimating a time when the network will not be busy to initiate an attachment procedure).
At 502, the control device may determine whether the control device performing the procedure 500 is attached to a parent device on a network (e.g., the networks 200a, 200b, 200c, 200d, or network partitions 201, 202, 203). If the control device is not attached to a parent device on the network, the control device may determine if a back-off timer has been started and is running at 504. As described herein, after the back-off timer expires, the control device may attempt to attach to another device on a network to establish a link with the other device (e.g., router-to-router link, parent-child link, and/or auxiliary parent link), for example, by transmitting attachment messages to the other device. The control device may transmit a certain type of attachment message based on the type of link the control device wants to establish. For example, the control device may transmit attachment messages that are configured to establish a parent-child link, such as a parent-request message (e.g., a multicast parent-request message). The control device performing the procedure 500 may refrain from attaching to a parent device on the network (e.g., may not attempt to attach to a parent device the network) while a back-off timer is running. The resolution of the back-off timer may be in milliseconds and/or may be represented by a plurality of bits (e.g., thirty-two bits). The back-off timer may cause the control device to delay attempting to attach to a parent device on the network to allow for other devices to attach to parent devices on the network (e.g., networks 200a, 200b, 200c, 200d or network partitions 201, 202, 203). For example, the back-off timer may allow parent devices to process parent-request messages from other devices. Accordingly, the procedure 500 may exit if the back-off timer has been started and is still running.
If, however, a back-off timer has not been started and/or is not currently running, a random number may be generated at 506. For example, the random number may be generated by randomly selecting a number from a predefined range of back-off times (e.g., zero to four seconds). At 508, the back-off timer may be initialized with the random number generated at 506 and, as described herein, the device may refrain from attaching to the network for the back-off timer period of time. Initializing the back-off timer to the generated random number may decrease the likelihood that multiple devices attempt to attach to the network at the same time or within the same time frame (e.g., as it is unlikely that a plurality of devices will generate the same random number) and increase the chance of the device successfully attaching to the network. As described herein, when multiple devices attempt to attach to a network at the same time, the messages transmitted to attach to the network (e.g., parent-request message and parent-response messages) may collide, which may cause the attachment to fail and/or be delayed. At 510, the back-off timer may be started (e.g., started counting down) and the procedure 500 may exit.
At 602, the control device may determine if a back-off timer (e.g., the back-off timer started at 510 of the procedure 500) is running (e.g., to determine if the control device performing the procedure 600 is presently attempting to attach to a parent device on a network), for example, while listening to traffic on the network. If the back-off timer is not running at 602, the procedure 600 may exit. If the back-off timer is running at 602 (e.g., the control device is presently trying to attach to a parent device on the network), the control device may determine whether the message received is a parent-request message at 604. As described herein, a parent-request message may be transmitted by a control device attempting to attach to a another device (e.g., a router device or leader device, also referred to herein as potential parent devices) on the network and establish a parent-child link with the router device (e.g., a control device attempted to attach to the network as a child device of the router device attached to the network). Further, the potential parent devices (e.g., leader devices and/or router devices) that receive the parent-request message may transmit responses to the parent-request message. The responses to the parent-request message may be transmitted at the same or substantially the same time, which may increase the likelihood of message collisions within the network. Messages that collide with each other, for example, may not be received and the device that transmitted the parent-request message may fail to attach to another device on the network. Accordingly, if the message is a parent-request message at 604, the control device may add a first period of time to a back-off timer (e.g., the back-off timer started at 510 of the procedure 500) at 606. In examples, the control device may add the first period of time to a back-off timer (e.g. the back-off timer started at 510 of the procedure 500) based on a number of attachment messages transmitted on the network during the back-off period of time (e.g., while listening to traffic on the network during the back-off period). For example, the first period of time may be a period of time that includes 300 ms. Adding time to the back-off timer (e.g., extending a back-off period of time) may reduce the likelihood that message collisions occur and allow other devices to attach to parent devices on the network without interference, which may optimize formation of the network (e.g., a reduce in the amount of time to form the network having the single network partition). In addition, adding time to the back-off timer may allow for devices to attach to the network sequentially, for example, such that a plurality of parent-request messages are not transmitted at the same or substantially the same time.
At 608, the control device may determine if the received message is a link-request message or not. A link-request message may be transmitted by another router device (e.g., a router eligible end device that has just been upgraded to a router device) to establish a link (e.g., an auxiliary parent link and/or a router-to-router link) with the other router devices on the network. Similar to the parent-request message, the leader devices and/or router devices that receive the link-request message may each transmit link-response messages in response to the link-request messages. The link-response messages transmitted by the leader devices and/or router devices may be transmitted at the same or substantially the same time, which may increase the likelihood of message collisions within the network. Accordingly, if the received message is a link-request message at 608, the control device may add a second period of time to a back-off timer (e.g., the back-off timer started at 510 of the procedure 500) at 710. The second period of time may be a period of time that is greater than the first period of time. For example, the second period of time may be 625 ms. As described herein, adding time to the back-off timer may allow a greater number of messages to be processed by a receiving device and/or reduce the likelihood that message collisions occur by allowing other devices to attach to the network, which may optimize formation of the network (e.g., a reduce in the amount of time to form the network having the single network partition). In addition, adding time to the back-off timer may allow for devices to attach to the network sequentially, for example, such that a plurality of link-request messages are not transmitted at the same or substantially the same time. If the message is not a link-request message at 604 or a parent-request message at 608, the procedure 600 may exit.
As the number of control devices attempting to attach to a network increases, the back-off timers running on each of the respective control devices may expire at the same or substantially the same time. If the control device receives a message while the back-off timer is running, the control device may add a period of time to the back-off timer. In addition, each of the respective control devices may transmit a parent-request message to attach to the network in response to expiration of the back-off timer. However, the back-off timer of a respective control device may “lose time” while processing the messages that are received while the back-off timer is running (e.g., keep the back-off timer running while processing the message). In addition, as described herein, the back-off timer of a respective control device may be initialized to a number randomly generated from a range of numbers. As the number of control devices attempting to attach to a network increases, the likelihood that multiple control devices initialize their respective back-off timer to the same random number may increase. Similarly, as the number of load control devices attempting to attach to a network increases, the likelihood that each of the respective back-off timers expire at the same or substantially the same time may increase. If the back-off timers expire at the same or substantially the same time, the parent-request messages may be transmitted at the same or substantially the same time, which may result in message collisions and/or the control devices failing to attach to the network. Accordingly, the control device may vary the back-off timer, for example, based on the number and/or type of messages received while the back-off timer is running.
At 702, the control device may determine if a back-off timer (e.g., the back-off timer started at 510 of the procedure 500) is running (e.g., to determine if control device performing the procedure 700 is presently attempting to attach to a parent device on a network). If the back-off timer is not running at 702, the procedure 700 may exit. If, however, the back-off timer is running at 702 (e.g., the control device is presently trying to attach to a parent device on the network), the control device may determine whether the message received at 701 is a parent-request message at 704.
A control device may track the number of parent-request messages and link-request messages received while a back-off timer is running. At 704, the control device may determine whether the message is a parent-request message. As described herein, a parent-request message may be transmitted to attach to another device on a network, and multiple messages may be transmitted in response to the transmission of a parent-request message (e.g., transmitted by the parent devices attached to the network). If the received message is a parent-request message at 704, the control device may increment a first count NPR (e.g., a variable) at 706. The first count NPR may indicate the number of parent-request messages received by the control device while a back-off timer is running.
At 708, the control device may determine whether the message is a link-request message. As described herein, a link-request message may be transmitted by a parent device to attach to other router devices attached to a network. In addition, multiple messages may be transmitted in response to the transmission of a link-request message. If the received message is a link-request message, the control device may increment a second count NLR (e.g., a variable) at 710. The second count NLR may indicate the number of link-request messages received by the control device while a back-off timer is running. If the message is not a link-request message at 704 or a parent-request message at 708, the procedure 700 may exit.
When a control device fails to receive a parent-request message or a link-request message, the control device may determine that another device did not attempt to attach to another device on the network or attempt to attach to a parent device on the network. In addition, the control device may determine that the present conditions of the network are optimal for the control device to attempt to attach to another device on the network by transmitting a parent-request message (e.g., another device may not attempt to attach to the network at the same or substantially the same time, which may decrease the likelihood of message collisions and/or network attachment failure). For example, when the first count NPR and the second count NLR are both equal to 0, the control device may assume that another device may not attempt to attach to another device the network as the control device. Accordingly, if the first count NPR and the second count NLR are both equal to 0 (e.g., no parent-request messages or link-request messages were received while the back-off timer was running) at 752, the control device may initiate an attachment procedure at 754. For example, the attachment procedure may include transmitting one or more attachment messages (e.g., parent-request messages and/or parent-response messages).
If, however, the both of the first count NPR and the second count NLR are not equal to 0 (e.g., one or more parent-request messages or link-request messages were received while the back-off timer was running), the control device may determine a maximum random number value NMAX as a function (e.g., a weighed sum) of the first count NPR and the second count NLR at 756. The weights of each of the first count NPR and the second count NLR may, for example, be different. For example, as the values of the first count NPR and the second count NLR increase, the maximum random number value NMAX may also increase. Similarly, as the values of the first count NPR and the second count NLR decrease, the maximum random number value NMAX may decrease. The maximum random number NMAX may be the maximum number in a range of numbers, from which another value for the back-off timer may be selected (e.g., randomly selected).
At 758, the control device may generate a random number NRAND from a range of numbers that spans 0 to maximum random number value NMAX, inclusively. For example, as the maximum random number value NMAX increases (e.g., the range of numbers from which the random number may be generated increases), the likelihood that multiple devices select the same random number (e.g., select the same back-off timer) may decrease, which may decrease the likelihood of message collision. At 860, the control device may set the back-off timer to the random number NRAND generated at 758. At 862, the control device may start the back-off timer (e.g., counting down), and the procedure 750 may exit.
As described herein, control devices may join a network by initiating an attachment procedure with a router device. Completion of the attachment procedure may result in the control device being assigned the role of an end device on the network that is attached to the router device. In addition, the control device and the router device may form a parent-child link, e.g., the control device may be a child device of the router device, and the router device may be a parent device of the control device. Over time, other devices may join the network, for example, by attaching to the router device (e.g., or another router device joined to the network). As the number of devices joined to the network increases, the network my upgrade the role of certain devices joined to the network to the role of a router device (e.g., upgrading certain router eligible end devices to the role of a router device, as described herein). Other devices may join to the network by initiating attachment procedures with the upgraded router devices, growing the network.
As the number of router devices on the network increases, however, certain parent-child links may no longer be optimal. For example, the router device that a control device attaches to when it initially joins the network may no longer be the optimal router device to be attached to (e.g., the optimal parent device of the control device), because another router device may exist on the network and the control device may have a greater link quality and/or lower link cost on the communication link with the other router device. A similar situation may arise for the auxiliary parent devices attached to the control device. As a result, the control device may attach to another router device to establish a parent-child link with the other router device joined that network and/or attach to another auxiliary parent device.
At 802, the control device may determine whether the received message is from a router device on the network (e.g., a leader device, such as the leader device 210, and/or a router device, such as one of the router devices 220a-220d). If the message is received from a control device other than a router device, the procedure 800 may end. If, however, the messages is received from a router device, the control device may determine if the router device is already an auxiliary parent device of the control device at 804 (e.g., determine if the message received at 801 is an auxiliary parent of the control device). If the message was received from an auxiliary parent device of the control device, the procedure 800 may exit (e.g., as the control device is already attached to that router device).
If the message was received from a router device that is not an auxiliary parent device of the control device, the control device may determine (e.g., measure) a present received signal strength indicator magnitude of the received message at 806. For example, the control device may measure a present received signal strength indicator RSSIRX of the received message at 9\806. The present received signal strength indicator RSSIRX may indicate the signal strength of the message and/or quality of communications from the router device from which the message was received to the control device. The control device may use the present received signal strength indicator RSSIRX to determine which of the plurality of router devices on the network to attempt to establish as an auxiliary parent device (e.g., which router device to attach to as an auxiliary parent device). The control device may store (e.g., may have previously stored) a stored received signal strength indicator RSSISTORED, which may indicate the router device from which the control device received a message having the highest received signal strength indicator (e.g., as compared to messages received from other router devices).
The control device may determine whether a communication metric of an a router device that is not attached to the control device indicates a stronger potential communication link than the communication metric of a parent device. For example, as illustrated in
At 822, the control device may determine a router identifier and a received signal strength identifier RSSIUPDATED of a router device that the control device may determine whether to establish an auxiliary parent link with (e.g., a potential auxiliary parent device). For example, the control device may, at 822, retrieve a router ID and received signal strength indicator of a stored router device that the control device may determine whether to establish an auxiliary parent link with (e.g., the router device stored at 810 of the procedure 800). In addition, the control device may, at 822, determine a router ID of a router device having a highest stored received signal indicator of router devices stored in an auxiliary parent table. At 824, the control device may determine if a variable NAUX-PAR indicating a number of auxiliary parent devices with which the control device is already attached is greater than or equal to a maximum value NMAX. The maximum value NMAX may indicate a maximum number of auxiliary parent devices with which the control device may be attached. The maximum value NMAX may be pre-configured and/or updated (e.g., updated based on changes to the network). For example, the maximum value NMAX may be pre-configured to 10.
If the variable NAUX-PAR is less than the maximum value NMAX at 824, the control device may, at 826, initiate an attachment procedure to establish an auxiliary parent link with the router device that was identified as the potential auxiliary parent (e.g., at 822). As described herein, an attachment procedure may include transmitting one or more attachment messages that are configured to establish an auxiliary parent link with the identified router device (e.g., link-request messages). After attaching to the identified router device, the router ID and the received signal strength indicator RSSIUPDATED of the updated auxiliary parent may be stored in an auxiliary parent table at 828, and the variable NAUX-PAR may be incremented at 830, before the procedure 820 exits.
If the variable NAUX-PAR is greater than or equal to the maximum value NMAX at 824, the control device may determine the auxiliary parent having a lowest received signal strength indicator RSSIAUX-LO in the auxiliary parent table at 832. The auxiliary parent with the lowest received signal strength indicator RSSIAUX-LO may be an auxiliary parent that the control device attached to during initial network formation. However, as described herein, after time elapses the network may include other routers that may provide the control device with improved communications over the network (e.g., increase the likelihood that the control device successfully sends and/or receives messages). In addition, if the control device were to attach to a router that has a stronger communications link with the control device, the control device may experience improved communications on the network.
The control device may determine whether a respective communication metric of a potential auxiliary parent device indicates a stronger potential communication link than the communication metric of a current auxiliary parent device. For example, as illustrated in
If the difference between the received signal strength indicator RSSIUPDATED of the potential auxiliary parent and the lowest received signal strength indicator RSSIAUX-LO in the auxiliary parent table is greater than or equal to the hysteresis threshold THAUX-HYS at 8344, the control device may, at 836, initiate an attachment procedure with the router identified as the potential auxiliary parent (e.g., at 822) to establish an auxiliary parent link, which may improve communications for the control device on the network. As described herein, an attachment procedure to establish an auxiliary parent link may include transmitting one or more attachment messages configured to establish an auxiliary parent link (e.g., link-request messages) to the router identified as the potential auxiliary parent. At 838, the control device may update the auxiliary parent table (e.g., to indicate attachment/auxiliary parent link with the updated auxiliary parent device). For example, the control device may remove the router ID of the auxiliary parent having the lowest received signal strength indicator RSSIAUX-LO from the auxiliary parent table and add the router ID and corresponding received signal strength indicator RSSIUPDATED of the updated auxiliary parent to the router table at 838.
After adding a router ID and a received signal strength indicator of a new auxiliary parent may in an auxiliary parent table at 828 and/or after updating the auxiliary parent table at 838, the control device may reset a parent-update timer (e.g., to 5 minutes) at 840, before the procedure 820 may exit. The parent-update timer may be used as a trigger for the child device to determine if the child device should attach to an updated parent device to improve communications between the child device and its parent device (e.g., as will be described in greater detail below with reference to
As shown in
The control device may determine whether the potential auxiliary parent has a link quality equal to a predefined value. The predefined value may be the highest quality value assigned to the link quality for a communication link (e.g., link quality equal to 3). The potential auxiliary parent being analyzed may be a router device having a highest stored received RSSI of router devices stored in the auxiliary parent table.
If the auxiliary parent to be added to the auxiliary parent table has a link quality equal to the predefined value (e.g., link quality of 3), the control device may, at 858, initiate an attachment procedure with the auxiliary parent to be added to the auxiliary parent table. In addition, the control device may add the auxiliary parent to the auxiliary parent table. The control device may also increment the maximum value NMAX by one (e.g., NMAX=NMAX+1) at 960. As described herein, the maximum value NMAX may indicate a maximum number of auxiliary parent devices that the control device may be attached to.
If, the auxiliary parent to be added to the auxiliary parent table does not have a link quality equal to the predefined value (e.g., link quality of 3), the control device may, at 854, detach from an auxiliary parent with a lowest received signal strength indicator (RSSIAUX-LO) from the auxiliary parent table. In addition, the control device may initiate an attachment procedure to attach to the potential auxiliary parent and add the router identifier and a received signal strength identifier RSSIUPDATED of the potential auxiliary parent to the auxiliary parent table at 856. As described herein, the router identifier and a received signal strength identifier RSSIUPDATED of potential parent device may have been determined during an execution of the procedure 820 (e.g., at 822 of the procedure 820).
The role of a control device attached to a network may be adjusted over time. For example, a router eligible end device may be adjusted to the role of a router device. A router eligible end device may be adjusted to the role of router device when the number of router devices joined to the network are below a threshold. In addition, a router eligible end device may be adjusted to the role of a router device when another device requests that the router eligible end device adjusts to the role of a router device (e.g., when the other device is unable to attach to a router device joined to the network). The other device may request that the router eligible end device adjusts to the role of a router device when the other device fails to attach to a parent device, which may result in the other device failing to join to the network. As described herein, the other device may fail to attach with a parent device when the other device fails to receive a response to a parent-request message, for example, due to message collisions in the network. In response to failing to receive a response to a parent-request message, a control device may attempt to form a new network or network partition (e.g., which as described herein may increase the time for formation of a single network), or request that another device upgrade to the role of a router device so that the control device may initiate an attachment procedure with the newly upgraded router device. When the router eligible end device received a request to adjust to the role of a router device, the router eligible end device may request permission to adjust to the role of the router device, for example, from a leader device. The leader device may accept request to adjust to the role of a router device by providing the router eligible end device with a router identifier.
A router device that is already joined to a network or network partition may attach to another network and maintain the role of a router device on the other network. For example, the router device may attach to the other network and attempt to use the router identifier assigned for the initial network or network partition. If the router device maintains the assigned router identifier, the child devices of the router device may also attach (e.g., migrate) to the other network, for example, without transmitting additional messages (e.g., additional parent-request messages to attach to the other network).
The network may be re-formed using information stored at the control devices during a prior formation of the network.
In order to reduce the likelihood of message collisions and the amount of time until network formation is complete, the control devices may attempt to reattach to parent devices and re-form the network. After being powered on, control devices may attempt to resume a previous role in the previously-formed network. The previous role may be stored locally on each of the control devices. The control device that was the leader device of the previously-formed network may begin a startup procedure prior to other control devices in the load control system. The control devices that were non-leader router devices in the previously-formed network may delay their startup procedures to allow the leader device to startup and begin transmitting advertisement messages to the other router devices. The other router devices may begin their startup procedure during a predefined interval after being powered on (e.g., to allow the leader device to startup). For example, the other router devices may begin their startup procedure at a random time during the interval after the leader initiates its startup procedure. During the startup procedure at the router devices, each router device may attempt to attach to the leader device or another router device to which the router device was attached in the previously-formed network. The end devices may begin their startup procedures during a predefined interval after being powered on to allow the routers to perform their startup procedures and attached to the leader device or other router device. For example, the end devices may begin their startup procedure at a random time during the interval after the routers initiate their startup procedures. The predefined interval at the end devices may be longer than the predefined interval for which the router devices delay their startup procedure to allow the router devices time to perform attachment and re-form the previously-formed network.
At 912, the control device may determine whether the control device was the leader device of the previously-formed network. As described herein, the leader device may manage other control devices on the network. For example, the leader device may assign and maintain router identifiers for each of the router devices attached to the network. The leader device may be the first device role to attempt to re-form the previously-formed network. The control device may have a role identifier stored thereon in memory that may indicate the role of the control device in the previously-formed network. For example, the role identifier may indicate that the control device was a leader device of a previously-formed network. The role identifier may be stored with one or more network credentials for the network, such as the network address for the control device (e.g., a Thread network address). The control device may determine from this stored role identifier for the previously-formed network that it was a leader device of the previously-formed network at 912.
At 914, the control device (e.g., the leader device of the previously-formed network) may transmit a link-request message. For example, the link-request message may be sent as a multicast message. The link-request messages may be used to determine whether the network has already formed with another leader device. In one example, the previously-formed network may have been powered down and additional devices may have been added to the system, the location of devices may have been moved, and/or the space may have been reconfigured to cause interferers between devices to be added or removed. Due to potential changes to the network and/or the space in which the network is located, the leader device may transmit the link-request message to determine if there is another leader device on the network. For example, the link-request message may be transmitted to identify whether there is an already formed network being implemented. As such, the leader device may transmit the link-request message to determine whether other devices have powered on and already formed a network having another leader device. If the leader device receives a response to the link-request message, the leader device may be incapable of being the leader device on the network and may revert back to being an end device or another role on the network. The other control devices of the previously-formed network may fail to respond to the link request, as they may await a leader advertisement from the leader device and/or a coordinated startup time after powering up and turning on.
At 916, the control device may determine whether other network partition(s) exist, for example, based on receiving a response to the link request. For example, if another leader device receives the link-request message transmitted by the control device in the space in which the control device is located and transmits a response to the link-request message, the control device may determine that other network partitions exist and may drop the previous role as the leader device of the previously-formed network. The control device may drop the previous role as the leader device of the previously-formed network to start another attachment procedure at 918 (e.g., as described herein in conjunction with
If, however, a response to the link-request message fails to be received, the control device may determine that another network partition does not exist, and may transmit a leader advertisement message at 920. The leader advertisement message may be used to re-form the previously-formed network, for example, by triggering the router devices of the previously-formed network to attach to the leader device (e.g., transmit a link-request message to the leader device) and re-form the mesh of the previously-formed network. The router devices that were attached to the leader device in the previously-formed network may listen for the leader advertisement before initiating their attachment procedure.
At 922, the control device may determine whether the control device was a router device of the previously-formed network. The determination at 922 may be based on the role identifier stored in memory at the control device that indicates that the role of the router device in the previously-formed network. At 924, the control device (e.g., a router device of the previously-formed network) may wait for a coordinated startup time for a router device (e.g., a coordinated router startup time). The coordinated startup time may be unique for the device and/or based on the role identifier. For example, the coordinated startup time may be based on the time at which the control device is powered on, and/or an identifier that is assigned to a control device (e.g., during a claiming procedure). The coordinated startup time for a router device may be equal to a base delay time (e.g., which may be same for each router device) plus an offset delay time. The offset delay time may be based on the hop count between a respective router device and the leader device. For example, the base delay time may be the same for each of the routers that were previously attached to the previously-formed network and may allow the leader device of the previously-formed network to re-form to the network and be available for router devices to reattach. The offset delay time may be based on the hop count back to the leader device and such that the offset delay time for router devices that are farther away from the leader device is longer than for router devices that are closer to the leader device. Referring to
The offset delay time for each device may be a predefined period of time that is multiplied by the hop count for the control device. The hop count may be determined from the previously-formed network and may be stored at the control device. After awaiting the base delay time, the control device may await the offset delay time, which may be a hop-count-multiple of a predefined period of time, prior to starting the attachment procedure. The offset delay time being calculated based on the hop count of a control device from the leader device may allow for the router devices having a lower hop count from the leader device, or that are closer to the leader device, to perform the attachment procedure prior to router devices having a higher hop count from the leader device, or that are further from the leader device. In an example, the predefined period of time that is multiplied by the hop count to calculate the offset delay time may be in a range of ten to thirty seconds. However, this time may vary to allow for other delays to enable the router devices time to power on, perform the attachment procedure, and/or start advertising.
In another example, different amounts of time may be added for each hop count when calculating the offset delay time of a control device. The amount of time added for each hop count may be more or less as the hop count increases. For example, the amount of time added to the offset delay time may increase by a predefined delta as the hop count increases, to allow more time for processing messages in a larger network. The amount of time added to the offset delay time may vary based on the number of control devices having the same hop count. This may allow for a shorter delay when less control devices are performing the attachment procedure, and a greater delay when more devices are performing the attachment procedure. The control devices may have stored thereon from the previously-formed network the control devices having the same hop count, or this may be communicated to the control devices from a central computing device or commissioning device.
Referring back to
At 928, the control device may determine whether a response to the link-request message transmitted at 926 is received. As described herein, the response to the link-request message may be a link accept message that may indicate that a communication link is established for communications with the control device in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the control device to decrypt messages from the device with which the communication link is established.
If a response to the link-request message fails to be received at 928, the control device may drop its role in the previously-formed network and start another attachment procedure at 930. The control device may await the response for a predetermined period of time. If, however, a response to link-request message is received, the control device may transmit a router advertisement message at 932. The router advertisement message informs the other router devices on the network that the control device is now operating as a router device.
Referring again to
After waiting for the coordinated startup time to expire, the control device may transmit a parent-request message (e.g., as a unicast message) to a parent device of the control device in the previously-formed network at 936. The identifier of the previous parent device may be stored in memory thereon. The parent-request message may be transmitted as a unicast message to the previous parent device for being reattached to the parent device. At 938, the control device may determine whether a response to the parent-request message was received. The response to the parent-request message may be a parent-response message. If a response to the parent-request message fails to be received (e.g., within a predefined period of time), the control device may drop its role in the previously-formed network and start another attachment procedure at 930. The attachment procedure may be performed to attach to another network or network partition as described herein.
As shown in
When the devices in the network 940 are powered off and powered on after network formation, each of the devices may perform a startup and/or attachment procedure in an attempt to re-form the previously-formed network. The leader device 215 may identify itself as a leader device and transmit a link-request message 943. The link-request message 943 may be sent as a multicast message. The link-request message 943 may be used to determine whether the network has already formed with another leader device. When the leader device 215 fails to receive a response to the link-request message 943, the leader device 215 may maintain its role as the leader device and allow for attachment of non-leader router devices that were previously attached to the leader device 215 on the previously-formed network.
The router device 225a may await a coordinated router device startup time 941 before transmitting a unicast request message 944. The coordinated startup time 941 for the router device 225a may be equal to a base delay time (e.g., which may be same for each router device 225a, 225d, 225f) plus an offset delay time. The offset delay time for the coordinated router device startup time 941 may be based on the hop count between the router device 225a and the leader device 215. The offset delay time may be weighted higher for router devices that are a greater number of hops from the leader device 215. For example, the offset delay time may be a multiple based on the hop count back to the leader device 215 (e.g., hop count=1). The hop count may be stored locally at the router device 225a during formation of the previously-formed network.
After the router device 225a waits the coordinated router device startup time 941, the router device 225a may send the unicast request message 944. The unicast request message 944 may be transmitted by the router device 225a for the router device 225a to attempt to resume its role in the previously-formed network. The unicast request message 944 may be a link-request message to re-form the communication link between the router device 225a and the leader device 215. The router device 225a may identify in memory that the router device 225a was attached to the leader device 215 in the previously-formed network. The router device 225a may transmit the unicast request message 944 to the leader device 215 to which the router device 225a was attached in the previously-formed network. The unicast request message 944 may include the router identifier of other unique identifier of the leader device 215.
The leader device 215 may receive the unicast request message 944 and respond with a unicast response message 945. As described herein, the unicast response message 945 may be a link accept message that may indicate that a communication link is formed for communications between the router device 225a and the leader device 215, as in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the router device 225a to decrypt messages from the leader device 215 with which the communication link is established. After the unicast response message 945 is received at the router device 225a, the router device 225a may transmit router advertisement messages in the network 940.
The router device 225d may await a coordinated router device startup time 941a before transmitting a unicast request message 946. The coordinated startup time 941a for the router device 225d may be equal to the base delay time (e.g., which may be same for each router device 225a, 225d, 225f) plus an offset delay time. The offset delay time for the coordinated router device startup time 941a may be based on the hop count between the router device 225d and the leader device 215. The offset delay time may be weighted higher for router devices that are a greater number of hops from the leader device 215. For example, the offset delay time may be a multiple based on the hop count back to the leader device 215 (e.g., hop count=2). The offset delay time for router device 225d may be longer than the offset delay time for the router device 225a, as the router device 225d is a greater number of hop counts from the leader device 215. The hop count may be stored locally at the router device 225d during formation of the previously-formed network.
After the router device 225d waits the coordinated router device startup time 941a, the router device 225d may send the unicast request message 946. The unicast request message 946 may be transmitted by the router device 225d for the router device 225d to attempt to resume its role in the previously-formed network. The unicast request message 946 may be a link-request message to re-form the communication link between the router device 225d and the router device 225a. The router device 225d may identify in memory that the router device 225d was attached to the router device 225a in the previously-formed network for communicating messages to the leader device 215. For example, the identifier of the router device 225a may represent the next hop back to the leader device 215. The router device 225d may transmit the unicast request message 946 to the router device 225a to which the router device 225d was attached in the previously-formed network. The unicast request message 946 may include the router identifier of other unique identifier of the router device 225a.
The router device 225a may receive the unicast request message 946 and respond with a unicast response message 947. As described herein, the unicast response message 947 may be a link accept message that may indicate that a communication link is formed for communications between the router device 225d and the router device 225a, as in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the router device 225d to decrypt messages from the router device 225a with which the communication link is established. After the unicast response message 947 is received at the router device 225d, the router device 225d may transmit router advertisement messages in the network 940.
The router device 225f may await a coordinated router device startup time 941b before transmitting a unicast request message 948. The coordinated startup time 941b for the router device 225f may be equal to the base delay time (e.g., which may be same for each router device 225a, 225d, 225f) plus an offset delay time. The offset delay time may be weighted higher for router devices that are a greater number of hops from the leader device 215. The offset delay time for the coordinated router device startup time 941b may be based on the hop count between the router device 225f and the leader device 215. For example, the offset delay time may be a multiple based on the hop count back to the leader device 215 (e.g., hop count=3). The offset delay time for router device 225f may be longer than the offset delay time for the router devices 225a, 225d, as the router device 225f is a greater number of hop counts from the leader device 215. The hop count may be stored locally at the router device 225f during formation of the previously-formed network.
After the router device 225f waits the coordinated router device startup time 941b, the router device 225f may send the unicast request message 948. The unicast request message 948 may be transmitted by the router device 225f for the router device 225f to attempt to resume its role in the previously-formed network. The unicast request message 948 may be a link-request message to re-form the communication link between the router device 225f and the router device 225d. The router device 225f may identify in memory that the router device 225f was attached to the router device 225d in the previously-formed network for communicating messages to the leader device 215. For example, the identifier of the router device 225d may represent the next hop back to the leader device 215. The router device 225f may transmit the unicast request message 948 to the router device 225d to which the router device 225f was attached in the previously-formed network. The unicast request message 948 may include the router identifier of other unique identifier of the router device 225d.
The router device 225d may receive the unicast request message 948 and respond with a unicast response message 949. As described herein, the unicast response message 949 may be a link accept message that may indicate that a communication link is formed for communications between the router device 225f and the router device 225d, as in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the router device 225f to decrypt messages from the router device 225d with which the communication link is established. After the unicast response message 949 is received at the router device 225f, the router device 225f may transmit router advertisement messages in the network 940.
The end device 260 may await a coordinated end device startup time 942 before transmitting a parent-request message 950. The coordinated startup time 942 for the end device 260 may be a predetermined time that is longer than the coordinated startup times of the router devices 225a, 225d, 225f (e.g., to allow the router devices 225a, 225d, 225f to establish communications with each other before the end device 260 attempts to attach to the router device 225f). In addition, the coordinated startup time 942 for the end device 260 may be calculated, for example, in a manner similar to or different than the manner in which the coordinated startup times 941, 941a, 941b for router devices 225a, 225d, 225f are calculated. For example, the coordinated startup time 942 for end device 260 may be calculated as described herein with a base delay time (e.g., which may be same for each end device) and/or an added delay time based on the hop count of the end device. The coordinated startup time 942 for end device 260 may have a longer base delay time (e.g., which may be same for each end device in the network) and/or offset delay time than the router devices 225a, 225d, 225f. For example, the base delay time for router devices 225a, 225d, 225f may be a time between zero seconds to one second, and the base delay time for end device 260 may be a time between ten and twenty-five seconds. The base delay time for end device 260 may be a multiple of the base delay time for the router devices 225a, 225d, 225f. The longer coordinated startup time 242 for the end device 260 may give priority to router devices 225a, 225d, 225f to allow the router devices 225a, 225d, 225f to perform a startup and/or attachment procedure and be ready to receive parent requests from end devices. The amount of time added for each hop count for the coordinated startup time 942 for end device 260 may be the same or different than the time added for each hop count for router devices 225a, 225d, 225f.
After the end device 260 waits the coordinated router device startup time 942, the end device 260 may send a parent-request message 950. The parent-request message 950 may be sent as a unicast request message for the end device 260 to attempt to resume its role in the previously-formed network. The parent-request message 950 may be a request to re-form the communication link between the end device 260 and the router device 225f. The end device 260 may identify in memory that the end device 260 was attached to the router device 225f in the previously-formed network for communicating messages to the leader device 215. For example, the identifier of the router device 225f may represent the next hop back to the leader device 215. The end device 260 may transmit the parent-request message 950 to the router device 225f to which the end device 260 was attached in the previously-formed network. The parent-request message 950 may include the router identifier of other unique identifier of the router device 225f.
The router device 225f may receive the parent-request message 950 and respond with a parent-response message 951. As described herein, the parent-response message 951 may indicate that the router device 225f has accepted the end device 260 as a child device and re-forms a communication link for communications between the end device 260 and the router device 225f, as in the previously-formed network. The parent-response message 951 may include information (e.g., a frame counter) that allows the end device 260 to decrypt messages from the router device 225f with which the communication link is established. After the parent-response message 951 is received at the end device 260, the end device 260 may communicate messages out to other devices in the network 940 through the router device 225f.
In addition to delaying startup during a predefined interval to allow the leader device and/or other router devices to perform their startup procedure and/or attach to other devices on the network, the router devices and end devices may await receipt of an advertisement message from the router device to which the router device or end device was attached on the previously-defined network. Again, the control device that was the leader device of the previously-formed network may begin a startup procedure prior to other control devices in the load control system. The control devices that were non-leader router devices in the previously-formed network may delay their startup procedures to allow the leader device to startup and begin transmitting advertisement messages to the other router devices. The other router devices may begin their startup procedure during the predefined interval after being powered on (e.g., to allow the leader device to startup). For example, the other router devices may begin their startup procedure at a random time during the interval after the leader initiates its startup procedure. During the startup procedure at the router devices, each router device may await an advertisement message from the leader device or another router device to which the router device was attached in the previously-formed network. The receipt of the advertisement message may indicate that the device to which the router device was attached in the previously-formed network is powered on and established its former role in the previously-formed network. After receipt of the advertisement message from the leader device or other router device to which the router device was attached in the previously-formed network, the router devices may attempt to attach to the device. The end devices may begin their startup procedures during a predefined interval after being powered on to allow the routers to perform their startup procedures and attached to the leader device or other router device. The predefined interval at the end devices may be longer than the predefined interval for which the router devices delay their startup procedure to allow the router devices time to perform attachment and re-form the previously-formed network. During the startup procedure at the end devices, each end device may await an advertisement message from the leader device or another router device to which the end device was attached in the previously-formed network. The receipt of the advertisement message may indicate that the device to which the end device was attached in the previously-formed network is powered on and established its former role in the previously-formed network. After receipt of the advertisement message from the leader device or other router device to which the end device was attached in the previously-formed network, the end devices may attempt to attach to the device.
At 954, the control device may determine whether the control device was the leader device of the previously-formed network. As described herein, the leader device may manage other control devices on the network. For example, the leader device may assign and maintain router identifiers for each of the router devices attached to the network. The leader device may be the first device role to attempt to re-form the previously-formed network. The control device may have a role identifier stored thereon in memory that may indicate the role of the control device in the previously-formed network. For example, the role identifier may indicate that the control device was a leader device of a previously-formed network. The role identifier may be stored with one or more network credentials for the network, such as the network address for the control device (e.g., a Thread network address). The control device may determine from this stored role identifier for the previously-formed network that it was a leader device of the previously-formed network at 954.
At 955, the control device (e.g., the leader device of the previously-formed network) may transmit a link-request message. For example, the link-request message may be sent as a multicast message. The link-request messages may be used to determine whether the network has already formed with another leader device. In one example, the previously-formed network may have been powered down and additional devices may have been added to the system, the location of devices may have been moved, and/or the space may have been reconfigured to cause interferers between devices to be added or removed. Due to potential changes to the network and/or the space in which the network is located, the leader device may transmit the link-request message to determine if there is another leader device on the network. For example, the link-request message may be transmitted to identify whether there is an already formed network being implemented. As such, the leader device may transmit the link-request message to determine whether other devices have powered on and already formed a network having another leader device. If the leader device receives a response to the link-request message, the leader device may be incapable of being the leader device on the network and may revert back to being an end device or another role on the network. The other control devices of the previously-formed network may fail to respond to the link request, as they may await a leader advertisement from the leader device and/or a coordinated startup time after powering up and turning on.
At 956, the control device may determine whether other network partition(s) exist, for example, based on receiving a response to the link-request message. If another leader device receives the link-request message and transmits a response to the link-request message, the control device may determine that another network partition exists, drop the control device's previous role (e.g., the role of leader device in the previously-formed network), and start another attachment procedure at 958 (e.g., as described herein in conjunction with
At 956, the control device may determine whether other network partition(s) exist, for example, based on receiving a response to the link request. If another leader device receives the link-request message and transmits a response to the link-request message, the control device may determine that other network partitions exist and may drop the previous role as the leader device of the previously-formed network. The control device may drop the previous role as the leader device of the previously-formed network to start another attachment procedure at 958 (e.g., as described herein in conjunction with
If, however, a response to the link-request message is not received, the control device may determine that another network partition does not exist, and may transmit a leader advertisement message at 960. The leader advertisement message may be used to re-form the previously-formed network, for example, by triggering the router devices of the previously-formed network to attach to the leader device (e.g., transmit a link-request message to the leader device) and re-form the mesh of the previously-formed network. The router devices that were attached to the leader device in the previously-formed network may listen for the leader advertisement before initiating their attachment procedure.
At 962, the control device may determine whether the control device was a router device of the previously-formed network. The determination at 962 may be based on the role identifier stored in memory at the control device that indicates that the role of the router device in the previously-formed network. If the control device was defined as a router device in the previously-formed network, the control device may determine to wait for a coordinated startup time for a router device (e.g., a coordinated router startup time) at 963. As described herein, the coordinated startup time for a router device may be equal to a base delay time (e.g., which may be same for each router device) plus an offset delay time. The offset delay time may be based on the hop count between a respective router device and the leader device. For example, the base delay time may be the same for each of the routers that were previously attached to the previously-formed network and may allow the leader device of the previously-formed network to re-form to the network and be available for router devices to reattach. The offset delay time may be based on the hop count back to the leader device and such that the offset delay time for router devices that are farther away from the leader device is longer than for router devices that are closer to the leader device. Referring to
The offset delay time for each device may be a predefined period of time that is multiplied by the hop count for the control device. The hop count may be determined from the previously-formed network and may be stored at the control device. After awaiting the base delay time, the control device may await the offset delay time, which may be a hop-count-multiple of a predefined period of time, prior to starting the attachment procedure. The offset delay time being calculated based on the hop count of a control device from the leader device may allow for the router devices having a lower hop count from the leader device, or that are closer to the leader device, to perform the attachment procedure prior to router devices having a higher hop count from the leader device, or that are further from the leader device. In an example, the predefined period of time that is multiplied by the hop count to calculate the offset delay time may be in a range of ten to thirty seconds. However, this time may vary to allow for other delays to enable the router devices time to power on, perform the attachment procedure, and/or start advertising.
In another example, different amounts of time may be added for each hop count when calculating the offset delay time of a control device. The amount of time added for each hop count may be more or less as the hop count increases. For example, the amount of time added to the offset delay time may increase by a predefined delta as the hop count increases, to allow more time for processing messages in a larger network. The amount of time added to the offset delay time may vary based on the number of control devices having the same hop count. This may allow for a shorter delay when less control devices are performing the attachment procedure, and a greater delay when more devices are performing the attachment procedure. The control devices may have stored thereon from the previously-formed network the control devices having the same hop count, or this may be communicated to the control devices from a central computing device or commissioning device.
Referring back to
After waiting for the coordinated router device startup time at 963, the control device may, at 964, wait for a first period of time (e.g., approximately 30 seconds) to receive an advertisement message from the selected router device whose unique identifier is stored in memory. When the control device receives an advertisement message from the selected router device during the first period of time, the control device may attempt to attach to the selected router device at 970. If the control device does not receive an advertisement message from the selected router device before the end of the first period of time, the control device may wait for a second period of time (e.g., approximately 30 seconds) to receive an advertisement message from other router devices (e.g., other than the selected router device and/or including the selected router device). For example, the control device may wait to receive an advertisement message from any of the leader device and/or the router devices in the network during the second period of time. When the control device receives an advertisement message from a router device during the second period of time, the control device may attempt to attach to the router device from which the advertisement message received at 970. For example, the control device may attempt to attach to any of the leader device and/or the router devices in the network when the control device receives an advertisement message during the second period of time. In addition, the control attempt to attach to a router device when the control device receives an advertisement message from that router device during the second period of time and a received signal strength magnitude (e.g., RSSI) of the received advertisement message exceeds a threshold. If the control device does not receive an advertisement message from a router device before the end of the second period of time, the control device may drop its previous role and start another attachment procedure at 968.
If the control device receives an advertisement message from the selected router device whose unique identifier is stored in memory at 964, the control device may attempt to attach to that router device by transmitting a unicast request to the selected router device at 970. At 970, the control device may transmit a link request message (e.g., as a unicast message) to the selected router device whose unique identifier is stored in memory, which may be used by the control device to resume its role in the previously-formed network. The control device may choose the prior leader or router device depending on whether the control device was attached to the leader device of the previously-formed network or another router device. For example, if the control device was directly attached to the leader device in the previously-formed network (e.g., the router devices 220a, 220c of
If a response to the link-request message fails to be received at 972 (e.g., after a period of time), the control device may drop its role in the previously-formed network and start another attachment procedure at 968. The response to the link-request message may indicate that the leader or other router device of the previously-formed network is powered on and accepting link requests from other devices in the network. If a response to the link-request message is received, the control device may transmit a router advertisement message at 974. Transmitting a router advertisement message may inform other router devices on the network that the control device is operating as a router device. Transmitting the advertisement message may trigger the other router devices and/or end devices that were attached to the control device in the previously-formed network to reattach to the control device and re-form the previously-formed network. For example, referring to
Referring again to
The coordinated startup time may end after the router devices of the previously-formed network have reattached to other devices in the network. After waiting for the coordinated startup time to end at 976, the control device may determine whether an advertisement message is received from the control device's parent device on the previously-formed network at 975.
The control device may receive advertisement messages from its previous parent device. For example, the control device may wait to receive an advertisement message at 975 from a router device through which network communications were transmitted in the previously-formed network (e.g., a previous parent device). The unique identifier of the router device to which the control device was attached in the previously-formed network may be stored in memory. The control device may await an advertisement message from the previous parent device whose unique identifier is stored in memory for enabling communication in the previously-formed network. If the control device has not received an advertisement message from the previous parent device whose unique identifier is stored in memory for enabling communication in the previously-formed network, the control device may determine if a timeout period of time has elapsed at 977. If the timeout period of time has elapsed and the advertisement message has not been received, the control device may drop its previous role and start another attachment procedure at 968.
If the control device receives an advertisement message from the previous parent device whose unique identifier is stored in memory, the control device may transmit a unicast an attachment message configured to establish a parent-child link (e.g., a parent-request message) to the previous parent device at 978. At 978, the control device may transmit the parent-request message (e.g., as a unicast message) to the parent router device whose unique identifier is stored in memory, which may be used by the control device to resume its role in the previously-formed network. The control device may choose the previous parent device depending on whether the control device was a child device attached to the leader device of the previously-formed network or another router device. For example, if the control device was directly attached as a child to the leader device in the previously-formed network (e.g., the end device 234a of
Referring again to
As shown in
When the devices in the network 940a are powered off and powered on after network formation, each of the devices may perform a startup and/or attachment procedure in an attempt to re-form the previously-formed network. The leader device 215 may identify itself as a leader device and transmit a link-request message 984. The link-request message 984 may be sent as a multicast message. The link-request message 984 may be used to determine whether the network has already formed with another leader device. When the leader device 215 fails to receive a response to the link-request message 984, the leader device 215 may maintain its role as the leader device, begin transmitting advertisement messages, and allow for attachment of non-leader router devices that were previously attached to the leader device 215 on the previously-formed network.
The router device 225a may await a coordinated router device startup time 982 before listening for an advertisement message transmitted from the leader device 215 to which the router device 225a was attached in the previously-formed network. The coordinated router device startup time for the router device 225a may be the same or different than a coordinated router device startup time 982a, 982b of other router devices 225d, 225f in the network 940a. The coordinated router device startup time 982, 982a, 982b may be the same predefined time, as each respective router device 225a, 225d, 225f may await receipt of an advertisement message before performing communications on the network 240a. The delay caused by awaiting an advertisement message of another router device may allow the router device 225a that is closer to the leader device 215 (e.g., having a lower hop count from the leader device 215) to have priority over router devices 225d, 225f that are further from the leader device 215 (e.g., having a greater hop count from the leader device 215).
The coordinated startup time 982 for the router device 225a may be different than the coordinated startup time 982a, 982b of the other router devices 225d, 225f. For example, the coordinated startup time 982 may be equal to a base delay time (e.g., which may be same for each router device 225a, 225d, 225f) plus an offset delay time. The offset delay time for the coordinated router device startup time 982 may be based on the hop count between the router device 225a and the leader device 215. The offset delay time may be weighted higher for router devices that are a greater number of hops from the leader device 215. For example, the offset delay time may be a multiple based on the hop count back to the leader device 215 (e.g., hop count=1). The hop count may be stored locally at the router device 225a during formation of the previously-formed network.
After the router device 225a waits the coordinated router device startup time 982, the router device 225a may listen for and receive an advertisement message 985 from the leader device 215. The advertisement message 985 may be transmitted as a multicast message. The router device 225a may have the router identifier or other unique identifier of the leader device 215 stored locally to identify the leader device 215 as the device to which the router device 225a was attached in the previously-formed network. The router device 225a may identify the advertisement message 985 from the leader device 215 and determine that the leader device 215 is powered on and is capable of receiving link requests. In response to the advertisement message 985, the router device 225a may transmit a unicast request message 986 to the leader device 215. The unicast request message 986 may be transmitted by the router device 225a for the router device 225a to attempt to resume its role in the previously-formed network. The unicast request message 986 may be a link-request message to re-form the communication link between the router device 225a and the leader device 215. The unicast request message 986 may include the router identifier of other unique identifier of the leader device 215.
The leader device 215 may receive the unicast request message 986 and respond with a unicast response message 987. As described herein, the unicast response message 987 may be a link accept message that may indicate that a communication link is formed for communications between the router device 225a and the leader device 215, as in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the router device 225a to decrypt messages from the leader device 215 with which the communication link is established. After the unicast response message 987 is received at the router device 225a, the router device 225a may transmit router advertisement messages in the network 940a.
The router device 225d may await a coordinated router device startup time 982a before listening for an advertisement message transmitted from the router device 225a to which the router device 225d was attached in the previously-formed network. As described herein, the coordinated router device startup time for the router device 225d may be the same or different than a coordinated router device startup time 982, 982b of other router devices 225a, 225f in the network 940a. The coordinated startup time 982a for the router device 225d may be equal to the base delay time (e.g., which may be same for each router device 225a, 225d, 225f) plus an offset delay time. The offset delay time for the coordinated router device startup time 982a may be based on the hop count between the router device 225d and the leader device 215. The offset delay time may be weighted higher for router devices that are a greater number of hops from the leader device 215. For example, the offset delay time may be a multiple based on the hop count back to the leader device 215 (e.g., hop count=2). The offset delay time for router device 225d may be longer than the offset delay time for the router device 225a, as the router device 225d is a greater number of hop counts from the leader device 215. The hop count may be stored locally at the router device 225d during formation of the previously-formed network.
After the router device 225d waits the coordinated router device startup time 982a, the router device 225d may listen for and receive an advertisement message 988 from the router device 225a. The advertisement message 988 may be transmitted as a multicast message. The router device 225d may have the router identifier or other unique identifier of the router device 225a stored locally to identify the router device 225a as the device to which the router device 225d was attached in the previously-formed network. The router device 225d may identify the advertisement message 988 from the router device 225a and determine that the router device 225a is powered on and is capable of receiving link requests.
In response to the advertisement message 988, the router device 225d may transmit a unicast request message 989 to the router device 225a. The unicast request message 989 may be transmitted by the router device 225d for the router device 225d to attempt to resume its role in the previously-formed network. The unicast request message 989 may be a link-request message to re-form the communication link between the router device 225d and the router device 225a. The unicast request message 989 may include the router identifier of other unique identifier of the router device 225a.
The router device 225a may receive the unicast request message 989 and respond with a unicast response message 990. As described herein, the unicast response message 990 may be a link accept message that may indicate that a communication link is formed for communications between the router device 225d and the router device 225a, as in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the router device 225d to decrypt messages from the router device 225a with which the communication link is established. After the unicast response message 990 is received at the router device 225d, the router device 225d may transmit router advertisement messages in the network 940a.
The router device 225f may await a coordinated router device startup time 982b before listening for an advertisement message transmitted from the router device 225d to which the router device 225f was attached in the previously-formed network. As described herein, the coordinated router device startup time for the router device 225f may be the same or different than a coordinated router device startup time 982, 982a of other router devices 225a, 225d in the network 940a. The coordinated startup time 982b for the router device 225f may be equal to the base delay time (e.g., which may be same for each router device 225a, 225d, 225f) plus an offset delay time. The offset delay time may be weighted higher for router devices that are a greater number of hops from the leader device 215. The offset delay time for the coordinated router device startup time 982b may be based on the hop count between the router device 225f and the leader device 215. For example, the offset delay time may be a multiple based on the hop count back to the leader device 215 (e.g., hop count=3). The offset delay time for router device 225f may be longer than the offset delay time for the router devices 225a, 225d, as the router device 225f is a greater number of hop counts from the leader device 215. The hop count may be stored locally at the router device 225f during formation of the previously-formed network.
After the router device 225f waits the coordinated router device startup time 982b, the router device 225f may listen for and receive advertisement message 991 transmitted from the router device 225d. The advertisement message 991 may be transmitted as a multicast message. The router device 225f may have the router identifier or other unique identifier of the router device 225d stored locally to identify the router device 225d as the device to which the router device 225f was attached in the previously-formed network. The router device 225f may identify the advertisement message 991 from the router device 225d and determine that the router device 225d is powered on and is capable of receiving link requests.
In response to the advertisement message 991, the router device 225f may transmit a unicast request message 992 to the router device 225d. The unicast request message 992 may be transmitted by the router device 225f for the router device 225f to attempt to resume its role in the previously-formed network. The unicast request message 992 may be a link-request message to re-form the communication link between the router device 225f and the router device 225d. The unicast request message 992 may include the router identifier of other unique identifier of the router device 225d.
The router device 225d may receive the unicast request message 992 and respond with a unicast response message 993. As described herein, the unicast response message 993 may be a link accept message that may indicate that a communication link is formed for communications between the router device 225f and the router device 225d, as in the previously-formed network. The link accept message may include information (e.g., a frame counter) that allows the router device 225f to decrypt messages from the router device 225d with which the communication link is established. After the unicast response message 993 is received at the router device 225f, the router device 225f may transmit router advertisement messages in the network 940a.
The end device 260 may await a coordinated end device startup time 983 before listening for an advertisement message transmitted from the router device 225f, which is stored locally as the parent device of the end device 260 in the previously-formed network. The coordinated startup time 983 for the end device 260 may be a predetermined time that is longer than the coordinated startup times of the router devices 225a, 225d, 225f (e.g., to allow the router devices 225a, 225d, 225f to establish communications with each other before the end device 260 attempts to attach to the router device 225f). In addition, the coordinated startup time 983 for the end device 260 may be calculated, for example, in a manner similar to or different than the manner in which the coordinated startup times 982, 982a, 982b for router devices 225a, 225d, 225f are calculated. For example, the coordinated startup time 983 for end device 260 may be calculated as described herein with a base delay time (e.g., which may be same for each end device) and/or an added delay time based on the hop count of the end device. As described herein, the hop count of control device, such as the end device 260, may be stored at the control device or otherwise communicated to the control device. The coordinated startup time 983 for end device 260 may have a longer base delay time (e.g., which may be same for each end device in the network) and/or offset delay time than the router devices 225a, 225d, 225f For example, the base delay time for router devices 225a, 225d, 225f may be a time between zero seconds to one second, and the base delay time for end device 260 may be a time between ten and twenty-five seconds. The base delay time for end device 260 may be a multiple of the base delay time for the router devices 225a, 225d, 225f. The longer coordinated startup time 283 for the end device 260 may give priority to router devices 225a, 225d, 225f to allow the router devices 225a, 225d, 225f to perform a startup and/or attachment procedure and be ready to receive parent requests from end devices. The amount of time added for each hop count for the coordinated startup time 983 for end device 260 may be the same or different than the time added for each hop count for router devices 225a, 225d, 225f.
After the end device 260 waits the coordinated router device startup time 983, the end device 260 may listen for and receive an advertisement message 994 from the router device 225f The advertisement message 994 may be transmitted as a multicast message. The end device 260 may have the router identifier or other unique identifier of the router device 225f stored locally to identify the router device 225f as the parent device to which the end device 260 was attached in the previously-formed network. The end device 260 may identify the advertisement message 994 from the router device 225f and determine that the router device 225f is powered on and is capable of receiving parent requests.
In response to the advertisement message 994, the end device 260 may transmit a parent-request message 995 to the router device 225f The parent-request message 995 may be transmitted as a unicast message. The parent-request message 995 may be transmitted by the end device 260 for the end device 260 to attempt to resume its role as a child device of the router device 225f in the previously-formed network. The parent-request message 995 may be a request to re-form the communication link between the end device 260 and the router device 225f. The end device 260 may identify in memory that the end device 260 was attached to the router device 225f in the previously-formed network for communicating messages to the leader device 215. For example, the identifier of the router device 225f may represent the next hop back to the leader device 215. The end device 260 may transmit the parent-request message 995 to the router device 225f to which the end device 260 was attached in the previously-formed network. The parent-request message 995 may include the router identifier of other unique identifier of the router device 225f.
The router device 225f may receive the parent-request message 995 and respond with a parent-response message 996. As described herein, the parent-response message 996 may indicate that the router device 225f has accepted the end device 260 as a child device and re-forms a communication link for communications between the end device 260 and the router device 225f, as in the previously-formed network. The parent-response message 996 may include information (e.g., a frame counter) that allows the end device 260 to decrypt messages from the router device 225f with which the communication link is established. After the parent-response message 996 is received at the end device 260, the end device 260 may communicate messages out to other devices in the network 940a through the router device 225f.
As described herein, control devices that are joined to different networks or network partitions may be unable to communicate with each other. Therefore, in order for all of the control devices in a load control system to communicate with each, the control devices in the load control system may be joined to a single network or network partition. However, in certain scenarios multiple networks or network partitions may be formed in a load control system. For example, when a control device is unable to attach to a router device on an already formed network or network partition, the control device may form a new network or network partition.
If the control device determines that the control device should transition to the role of a router device, the device may transmit a message to become a router device at 1004. For example, the control device may transmit an address solicit request message to the leader device of the network or network partition. At 1006, the control device may determine whether a response to the message to become a router device is received or not. For example, a response to a message to transition to a router device may include an assigned router identifier. If a response is not received at 1006, the control device may determine if a timeout period of time has elapsed at 1008. If the timeout period of time has elapsed and the response has not been received, the procedure 1000 may exit. The timeout period of time may be predefined and indicate the period of time during which a response to a message to become a router device is to be received.
If the response to the message to become a router device is received at 1006, the control device may transmit a link-request message at 1010. As described herein, the router devices within a network may respond to a link-request message with a link accept message, and the control device may now be assigned to the role of router device. After upgrading of router device, other device may attach to and establish parent-child links with the control device, which may decrease the likelihood that a control device forms a new network partition because it failed to attach to a device on an already formed network or network partition Accordingly, at 1012, the control device performing the procedure 1000 may communicate with the router devices that respond to the link request transmitted at 1010, and the procedure 1000 may exit.
Referring again to
As described herein, the router devices in a network partition may be assigned a router identifier (e.g., a router ID) by the leader device of a respective network partition. When a control device attempts to attach to another control device on the network partition and then attempts to become a router device, the device may be randomly assigned a router identifier (e.g., from a range of pre-defined router identifiers). Also, or alternatively, when a control device attempts to attach to another control device on the network partition and then attempts to become a router device, the device may request to be assigned a certain router identifier. For example, a router device may request to be assigned a certain router identifier when the router device was assigned the requested router identifier in a network partition to which the device was previously attached. In addition, if the router device subsequently attach to another network partition and uses the router identifier assigned in the previous network partition, the children of the router device from the previous network partition may automatically attach (e.g., with using an attachment procedure) to the router device in other network partition (e.g., without attempting to attach to the another router device on network partition as described herein in conjunction with
The child devices of the parent device that detaches from a network partition may fail to communicate with the other devices on the network partition (e.g. as the parent device facilitates communication for the child device) and, the child devices may attempt to attach to and establish a parent-child link with another router device in the partition. In certain instances, the parent device detaches from the network partition to attach to another network partition may be the leader device of the network partition. As described herein, when a leader device detaches from a network partition, the network partition may cease to exist (e.g., as every network partition must include at least one leader device). As a result, when the leader device detaches from the network partition, the child devices of the leader device and any router devices on the network partition may attempt to attach to another network partition. As described herein, as the number of devices attempting to attach to the other network partitions increases, attachment of the devices to another partition network may be delayed (e.g., due to the back-off time periods as described herein). However, if the devices initiate the attachment procedure earlier, the formation of a single network partition in the network may be expedited.
As illustrated in
If, however, the control device determines that a router ID conflict does exist (e.g., while processing received messages that are not received from child devices of the control device at 1028 of a previous invocation of procedure 1020), the control device may ignore the message received from the child device at 1026. As described herein, when a router ID conflict exists, the control device may be unable to attach to the higher-priority network partition and continue to use the same router identifier. In addition, the child devices of the parent device may not be able to automatically attach to the higher-priority network partition. Instead, the parent device may detach from its present network partition and attempt to attach to the higher-priority network partition (e.g., using the procedures described in conjunction with
When a higher-priority network partition exists, the growth of lower priority network partitions (e.g., the growth in the number of devices attached to the lower-priority network partitions) may increase the amount of time it takes to form a single network partition. For example, the devices that are attached to a lower-priority network partition may eventually attach to the highest-priority network partition. In addition, if the leader devices of each of the respective lower priority network partitions detach from their respective network partitions, the lower-priority network partitions may cease to exist, which, as described herein, may cause the devices attached to the lower-priority network partition to lose network connectivity and attempt to attach a higher-priority network partition. Accordingly, the devices attached the lower-priority network partition may attempt to attach to the higher-priority network partition at the same or substantially the same time, which may cause attachment of the devices to the higher-priority network partition to be delayed (e.g., due to the back-off time period as described herein).
At 1054, the leader device (e.g., the leader device 211) may determine whether a higher-priority network partition exits. As described herein, devices may attempt to attach to the higher-priority network partitions, for example, to form a single network partition in the network. If a higher-priority network partition does exist and has been identified by the leader device, the leader device may refuse to upgrade (e.g., reject the router upgrade request message) the device to the role of the router device at 1062. For example, if the leader device refuses to allow the device to upgrade to the role of the router device, additional devices may fail to attach to the lower-priority network partition to which the leader device is currently attached (e.g., as additional child devices may not attach to the network partition by attaching to the device that requested to upgrade to the role of a router device). If additional devices are unable to attach to the lower-priority network partition, the time it takes to form a single network partition in the network may decrease.
If, however, a higher-priority network partition does not exist, or has yet to be identified by the leader device, the leader device may determine whether a present router count NROUTER is less than a maximum router count NROUTER-MAX. The present router count NROUTER may indicate the number of router devices currently attached to the network partition. The maximum router count NROUTER-MAX may indicate the maximum number of router devices that may be attached to the network partition, which, as described herein, may be pre-configured and/or pre-defined. If the present router count NROUTER is less than the maximum router count NROUTER-MAX (e.g., an additional router device may be attached to the network partition), the leader device may transmit a command to upgrade the device to the role of a router device at 1058 (e.g., by assigning a router identifier to the device). In addition, the parent device may increment the present router count NROUTER at 1060, for example, to indicate that a router device has attached to the network partition. If, however, the variable NROUTER is greater than or equal to the maximum router count NROUTER-MAX (e.g., the maximum number of router devices are attached to the network partition), the parent device may refuse to upgrade the device to the role of a router device at 1062 (e.g. by not assigning a router identifier to the device).
Many implementations of a network, such as a Thread network for example, may continue to allow a child device that has attached to a parent device for establishing a communication link over the network and maintain the communication link until the communication link fails. As described herein, a network may include a single router device (e.g., the leader device) during the initial stage of network formation and the communication link between the router device and the initially added child devices may become tenuous as the network grows. For example, the devices that attach to the network may be child devices of the leader device. As the network grows and advances through formation, the leader device may upgrade the role of one or more of its child devices (e.g., router eligible end devices) to the role of a router device, for example, to account for the attachment of additional devices. Accordingly, as time elapses and the network grows (e.g., as the number of devices attached to the network increases), the number of router devices on the network may increase, which increases the communication range of the network.
After the number of routers attached to the network increases, devices that attempt to attach to the network may be provided with an increased number of routers to attach to, which may allow for the devices to attach to routers that share a stronger communications link with a respective device (e.g., messages between the router and a respective device has a higher RSSI). For example, two respective devices may share a strong communications link if the two devices are proximately positioned (e.g., located in proximity to each other such that communications between each other are likely to be successful). Similarly, devices that attempt to attach to an auxiliary parent may be provided with an increased number of routers to attach to, which may allow for the devices to attach with routers that share a stronger communications link with the device.
If a child device attaches to a parent device that has a stronger communications link, communications over the network for that device may improve (e.g., the likelihood that messages are successfully sent and/or received may increase). For example, communication over the network for the device may improve because the communication link between a respective child device and a parent device may be stronger (e.g., messages may be sent and/or received with a stronger or higher received signal strength indicator). However, as described herein, during the initial stages of network formation (e.g., when the network includes less than three routers), the child device may fail to attach to a parent device that that has a stronger communications link. For example, the child device may fail to attach to a parent device that that has a stronger communications link because said parent device may not exist (e.g., the network may have failed to upgrade device that shares a strong communications link with the child device). In addition, as long as a threshold number of communications are being successfully sent and/or received (e.g., communications are successfully sent and/or received 25% of the time), a child device may remain attached to a parent device. As a result, the child device may remain attached to a parent device that fails to have a stronger communications link than another parent device, which may decrease the success of the communications performed on the network for the device (e.g. the likelihood that messages fail to be sent and/or received may increase).
However, if a child device attaches to a parent device that has a weaker communications link than other available parent devices, communications over the network for the child device may degrade (e.g., the likelihood that messages fail to be sent and/or received may increase). The child device may, however, stay attached to the parent device that has a weaker communication link. For example, a child device may remain attached to the parent device until the number of consecutively failed message transmission and/or reception is greater than or equal to a threshold number of transmission failures (e.g., 5). In addition, when message transmissions fail, communication for the child device may be delayed, which may cause the load control system to fail to promptly respond to commands for enabling load control within the system.
As described herein, during the initial stages of network formation a child device may be unable to attach to a parent device that is proximately positioned or located to the control device (e.g., a router device that shares a stronger communications link with the control device). For example, the child device may be unable to attach to a parent device that is proximately positioned or located to the device because the network may have yet to upgrade a router device that is proximately positioned or located to the child device. Instead the control device may attach to a router device that is not proximately positioned or located, which may increase the likelihood of failed message transmissions and/or failed message receptions. As the network upgrades additional router devices, the control device may attempt to attach to another router device, which may be proximately located or positioned increasing the likelihood of successful message transmissions and/or receptions.
A control device may attempt to attach to another parent device, for example, in an attempt to attach to a router device that is proximately positioned or located to the device. In addition, as routers may be sporadically upgraded by the network during the initial stages of network formation, the routers that are proximately positioned or located to the device may change over time. As a result, the rate at which a control device determines whether to attach to another parent device may be variable and/or such that the network is unlikely to subsequently upgrade other routers. For example, the rate at which the control device determines whether to attach to another parent device may be based on changes to the auxiliary parent table. A parent-update timer may be used to determine whether to attach to an updated parent device. The parent-update timer may be reset when the auxiliary parent table is updated (e.g., as shown at 940 of the procedure 920 of
A child device may determine whether to attach to an updated parent device upon expiration of the parent-update timer. For example, the child device may determine to attach to an updated parent device when a communication link (e.g., a parent/child link) between the child device and the updated parent device may be stronger than a communications link between the child device and the present parent device of the child device (e.g., the updated parent device is more proximately located to the child device that the present parent device of the child device and/or an interferer has been removed). If the child device attaches to an updated parent device that shares a stronger communications link with the child device, the quality of communication for the child device over the network may improve.
As illustrated in
At 1102, the control device may determine a communication metric, e.g., received signal strength indicator magnitude of the present parent device of the control device. For example, the control device may determine a received signal strength indicator RSSIPAR of the present parent device of the control device at 1102. As described herein, the control device may be attached to a parent device, which may facilitate communications for the control device over the network. At 1104, the control device may determine an auxiliary parent device in the auxiliary parent table with a highest received signal strength indicator RSSIAUX-HI. The control device may be attached to one or more auxiliary parent devices. A router device on the network (e.g., a leader device, such as the leader device 210, and/or a router device, such as one of the router devices 220a-220d) may operate as an auxiliary parent device.
The control device may determine whether a respective communication metric of an auxiliary parent device indicates a stronger potential communication link than the communication metric of a parent device For example, as illustrated in
The hysteresis threshold THPAR-HYS may be predefined (e.g., approximately 10 dB). The hysteresis threshold THPAR-HYS may be variable. For example, the hysteresis threshold THPAR-HYS may be based on the highest received signal strength indicator RSSIAUX-HI in the auxiliary parent table. The hysteresis threshold THPAR-HYS may be set a predefined amount or percentage below the highest received signal strength indicator RSSIAUX-HI of the auxiliary parent devices in the auxiliary parent table. If the difference between the highest received signal strength indicator RSSIAUX-HI of the auxiliary parent devices and the received signal strength indicator RSSIPAR of the present parent device is less than the hysteresis threshold THPAR-HYS at 1100, the procedure 1100 may exit.
If the difference between the highest received signal strength indicator RSSIAUX-HI of the auxiliary parent devices and the received signal strength indicator RSSIPAR of the present parent device is greater than or equal to the hysteresis threshold THPAR-HYS at 1106, the control device may, at 1108, initiate an attachment procedure to attempt to attach to an updated parent device (e.g. after detaching from the present parent device). For example, the updated parent device may be the auxiliary parent device with the highest received signal strength indicator RSSIAUX-HI, which may improve communications for the control device on the network. The control device may attach to the auxiliary parent device with the highest received signal strength indicator RSSIAUX-HI by transmitting one or more attachment messages configured to establish an parent-child link, such as, a parent-request message (e.g., as a unicast parent-request message) to that auxiliary parent device. The auxiliary parent device with the highest received signal strength indicator RSSIAUX-HI may transmit a response to the parent-request message, which may include an indication of the received signal strength indicator of the parent-request message. For example, received signal strength indicator of the parent-request message may be used to describe the strength of communication from the control device to the auxiliary parent device with the highest received signal strength indicator RSSIAUX-HI.
If the control device is unable to attach to the auxiliary parent device with the highest received signal strength indicator RSSIAUX-HI and/or the received signal strength indicator from the auxiliary parent with the highest received signal strength indicator RSSIAUX-HI indicates it is unable to receive communications from the control device at a higher received signal strength identifier than the present parent device, or a threshold level above the present parent device, then the control device may attempt to attach to another auxiliary parent device in the auxiliary parent table. For example, the control device may move to the auxiliary parent having the next order of priority in the auxiliary parent table to attempt attachment.
At 1110, the control device may reset the parent-update timer, before the procedure 1100 exits, such that the procedure 1100 may be executed once again when the parent-timer expires to see if the control device should attempt to attached to an updated parent device.
As illustrated in
As described herein, a transmission may fail because the communication link between the control device and the parent device may be weak. For example, the communication link between the control device and the parent device may be weak because the control device may have attached to the parent device during the initial stages of network formation (e.g., when the number of available router devices to which to attach is lower) and/or the control device and the parent device are not proximately positioned to each other. At 1214, the control device may determine whether the number NFAILED of failed transmissions to the parent device is greater than or equal to a maximum number NBAD-LINK of transmissions that may fail before the control device attempts to attach to an updated parent device. The maximum number NBAD-LINK? may indicate a maximum number of failed transmissions or retransmissions that may indicate that the communication link between the control device and the parent device is weak. As a result, if the number NFAILED of failed transmissions to the parent device is greater than or equal to the maximum number NBAD-LINK, the control device may initiate an attachment procedure to attempt to attach to an updated parent device at 1216 (e.g. because inefficient communication has been identified). For example, the control device may initiate an attachment procedure to establish a parent-child link with an auxiliary parent device in the auxiliary parent table having the next order of priority in the auxiliary parent table (e.g., set the auxiliary parent device as a parent device).
As described herein, a control device may attempt to attach to an updated parent device to increase the quality of communications for the control device over the network. For example, a communication link between the control device and the updated parent device may be stronger than a communication link between the control device and the present parent device of the control device.
At 1302, the control device may determine an auxiliary parent device in the auxiliary parent table that has a highest received signal strength indicator RSSIAUX>CH (e.g., a highest received signal strength indicator of messages transmitted by the auxiliary parent device to the child device). For example, at 1302, the control device may simply recall the auxiliary parent device with a highest received signal strength indicator RSSIAUX-HI as determined during an execution of the procedure 1100 (e.g., at 1104 of the procedure 1100). At 1304, the control device may determine if the difference between the highest received signal strength indicator RSSIAUX>CH of the auxiliary parent devices in the auxiliary parent table and the received signal strength indicator RSSIPAR of the present parent device is greater than or equal to a hysteresis threshold THPAR-HYS.
If the difference between the highest received signal strength indicator RSSIAUX>CH of the auxiliary parent devices in the auxiliary parent table and the received signal strength indicator RSSIPAR of the present parent device is greater than or equal to the hysteresis threshold THPAR-HYS at 1304, the control device may, at 1306, initiate an attachment procedure with the auxiliary parent device in the auxiliary parent table that has the highest received signal strength indicator RSSIAUX>CH. For example, during the attachment procedure the control device may transmit one or more attachment messages (e.g., parent-request messages) at 1306 to attach to the auxiliary parent device in the auxiliary parent table having the highest received signal strength indicator RSSIAUX>CH (e.g., become a child device of the auxiliary parent device having the highest received signal strength indicator RSSIAUX>CH). The parent-request message may be a message configured to ask an auxiliary parent device if the device is a possible option for attachment. The parent-request message may be a part of a two-message exchange in which the auxiliary parent device sends a response message indicating whether the auxiliary parent device is available to operate as a parent device for the control device. The auxiliary parent device may determine whether the auxiliary parent device has any openings available for additional child device or whether the auxiliary parent device is already a parent device to a threshold number of child devices as defined on the network.
The control device may attempt to attach as a child device of the auxiliary parent device having the highest received signal strength indicator RSSIAUX>CH (e.g., set the auxiliary parent having the highest received signal strength indicator RSSIAUX>CH as the parent device) because a communication link between the control device and that auxiliary parent may be strong and/or the control device and that auxiliary parent device may be positioned close to each other. At 1308, the control device may determine whether a response confirming the parent-request message is received. For example, the auxiliary parent device having the highest received signal strength indicator RSSIAUX-HI may, in response to receiving the parent-request message, transmit a response to confirm that the auxiliary parent device is capable of becoming a parent device of the control device (e.g., accepting the parent-request message). In addition, the response may include an indication of the received signal strength indicator RSSICH>AUX for messages (e.g., such as the parent-request message) received by the auxiliary parent device from the control device.
At 1310, the control device may determine whether the auxiliary parent device is able to receive messages from the control device at a higher received signal strength indicator than the present parent device or not. For example, the control device may determine, at 1310, if the received signal strength indicator RSSICH>AUX for messages (e.g., such as the parent-request message) received by the auxiliary parent device from the control device is greater than a received signal strength indicator RSSICH>PAR for messages received by the present parent device from the control device. As a result, the control device may attempt to attach to an updated parent device if both the communications path for messages transmitted to the updated parent device from the control device and the communications path for messages transmitted to the control device from the updated parent device are strong. If the received signal strength indicator RSSICH>AUX for messages (e.g., the parent-request message) received by the auxiliary parent device from the control device is greater than the received signal strength indicator RSSICH>PAR for messages received by the present parent device from the control device, the control device may store the received signal strength indicator RSSICH>AUX as the received signal strength indicator RSSICH>PAR at 1312 (e.g., for future use in determining when to attach to an updated parent device). At 1314, the control device may set the auxiliary parent device as a parent device, for example, by initiating an attachment procedure with the auxiliary parent device having the highest received signal strength indicator RSSIAUX-HI, for example, to establish a parent-child link with the auxiliary parent device having the highest received signal strength indicator RSSIAUX-HI (e.g., and obtain a child identifier from the auxiliary parent device having the highest received signal strength indicator RSSIAUX-HI). At 1316, the control device may set the previous parent device as an auxiliary parent device, for example, initiate an attachment procedure to establish an auxiliary parent link with the previous parent device. As described herein, the attached procedure may include transmitting one or more attachment messages configured to establish an auxiliary parent link (e.g., link-request messages or link-response messages) to the previous parent device. For example, initiating an attachment procedure with the previous parent device may indicate that the previous parent device is no longer the parent device of the control device, before the procedure 1300 may exit.
If, however, the received signal strength indicator RSSICH->AUX for messages received by the auxiliary parent device from the control device is not greater than the received signal strength indicator RSSICH->PAR for messages received by the present parent device from the control device, the control device may consider another auxiliary parent device to be the updated parent device. The control device may determine whether there are additional auxiliary parent devices in the auxiliary parent table at 1318. If the control device determines that there are additional auxiliary parent devices in the auxiliary parent table at 1318, the control device may determine, at 1320, the auxiliary parent with the highest received signal strength indicator RSSIAUX>CH of the remaining auxiliary parent devices in the auxiliary parent table (e.g., excluding the auxiliary parent device to which the control device just tried to attach). For example, the control device may determine the auxiliary parent device with the next highest received signal strength indicator using the auxiliary parent table at 1320. The procedure 1300 may then loop around to determine if the difference between the received signal strength indicator RSSIAUX>CH of the remaining auxiliary parent devices in the auxiliary parent table and the received signal strength indicator RSSIPAR of the present parent device is greater than or equal to the hysteresis threshold THPAR-HYS at 1304.
If the difference between the received signal strength indicator RSSIAUX>CH of the remaining auxiliary parent devices in the auxiliary parent table and the received signal strength indicator RSSIPAR of the present parent device is less than the hysteresis threshold THPAR-HYS at 1304, the control device may determine the highest received signal strength indicator RSSIAUX>CH of the auxiliary parent devices (e.g., all of the auxiliary parent devices) in the auxiliary parent table at 1302. In addition, when there are not more additional auxiliary parent devices in the auxiliary parent table at 1318, the control device may also then determine the highest received signal strength indicator RSSIAUX>CH of the auxiliary parent devices (e.g., all of the auxiliary parent devices) in the auxiliary parent table at 1302. The control device may continue to attempt to attach to the auxiliary parent devices in the auxiliary parent table until the control device successfully attaches to one of the auxiliary parent devices at 1314. In addition, the control device may exit from the procedure 800 after a predetermined timeout period (e.g., exit without attaching to an updated parent device).
The mobile device 1400 may include a communications circuit 1408 for transmitting and/or receiving information. The communications circuit 1408 may perform wireless and/or wired communications. The communications circuit 1408 may include an RF transceiver or other circuit capable of performing wireless communications via an antenna. Communications circuit 1408 may be in communication with control circuit 1402 for transmitting and/or receiving information.
The control circuit 1402 may also be in communication with a display 1406 for providing information to a user. The control circuit 1402 and/or the display 1406 may generate GUIs for being displayed on the mobile device 1400. The display 1406 and the control circuit 1402 may be in two-way communication, as the display 1406 may include a touch screen module capable of receiving information from a user and providing such information to the control circuit 1402. The mobile device 1400 may also include an actuator 1412 (e.g., one or more buttons) that may be actuated by a user to communicate user selections to the control circuit 1402.
Each of the modules within the mobile device 1400 may be powered by a power source 1410. The power source 1410 may include an AC power supply or DC power supply, for example. The power source 1410 may generate a supply voltage VCC for powering the modules within the mobile device 1400.
The system controller 1500 may include a communications circuit 1506 for transmitting and/or receiving information. The communications circuit 1506 may perform wireless and/or wired communications. The system controller 1500 may also, or alternatively, include a communications circuit 1508 for transmitting and/or receiving information. The communications circuit 1506 may perform wireless and/or wired communications. Communications circuits 1506 and 1508 may be in communication with control circuit 1502. The communications circuits 1506 and 1508 may include RF transceivers or other communications modules capable of performing wireless communications via an antenna. The communications circuit 1506 and communications circuit 1508 may be capable of performing communications via the same communication channels or different communication channels. For example, the communications circuit may be capable of communicating (e.g., with a mobile device, over a network, etc.) via a wireless communication channel (e.g., BLUETOOTH®, near field communication (NFC), WIFI®, WI-MAX®, cellular, Thread, etc.) and the communications circuit 1308 may be capable of communicating (e.g., with control devices and/or other devices in the load control system) via another wireless communication channel (e.g., WI-FI®, Thread, or a proprietary communication channel, such as CLEAR CONNECT™).
The control circuit 1502 may be in communication with an LED indicator 1512 for providing indications to a user. The control circuit 1502 may be in communication with an actuator 1514 (e.g., one or more buttons) that may be actuated by a user to communicate user selections to the control circuit 1502. For example, the actuator 1514 may be actuated to put the control circuit 1502 in an association mode and/or communicate association messages from the system controller 1500.
Each of the modules within the system controller 1500 may be powered by a power source 1510. The power source 1510 may include an AC power supply or DC power supply, for example. The power source 1510 may generate a supply voltage VCC for powering the modules within the system controller 1500.
The control circuit 1604 may store information in and/or retrieve information from the memory 1606. For example, the memory 1606 may maintain a registry of associated control devices and/or control configuration instructions. The memory 1606 may include a non-removable memory and/or a removable memory. The load control circuit 1408 may receive instructions from the control circuit 1604 and may control an electrical load 1616 based on the received instructions. The load control circuit 1608 may send status feedback to the control circuit 1604 regarding the status of the electrical load 1616. The load control circuit 1408 may receive power via the hot connection 1612 and the neutral connection 1614 and may provide an amount of power to the electrical load 1616. The electrical load 1616 may include any type of electrical load, such as a lighting load (e.g., LED, fluorescent lamp, etc.).
The control circuit 1604 may be in communication with an actuator 1618 (e.g., one or more buttons) that may be actuated by a user to communicate user selections to the control circuit 1604. For example, the actuator 1618 may be actuated to put the control circuit 1604 in an association mode and/or communicate association messages from the load control device 1600.
The control circuit 1702 may store information in and/or retrieve information from the memory 1704. The memory 1704 may include a non-removable memory and/or a removable memory, as described herein.
The input device 1700 may include a communications circuit 1708 for transmitting and/or receiving information. The communications circuit 1708 may transmit and/or receive information via wired and/or wireless communications. The communications circuit 1708 may include a transmitter, an RF transceiver, or other circuit capable of performing wired and/or wireless communications. The communications circuit 1708 may be in communication with control circuit 1702 for transmitting and/or receiving information.
The control circuit 1702 may also be in communication with an input circuit 1706. The input circuit 1706 may include an actuator (e.g., one or more buttons) or a sensor circuit (e.g., an occupancy sensor circuit, a daylight sensor circuit, or a temperature sensor circuit) for receiving input that may be sent to a control device for controlling an electrical load. For example, the control-source device may receive input from the input circuit 1706 to put the control circuit 1702 in an association mode and/or communicate association messages from the control-source device. The control circuit 1702 may receive information from the input circuit 1706 (e.g. an indication that a button has been actuated or sensed information). Each of the modules within the input device 1700 may be powered by a power source 1710.
Although features and elements are described herein in particular combinations, each feature or element can be used alone or in any combination with the other features and elements. The methods described herein may be implemented in a computer program, software, instructions, or firmware stored on one or more non-transitory computer-readable mediums for execution by a computer or processor. Examples of computer-readable media include electronic signals (transmitted over wired or wireless connections) and computer-readable storage media. Examples of computer-readable storage media include, but are not limited to, a read only memory (ROM), a random access memory (RAM), removable disks, and optical media such as CD-ROM disks, and digital versatile disks (DVDs).
This application claims the benefit of U.S. Provisional Patent Application No. 62/864,646, filed Jun. 21, 2019, U.S. Provisional Patent Application No. 62/879,122, filed Jul. 26, 2019, U.S. Provisional Patent Application No. 62/880,593, filed Jul. 30, 2019, U.S. Provisional Patent Application No. 62/884,986, filed Aug. 9, 2019, U.S. Provisional Patent Application No. 62/910,059, filed Oct. 3, 2019, U.S. Provisional Patent Application No. 62/942,699, filed Dec. 2, 2019, each of which are hereby incorporated by reference in their entireties.
Number | Date | Country | |
---|---|---|---|
62864646 | Jun 2019 | US | |
62879122 | Jul 2019 | US | |
62880593 | Jul 2019 | US | |
62884986 | Aug 2019 | US | |
62910059 | Oct 2019 | US | |
62942699 | Dec 2019 | US |