This application claims priority to Indian Provisional Application No. 202111039931, filed Sep. 3, 2021.
Electronic devices such as hazardous area light fixtures can require firmware updates after installation but may be located at difficult to reach or dangerous locations. While it is possible to deliver an over-the-air (OTA) update from a mobile device to a hazardous area light fixture, there may be 100-250 fixtures on a particular premise and a person may need to be in proximity to each fixture to deliver the update, which in addition to being time consuming, can be challenging or dangerous for the person to reach each fixture. Even for cases where a mesh network is implemented for the light fixtures, a person may still need to be in the hazardous area for the time-consuming process so that their mobile device remains in communication with at least one of the light fixtures that acts as a proxy device to communicate with the other light fixtures over the mesh network during the entire update process.
A bulk data transfer between mesh nodes is described that uses a first node to start an update of other nodes within a mesh network packet-by-packet once the first node is updated.
A method of data transfer includes receiving bulk data at a proxy device in a mesh network; storing, at the proxy device, the bulk data; confirming, to a source of the bulk data, that the bulk data is received; after confirming that the bulk data is received, performing a transfer of the bulk data packet-by-packet to at least one other node in the mesh network; and performing a unicast communication to identify missing packets. In some cases, the transfer is a cascade transfer involving transferring of the bulk data packet-by-packet from the proxy device to a next available node in the mesh network that itself passes a received packet to its next available node in the mesh network. In some cases, the transfer is a group transfer in which the proxy device publishes to a group of subscriber nodes that have subscribed to the proxy device address to transfer the bulk data packet-by-packet.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
A bulk data transfer between mesh nodes is described that uses a first node to start an update of other nodes within a mesh network packet-by-packet once the first node is updated.
Through the described techniques, it is possible to transfer bulk data, such as for a firmware upgrade process, from a mobile device to one of the electronic devices in a mesh network and then have the nodes in the mesh network update themselves.
The mesh network can be a Bluetooth® low energy (BLE) mesh, Zigbee mesh, Wi-Fi mesh, and the like.
In order to flash multiple nodes with bulk data such as a new firmware image, packets are transferred from a proxy node to the other nodes in the mesh network on a packet-by-packet basis (from each node to another node in this manner) so that once a node receives all the packets, that device can program (or flash) itself, enabling almost simultaneous updates of all the devices in a given network. This can be referred to as a cascading methodology (or “cascade transfer”). In some cases, the original transfer from the proxy node is to a single node, which then transfers to a next node. In some cases, the original transfer from the proxy node is to a group of subscription nodes that subscribe to the publication of the proxy node.
The bulk data transfer (e.g., firmware image transfer) can occur while the devices on the mesh network are currently operating in normal operation mode. Thus, a user (who provides the bulk data transfer to a proxy node) is not impacted while the bulk data is being transferred from node to node.
For a device that is not part of the mesh network, such as mobile device 150, communication on the mesh network 110 is conducted via a proxy device 160. In this environment, it is expected that each node is capable of receiving a communication of bulk data from the mobile device 150, storing the bulk data locally (e.g., at a “scratch pad” memory), and sending the bulk data to nearby nodes. Thus, each node is capable of receiving an image/bulk data from a nearby node or from the mobile device 150 using the same secure proprietary bulk data transfer protocol for the particular mesh network.
All the nodes in the mesh are capable of transferring bulk data to a nearby node in the same mesh network in order to increase the speed of transfer from an initiating device.
Advantageously, because the proxy device receives the entire bulk data package and directs the cascading technique, the mobile device can disconnect and the user of the mobile device is not required to be at a hazardous premise for longer than updating a single device.
Of course, the mobile device 300 is not required to use the node at address 0 as the proxy node; nor are the electronic devices required to be located in a manner such that the nearest adjacent node has the next address.
For example, referring to
In a specific implementation of a firmware update for a plurality of electronic devices on a mesh network, the data transfer can begin with entering over-the-air (OTA) update commands for the devices to all enter the OTA mode.
Accordingly, the OTA mode propagation can begin 420 and the proxy device “A” pings the next address location (“A+1”) to determine (425) if the node at the next address is available. If the node at the next address is not available (e.g., does not return receipt), proxy device “A” increments (430) to the next node address (e.g., “A+1” +1). Once an available node is determined, the proxy device “A” stores (440) the address as the next available address and passes (450) the OTA command to the node at that next available address. The node at that next available address enters (460) OTA mode upon receipt of the OTA command and begins the OTA mode transfer process such as described in operations 420, 425, 430, 440, and 450. In this manner, the OTA command is passed (470) from each next device to its next device in sequence. It can be noted that a node that is connected and active on the mesh may not want the firmware upgrade (e.g., the device may already be updated); such a node can respond accordingly so that the message will be passed on to the next node.
If during the determination step 506, proxy device A does not receive an indication that its next device received the packet in a designated timeframe, proxy device A can determine (512) whether a retry count is exceeded and retry sending the same data packet. If the retry count is determined in operation 512 to exceed the threshold, proxy device A increments (514) its error counter, which is used to determine (516) whether an unresponsive next device should be marked non-operational. While the error counter is less than a specified number, the packet is sent to the next device in the sequence (e.g., A+2). If A+2 does not respond, A+3 is tried and so on. Whichever device responds is saved as PossibleNextDevice; the PossibleNextDevice will store the packet in to its scratchpad.
As illustrated, in case a device's currently indicated next device is unresponsive, the device sending the packet (e.g., initially the proxy A device) tries to find the next device in the sequence to send the packet to (518). A maximum number of retry attempts of a device is attempted (“retry count”), after which the packet will be passed to the next available device in sequence. There is a possibility that the previous packet was never passed to that next available device (e.g., A+2) in sequence and there is packet gap in the A+2 device, which can be addressed by the sanity check process described with respect to
In addition to retrying a particular packet, if it is determined in operation 516 that a certain number of retry attempts occur (i.e., error counter is greater than specified number, such as 3 in this example), then the next device (e.g., A+1) is marked (520) by the proxy device as non-operational and the next device in the sequence is stored as the NextPossibleDevice to which proxy device A sends data packets in operation 504 (e.g., retry counts and error counter are now based on the next device in the sequence). In this example, if the maximum retry fails for 3 consecutive times, then the device will be marked as unresponsive and no further communication will be performed with this device during the OTA bulk data transfer.
During operation 518, the proxy device receives an indication that the next responding device (e.g., A+2) received the packet and that next responding device puts the packet into its scratchpad and passes the packet on to its next device, similar to operations 508 and 510. Indeed, once a packet is sent from the proxy device to a next device, the packet continues to be passed from device to device, and proxy device A proceeds (522) to next packet to send out (which may occur as soon as proxy device A receives an indication that another device received the current packet). A representation of this action is shown in operations 524 and 526, where so long as the packet is not passed to the last device in the network or maximum device count, the packet is passed on to the next device. For example, if proxy device A receives the packet from one of the other devices (e.g., such as described in
Once all the packets are transferred, a sanity check sequence can be performed to identify missing packets.
In some cases, the token is passed from one device to another and the device having hold of the token will sequentially ask for the missing packets to nearby devices. This can prevent random devices to start asking for missing packets. The response of the device with the token packet will be a unicast. The Proxy device will maintain a timeout for a token. If no response is generated, then the token will be regenerated and sent to next device.
Advantageously, a user does not need to remain at a hazardous premise to update the electronic devices on the mesh network. The mobile device can initiate and completely transfer the image/bulk data to the Proxy node (any of the nodes currently used as proxy). Once all the packets are received by the proxy, the user can leave and the proxy will start transferring one packet after other sequentially. However, because each node that receives a particular packet then sends it out to all of its nearby nodes for routing, it is possible for the network to get flooded with messages.
In certain implementations, the time duration in between the packets is calculated such that the network does not get flooded. There can be multiple techniques used to reduce the flooding:
In one implementation, a time delay is introduced in between the packets sent from the Proxy node to the network. Any added time delay does not impact the user experience as there is no dependency on the mobile device.
In another implementation, the proxy node packets can be passed on to an optimized count of devices at a time (e.g., 20 devices for each set). In this implementation, once the first set of devices receive the data then the next set of devices will be passed the data.
In yet another implementation, flooding can be addressed by optimization of the hop count (also known as time to live for the packet). Each time a packet is sent to another node, the hop count can decrement and once the hop count reaches zero, the packet can be discarded from the network.
In some cases, a combination of these implementations may be used.
Since the data transfer described herein for the cascading techniques is unicast, the data transfer is reliable since the sending node/device is configured to wait for the response. In contrast, when using a broadcast mechanism, all the nodes receive packet simultaneously and hence they do not send an acknowledgement, thus the sending node/device is not aware whether all the nodes (or even which ones) received the packets and it is possible not all the devices would be updated.
By using a unicast addressed data transfer, a retry mechanism is possible, which reduces errors. However, if a broadcasting data transfer is used, a unicast polling method is incorporated, as described with respect to
The publish/subscribe model for message transport is invoked where a node generates a message and other nodes subscribe to the address of the node that generated the message so that the other nodes receive the message. For a single transaction of a message sent and received, the sender publishes the message to an address (unicast, group or virtual) and the receiver node that is subscribed to this address processes the data. Nodes can publish and subscribe to unicast, group, and virtual addresses.
Once all the packets are transferred, node A performs a unicast poll (770) of each subscriber node to identify any missing packets. Node A then re-publishes (780) the identified missing packets to the group of subscriber nodes. The identified missing packets are transferred to the remaining nodes in the mesh. Any of the remaining nodes missing one of those identified missing packets consumes the packet. That is, a unicast poll of each subscriber node can be performed to identify any missing packets; and upon receiving any identified missing packets from each subscriber node, the identified missing packets can be republished to the group of subscriber nodes.
As an example implementation of a method of bulk data transfer with group transfer, a first device publishes each packet of the bulk data with a time delay of T between each broadcast/publication. The time delay T is based on the time required for the message to travel through the entire mesh. That is, a first device publishes or broadcasts a first packet of the bulk data to a group of devices (who have subscribed to this publish address). Then, after the time delay T, the first device sends the next packet.
Once all the packets are sent by the first device, the first device polls each of the individual devices to confirm whether or not each individual device has received all the packets. The first device can perform the polling using a unicast polling mechanism (one after other). If any of the devices missed a packet, that device responds to the poll request with the list of missing packets. There can be a limit on a maximum number of retry that the first device will do before marking a particular device as faulty. The first device then resends the packets indicated by that device indicating a missing packet to all the devices as a publish message. Thus, if any other device in the mesh is also missing the packet resent by the first device, that other device will re-receive the packet and consume the packet. This can further reduce the time to update the other devices as it is possible that missing packets will be resolved at a device before that device is polled. In similar fashion, the first device will poll remaining devices and publish the missing packets until all the devices receive all the packets.
The speed of bulk data transfer can be increased through the group transfer method, since multiple devices receive the packets at same time. Moreover, advantageously, through the methodology of identifying the missing packets from one device and sharing the missing packets to all devices (not just the one indicating that the packet is missing), it is possible to further increase speed of update.
Since the messaging (transfer of packets from the first device to the other devices/nodes) is broadcast based, the method of transfer will be fast. In addition, since the polling is unicast based, the method is able to incorporate the advantage of having a communication reliability as-well. Thus, the group transfer method can be considered both fast and reliable.
Although the subject matter has been described in language specific to structural features and/or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as examples of implementing the claims and other equivalent features and acts are intended to be within the scope of the claims.
Number | Date | Country | Kind |
---|---|---|---|
202111039931 | Sep 2021 | IN | national |