Transmission method in hierarchical data network

文档序号:1146529 发布日期:2020-09-11 浏览:3次 中文

阅读说明:本技术 分层数据网络中的传输方法 (Transmission method in hierarchical data network ) 是由 汤马士·罗丁格 郭一 安德森·奥恩 于 2019-01-04 设计创作,主要内容包括:本公开的实施方式一般涉及电子数据通信领域,并且更具体地涉及与提供数据分组的“无地址数据传输”有关的用于分层数据网络的传输方法。引入序次(order)或与节点关联的序次以建立关系,并且该序次可以以树形拓扑的形式存储在数据结构中。因此,节点的序次是已知的,并且逻辑和/或其他数据集、数据有效载荷等可以在跨节点传输,其中由于有序节点的属性,执行传输的步骤更加有效。多个节点中的每个节点包括多个网络接口,这些网络接口通过成对联结形成树形拓扑的数据网络。(Embodiments of the present disclosure relate generally to the field of electronic data communications, and more particularly to a transport method for a hierarchical data network in connection with providing "unaddressed data transport" of data packets. Orderings (orders) or orderings associated with nodes are introduced to establish relationships and may be stored in a data structure in the form of a tree topology. Thus, the order of the nodes is known, and logical and/or other data sets, data payloads, etc. may be transferred across the nodes, with the steps of performing the transfer being more efficient due to the nature of the ordered nodes. Each of the plurality of nodes includes a plurality of network interfaces that are joined in pairs to form a data network of a tree topology.)

1. A method for transmitting a plurality of arrays in a data network comprising a plurality of nodes and comprising a plurality of connections between the nodes,

wherein a node of the plurality of nodes comprises a plurality of network interfaces for transmitting and receiving arrays, an

Wherein connections between nodes of the plurality of nodes are formed by pairwise joining of a plurality of network interfaces of the nodes such that a network topology of the connections is a tree topology;

the method comprises the following steps:

assigning a first order to the plurality of network interfaces for all of the plurality of nodes;

determining a second order for the plurality of nodes based on the network topology and the first order of the plurality of network interfaces;

generating a first composite array by cascading a plurality of arrays, so that a first array and a second array in the first composite array are used as corresponding node pairs of the second order and are in the same order with each other; and

transmitting the contents of a first composite array throughout the data network such that each node receives a first contiguous sequence of the first composite array from at least one other node connected thereto via a first network interface and such that each node transmits a second contiguous sequence of the first composite array to the other nodes connected thereto via a second network interface, wherein the second contiguous sequence is constructed from the first contiguous sequence according to the first and second orders.

2. The method of claim 1, wherein the functions associated with the first and second consecutive sequences of the first composite array comprise: the first contiguous sequence is divided into overlapping or non-overlapping sequences equal to or greater than the number of network interfaces of the connected node, and the second contiguous sequence is assigned as an overlapping or non-overlapping sequence to other network interfaces in the first order as second network interfaces in a comparable order to the other overlapping or non-overlapping sequences.

3. The method of claim 1, wherein the functions associated with the first and second consecutive sequences of the first composite array comprise: aggregating overlapping or non-overlapping sequences of an array having a number equal to or greater than the number of network interfaces to which the node is connected, wherein a second consecutive sequence is an overlapping or non-overlapping sequence of the same order relative to overlapping or non-overlapping sequences of other second network interfaces as other network interfaces to the first order, and assigning the aggregated sequence as the first consecutive sequence.

4. The method of claim 1, further comprising: after completion of all consecutive sequences of transmissions over the connected second network interface, creating an acknowledgement message, and transmitting the acknowledgement message over the first network interface of the node.

5. The method of claim 4, wherein after sending the second consecutive sequence over the second network interface until at least one acknowledgement message is received over the same second network interface, the node suspends further execution of the transmission such that further execution of the transmission is conditioned on successful transmission to a sequentially preceding node of the plurality of nodes.

6. The method of claim 5, wherein the method generates an error message if a node of the data network fails to receive at least one acknowledgement message resulting from transmitting a second consecutive sequence within a time threshold.

7. The method of claim 1, wherein the determined second order is obtained once for the data network and stored in memory such that the determined second order is retrieved from memory during creation of the first composite array and transmission of the first composite array.

8. The method of claim 1, wherein the determined second order is obtained at a frequency less than or equal to four times per second for the data network and stored in a location in memory such that during creation of the first composite array and transmission of the first composite array, the currently determined second order is retrieved from memory.

9. The method of claim 1, wherein the network interface comprises a serial port disposed in a geometric relationship on each of the plurality of nodes.

10. The method of claim 9, wherein the number of serial ports per node is equal to three.

11. The method of claim 9, wherein the number of serial ports per node is equal to four.

12. The method of claim 9, wherein the order of the network interfaces of the nodes corresponds to a clockwise traversal of the geometry of the serial port.

13. The method of claim 9, wherein the order of the network interfaces of the nodes corresponds to a counterclockwise traversal of the geometry of the serial port.

14. The method of claim 1, wherein the node further comprises a digital or analog sensor to sense one or more states of the node or an environment of the node, and wherein the sensed states are digitally represented as an array forming part of the first composite array transmitted in the data network.

15. The method of claim 14, wherein the condition sensed by the node is whether an object is present in the immediate vicinity of the node.

16. The method of claim 14, wherein the condition sensed by the node is movement of an object through air within a20 meter path from the digital or analog sensor.

17. The method of claim 1, wherein the node further comprises an actuator that is actuated such that one or more states of the component are set according to the portion of the contents of the first composite array received by the node through one or more of its network interfaces.

18. The method of claim 17, wherein the actuation of the node is a setting of a drive current for a plurality of light emitting diodes.

19. The method of claim 1, wherein a tree topology of the network topology is determined as a spanning tree of all network interface connections such that connections of the spanning tree are a subset of all network interface connections.

20. A method for transmitting an array in a data network comprising a plurality of nodes and comprising a plurality of connections between nodes, wherein the array transmission is from a source node to a destination node in the plurality of nodes;

wherein a node of the plurality of nodes comprises a plurality of network interfaces for transmitting and receiving arrays, an

Wherein connections between nodes of the plurality of nodes are formed by pairwise joining of a plurality of network interfaces of the nodes such that a network topology of the connections is a tree topology;

the method comprises the following steps:

assigning a first order to the plurality of network interfaces for all of the plurality of nodes;

determining a second order for the plurality of nodes based on the network topology and the first order of the plurality of network interfaces;

generating a first composite array from the first array and the first and second integers, wherein the first integer is set according to the position of the source node or target node within the determined order; and

transmitting the content of a first composite array throughout the data network such that a node receives the first composite array through a first network interface, and transmitting the first composite array through a second network interface only after adding a value exceeding a first integer of the first composite array to a second integer of the first composite array and a number of nodes contained in a branch of a tree-shaped data network topology connected to the node through the second network interface;

wherein a second network interface is iteratively selected from a first order of a plurality of network interfaces of a node, and wherein a second integer of the first composite array increases a number of nodes included in a branch of a tree data network topology connected to nodes through the second network interface if the composite array is not sent through the second network interface.

21. The method of claim 20, further comprising: after completion of the sending of the first composite array through the second network interface, creating an acknowledgement message, and sending an acknowledgement message through the first network interface of the node.

22. The method of claim 21, wherein after sending the first composite array over a second network interface, a node suspends further execution of a transmission until at least one acknowledgement message is received over the same second network interface, such that further execution of the transmission is conditioned on successful transmission to an orderly preceding node of the plurality of nodes.

23. The method of claim 22, wherein the method generates an error message if a node of the data network fails to receive at least one acknowledgement message resulting from transmitting the first composite array within a time threshold.

24. The method of claim 20, wherein the determined second order is obtained once for the data network and stored in memory such that the determined second order is retrieved from memory during creation of the first composite array and its transmission.

25. The method of claim 20, wherein the determined second order is obtained at a frequency of less than four times per second for the data network and stored in a location in memory such that during creation of the first composite array and its transmission, the currently determined second order is retrieved from memory.

26. The method of claim 20, wherein the network interface comprises serial ports arranged in a geometric relationship on a node.

27. The method of claim 26, wherein the number of serial ports per node is equal to three.

28. The method of claim 26, wherein the number of serial ports per node is equal to four.

29. The method of claim 26, wherein the order of the network interfaces of the nodes corresponds to a clockwise traversal of the geometry of the serial port.

30. The method of claim 26, wherein the order of the network interfaces of the nodes corresponds to a counterclockwise traversal of the geometry of the serial port.

31. The method of claim 20, wherein the node further comprises a digital or analog sensor to sense one or more states of the node or an environment of the node, and wherein the sensed states are digitally represented as an array portion of the first composite array transmitted in a data network.

32. The method of claim 31, wherein the condition sensed by the node is whether an object is present in the immediate vicinity of the node.

33. The method of claim 31, wherein the condition sensed by the node is the movement of an object through the air within a20 meter path from the digital or analog sensor.

34. The method of claim 20, wherein the node further comprises an actuator that is actuated such that one or more states of the component are set according to the portion of the contents of the first composite array received by the node through one or more of its network interfaces.

35. The method of claim 34, wherein the actuation of the node is a setting of a drive current for a plurality of light emitting diodes.

36. The method of claim 20, wherein a tree topology of the network topology is determined as a spanning tree of all network interface connections such that connections of the spanning tree are a subset of all network interface connections.

37. A data network comprising a plurality of nodes and a plurality of connections between the nodes, the plurality of nodes of the data network being adapted to transmit an array throughout the data network;

each node of the plurality of nodes comprises a plurality of network interfaces for transmitting and receiving arrays, and each node comprises a programmable integrated circuit and a memory;

the connection between the nodes is formed by the pairwise connection of a plurality of network interfaces of the nodes, so that the network topology of the connection is a tree topology; and

the transmission of the array throughout the data network utilizes the programmable integrated circuit configured to:

assigning a first order to the plurality of network interfaces for all of the plurality of nodes;

determining a second order for the plurality of nodes based on the network topology and the first order of the plurality of network interfaces;

generating a first composite array by cascading a plurality of arrays, so that a first array and a second array in the first composite array are used as corresponding node pairs of the second order and are in the same order with each other; and

transmitting the contents of a first composite array throughout the data network such that each node receives a first contiguous sequence of the first composite array from at least one other node connected through a first network interface and such that each node transmits a second contiguous sequence of the first composite array to the other nodes connected thereto through a second network interface, wherein the second contiguous sequence is constructed from the first contiguous sequence according to the first and second orders.

38. The data network of claim 37, wherein the functions associated with the first and second consecutive sequences of the first composite array comprise: the first contiguous sequence is divided into overlapping or non-overlapping sequences equal to or greater than the number of network interfaces of the connected node, and the second contiguous sequence is assigned as an overlapping or non-overlapping sequence to other network interfaces in the first order as second network interfaces in a comparable order to the other overlapping or non-overlapping sequences.

39. The data network of claim 37, wherein the functions associated with the first and second consecutive sequences of the first composite array comprise: aggregating overlapping or non-overlapping sequences of an array having a number equal to or greater than the number of network interfaces to which the node is connected, wherein a second consecutive sequence is an overlapping or non-overlapping sequence of the same order relative to overlapping or non-overlapping sequences of other second network interfaces as other network interfaces to the first order, and assigning the aggregated sequence as the first consecutive sequence.

40. The data network of claim 37, wherein the determined second order is obtained once for the data network and stored in memory such that during creation of the first composite array and transmission of the first composite array, the determined second order is retrieved from memory.

41. The data network of claim 37, wherein the determined second order is obtained at a frequency less than or equal to four times per second for the data network and stored in a location in memory such that during creation of the first composite array and transmission of the first composite array, the currently determined second order is retrieved from memory.

42. The data network of claim 37, wherein the network interface comprises serial ports arranged in a geometric relationship on the nodes.

43. The data network of claim 42, wherein the number of serial ports per node is equal to three.

44. The data network of claim 42, wherein the number of serial ports per node is equal to four.

45. The data network of claim 42, wherein the order of the network interfaces of the nodes corresponds to a clockwise traversal of the geometry of the serial port.

46. The data network of claim 42, wherein the order of the network interfaces of the nodes corresponds to a counterclockwise traversal of the geometry of the serial port.

47. The data network of claim 37, wherein the node further comprises a digital or analog sensor to sense one or more states of the node or an environment of the node, and wherein the sensed states are digitally represented as array portions of the first composite array transmitted in the data network.

48. The data network of claim 47, wherein the condition sensed by the node is the presence or absence of an object in the immediate vicinity of the node.

49. A data network according to claim 47 wherein the condition sensed by the node is the movement of an object through the air within a20 metre path from the digital or analogue sensor.

50. The data network of claim 37, wherein the node further comprises an actuator that is actuated so as to set one or more states of the component in accordance with the portion of the contents of the first composite array received by the node through one or more of its network interfaces.

51. The data network of claim 50, wherein the actuation of the node is a setting of a drive current for a plurality of light emitting diodes.

52. The data network of claim 37, wherein one or more nodes are gateways to an external network such that the first complex array is comprised in part of inputs communicated from sources external to the external network and portions of the first complex array are inputs communicated by targets external to the external network.

53. The data network of claim 52, wherein the external network is a local area network.

54. The data network of claim 52, wherein the external network is the Internet.

55. The data network of claim 52, wherein the inputs communicated from the external sources are hue, saturation and intensity.

56. The data network of claim 52, wherein the input communicated from the external source is an array of amplitudes at audible frequencies.

57. The data network of claim 52, wherein the output communicated to an external target is the presence of movement of objects through the air within a20 meter path from a node in the data network.

58. A data network comprising a plurality of nodes and a plurality of connections between nodes, the plurality of nodes of the data network being adapted to transmit an array throughout the data network;

each node of the plurality of nodes comprises a plurality of network interfaces for transmitting and receiving arrays, and each node comprises a programmable integrated circuit and a memory;

the connection between the nodes is formed by the pairwise connection of a plurality of network interfaces of the nodes, so that the network topology of the connection is a tree topology; and

the transmission of an array throughout a data network is from a source node to a destination node among a plurality of nodes, using a programmable integrated circuit configured to:

assigning a first order to the plurality of network interfaces for all of the plurality of nodes;

determining a second order for the plurality of nodes based on the network topology and the first order of the plurality of network interfaces;

generating a first composite array from the first array and the first and second integers, wherein the first integer is set according to the position of the source node or target node within the determined order; and

transmitting the content of a first composite array throughout the data network, such that a node receives the first composite array through a first network interface, and transmitting the first composite array through a second network interface only if the sum of a second integer of the first composite array and the number of nodes contained in a branch of the tree-shaped data network topology connected to the node through the second network interface exceeds the value of the first integer of the first composite array;

wherein a second network interface is iteratively selected from a first order of a plurality of network interfaces of a node, and wherein a second integer of the first composite array increases a number of nodes included in a branch of a tree data network topology connected to nodes through the second network interface if the composite array is not sent through the second network interface.

59. The data network of claim 58, wherein the determined second order is obtained once for the data network and stored in memory such that during creation of the first composite array and its transmission, the determined second order is retrieved from memory.

60. The data network of claim 58, wherein the determined second rank is obtained at a frequency of less than four times per second for the data network and stored in a location in memory such that during creation of the first composite array and its transmission, the currently determined second rank is retrieved from memory.

61. The data network of claim 58, wherein the network interface comprises serial ports arranged in a geometric relationship on the nodes.

62. The data network of claim 61, wherein the number of serial ports per node is equal to three.

63. The data network of claim 61, wherein the number of serial ports per node is equal to four.

64. The data network of claim 58, wherein the order of the network interfaces of the nodes corresponds to a clockwise traversal of the geometry of the serial port.

65. The data network of claim 58, wherein the order of the network interfaces of the nodes corresponds to a counterclockwise traversal of the geometry of the serial port.

66. The data network of claim 58, wherein the node further comprises a digital or analog sensor to sense one or more states of the node or an environment of the node, and wherein the sensed states are digitally represented as array portions of the first composite array transmitted in the data network.

67. The data network of claim 66, wherein the condition sensed by the node is the presence or absence of an object in the immediate vicinity of the node.

68. The data network of claim 66, wherein the condition sensed by the node is movement of an object through the air within a20 meter path from the digital or analog sensor.

69. The data network of claim 58, wherein the node further comprises an actuator that is actuated so as to set one or more states of the component in accordance with the portion of the contents of the first composite array received by the node through one or more of its network interfaces.

70. The data network of claim 69, wherein the actuation of the node is a setting of a drive current for a plurality of light emitting diodes.

71. The data network of claim 58, wherein one or more nodes are gateways to an external network, such that the first complex array is comprised in part of inputs communicated from sources external to the external network, and portions of the first complex array are inputs communicated by targets external to the external network.

72. The data network of claim 71, wherein the external network is a local area network.

73. The data network of claim 71, wherein the external network is the Internet.

74. The data network of claim 71, wherein the inputs communicated from external sources are hue, saturation and intensity.

75. The data network of claim 71, wherein the input communicated from the external source is an array of amplitudes at audible frequencies.

76. The data network of claim 71, wherein the output communicated to an external target is the presence of movement of objects through the air within a 20 meter path from a node in the data network.

77. A computer readable medium storing machine-interpretable instructions that, when executed by a processor, cause the processor to perform the method of any one of claims 1-36.

78. The method of any one of claims 1-36, wherein each node of the plurality of nodes is a luminaire or luminaire controller circuit, and utilizing transmission of the composite array during propagation of control messages across the plurality of nodes.

79. The method of claim 78, wherein the control message controls at least an optical output characteristic of each of the plurality of nodes.

80. A set of interconnected luminaires, each luminaire acting as a node of a data network according to any one of claims 37 to 76.

81. A set of interconnected luminaires and at least one controller, each luminaire and controller acting as a node of a data network according to any one of claims 37-76.

Technical Field

Embodiments of the present invention relate generally to the field of electronic data communications, and more particularly to a transmission method for a hierarchical data network.

Background

The plurality of nodes is a data network in which each node is connected to at least one other node of the plurality of nodes via a communication medium capable of transmitting data.

The data network may be a plurality of computers in an office coupled to a common data server. The coupling may be through a network cable, such as a fiber optic cable, a coaxial cable, or a twisted pair cable. The method of joining nodes in a network may be wireless by transmitting electromagnetic waves at certain frequencies (e.g., 2.4GHz or 5GHz), where an antenna coupled to a computer or data server transmits or receives electromagnetic waves. The plurality of nodes may be comprised of other types of devices such as printers, cameras, telephones, pedometers, motion sensors, thermometers, and any type of sensor that may be programmed to generate and transmit digital data over a communications medium.

The data network may be a plurality of sensors installed throughout the vehicle such that certain characteristics of the surrounding environment are sensed through one or more physical interactions with the surrounding environment to determine the amount of fuel remaining in the fuel tank, engine temperature, speed, whether to fasten a seat belt, or many other characteristics. The nodes of these networks may also include actuators, which are devices capable of performing functions or activities. For automobiles, this may be a warning light that lights up if one or more sensors meet one or more logical conditions (e.g., insufficient gasoline, or hydraulic pressure gradually turning the trunk on or off if a button has been pressed). As the vehicle operates, the data transmission may have to be of very high priority so that changing conditions are alerted in time. The plurality of sensors and actuators may transmit signals over a common communication medium such as a cable. Therefore, there is a risk that the data signals interfere with each other unless contention of the communication medium is handled.

The data network may consist of sensors and actuators installed in a so-called smart home, smart office or smart retail space. Examples of such sensors are thermometers, motion sensors, ambient light sensors, sensors to tell if a door is open, smoke sensors, carbon monoxide sensors, audio sensors. Examples of such actuators are cameras, lights and luminaires, windows, blinds, cordless power outlets, smart refrigerators, alarm clocks. Many of these sensors are small and can be mechanically installed throughout a home, office, or retail space. Due to their wide spatial distribution, they can be installed without connecting any wires. This may mean that the sensors and actuators have to be connected to the data network by wireless means. This may further mean that the sensors and actuators must be powered without being directly connected to an electrical outlet. The latter can be solved by installing replaceable batteries. Batteries can only provide limited power before the battery must be replaced.

It is desirable to have a device that consumes as little energy as possible. Wireless communication also means that other devices (not part of the network) with appropriately tuned antennas can receive data transmitted to and from the sensors and actuators. This raises security concerns as the data may be private, proprietary or not intended for third parties. Furthermore, for installations spanning a large area, the range over which nodes can reliably communicate with sufficient speed may approach or exceed the size of the installed data network.

Disclosure of Invention

Embodiments are described in various embodiments that relate to a method of transmitting data throughout a data network of nodes, where the nodes may be actuators and sensors, where the method entails minimal time and design complexity for a given computing hardware to perform the required transmission.

The method is implemented on an electronic circuit, which may include, in various embodiments, a physical circuit, an electronic path, and an electronic interface for transferring data and/or power. In some embodiments, a non-transitory computer readable medium storing computer translatable instructions that cause a processor to perform the steps of the various methods described herein is also contemplated.

The mechanism described herein is concerned with "unaddressed data transfer" and provides a technical solution to, inter alia, technical problems in the field of data transfer. In the absence of an address, a relationship is established to provide an electronic path for the transmission of power and/or data packets.

Various methods are used herein to describe a method of transferring data that provides "unaddressed data transfer," which may be implemented using hardware, software, embedded firmware, circuitry, and/or combinations thereof.

The rank is introduced or associated with the node to establish the relationship, and may be stored in a data structure in the form of a tree topology. Thus, the order of the nodes is known, and logical and/or other data sets, data payloads, etc. may be transmitted between the nodes.

In an embodiment, a method is provided for transmitting a plurality of arrays in a data network comprising a plurality of nodes and comprising a plurality of connections between the nodes. Each of the plurality of nodes includes a plurality of network interfaces through which the array is transmitted and received, and connections between the nodes of the plurality of nodes are formed through pairwise joining of the plurality of network interfaces of the nodes. The network topology of the connection is a tree topology.

The method for transmitting data comprises the following steps: assigning a first order (e.g., a first order relationship) to the plurality of network interfaces for all of the plurality of nodes; determining a second order (e.g., a second order relationship) of the plurality of nodes based on the network topology and the first order of the plurality of network interfaces; and generating a first composite array through cascading the plurality of arrays, so that the first array and the second array in the first composite array are in an equivalent order to each other and are used as corresponding node pairs of the second order.

The rank is related to the network interface on which any given node is located. This means that the first order makes statements such as "select first network interface" or "select next network interface" explicit and specific to any particular data network facility. This is an important consideration for connecting unaddressed nodes, especially for modular electronic devices with multiple connectable interfaces where it is not known in advance which connection will be connected to which connection and in what order (e.g., a user is using a modular LED panel to assemble geometries and wants to be able to connect them conveniently without having to consider matching a particular panel interface or building a shape and communicating it to a central controller). The second order is similarly the order of the nodes of any given data network. An important consideration is to derive or determine the second order. This is done according to two other attributes of the data network: an exact tree topology of the data network, and a first order of nodes that make up the data network. With the second order, the transmission of the composite array method is effectively transmitted using the determined second order.

Transmitting the contents of a first composite array throughout the data network such that each node receives a first contiguous sequence of the first composite array from at least one other node connected through a first network interface and such that each node sends a second contiguous sequence of the first composite array to other nodes connected thereto through a second network, wherein the second contiguous sequence is constructed from the first contiguous sequence according to the first and second orders.

A first contiguous sequence of composite arrays is created. The term "contiguous" means (1) the sequence is ordered, and (2) the sequence overlaps a portion of the contents of the first composite array. Thus, the first continuous sequence may be obtained by simply defining a lower bound and an upper bound to be applied to the contents of the first composite array.

According to some embodiments, the process may continue recursively. By applying the same type of minimum set operation, a second contiguous sequence can be constructed from the first contiguous sequence, which in effect breaks down the first compound array (or decomposes the ordered content comprising the first compound array, preferably formulates it if possible) into a contiguous sequence.

In addition, the multiple consecutive sequences are for a given node, overlapping or non-overlapping. In other words, any single content unit of the first composite array (defined as content unit Ω) that has been received through the first network interface of a given node will only be sent through at most one other network interface of the same given node. May not be sent over the network interface because the content unit may be intended for use by a given node.

In another aspect, the functions associated with the first and second consecutive sequences of the first composite array comprise: the first contiguous sequence is divided into an array of overlapping or non-overlapping sequences equal to or greater than the number of network interfaces to which the node is connected, and the second contiguous sequence is assigned as an overlapping or non-overlapping sequence to other network interfaces in the first order as second network interfaces in a comparable order to the other overlapping or non-overlapping sequences (e.g., according to an equivalent order relationship).

In another aspect, the functions associated with the first and second consecutive sequences of the first composite array comprise: aggregating overlapping or non-overlapping sequences of an array having a number equal to or greater than the number of network interfaces to which the node is connected, wherein a second consecutive sequence is an overlapping or non-overlapping sequence of the same order relative to overlapping or non-overlapping sequences of other second network interfaces as other network interfaces to the first order, and assigning the aggregated sequence as the first consecutive sequence.

In another aspect, the method comprises: generating/creating an acknowledgement message after the transmission of all consecutive sequences over the connected second network interface is completed; and sending an acknowledgement message over the first network interface of the node.

In another aspect, at least one of the plurality of nodes suspends further execution of the transmission after sending the second consecutive sequence over the second network interface until receiving at least one acknowledgement message over the same second network interface, such that further execution of the transmission is conditioned on a successful transmission to a preceding node in the determined sequence of the plurality of nodes.

On the other hand, if a node of the data network fails to receive at least one acknowledgement message caused by sending the second consecutive sequence within a time threshold, an error message is generated.

In another aspect, the determined second order is obtained once for the data network and stored in a memory (e.g., a data store or non-transitory computer-readable medium) such that the determined second order is retrieved from the memory during creation of the first composite array and transmission of the first composite array.

In another aspect, for a data network, the determined second rank is obtained at a frequency less than or equal to four times per second and stored in a location in memory such that the currently determined second rank is retrieved from memory during creation of the first composite array and transmission thereof.

In another aspect, the network interface includes a serial port disposed in a geometric relationship on each of the plurality of nodes.

In another aspect, the number of serial ports of each of the plurality of nodes is equal to three.

In another aspect, the number of serial ports per node in the plurality of nodes is equal to four.

Other numbers of serial ports are also possible and may vary, for example, depending on the number of sides of the modular electrical component (e.g., LED luminaire). For example, such modular electrical components may comprise triangular, rectangular, pentagonal, hexagonal, heptagonal, octagonal, non-diagonal, decagonal, etc. panels, and a portion or each side of such panels may comprise an interface that requires an order of distribution to improve data. In some embodiments, there may also be one or more sides that do not have an interface (e.g., a hexagonal module need not have six interfaces).

In another aspect, the order of the network interfaces of each of the plurality of nodes corresponds to a clockwise traversal of the geometry of the serial port.

In another aspect, the order of the network interfaces of each of the plurality of nodes corresponds to a counterclockwise traversal of the geometry of the serial port.

In another aspect, a node of the plurality of nodes further comprises a digital or analog sensor to sense one or more states of the node or an environment of the node, and wherein the sensed states are digitally represented as an array forming part of a first composite array formed for transmission in the data network.

In another aspect, the sensed condition of a node of the plurality of nodes is whether an object is present in the immediate vicinity of the node.

In another aspect, the condition sensed by a node is the movement of an object through the air within a path (e.g., 10, 15, 20, 25 meters) from the digital or analog sensor.

In another aspect, the node further comprises a physical actuator (e.g., a drive current) that is actuated such that one or more states of the component are set according to the portion of the contents of the first composite array received by the node through one or more of its network interfaces.

In another aspect, the actuation of the node is a setting of a drive current for a plurality of light emitting diodes.

In another aspect, a tree topology of the network topology is determined as a spanning tree of all network interface connections, such that connections of the spanning tree are a subset of all network interface connections.

In another aspect, a method is provided for transmitting an array in a data network comprising a plurality of nodes and comprising a plurality of connections between the nodes, wherein the array transmission is from a source node to a destination node in the plurality of nodes; each of the plurality of nodes includes a plurality of network interfaces through which the array is transmitted and received, and connections between the nodes of the plurality of nodes are formed by pairwise joining of the plurality of network interfaces of the nodes such that a network topology of the connections is a tree topology. The method comprises the following steps: for all nodes in the plurality of nodes, allocating a first order to the plurality of network interfaces; determining a second order for the plurality of nodes based on the network topology and the first order of the plurality of network interfaces; generating a first composite array from the first array and the first and second integers, wherein the first integer is set according to the position of the source node or target node within the determined order; and transmitting the contents of the first composite array throughout the data network such that the node receives the first composite array through a first network interface and transmits the first composite array through a second network interface only after the sum of the second integer of the first composite array and the number of nodes contained in the branch of the tree data network topology connected to the node through the second network interface exceeds the value of the first integer of the first composite array. Iteratively selecting a second network interface from a first order of a plurality of network interfaces of a node, and wherein if the composite array is not sent over the second network interface, a second integer of the first composite array increases a number of nodes included in a branch of a tree data network topology connected to nodes over the second network interface.

In another aspect, according to various methods described in embodiments herein, a corresponding data network is contemplated, the data network comprising a plurality of nodes and a plurality of connections between the nodes, the plurality of nodes of the data network being adapted to transmit an array throughout the data network.

In another aspect, a corresponding computer readable medium is provided storing machine-interpretable instructions which, when executed by a processor, cause the processor to perform the method described in the embodiments herein.

In another aspect, a method for data transfer is performed on a physical computing system controlling an unaddressed modular electronic device. These unaddressed modular electronic devices may be dynamically connected in various geometries, for example, at one or more connection points of each modular electronic device. The modular electronic device includes communication circuitry that can be considered a "node" and utilizes the various mechanisms described herein for data transmission to transmit power, data, and combinations thereof. For example, the modular electronic device may be a luminaire or luminaire controller circuit, and utilize the transmission of a composite array during propagation of control messages across multiple nodes, which may be particularly suitable for controlling the operating characteristics of the luminaire or lighting controller circuit according to different types of graphically designed displays. As described in further detail, the data transfer method may be beneficial in establishing efficient communication and propagation of data messages through unaddressed modular devices.

More specifically, in an example embodiment, the method for data transmission is particularly useful for propagating data packets storing control messages, particularly indicative of drive currents that actuate display changes or lighting from a luminaire or luminaire controller circuit.

In an embodiment, information is sent via nodes and their connections over a data payload that includes a portion for forwarding and a portion for execution. An improved data structure with reduced overhead required for forwarding is described, thereby potentially increasing efficiency.

The method is applicable to data networks with tree topologies, which also cover star and linear topologies. Because any network that connects a first plurality of nodes by a first plurality of node-to-node connections can be made to a network that connects the same first plurality of nodes but has a second plurality of node-to-node connections that are a subset of the first plurality of connections, where the second plurality of connections have a tree topology (known in the art as a method of finding spanning trees), after the disclosed preprocessing, data can be transferred between any plurality of commonly interconnected nodes using a transfer method. Embodiments are not limited to networks of tree topology, but to various topologies, since it is assumed that preprocessing can always create spanning trees.

The order is imposed on the network. The tree topology makes it possible to clearly define the order. With a predictable ordering, a composite array can be constructed that consists of an array with data for a node in the network so that the node can receive its array without performing any other logical operation on each node other than forwarding a composite array through the ordered set of network interfaces for any given node.

In various embodiments, a non-conventional approach is described with respect to the combination of topological ordering and logical execution of partitioning or structuring a composite array such that locations within the composite array are uniquely associated to nodes in a data network without the need for additional indexing. The method is an important technical realization of a graph theory method and is used for solving the technical problem of actual physical electronic equipment.

In an embodiment, the mechanism connects the nodes via a wired communications medium, although other media are possible and other types of couplings (including indirect connections) are possible. Another advantage of wired media is the short physical length, which, used in conjunction with tree topology, means that large components can still use data communication methods that rely on very modest voltages to increase data rates and reduce unnecessary electromagnetic interference. This is not an essential part of the novel data transfer method, but it increases the utility of the method, since large physical components of the interconnected devices can be operated at suitable values of the operating variables.

In an embodiment, the mechanism is connected to a lighting device, such as a color tunable LED illuminator. In an embodiment, the mechanism connects LED illuminators that can sense touch.

The method may be applied to any data network consisting of a plurality of nodes, wherein the nodes may be sensors and actuators, wherein the plurality of nodes may consist of functionally and structurally heterogeneous devices.

In another aspect, the network may again be a network of networks.

In various other aspects, the disclosure provides corresponding systems and apparatus, as well as logical structures, e.g., sets of machine-executable coded instructions, for implementing such systems, apparatus, and methods.

In this respect, before explaining at least one embodiment in detail, it is to be understood that the embodiments are not limited in their application to the details of construction and to the arrangements of the components set forth in the following description or illustrated in the drawings. Also, it is to be understood that the phraseology and terminology employed herein is for the purpose of description and should not be regarded as limiting.

Many other features, permutations and combinations thereof are possible and contemplated in connection with the embodiments described herein.

Drawings

In the drawings, embodiments are exemplarily shown. It is to be expressly understood that the description and drawings are only for the purpose of illustration and as an aid to understanding.

Embodiments will now be described, by way of example only, with reference to the accompanying drawings, in which:

fig. 1 is a data structure diagram showing an example array encoding light output from LED luminaires of different color spaces and a digital system representation, according to some embodiments.

Fig. 2 is a diagram of an example of a single data network node, which may include light emitting diodes in some embodiments, according to some embodiments.

Fig. 3 is an illustration of a data network consisting of four LED luminaires and one controller joined in a tree topology, wherein each LED luminaire has four network interfaces and can emit a number of red, green, blue and white light, according to some embodiments.

Fig. 4 is a data structure diagram of an array illustrating an example array including a header and a payload that enables logic instructions to efficiently transfer data in a data network, according to some embodiments.

FIG. 5 is a diagram of an array representing a data network topology, according to some embodiments.

FIG. 6 is an example flow diagram of a method for detecting a layout, according to some embodiments.

FIG. 7 is an example flow diagram of a method for performing a batch update, according to some embodiments.

FIG. 8 is an example flow diagram of a method for performing a single update, according to some embodiments.

FIG. 9 is an example flow diagram of a method for performing a batch pull according to some embodiments.

Fig. 10 is a rendering of the installation of several individually controllable light panels in a kitchen ceiling, which panels may be controlled as a unit using the data communication protocol of some embodiments.

Fig. 11 is a rendering of an illustration of the installation of several individually controllable light panels on a child's bedroom wall, which panels may be controlled as a unit using the data communication protocol of some embodiments.

Fig. 12 is an exemplary diagram of embodiments showing a continuous sequence according to some embodiments.

Detailed Description

Embodiments described herein address technical issues related to communication across electronic data networks, particularly where communication between components is not addressed. Various implementations are used herein to describe a method of transferring data that provides "unaddressed data transfer," which may be implemented using hardware, software, embedded firmware, circuitry, and/or combinations thereof. The rank is introduced or associated with the node to establish the relationship, and may be stored in a data structure in the form of a tree topology. Thus, the order of the nodes is known, and logical and/or other data sets, data payloads, etc. may be transmitted between the nodes. The transmission of content provides for improved data transmission across topologies, e.g., traversal across a tree topology of unaddressed nodes.

These are three non-limiting examples of data networks that illustrate many design challenges in data networks. At the heart of addressing the above challenges is a method of packaging and transmitting data over a network. These methods may be referred to as communication protocols, or simply protocols. Examples of existing protocols include, but are not limited to, Wi-Fi, BluetoothTMEthernet and ZigbeeTM. A protocol is specified as a logical instruction on how to encode and transmit data in a data network. Some protocols include additional specifications on how to present data to other networks or devices or how to handle connections to the internet. Thus, data networks are likely to use multiple protocols that communicate some data in a given network and a discontinuous set of commands and tasks required to communicate some data to other networks. The logic instructions may be programmed in a software language that, upon execution on a processing unit such as a Central Processing Unit (CPU), microcontroller or generally an Integrated Circuit (IC), are converted into a sequence of commands. Depending on the particular application to which the data network belongs, the best manner of installation of the data network, the protocols used, and the manner in which the protocols are implemented and executed may vary.

Embodiments are described that provide a method for creating a communication protocol. Corresponding apparatuses, devices, processes and computer readable media are contemplated. A technical approach is described using configured hardware and software, providing a technical solution to provide improved electronic communication.

The protocol enables data communication at high data rates between a potentially large number of heterogeneous devices. An example data network includes a communication medium that is not wireless in part and includes a plurality of nodes connected to one another in a known or inferred abstract structure or topology, with at least one of the nodes being a network controller capable of communicating data with the local network of the node and other external networks. In some embodiments, the data network is part of a modular assembly of Light Emitting Diode (LED) lamps or luminaires that can be actuated by data communicated in the network, wherein actuation means obtaining different optical outputs from the LED lamps or luminaires. In some embodiments, the network is part of an installation of a smart home, smart office, or smart retail space, where a plurality of sensors and actuators may be coupled together and to at least one processing unit that may execute logic instructions relating to the input and output of the plurality of sensor or actuator portions of the data network.

Various exemplary embodiments are provided. Electrical, mechanical, logical, and structural changes may be made to the embodiments without departing from their spirit and scope.

Composition of nodes and control thereof

One exemplary embodiment is a method of controlling a plurality of color LED luminaires. The light output of any given LED luminaire is a mixture of light outputs from multiple LED chips. In some embodiments, the LED chips emit primarily red, green, and blue light, respectively. This may be referred to as an RGB illuminator. In some embodiments, the LED chips emit primarily red, green, blue, and white light, respectively. This may be referred to as an RGBW illuminator. In some embodiments, the LED chips all emit white light, but have varying Correlated Color Temperatures (CCTs). This may be referred to as a tunable white light illuminator. In some embodiments, all of the LED chips emit the same type of white light. This may be referred to as a dimmable luminaire. An LED is a composition of matter that acts as a semiconductor.

The intensity at which each LED in any given LED luminaire emits light is a function of the total amount of current driving the LED. Any light output of a given LED chip or any given plurality of LED chips connected in sequence corresponds to a current, provided that the operating conditions (such as, but not limited to, temperature and energy efficiency) are within the tolerance of the LED chip.

The optical output of an LED chip or a plurality of LED chips can be encoded into an array, see fig. 1. For an RGBW luminaire, four independent data elements may encode the light intensity or luminous flux that each of the four individually controllable LED chip types should emit. The plurality of LED chips in the luminaire may consist of a plurality of each LED chip type. Possible configurations may include three red LED chips, three green LED chips, three blue LED chips, and four white LED chips. In this configuration, the first element in the array may encode the light intensity or luminous flux of the uniformly acting red LED chips, the second element in the array may encode the light intensity or luminous flux of the uniformly acting red LED chips, the third element in the array may encode the light intensity or luminous flux of the uniformly acting blue LED chips, and the fourth element in the array may encode the light intensity or luminous flux of the uniformly acting white LED chips. Elements in an array of RGB, tunable white, dimmable or other luminaires may follow the same or similar convention.

In fig. 1(a), an example of an array of RGBW luminaires is given. In this embodiment, the integer 255 encodes the maximum light output that the corresponding plurality of LED chip types can generate within the operating tolerances of the luminaire, and in fig. 1(a), this value is assigned to the red and blue LED chip types. In this embodiment, zero coding is used for no light output, which is an integer that gives the type of green and white LED chips. Values between zero and 255 encode the light output between the two extremes. Thus, under this convention, the particular array shown in FIG. 1(a) will encode the magenta optical output, assuming that the two different optical outputs from the LED chips are well mixed.

The type of color space representation used for the optical output may vary between embodiments. Color spaces such as RGB, CMYK, HSL, HSV, CIE 1931 and CIEUV may be used. Fig. 1(b) is an example of data for some optical output, where colors are represented in the HSL color space. In this embodiment, the array is mapped to multiple currents as in the RGBW embodiment, however, a different mapping is used. Thus, as long as at least one of the color space representations can be converted into one or more drive currents, all color space representations can be converted into one or more drive currents.

The data in fig. 1(a) and 1(b) are represented in a 10-based digital system. In some computer applications or generally in digital computing, a binary system may be preferred. In fig. 1(c), the same data as in fig. 1(a) is shown in binary numerical representation. In some applications, a hexadecimal number system may be preferred. In fig. 1(d), the same data as in fig. 1(a) is shown in hexadecimal number representation. Other numerical representations are contemplated. Since the conversion can be made between different color spaces and between different digital representations, it is not important which number and color space representation is employed in the construction of the array.

Referring to fig. 2, for each LED luminaire there may be an embedded microprocessor or digital processor 101. As used herein, these devices are generally intended to include digital processing devices such as, but not limited to, Digital Signal Processors (DSPs), Reduced Instruction Set Computers (RISCs), general purpose (CISC) processors, microprocessors, gate arrays (e.g., FPGAs), PLDs, Reconfigurable Computer Structures (RCFs), array processors, secure microprocessors, and Application Specific Integrated Circuits (ASICs). Such a digital processor may be contained in a single monolithic IC chip, or distributed among multiple components. The embedded microprocessor may interpret an array of any coded form as electronic instructions, changing the optical output of the LED luminaire accordingly.

For each LED luminaire there may be a volatile or non-volatile memory 102. As used herein, it includes an IC or other memory device suitable for storing digital data, such as, but not limited to, ROM, PROM, EEPROM, DRAM, SDRAM, DDR/2SDRAM, EDO/FPMS, RLDRAM, SRAM, "flash" memory (e.g., NAND/NOR), and PSRAM. The memory may store an array for optical output in any code, or other type of array in any code, for a set duration, or as long as the LED luminaire is powered on, or as long as a particular portion of the memory is not covered by other arrays. The memory is connected 112 to the microprocessor 101 so that the array can be transferred between the two components.

For each LED luminaire, there may be one or more network interfaces 103. As used herein, this refers to any signal, data, or software that interfaces with a component, network, or process (e.g., without limitation, Firewire (e.g., FW400, FW800), USB (e.g., USB2), ethernet (e.g., 10/100, 10/100/1000, 10-Gig-E), MoCA, serial ATA (e.g., SATA, E-SATA, SATAII), Ultra-ATA/DMA, Coaxsys (e.g., Tvnet), radio frequency tuner (e.g., in-band or OOB, cable modem), WiFi (802.11a, b, g, n), Wi MAX (802.16), PAN (802.15), or IrDA series). One or more network interfaces receive an array from external source 104 to a given LED luminaire. Network interface connection 123 is to memory 102, microprocessor 101, or both, to enable further processing of the received array, or to enable transmission of the created or stored array to an external node through the network interface of one or more given LED luminaires.

For each LED luminaire, there may be a clock or internal clock 105. The clock is a component that regulates the speed of any computing function, which can be measured in hertz of the clock rate. The clock rate may be, but is not limited to, 1kHz, 5kHz, 2MHz, 4.77MHz, 100MHz, 5.5 GHz. The clock may be integrated with the microprocessor 101. The clock may also cause the LED luminaire to track the duration so that logic instructions such as conditions of how much time passes between an executed command and event can be programmed and executed on the microprocessor.

The LED luminaire may contain additional electronic components 106. These electronic components may be any electronic components that appropriately regulate the voltage and current to the LED chip to achieve the desired lighting output while also meeting requirements regarding energy efficiency, electrical safety, electromagnetic interference, and other optimal electrical engineering thresholds. The exact composition or method of electrically configuring or controlling the LEDs may vary. Other electronic components may contain other actuators and sensors to enable the LED luminaire to perform functions other than illumination. The exact composition of these ancillary functions may vary and their integration into the communication protocol will be described in further detail below.

The LED luminaire or network node may be connected 167 to an external or internal power supply 107 so that various components may function. The power source may be Direct Current (DC) or Alternating Current (AC) from a power grid, battery, or off-grid power source, such as a solar cell. In some implementations, the connection to the external power source 107 is done on the same medium as the connection to the external data source 104.

The LED luminaire may contain secondary optics to convert the light emitted from the LED chip before emitting the light to the ambient environment for illumination. The exact composition of the secondary optic or the method of operation of the optic may vary.

The LED luminaires or network nodes may be surrounded by a material 108 which may provide mechanical support for the components and protect them from interference, such as but not limited to physical damage, humidity, interfering radiation. The enclosure material may also be used to remove excess heat from the internal components to the ambient environment. The surrounding material may also be shaped such that it provides a functional or aesthetically advantageous form for the LED luminaire. The material may be a plastic polymer, aluminum, steel, glass, wood or any other solid material or combination thereof.

In some embodiments, the invention relates to other components and functions than LED luminaires. The embodiment in fig. 2 can describe an ambient temperature sensor with hardly any modifications, wherein also microprocessors, memories, network interfaces, clocks, additional electronic components, power supplies and protective materials with the above-described features for LED luminaires are used. The thermometer may include a thermistor that correlates temperature to a resistance, which may be part of the secondary assembly 106, by a known relationship. The value of the resistance may be converted by logic instructions executing on the microprocessor 101 into an array containing at least the temperature in units including, but not limited to, degrees fahrenheit, degrees celsius, kelvin, rankine temperature. The memory 102 enables storage of an array or other array containing at least temperature. The network interface or interfaces 103 enable the thermometer to communicate arrays with or from external targets or sources 104. The data so communicated may be embodied as an array in which one of a plurality of equivalent systems as defined above may be used. This illustrates that the configuration in fig. 2 can be applied to other sensors and actuators besides LED luminaires, provided that the secondary electronic components 106 can communicate data with the microprocessor.

There are other examples of sensors that can generate and communicate data. The numbers that can be sensed include, but are not limited to, chemical concentration of certain compounds, electric field, gravity, humidity, light intensity within a certain wavelength range, position within a certain reference frame, magnetic field, motion, direction, pressure, shear stress, sound, temperature, tension or compression, torsion, and vibration. Sensors that may be used to generate analog or digital signals of these quantities include, but are not limited to, air flow meters, audio sensors, bolometers, electricity meters, gas meters, Global Positioning System (GPS) locators, infrared sensors, microwave radiometers, accelerometers, gyroscopes or other motion detectors, potentiometers, pressure sensors, proximity or touch sensors based on capacitive sensing, static or video cameras, thermometers.

Reference is generally made to a node or network node that is part of a data network. This should be understood to be any actuator or sensor capable of communicating data or arrays through the logic instructions described in the various embodiments. For clarity, many of the description refers to LED luminaires, but the embodiments are not limited to a particular application of LED luminaires, but may be applied to interconnected electrical components, such as modular electronic devices.

Multiple connection nodes and instruction creation

In some embodiments, a plurality of LED luminaires or network nodes as described above are connected to each other by a network interface. One or more interconnected LED luminaires or network nodes are also typically connected to the controller. The controller may be a device comprising a microprocessor, a memory, a network interface, wherein at least one network interface is typically compatible with at least one network interface of at least one LED luminaire or network node. Once connected to the LED luminaire or network node, the controller may communicate the array with the LED luminaire or network node through the network interface. In some implementations, the controller may be integrated with one or more LED luminaires or other network nodes. This means that the material surrounding the components of the controller may completely or partially also surround the components of the LED luminaire or other network node. An advantage of this configuration is that the controller is not a separate physical unit for the observer, but rather the assembly may comprise visually distinct physical units. Thus, in the described embodiments, the controller is a unit that plays a particular role in the data communication and overall control of the network node, and the controller may appear as a separate component from all other network nodes, or it may appear integrated in one or more other network nodes.

In embodiments where multiple LED luminaires or network nodes are interconnected by multiple network interfaces, the array originating from the controller may reach the network interface of any LED luminaire or network node part of the network. This operation may require the LED luminaire or network node to execute logic instructions to route or otherwise facilitate the transmission of the array such that it first receives the array through one network interface and then retransmits the same or modified array through the same or a different network interface. Details of how this is achieved will be described further below.

In a network of nodes, where the nodes perform some function requiring electrical power, such as, but not limited to, generating light from one or more LED chips, electrical power may be received from adjacent network nodes through a conductive medium. In these embodiments, at least one of the network nodes is connected to an external power source. As described above, this may include, but is not limited to, the power grid, which typically provides ac at a set voltage, an off-grid power supply (e.g., a solar panel), or a battery.

In some embodiments, the network of nodes is connected to more than one external power source. This may be an advantageous implementation in case a very large number of nodes are joined and only one external power supply therefore means that a relatively large amount of current has to be transported in the entire network. The operation of the network may be performed prior to the grouping of nodes so that a given group of nodes and only the nodes of the group are powered by one of many power sources. Each node in a group must be connected to said power supply via a conductive medium or to at least one other node in a group via a conductive medium, and the group is made up of at least one node having the former properties. It is contemplated that the method of assigning nodes to groups is similar to the data communication method described below. The exact method of powering the nodes may be independent of the method of data communication in the network. Thus, in all embodiments of the invention, it may be assumed that the nodes may have access to power.

The controller may execute logic instructions that involve sending and receiving data from an external device other than the LED luminaire or network node described above. External devices include, but are not limited to, desktop computers, laptops, smart phones, routers, wearable pedometers, cardiac monitors, cameras, motion sensors, doorbells, microphones, or remote processors or computers connected to the internet, where the latter can execute logic instructions related to applications such as, but not limited to, social media assets, online weather services, real-time pricing in stock or commodity markets, e-mail, or messaging services. The communication medium may be wired, such as but not limited to Ethernet or Power Line Communication (PLC), or wireless, such as but not limited to Wi-Fi, BluetoothTMAnd ZigbeeTM. A device that connects two otherwise disjoint networks, or connects and appropriately converts arrays between two otherwise disjoint networks, may be referred to as a gateway.

The controller may contain a rules engine that associates certain inputs with certain outputs. The input may be an array or arrays, the array originating from a source external to the controller and the LED luminaire or node, or may originate within multiple LED luminaires or nodes. The output generated by the rules engine may be sent to a source external to the controller via one network interface, or may be sent to a plurality of LED luminaires or network nodes via one or another network interface. Execution of the rules engine on the controller (which may be a gateway between one and another different network) may thus associate inputs from one data network with outputs to be sent to one data network, or may associate inputs from one data network with outputs to be sent to another data network, or may associate inputs from another data network with outputs to be sent to one data network.

The rules engine may adapt to the auxiliary input and change accordingly such that a given input from one or the other network is associated with another output at the previous instance of the rules engine. The adaptation may be such that the rules engine fully or approximately meets the goal. The target may be encoded as a target function that creates a fitness value that the rules engine can reach the target. The objective function may in turn be used with a meta-rule engine such that internal parameters of the rule engine are adjusted, thereby increasing the likelihood of a better fitness value.

The rules engine and meta-rules engine may be implemented as logic instructions stored in digital memory and executed by the microprocessor of the controller. The rules engine may be implemented using methods such as, but not limited to, decision trees, support vector machines, linear discriminators, neural networks, convolutional neural networks, naive bayes classifiers, linear regression, logistic regression, or various integration methods such as, but not limited to, random forests, gradient enhancement of decision trees, bagging of decision trees. The meta-rule engine may be implemented using the same method or optimization method, such as, but not limited to, a zeroth order optimization method, such as a genetic algorithm, random walk, Metropolis-Hastings Monte Carlo method, simulated annealing, or higher order optimization methods, such as gradient descent, quasi-Newton, Levenberg-Marquardt method.

Some or all portions of the logic instructions of the rules engine and meta-rules engine may typically be stored and executed externally to the controller and LED luminaire or network node. The execution may be on a separate computer, smartphone, or computing device that receives input from the controller via the network interface, evaluates the output according to the rules engine, and then transmits the output to the controller via the network interface. In these cases, the controller may include other logic instructions to ensure that the inputs it receives are authentic and not generated by external sources that should not access the controller.

A rules engine, which is typically executed outside the controller and the LED luminaires or network nodes, has the following advantages: it may control multiple originally separate data networks. This design enables the controller to be constructed with fewer components or smaller components or less expensive components, which may increase the utility of particular embodiments. However, this design is vulnerable if the network interface with the external computing device is disabled, either temporarily or permanently. Communication with an external computing device may also increase the duration between transmission of the array and its processing to generate output. Thus, the best implementation of the controller and rules engine may depend on the use case and the cost and risk analysis for the intended application. However, with respect to the present invention, generally, the exact location (where the rules engine is evaluated) with respect to the LED luminaires or network nodes is not important and any variations listed above can be envisaged. Thus, any description of the controller and commands executed on the controller may generally refer to one or more local or remote devices, or some combination of some devices local and some remote, with respect to a plurality of LED luminaires or network nodes.

The rules engine may be instructed to create an array of optical outputs for the LED luminaire at any given instance in time, see fig. 1. In embodiments comprising a plurality of LED luminaires, a plurality of arrays is thus created, which are intended to indicate all specific subsets or parts of individual LED luminaires for which optical output is to be generated. The plurality of arrays may be generated by another source, such as manually creating the arrays through a user interface such as a command line, touch screen, or through voice instructions. The method of creating the plurality of arrays and the manner in which the plurality of data arrive at the controller are not critical to the present invention and any of the above methods or other methods may be used.

Thus, the method to be described in detail below relates to how a given plurality of arrays received by, stored in or generated by the controller are typically transmitted from the controller to the LED luminaire or network node. The method to be described also relates to how a given plurality of arrays, typically stored or generated by a plurality of LED luminaires or network nodes, are transmitted to the controller. The logic instructions that the LED luminaire executes to convert a given array into a light output, or that the network node typically executes to convert a given array into an altered state, may be as described above, or by any other method. The network and transport protocol may be independent of the way the array is generated and the way the array is interpreted by the logical instructions of a given type of network node. This is an example of a hierarchical design principle, which is often considered when dealing with common and proprietary communication protocols.

Referring to the exemplary embodiment of the LED assembly in fig. 3, there are four interconnected LED luminaires 200 of the same type, a plurality of which are coupled to a controller 211. Each LED luminaire can be independently set with respect to the light fluxes from the red, green, blue and white LED chip types, where these fluxes are encoded as an array 201. Thus, the array may be different from one LED illuminator to another at any time.

Each LED luminaire in the exemplary embodiment of fig. 3 has four different network interfaces 103, which may be connected 104 to another LED luminaire, a controller or be unoccupied. The network interface 103 is within a given LED luminaire, which in a particular embodiment is uniquely identified by identifiers a, b, c and d. Other embodiments may make identifiable a network interface within a given LED luminaire. In some embodiments, each LED luminaire 200 that is part of the interconnection component is uniquely associated with an identifier 202 by roman numerals I, II, III and IV in certain embodiments. Different means may also be employed to identify the LED luminaire. The identifier of the LED luminaire or the network interface may be static during the lifetime of the product or may be altered in some way during the lifetime of the product. In various embodiments, the first order provided herein refers to the order of network interfaces on any node feature. A dictionary ordering is provided, namely a > b > c > d, which is true in the particular example of fig. 3. However, other orderings are contemplated, including orderings established by clockwise and counterclockwise traversal, as they are identical to the dictionary order portion in certain examples in various embodiments.

The first order may be considered a "first order relationship," which is the order in which the network interfaces of any given node are located. This means that the first order makes the following statements: "select first network interface" or "select next network interface" is explicit, consistent with any particular data network installation. As described below, the second rank may be established based on the first rank (e.g., with respect to fig. 6).

The means of connecting 104 LED luminaires can be short wires or rigid connectors, which enable communication of the array. Examples of such methods are listed in the paragraphs above. In the case of wires or rigid connectors, the manner of connection of the LED luminaires reflects their relative spatial arrangement in the installation space. The connection may be made by a long and flexible wire or wirelessly. Examples of such methods are listed in the paragraphs above. In these cases, the connections 104 in fig. 3 do not necessarily reflect the relative spatial arrangement of the LED luminaire in its installation space.

Data network and topology

The connection 104 in fig. 3 may be understood as an abstract representation of the available paths that the array is transmitted between LED luminaires or between LED luminaires and controllers over their respective network interfaces, regardless of their physical representation or the physical characteristics of the communication medium. Under this abstract understanding, a plurality of LED luminaires or generally network nodes, and a plurality of connections comprise a data network.

The qualitative geometrical aspect of multiple node-to-node connections in a data network that is invariant under certain successive transitions is called the network topology, topology for short. The topology of the exemplary data network in fig. 3 is fully defined by an exhaustive enumeration of the connections 104 between the network interfaces 103: LED luminaire I is connected to the controller and to LED luminaires II and III, LED luminaire III is connected to LED luminaire IV. The network topology may be represented as a mathematical graph. The network topology representation may be embodied in an array, as discussed further below.

Several types of network topologies have been described in the literature of graph theory. These include:

1. a linear topology. Each node in the network is connected to two other nodes, except for two nodes that are only connected to one other node. This can be seen as a line where an array to be transmitted from one node to another has only one shortest path, which may involve intermediate nodes. In the case of only two nodes in the network, a particular linear topology may be referred to as a point-to-point topology.

2. A ring topology. Each node in the network is connected to two other nodes. This topology means that the nodes are connected in a ring fashion, so an array to be transmitted from any one node to any other has two possible paths, clockwise or counter-clockwise, both of which may involve intermediate nodes.

3. A bus topology. Each node is connected to a common network backbone, which is the communication medium through which the arrays are transmitted. This topology differs from the first two in that an array can be sent between any two nodes without involving other nodes. Since all transmissions of arrays are done through the network backbone, if multiple arrays are sent simultaneously, the resource may be contended for.

4. A star topology. Each node is connected to only one other node except one node connected to all other nodes. This topology means that there is a central node through which all packets must be transmitted without requiring all other nodes to assist in the transmission of the array. In a typical embodiment, the central node is a network controller.

5. A tree topology. The nodes are connected in a hierarchy in which a given node is connected at each level of the hierarchy to one node above the hierarchy itself, to zero or more nodes below itself in the hierarchy, and to zero nodes in the same level of the hierarchy. Thus, the tree hierarchy contains a root node, which may be a controller. There is only one shortest path for a packet to travel to and from nodes closer to the root (including the root itself) or nodes further from the root. It can be shown that the tree topology contains fewer connections from one node to a node than the number of nodes in the network. In the special case of a tree topology, where each level contains only one node, a linear topology will be obtained. In the special case of a tree topology (only one layer below the root node) a star topology will be obtained.

6. Fully connected topology. Each node is connected to all other nodes. The transmission of data packets from one node to any other node is conceptually simple, since it can be guaranteed that there is a direct connection and that no other node is required as an intermediate node.

7. Mesh topology. Each node may be connected to one, all, or an intermediate number of other nodes in the network. This is the least constrained topology. A network of this topology may contain some nodes that are more connected than others, but not all, so arrays may be transferred between nodes involving multiple others. There may be multiple transmission paths including loops where the array may return to its source. The few constraints mean that there are many special cases and therefore more complex logic instructions than most other network topologies are required to handle the transfer of arrays.

8. A hybrid topology. This topology is a combination of other topologies, so that the network can be divided completely into interconnected subnetworks, each having a topology of one of the above categories, but not necessarily the same category.

Thus, the network in fig. 3 is a tree topology, where the controller is the root node and the other nodes are ordered in three levels below the root node. The LED luminaire with identifier I is one level higher in the hierarchy than the LED luminaires with identifiers II and III. The LED luminaire with identifier IIV is lower in the hierarchy than all other LED luminaires in turn and is connected to only one LED luminaire above itself, i.e. the LED luminaire with identifier III.

Since a data network is built by the concatenation of multiple devices, the attributes of the data network topology may be advantageous for applications with certain desired capabilities with respect to operational variables (e.g., without limitation, data transfer speed, power consumption, ease of installation), and may be disadvantageous for applications with certain desired capabilities with respect to operational variables (e.g., without limitation, data transfer speed, power consumption, ease of installation). A tree topology may be used to connect multiple devices through multiple node-to-node connections, where each connection is relatively short in physical length, but where multiple devices have larger physically sized components once joined.

A relatively short physical length connection provides the advantage of reduced signal loss or interference due to resistance or other processes. Thus, one device or node of a plurality of devices or nodes may transmit a signal over a given medium to a neighboring device or node, where relatively small differences in the physical signal represent a particular symbol in a given data encoding. In some embodiments, the difference between two symbols is encoded as a voltage difference of the signal. The shorter physical length of the connection may thus enable a relatively small difference between the two voltages, or in other words, the voltage swing may be relatively small. This in turn may enable higher data rates to be transmitted throughout the data network. Another benefit of the small voltage swing and the short physical length of the connection is that unnecessary electromagnetic interference can be reduced more easily without the use of complex materials or electrical engineering. Unwanted electromagnetic interference is regulated on a global scale.

These features imply that physically large components of multiple devices can be constructed by joining the devices through physically short connections in a nested tree topology. Thus, despite the large size of the entire assembly, the advantageous operating variables as described above can be obtained. Therefore, a method of efficiently handling data transmission in a data network of an entire tree topology is useful and may enable many industrial-related applications.

Main method for data transmission

One method of transmitting an array is through a network broadcast. Network broadcast is defined as the controller sending the same array to every other node in the network. The logic instructions to perform the broadcast in the data network of the exemplary embodiment of fig. 3 are as follows.

First, an array is transmitted from the controller 211 through the network interface 103 of the controller 211. The LED luminaire with identifier I is programmed to monitor activity on each of its network interfaces at a set frequency. This process may be referred to as polling and is controlled by logic instructions executed by the microprocessor. When an array is found at its network interface a, the entire array will be retrieved and put into memory. In this case, the node continues to transmit the array through b, c, and d to each network interface from which it was not obtained. The other LED luminaires are programmed in the same way as the first LED luminaire, so they will also retrieve the array through one of their respective network interfaces after a set latency time and continue transmitting through each of their other network interfaces. These steps continue recursively until all nodes of the data network have received the array. Because the network is a tree topology, any given node in the network can only receive packets in one way. Due to the tree topology property: any other node connected to a network interface other than the network interface from which the given node receives the array is strictly lower in the tree hierarchy than the given node. In the described steps, each LED luminaire is capable of receiving and forwarding an array.

In some embodiments, if the network interface receives an array, it can issue a network interrupt request to the microprocessor. The request instructs the microprocessor to seize lower priority ongoing activity and initiate execution of the logic instruction routine. The advantage of the interrupt approach over the polling approach is that the microprocessor only cooperates with the network interface if an array is present. The interrupt method may have the following disadvantages: additional logic instructions must be provided on the microprocessor and possibly the network interface so that interrupts are handled correctly without disrupting other ongoing processes. As for the ability to receive and forward arrays through LED luminaires, a network interrupt method or a polling method may be used.

In order to send an array to a particular LED luminaire in the network by an instruction, e.g. to adjust its red, green, blue and white optical outputs, another set of logic instructions may be executed. The method should be applicable to any tree topology, and therefore it cannot be assumed that the controller generating the array is in direct contact with a particular node. For purposes of illustration, the instructions to be sent are for the LED luminaire in fig. 3 with identifier III to set the red, green, blue and white optical outputs to their maximum values of 255. The logic instructions are as follows.

First, the controller creates an array as shown in fig. 4 (a). It consists of a payload 1001 and a header 1002. The payload 1001 and header 1002 are arrays encoded in some digital system such as, but not limited to, binary, hexadecimal, or 10-radix systems. In an exemplary embodiment, payload 1001 is an array similar to or the same as the array in FIG. 1, and has the same attributes as described above. It is an array of payloads that, once received by the intended LED luminaire, generate instructions for optical output, as described above. The purpose of the array in the header may be partially or wholly for proper transmission, as described below.

Next, the array of fig. 4(a) is broadcast through the network by the above-described series of logical instructions. Third, in addition to the logic instructions for broadcasting executed by the microprocessor of each LED luminaire, logic instructions are also executed in which an array in the header is compared to an array encoding the identifier of a given LED luminaire. If the two arrays in the comparison are not equal, no other instructions are executed except for the instruction required for broadcasting. If the two arrays in the comparison are equal, then a unique set of logical instructions is executed, which may include at least the following steps: the payload array is retrieved and input into the logic program, which proceeds to set the optical output illuminator of the LED accordingly. In the steps described, each LED luminaire is capable of receiving, forwarding and consuming a given array.

To instruct the two LED luminaires in the exemplary embodiment of fig. 3 to change light output, a set of logic instructions will execute two of the above commands in turn. Another option for the controller is to append the second array, payload 1005 and header 1006, to the first array, payload 1003 and header 1004, and broadcast as a single but larger array, see fig. 4 (b). The logic instructions to be executed in this case may be as follows.

First, the controller creates an array in FIG. 4 (b). Second, the array is broadcast as described above. Third, the microprocessor of each LED luminaire or network node performs a comparison of the array in the first header 1004 with the array containing the given node identifier. If there is a match, the component of the array following the first header is retrieved, which has a known size and contains the associated payload 1003, and is used to set the optical output. If there is no match, the second header 1006 is compared to the array containing the given node identifier. If there is a match, the component of the array following the second header, which has a known size and contains the associated payload 1005, is retrieved and used to set the optical output.

In order to reduce the required number of instructions to be executed on the microprocessor of the data network, the third step of the above method may be modified as follows. For a given LED luminaire or network node, if there is a match in the comparison of the array in the first or second header with the node identifier, the associated payload is retrieved as described above. However, in addition, the array is compiled such that the matching header and its associated payload are removed from the array forwarded to other network interfaces. If the data packet after removal is empty, no content is sent to the network interface. The result of this addition of logic instructions is that there is less likelihood that a logic instruction will have to be executed when sending the array to the data network than zero. For example, an LED luminaire with identifier IV will not perform a comparison involving the array of headers 1004 containing identifier III, since that part of the original array from the controller will be removed by the LED luminaire above the tree topology. In the steps described, each LED luminaire is capable of receiving, forwarding, consuming and editing a given array.

So far, methods have been described such that the entire array is stored in memory upon receipt through a network interface. Only after the entire array is obtained, logic instructions are executed, such as, but not limited to, a comparison of arrays in the header, instructions to adjust the light output of the LED chip, and instructions to forward arrays to other network interfaces. All networks and transmission methods may be modified to begin transmitting bits of an array before the array is completely received. This may be referred to as cut-through switching. Exemplary embodiments of the steps involved are as follows.

First, the network interface of a given node begins receiving individual elements or bits of an incoming array. Second, once the first header has been completely received, the microprocessor performs a comparison of the array in the first header with the node identifier. Third, if there is a match, the array payload is stored in memory and then used to set the optical output. The rest of the incoming array (if any) may be switched directly to the other network interface because the associated data packet payload has already been consumed. In this embodiment, the microprocessor may be further programmed to remove a portion of the receive array containing the consumed data packet payload. If not, the logic instructions are to switch the array to be forwarded to the other network interface until the next header is received, and then compare again.

Other variants of cut-through switching are conceivable, in which the switching of sending the array to the other network interface starts immediately after the data is received. Arrays may be transmitted more quickly over the network. Another variant may receive and store the first part of the array, i.e. the header and payload, compare before forwarding any content and consume these parts of the entire array if appropriate. Other methods may be considered that direct some partial processing of the input array by logical commands executing on the microprocessor and then transfer some arrays to other network interfaces.

The advantage of cut-through switching is that latency can be reduced, especially for very long arrays transmitted in very large data networks. In larger data networks that receive longer data packets with instructions for many nodes, the likelihood that a particular array element or bit processed at any given node will be consumed by that node is reduced. Therefore, it is effective to reduce the number of logical instructions executed specifically for forwarding an array. Another advantage is that the requirement on how much memory is available per node can be reduced. Components with bulk memory that bulk store arrays may be more expensive than components with smaller memory that store arrays. Thus, reduced material costs may improve the utility of the product and data network.

In the above embodiments, the controller will send instructions to the node or LED luminaire to change its light output, which is defined as an array for red, green, blue and white luminous fluxes or intensities. In some embodiments, instead the controller is instructed to determine the current optical output of the one or more LED luminaires, in other words, the controller needs to receive an array from the data network. In an exemplary embodiment, the array encoding the current light output may be the same as in fig. 4 (b). Logic instructions on the controller interpret the array as information about the current light output, rather than instructions to alter the light output.

The method of accomplishing this task through a data network may be accomplished in a number of different ways. Exemplary embodiments are given next.

In some embodiments, each node or LED luminaire is programmed to determine the value of its light output with a set frequency and store it as an array with a particular color space and numerical system representation such as that shown in fig. 1. The microprocessor retrieves an array of encoded node identifiers from the memory. These two arrays are appended to a larger array as shown in fig. 4 (a). The array is then forwarded to all network interfaces of a given node or LED luminaire. The tree topology means that one of these network interfaces will be connected to nodes higher in the hierarchy or LED luminaires and thus closer to the controller.

When another node receives the array thus generated through one of its network interfaces, it processes it through one of the methods described above. This means that the node forwards at least the array to its other network interfaces. Since the header does not match the identifier of any other node, the array will not be consumed and may be forwarded when the array is received. The array is closer to the root because the tree topology ensures that one of the network interfaces is connected to a node higher in the network hierarchy and therefore closer to the root. The forwarding process will continue in a recursive manner until the controller receives the array through its network interface, and once the array reaches the end node in the network, i.e., the end node that is only connected to the higher node in the hierarchy (in which case the array will not be forwarded any more), the forwarding process will continue. The memory and microprocessor of the controller may be instructed to process the received data packets to generate again new instructions, which are typically sent to the network of LED luminaires or nodes, or to an external target through another network interface of the controller.

In other embodiments, the controller initiates creation of an array at the node. The controller may generate an array as shown in fig. 4 (c). As in the previous embodiment, the array consists of a header 1102 including a node identifier 1201. In addition, the header contains a portion that can be understood as a message type identifier 1202. The identifier is a key of a dictionary that maps a given key value to an interpretation of the payload array 1101. In fig. 4(c), the message type identifier is 1, and in the dictionary, this integer maps to a set of logical instructions that, once executed, interpret the payload 1101 as an array generating the current optical output or a command not generating such an array. The logic instructions may be as follows.

The network interface of a given node receives an array. The header is divided into two parts and the part containing the array with node identifiers 1201 is compared with the node identifier of a given node. If not, the array is forwarded by any method (e.g., the methods described above). A cut-through handover may be used. If there is a match, the header portion containing the array with the message type identifier 1202 is compared to the key of the dictionary. If the array or value is equal to the array or value encoded for reporting the current light output, the payload is retrieved and interpreted 1101. In the embodiment of fig. 4(c), the payload is a boolean value, but other representations of instructions may be used. If an array or value of the payload generates the appropriate comparison, the above logical instructions are executed and an array, such as the array in FIG. 4(a), is created and forwarded as described above.

In some embodiments, the message type identifier is not associated with a payload as in fig. 4 (c). The logical instructions may cause the presence of a given message type identifier in the received array to be associated with a certain set of logical instructions. The absence of the message type identifier in the received array is associated with not executing the same set of logical instructions. In these logical instructions, the payload of FIG. 4(c) is implicit and explicit coding can be avoided.

In the described steps of the last embodiment, each LED luminaire or node is generally capable of receiving, forwarding, consuming, editing and creating an array.

In some embodiments, the data network may both report the current light output or other status of the nodes that are typically encoded as arrays and may indicate changes in the light output or other status of the nodes that are typically encoded as arrays. A combination of embodiments may require that a message type identifier 1204 be assigned to the instruction to adjust the light output, see e.g. fig. 4 (d). The reason why this is not required in earlier embodiments is that the payload has only one meaning.

In some embodiments, additional message type identifiers are used to implement additional associations of logical instruction sets and payload arrays. A data network in which nodes may be actuated in other ways than by adjusting their optical output is an example. A data network that processes and transmits the light output and the sensed ambient temperature is another example. Other exemplary embodiments are described below, and the embodiments so far are intended to illustrate the logical concept of array transmission, rather than to provide an exhaustive list of applications.

In data network implementations where nodes can create messages and receive, forward, consume, and edit, additional logic instructions can be added to support acknowledgement. In data networks where the communication medium, network interface or some other component or function does not guarantee fault-free operation each time, each node may be programmed to confirm that it is updating its optical output or other state after receiving and consuming a payload for that purpose. In such embodiments, the controller may be programmed to execute a set of logic instructions based on a condition as to whether an acknowledgement is received within a certain time threshold. Time may be measured using an internal clock.

The node creates to confirm that it has updated the array defining its state (e.g., light output), as shown in fig. 4 (c). The difference from the previous is that the message type indicator 1202 in the header 1102 should correspond to a confirmation in a dictionary that is at least available to the controller. The generated array for validation may be as shown in fig. 4 (d). The difference from the previous is that the message type indicator 1204 in the header 1104 should correspond to a confirmation in a dictionary that is at least available to the controller. Other arrays are contemplated to define the acknowledgement.

Upon failure to receive the appropriate validation array within the specified time, the controller may recreate the original array for the instruction, or retrieve it from memory if available, and then forward again through the appropriate network interface. The controller may continue to do so until an acknowledgement is received or the number of attempts exceeds a set value (whichever occurs first).

In the event that an array is not used correctly due to the communication medium being unreliable due to randomly fluctuating interference or noise, repeated attempts may increase the likelihood of receiving at least one array. Wireless connections may rely on radio, light, or audio signals to propagate in an environmental space, and such signals may be interfered with, extinguished, or otherwise modified by objects in the space or other signals propagating through the same space. It is expected that wired connections that can rely on electrical conduction or optical signals through optical fibers will be less disturbed. However, noise may be caused by other conductive parts of the data network or individual devices that couple or interfere with the conductors, thereby introducing some degree of noise in a given communication medium. The increase in signal amplitude is one way to overcome the signal loss due to interference noise. This is an approach that exceeds a threshold and may generate electromagnetic radiation outside of a given device that may affect the performance of other devices in the vicinity, including but not limited to audio distortion of sound generated by a speaker. Other noise sources may be considered, but regardless of the noise source, repeated transmissions increase the likelihood of receiving an array.

If the controller does not receive an acknowledgement after repeated attempts, the controller may be programmed under this condition to generate an error message that will be sent over a separate network interface to alert the user or machine of the message delivery failure. The controller may be programmed to update its internal array representation of the data network under this condition, in effect assuming that failure to receive an acknowledgement is an indication that the network topology has changed.

Other applications of the data network are contemplated in which validation is required to select between sets of logical instructions.

Some communication media may partially reflect the signals encoding the array. As described above, an object in the space in which the wireless signal is transmitted may modify the signal such that it is reflected and may have a reduced amplitude. In wired communication media, reflections may occur at interfaces where impedances do not match. In embodiments where reflections or high probabilities of amplitudes much lower than the original signal occur infrequently, no additional logic instructions are required. In a false implementation, each node may execute a logic instruction to ensure that a second array identical to the first array is discarded if the second data is received within a certain threshold duration of the first array. Alternatively, an amplitude threshold may be introduced that reduces the risk of accepting the same array twice due to a defect in the communication medium. Other methods of dealing with this problem may be considered.

Embodiments thus far have been described with an array containing at least a payload, and in some cases a header, which is in turn described as containing a node identifier or a message type identifier. Using these components of the array, various exemplary embodiments of methods for transferring data and executing logic instructions have been described. In some embodiments, the header will contain additional arrays that may be used for purposes other than efficient transmission of data in the network. Examples of other arrays include, but are not limited to: a point counter that increments by some integer each time a data packet is forwarded; a checksum field, the value usable to determine whether the array is corrupted upon transmission; a version identifier, which is a value that enables a node to ensure that the version of the logical instruction that generated the array is compatible with the version of the logical instruction that is consuming or forwarding the array; a header length specification, which is a value that specifies how long an array containing a header has; message priority identifiers that rank the priorities of the payloads such that messages of higher priority are processed before arrays of lower priority are processed when contention exists for network interfaces; a data source identifier that specifies which node generated the array; a security type identifier which the node can use if the payload is encrypted and the security type enables it to decrypt the message in an appropriate way; an unspecified array, which may be part of the header, but may not contain any data to be interpreted, but instead is to enable future functional or custom functional implementations without changing the overall size of the array of headers. Headers containing other arrays do not alter important aspects of the transmission method described above. Thus, the exemplary embodiments should be understood as describing what the smallest array may be such that the transfer is performed, rather than as a complete specification of what the array may contain.

Data transmission method based on topology

The embodiments described so far have implicitly used a tree topology. When receiving and forwarding messages, the array is never forwarded over the network interface that receives the data packet. In a tree topology, this may ensure that data packets only move down or up in the node hierarchy, without being propagated bi-directionally. The relationship also implies that an array can only be received via one path at any given node. Due to the topology and logic conventions described, the event that a node receives an array forwarded by the controller over two different paths at two different times is eliminated. Thus, no logic instructions are required on each node to determine whether a received and potentially consumable array has been received and is potentially consumed.

In some embodiments, a tree topology may be explicitly used to make the transmission of arrays in the network more efficient. These embodiments of the method require that the network topology be represented as an array, which in some embodiments may be used by logic instructions executing on the controller, and in some embodiments may be used by logic instructions executing on the controller and on one or more network nodes. These embodiments of the method require a method to create the representation of the network topology as an array. These two aspects will be described in detail next.

An array having ordered pairs of node identifiers may be used to embody the representation of the tree topology as an array. The embodiment of the data network shown in fig. 3 under this constraint generates an array as shown in fig. 5 (a). The first identifier in the pair represents the higher node in the tree, with the controller identifier at the top being C. In this representation, nodes II and IV are easily identified as end nodes without any connection to the lower nodes in the hierarchy, since identifiers II and IV only appear as the second identifier in the pair list.

Alternatively, an array of node identifiers and network interface identifiers associated with another node identifier may be used. The embodiment of the data network shown in fig. 3 under this constraint generates an array as shown in fig. 5 (b). In addition to the previous representation, the representation also includes information about the identity of the network interface that is forming any given node-to-node connection. Since the network interface may be unoccupied, the array must be able to indicate that the empty set symbol has been arbitrarily selected in FIG. 5 (b).

In some embodiments, the unoccupied network interfaces are not explicitly encoded in an array, but rather the corresponding pairs in fig. 5(b) are omitted. The logic instructions in these embodiments may be structured such that when executed there is no pairing, it is inferred that the associated network interface is unoccupied.

In some embodiments, the network interface identifiers are not explicitly encoded in an array, but rather their order is a known constant in any logical instruction. For the data network in fig. 3, the order of the network interfaces may be arranged in a lexicographic order, i.e. a before b, b before c, c before d. Other orders may be considered. By this convention, an array such as that shown in FIG. 5(c) may be obtained.

Alternatively, an array of connections may be used that only includes connections to lower nodes in the tree hierarchy. The array in fig. 5(b) for example redundantly represents that the node with identifier I is connected to the node with identifier II. This redundancy will be removed by the convention of listing only connections to lower nodes. By this convention, an array such as that shown in FIG. 5(d) may be obtained.

Alternatively, an array of connections may be used that includes only the number of nodes lower in the tree hierarchy and which make the network interface through which they connect. The array in fig. 5(e) is an example. It does not specify a node identifier but rather represents a topological connection of the ordered network interfaces. A variation of the array implementation in fig. 5(e) may discard the node identifier and represent only the topology of unspecified nodes and their node-to-node connections via the ordered network interface. The array in fig. 5(f) is an example.

In some embodiments, arrays encode trees by a combination of the above conventions. Other embodiments of tree representations in arrays may be considered in which multiple node-to-node connections are traversed and their order as an ordered network interface. This includes, but is not limited to, methods in graph theory that typically use adjacency matrices and adjacency lists as algebraic representations of graphs, especially trees.

A complete array embodying the tree topology representation may be stored in the memory of the controller. The complete array may be stored in a memory of a node in the data network or a subset thereof. The array may also be stored in part in a memory of a node in the data network. The arrays in fig. 5(b), 5(c) and 5(e) are comprised of a plurality of arrays, where each of these arrays may be stored in the memory of the associated node of a given array. In some embodiments, a node has access only to arrays that represent connections only to neighboring nodes. In the data network of fig. 3 and the transmission methods described so far, the node with identifier II does not participate in any transmission of the array between nodes with identifiers I and III or III and IV. Thus, the array stored on any given node may be a subset of the full tree representation, thus reducing the required memory required and reducing the number of logical instructions that must be executed to transfer data.

A necessary characteristic of any array implementation of this representation is that it enables the logic instructions to infer the topology of the network, including how to arrange the node-to-node connections on the ordered network interfaces. Some array embodiments enable logic instructions to infer additional information about a data network. Fig. 5 illustrates an exemplary array implementation and should not be construed as an exhaustive enumeration.

For example, but not limiting of, the method of constructing an array of topologies of the above embodiments may be as follows. The controller generates an array containing the message type identifier. The array may contain other data such as, but not limited to, boolean values. The message type identifier maps to a set of logical instructions. This set may be referred to as a layout detection instruction. The message type identifier may be an integer in a binary number system, an integer in a 10-base system, an ASCII character, a plurality of ASCII characters.

The controller broadcasts the array it creates to the data network by the broadcast method described above. When a first node in the data network receives an array through one of its network interfaces, it will interpret the message type identifier and execute the layout detection logic instructions. For purposes of illustration, an array with a message type identifier may be referred to as L. Having generally described, the layout detection logic instructions are first described with respect to the exemplary embodiment of FIG. 3.

The first node selects the first network interface among the ordered set of network interfaces, rather than the network interface through which it received array L. The first node continues to forward array L through the network interface. Refer to fig. 3, network interface b. The first node starts an internal clock.

The second node receives array L and executes the same set of logical instructions as the first node, i.e. the second node attempts to forward array L through its first network interface. Refer to fig. 3, network interface a. Since no node is connected to the network interface, the logic instructions executed on the second node will create a second array, which embodies the fact that the second node has no other nodes attached through its first network interface. For purposes of illustration, the second array may be referred to as D.

The logic instructions executed on the second node continue and array L is forwarded through its second network interface. Refer to fig. 3, network interface b. Also, since no node is connected to the network interface, the logic instructions executed on the second node edit array D, thereby reflecting the fact that the second node has no other nodes attached through its second network interface. Editing may be performed by appending one array to another.

Execution of the logic instructions continues in this manner until the ordered set of network interfaces has been fully traversed. In the exemplary embodiment of fig. 3, this means that the array D created by the second node embodies the fact that the second node is not connected to other nodes, in other words, the second node is a terminal node in the tree topology. The logical instruction executed on the second node ends by forwarding array D up (i.e., through network interface D) in a tree hierarchy.

The first node receives array D from the second node and the internal clock may be stopped. The logic instructions that were executed on the first node continue and a new array is created as was done for the second node. The array may be created to embody the following facts: there is only one other node lower in the tree hierarchy attached through the first network interface of the first node. The array may be created to embody the precise nature of the network interface of the second node. In either case, the array of the first node is created by concatenating all, part, or an aggregated version of the received array D to the array of the first node.

Execution of the logic instructions of the first node occurs in a manner consistent with execution of the logic instructions of the second node, wherein the array L is forwarded through the second network interface of the first node. Refer to fig. 3, network interface c. With continued reference to FIG. 3, the third node receives an array that initiates execution of logical instructions consistent with the execution of logical instructions of the first two nodes. In short, this means that the third node both forwards array L to the fourth node and determines the unoccupied status of network interfaces c and D and presents these entities in array D, which is then forwarded back to the tree hierarchy, i.e. via network interface a, to the first node.

Referring to the flow chart in fig. 6, the logic instructions for the generic data network proceed recursively. The controller initiates 601 creation of an array L, which is forwarded 602 to the first node. Array L is received by a node in the network, and after having been read, the logic instructions 603 are executed so as to both initialize the new array D and begin iterating over the ordered set of network interfaces of the node. If at a particular step of the iteration a given network interface is connected to another node, the given node starts an internal clock 604 and forwards 605 the array L over the given network interface. At this point, the given node suspends further execution. Instead, the other node receives array L, via step 605, to begin executing the logical instruction. In other words, step 603 is taken. Thus, step 605 means moving further down in the recursion of the tree of interconnected nodes.

If a given network interface at a given iteration step on the ordered set of network interfaces of a given node is unoccupied, a different subset of the logic instructions is executed. Array D is edited so that information about the unoccupied given network interface is recorded (606). The logic instructions then determine if this is the last network interface involved in the iteration started in step 603. If not, the iteration proceeds to the next network interface 607. One of the two subsets of the above logical instructions (i.e., 604 and 605 or 606) is selected based on whether a given network interface is occupied. If it is not occupied, it is moved further down in the recursion of the interconnected node tree.

In the event that the iterations on the ordered set of network interfaces for a given node have been exhausted, array D is forwarded through one network interface of the given node leading to the node higher in tree hierarchy 608. Therefore, one step is moved up in the recursion of the interconnected node tree. If the node from which array D is received is a controller, then array D contains the complete specification of the data network topology. Execution then ends. If the node from which array D was received is not a controller, then the internal clock of the given node, which started when the recursion proceeded downward (604), is stopped. In some embodiments, if the clock exceeds a set limit at any time, a stop and error is performed 609.

A node receiving array D from one of its network interfaces to nodes lower in the tree hierarchy edits 610 its current version of the layout array so that the information contained in the received array is included in some complete, partial, or aggregate manner. Thereby obtaining an updated version of tuple D for the given node. The logic instructions then determine for the given node whether this is the last network interface involved in the iteration started in step 603. If not, the iteration proceeds to the next network interface 607 and executes the logic instructions already described.

The updated version of the tuple includes an update order, a second order, which is similarly the order of the nodes of any given data network relative to the first order. As noted herein in various embodiments, the second order is established based on two other attributes of the data network: an exact tree topology of the data network, and a first order of nodes for constructing the data network.

The transmission of the composite array according to various embodiments utilizes the determined second order for efficient transmission, as described in detail later in the various methods illustrated in fig. 7, 8 and 9.

Due to the tree topology, these steps determine the properties of the network interface by traversing a given branch as deeply as possible until the terminal node is reached, and then forward the array containing the information determined so far back up the tree. The controller is guaranteed to receive an array having a specification of the complete topology of the data network. The described method shares certain functionality with depth-first search algorithms for maze solving and other applications.

The layout detection method may be modified as to how the network interface is iterated. As mentioned above, the methods described so far result in traversing the network as deep as possible through the first network interface before traversing a portion of the network connected through the second network interface. Some embodiments may instead execute logical instructions in which a network is traversed to a further level only on a network interface at each iteration, and an iteration is started through a network interface of a second node connected to a first node only after the entire ordered set of network interfaces of the first node is exhausted by the iteration. Because of the tree topology, these steps determine the attributes of the network interface by traversing the network interface of a given node as wide as possible until all of its interfaces have been characterized, and then further add an array containing the information determined so far to the nodes below the given node in the tree hierarchy. The controller is guaranteed to receive an array having a specification of the complete topology of the data network. The array implementation may be different from the array implementation obtained by the method described above and shown in fig. 6. However, both embodiments provide a complete and geometrically equivalent representation of the network. The described method has some of the same functionality as the breadth first search algorithm used in maze solving and other applications.

In some embodiments, a combination of depth-first and breadth-first search methods may be used. A subset of nodes may use one method while another subset of nodes may use another method. The selection of methods may be encoded as arrays or integers and then stored in memory. The method used is important how the layout array is interpreted in the logic instructions of the transmission method to be described below.

In the layout detection method shown in FIG. 6 described above, only one node is executing a logical instruction at any given time. A node that has forwarded array L to another node 605 will halt its execution while waiting to receive array D from the same network interface 608. In some embodiments, a given node continues to perform forwarding of array L to its other network interface while the node below it in the tree hierarchy is executing its logical instructions, as described above. This embodiment may allow the layout array to be returned to the controller more quickly. In these embodiments, the execution of the logic instructions is performed in parallel, rather than sequentially, on multiple microprocessors in a data network. Parallel processes may create other conditions to handle, such as how multiple events are synchronized because their respective output arrays must be linked together. Thus, these embodiments of logic instructions may result in additional complexity of execution such that events such as, but not limited to, receiving arrays from two or more network interfaces simultaneously are handled. There are some methods to handle these types of conditions that can be organized under concurrent control names. Methods that adequately address the additional complexity of concurrent processes may be used in embodiments.

In the method for layout detection described above and shown in fig. 6, the layout is only related to the topology of the plurality of nodes, and in other cases, each node is considered to be the same. In some embodiments, the data networks may include functionally distinct nodes. In these embodiments, the device type identifier may also be retrieved during the performance of layout detection. At step 603 of FIG. 6, the layout detection array is initialized by the given node to be subsequently populated, and once the upward recursion 608 reaches the controller, a fully populated array is obtained. Part of the initialization may be to include a node type identifier in the array. The node type identifier may be embodied as an array stored in a memory of the respective device. The node type identifier is thus obtained by the controller and its location in the network topology is fully defined. Thus, the rules engine or other set of logic instructions may include information about the types of nodes available, which in turn may be used to control the types of arrays transmitted to these devices by any method, including but not limited to the methods described below. In some embodiments, the multiple power sources are identified as different types of nodes in the data network. In some embodiments, the sensors are identified as different types of nodes in the data network. Other types of sensor or actuator portions of the network may similarly be represented by arrays.

A method for constructing an array representing a topology may be constructed by manual input via a user interface. This may require a person at the time of installation to enter an array through a command line interface, or to create a visual representation on the installed touch screen, and then effect the inference of a connection from that visual representation. Other methods of manually inputting an array are contemplated.

In embodiments where the controller has an array representation stored in memory of the tree topology, such as but not limited to those described above and shown in FIG. 5, is obtained by a method and method such as but not limited to those described above. As shown in fig. 6, other methods of transferring arrays than those already described above may be used. One feature of the tree representation is that all nodes are ordered according to some convention. The controller may infer, for any node in the network, the position in the order at which the node is located based on an array describing a tree topology.

An exemplary implementation using this feature for the LED luminaire network in fig. 3 is described next. The use case involves a batch update of the optical output of all LED luminaires. As described above, this can be done by providing each LED luminaire with an array of the light fluxes required for each of a plurality of LED chip types. The first step in the batch update is the creation of the plurality of arrays by the controller. The specific values may be created by any of the methods described above, such as, but not limited to, an output of an external rules engine or a manual input through a user interface.

The second step is that the controller ties the multiple arrays together into one large composite array. The order of the array is the result of the tree topology, as described further below. At the beginning of the composite array, a message type identifier is added that maps in a dictionary to a particular set of logical instructions to be executed on the node. This set of instructions may be referred to as a batch update. The controller continues to forward the composite array.

The first node receiving the array interprets the message type identifier and begins executing the associated set of logical instructions. The first step in these logical instructions is for the first node to retrieve from memory the total number of nodes that are lower in the tree hierarchy through the first network interface (rather than from the network interface that received the array). As described above, the first node may retrieve the value from a tree representation (such as, but not limited to, those in FIG. 5) embodied in an array or from a subset of the tree representation. In the embodiment of fig. 3, this value is 1.

Logic instructions executing on the first node continue forwarding the first component array of the composite array through its first network interface, including the message type identifier. The second node receives the array. Logic instructions executing on the second node interpret the message type identifier and retrieve information that zero nodes are attached at its other network interfaces. For the first node, this information is already embodied in the array after the layout detection method is performed. Thus, the received array is not edited or forwarded. The size of the array is just the size required as an input to the logic instruction set used to adjust the optical output of the LED luminaire, which is the operation the second node continues to perform. The second node creates an array to confirm that it has successfully adjusted the optical output and forwards the array to the network interface connected to the first node.

When the acknowledgement is received, the logic instructions on the first node resume and retrieve information that there are a total of two nodes or LED luminaires attached through the second network interface. The logic instructions executing on the first node continue forwarding the second and third component arrays of the composite array, including the message type identifier, through the second network interface of the composite array.

The third node receives an array comprising a message type identifier and an array twice the size of the array for use as an input to a set of logic instructions to adjust the LED luminaire optical output. Like the previous first node, the third node initiates an iteration on its ordered network interface. In the exemplary embodiment of fig. 3, its ordered network interface means network interface b. For this network interface, a total of one node is attached, which is information that can be retrieved from the memory of the third node.

The logic instructions executed on the third node continue to forward the first component array of the third node, received from the first node through the first network interface of the first node, including the message type identifier. The fourth node receives the array. Logic instructions executing on the fourth node interpret the message type identifier and retrieve information that zero nodes are attached at its other network interfaces. For the third node, this information is already embodied in the array after the layout detection method is performed. Thus, the received array is not edited or forwarded. The size of the array is exactly the size required as input to the logic instruction set used to adjust the optical output of the LED luminaire, which is the operation the fourth node continues to perform. The fourth node creates an array to confirm that it has successfully adjusted the optical output and forwards the array to the network interface connected to the third node.

The logical instruction executed on the third node resumes when it receives the acknowledgement, and the size of the rest of the array it receives from the first node (i.e. the portion not sent to the fourth node) is exactly the input of the logical instruction set used to adjust the optical output of the LED luminaire. No other node is attached to the rest of the network interfaces of the third node. Thus, the remaining array is used as an input for logic instructions to set the optical output of the third LED illuminator. For the second node and the fourth node, the third node creates an array to confirm this operation and forwards it to the first node.

The logical instruction executing on the first node is resumed when it receives the acknowledgement. As for the steps taken by the third node above, the first node uses the remaining array as input for logic instructions to set the optical output of the first LED luminaire. The array of acknowledged executions is sent to the controller. The controller may interpret the array as a successful batch update when it is received.

An important feature of these logic instructions for batch updates is that the composite array is ordered in a particular way. In the described embodiment, the order of the arrays in the composite array is: first for the second LED luminaire, second for the fourth LED luminaire, third for the third LED luminaire, and finally for the first LED luminaire. In this order, the logic instructions for bulk update may omit comparing an array that includes a node identifier in the header, as required in the communication protocol described above. In this order, logic instructions for bulk updates can use cut-through switching to produce a large effect, and thus can omit storing large arrays in memory, or executing logic instructions to determine authentication, complex editing, and similar tasks as described above. Similar to the above description, a cut-through switch of a forwarding array may employ smaller data units in forwarding. The above exemplary embodiment uses a full array size data unit as shown in fig. 1. The logic instructions may also forward individual elements or bits in the array as the array is received, so long as the node receiving the data bit correctly forwards a subset of the plurality of elements or bits and compiles the required array inputs into the logic instructions to set the optical output.

In an example case, the logic instructions for the batch update are illustrated in FIG. 7 and then described. The controller creates a composite array 701 consisting of a message type identifier and one or more arrays having the format or encoding required to adjust a certain state of the node, where the number of the plurality of arrays is equal to the number of nodes in the data network. The controller forwards the composite array to the first node 702.

A given node initiates an iteration 703 on its occupied network interface. Each node has access to at least the necessary information about the topology so that only the occupied network interfaces are part of the iteration. If the iteration has not ended, the total number of nodes connected to the given network interface is determined 704, which may be done by retrieving that number from the memory of the given node. The internal clock starts 705. The node's microprocessor continues to forward the message type identifier and the M first arrays of composite arrays that the given node has received or is receiving to the given network interface 706.

At this point in the execution, another node lower in the tree hierarchy receives an array that is the array received by the previous node, but is smaller in size, and the node initiates its iteration 703 on the sequentially occupied network interface. Thus, the sequence of logical instructions divides the composite array into smaller parts and performs recursion to nodes lower in the tree hierarchy.

At some point in the execution process, the given node will reach the end of the iteration over the occupied network interface that was started in the earlier step. The end of the iteration can be reached either because the node is missing a node that is occupied, as is the case with the end node, or because the iteration runs out of an ordered set of network interfaces. At this step, the remaining array should consist of only one array to set the state of the node. As long as the representation of the topology corresponds to the actual topology, the logical instructions can guarantee this, since other parts of the array have been forwarded to other node or nodes. If there is a difference, logic execution may end with an error 707.

On the other hand, if only one properly encoded array is left, it is used as an input to a set of logical instructions that set the state 708 of the given node, which is specified by the array. The same node creates an array containing the confirmation set state and the array is forwarded 709 through the network interface directed up in the tree hierarchy. Thus, this step means moving one step up in the hierarchy of nodes.

A given node that has forwarded a portion of the composite array to a node 706 lower in the hierarchy may be idle while waiting to receive an acknowledgement array from the same interface. If the internal clock exceeds a threshold, execution may terminate with an error 710. This step may ensure that communication failures in the data network do not result in indeterminate batch update logic instruction execution. If the internal clock does not exceed the threshold, execution may continue with the next step 711 of iterating over the ordered set of network interfaces of the given node.

If the occupied network interface iteration has ended, the logic instruction returns to the test. If not, the above steps may be taken to make another partition of the remaining composite array and another recursion down the hierarchy 706. If the endpoint is reached, the steps described above may be taken to set the node state 708 and create another validation array 709 and move one step up in the hierarchy.

Nodes that are not end nodes reach the later stages after the iteration over the network interface they occupy has ended. The logic instructions may ensure that a given non-terminal node, having a total number of nodes K connected by the plurality of network interfaces, receives a composite array consisting of K +1 arrays from the node above it. Thus, the non-terminal node will leave an array for setting the state of a given node after its iteration of tying up the network interface is over.

Once the validation array reaches the controller, the logical instruction with the move up and down in the tree hierarchy reaches the end. At that stage, the composite array initially created 701 by the controller has been divided into smaller composite arrays at each of a plurality of nodes of the data network. The confirmation array may be used to create a confirmation on the user interface that the batch update has completed, or by another adjustment of the operating parameters of the controller. Conversely, failure of the controller to obtain the validation array within the set time may result in the generation of an error message or another adjustment of the controller's operating parameters.

An important feature of these logic instructions for batch updates is that the composite array is composed of arrays ordered in a particular way. From the known tree topology, the appropriate order can be inferred using the representations embodied in some arrays, as well as the ordered set of array network interfaces and the logic instructions that split the arrays in a predictable manner. For example, the first array in the composite array should be the array intended for node Z, which is connected to the first occupied network interface of node Z-1 above node Z in the hierarchy, node Z-1 is connected to the first occupied network interface of node Z-2 above node Z-1 in the hierarchy, and so on until the recursion ends at the controller.

In this order, the logic instructions for bulk updates may omit comparing arrays that contain node identifiers in the header. In this order, logic instructions for bulk updates can use cut-through switching to generate a large effect, and thus can omit storing large arrays in memory, or executing logic instructions to determine authentication, complex editing, and similar tasks as described above. Similar to the above description, a cut-through switch of a forwarding array may employ smaller data units in forwarding. The earlier description of fig. 7 may be reinterpreted such that the partitioning of the composite array is done in units of single elements or bits, rather than an array that sets the node state in units of array size.

In the embodiment shown in FIG. 7, each node suspends its execution as it forwards the array to nodes lower in the hierarchy. In some embodiments, there is no pause. Instead, after a node has forwarded an array through one network interface, the node will continue to execute logical instructions related to subsequent network interfaces in the ordered set. In these embodiments, each node may receive an acknowledge array through one of its network interfaces while the microprocessor of the given node is busy executing other logic instructions. This allows for faster batch updates. Thus, the execution of logic instructions is performed in parallel, rather than sequentially, on multiple microprocessors in a data network. Parallel processes may create other conditions to handle, such as how multiple events are synchronized because their respective output arrays must be tied together. Thus, this implementation of logic instructions may result in additional complexity of execution such that events are handled, such as, but not limited to, receiving arrays from two or more network interfaces simultaneously. There are known methods of dealing with these types of conditions, which can be organized under concurrent control names. In embodiments, any method sufficient to address the additional complexity of concurrent processes may be used.

In the above logical instructions, no step references a unique node identifier. In fig. 3, this corresponds to not retrieving roman numerals 202 from memory. This means that in a data network where batch updates are made as described above, the node identifier is not necessary and in some embodiments, there is no node identifier. In other words, no node identifier is assigned during the manufacturing process or during initialization of one or more nodes of the data network. This property of the data communication method may mean simplified manufacturing, fewer logic instructions that need to be executed and a more compact representation of the control array. These are advantageous properties as they allow to reduce the manufacturing costs, to reduce the time to execute commands and to transmit data faster throughout the data network, respectively.

The bulk update method may be used to update one or a portion of the nodes in a data network. The array corresponding to the node that should not be updated may be set equal to the current state. The array corresponding to the node that should not be updated may be set to some dummy value that when used as input for a logic instruction executing on a given microprocessor will result in the logic instruction set that updates the node state never being executed. The dummy value may be a negative value such as, but not limited to, -1 or-99. In a similar manner, if only a certain type of node is to be updated, a dummy value may be used in the composite array at the relevant location for another type of node type obtained from the previous layout detections.

The tree topology and its explicit representation may be used in different logical instructions than the batch update method, so that the state of individual nodes is updated. An exemplary embodiment using this feature for the network of LED luminaires in fig. 3 is described next. The use case involves a single update of the optical output of all LED luminaires.

First, the controller creates a composite array containing message type identifiers that map in a dictionary to a single updated set of logical instructions to be described. Furthermore, the composite array is composed of an array that can be used as an input to a logic instruction that sets the optical output of the LED illuminator. The composite array also includes an array containing values that may be referred to as target indices. The target index corresponds to a single LED luminaire in the data network. The target index uniquely maps to a position in the ordered set of LED luminaires in the tree topology representation. For example, if the light output of the third LED luminaire in fig. 3 should be updated, the target index may be 2. If a node identifier is present in a given implementation, the target index may be different from the node identifier. The composite array also contains integers that are initialized to zero by the controller. This integer may be referred to as a node counter.

The controller forwards the composite array to the first node or LED luminaire. The message type identifier is interpreted and mapped to a set of logical instructions for a single update. The first LED luminaire retrieves a total number of LED luminaires attached through the first network interface in the ordered set of network interfaces of the first LED luminaire. In the exemplary embodiment of fig. 3, this value is equal to 1. This value is added to the current value of the node counter and a new integer is obtained, which may be referred to as a nonce counter. In the exemplary embodiment of fig. 3, assuming the node counter is zero at this stage of execution, the tentative counter is 1.

The temporary counter is compared to the target index of the received array. If the target index is strictly less than the value of the nonce counter, the array is forwarded over the given network interface. Note that forwarding does not change the node counter. On the second LED luminaire, the message type identifier is interpreted and a set of logical instructions for a single update is executed. The second LED luminaire is the terminal node, so the nonce counter is equal to zero in this case. It is compared to the target index of the array received by the second LED luminaire. If the target index is equal to the temporary counter, i.e. both are zero in this case, the rest of the array is used as an input to a logical instruction set that, when executed, will update the optical output of a given LED luminaire. A validation array may be created and forwarded through the network interface leading to the first LED luminaire and then forwarded through the network interface leading to the controller.

Conversely, if the nonce obtained by the first LED luminaire is found to be greater than or equal to the target index, no content will be forwarded over the first network interface. Instead, in this exemplary embodiment, the node counter array is compiled to be equal to the nonce counter, i.e., equal to 1. After this operation, a similar subset of logical instructions is executed for the second network interface of the first LED luminaire as was done for the first network interface of the first LED luminaire. In other words, the temporary counter is created from the value of the current node counter by increasing the value of the current node counter by the total number of nodes attached through the second network interface of the first LED luminaire. In the exemplary embodiment of fig. 3, the increment is equal to 2, so the provisional counter at this stage is equal to 3. As described above, if the target index is strictly smaller than the nonce counter, the composite array will be forwarded over the second network interface of the first LED luminaire. Note that forwarding does not change the node counter.

Assuming that the inequality between the target index and the nonce counter is true, the third LED luminaire receives the composite array and executes the set of logical instructions associated with the single update message type identifier. In one exemplary embodiment, the target index is equal to 2. The temporary counter is created by adding the node counter (1 in this execution phase) and the total number of nodes attached through the first network interface of the third LED luminaire (i.e. 1). Therefore, the provisional counter is 2. This value is not strictly less than the target index. Therefore, nothing is forwarded to the network interface. As described above, the node counter is also compiled to be equal to the value of the tentative counter.

The third LED luminaire has no other LED luminaire attached on any other network interface thereof. The node counter has reached a value of 2, exactly equal to the target index. This equality results in an array containing instructions for the desired optical output being used as input for logic instructions to set the optical output of the third LED luminaire. As previously described, an acknowledgement array may be created and recursively forwarded to the controller.

In general, logic instructions for a single update are shown in FIG. 8 and described below. The controller creates a composite array 801 consisting of a message type identifier, a first integer that may be referred to as a target index, and a second integer that is initialized to zero (may be referred to as a node counter), and an array that may be used as an input to a node in the data network to set its state. The composite array is forwarded 802 and received by a first node in the data network.

A given node initiates an iteration over its occupied network interface 803. Each node has access to at least the necessary information about the topology so that only occupied nodes are part of the iteration. If the iteration has not ended, a total number of nodes connected to the given network interface M is determined 804, which may be done by retrieving the number from the memory of the given node. A node counter N is retrieved from the received composite array. Two integer values are added, i.e., M + N805. This sum may be assigned to another integer, which may be referred to as a nonce counter V.

The temporary counter is compared to a target index, which is retrieved from the received composite array. If the target index is strictly less than the temporary counter, the composite array received by the given node is forwarded 806 over the given network interface. The node receiving the composite array starts executing the same set of logical instructions as the previous node, i.e. initiates an iteration 803 over the ordered set of occupied network interfaces.

On the other hand, if the value of the temporary counter is such that the target index is not strictly less than the temporary counter, another subset of the logical instructions is executed on the given node. First, the node counter of the current compound array is edited to equal the value of the temp counter 807. In any step after this in which the logical command is executed, the value of the current node counter will equal the new value once retrieved from the composite array until step 807 is encountered again and then edited again. Thereafter, an iteration over the ordered set of occupied network interfaces for the given node will select the next network interface 808.

At some point in the execution process, the given node will reach the end of the iteration that the given node started in the earlier step. The end of an iteration may be reached because the node lacks an occupied network interface, as is the case with the end node, or because the iteration runs out of an ordered set of network interfaces. In this case, the node counter should be equal to the target index. This is the result of a logical instruction, the only reason for this being that the representation of the topology is not consistent with the actual topology. If there is equality between the target index and the node counter, the array used to set the state of the given node will be used as input 809 to the logic instruction that sets the state of the node. Upon completion, a validation array may be created and forwarded to network interface 810 leading to nodes higher in the hierarchy. These forwarding may be done recursively until the controller receives the acknowledgement array. The confirmation array may be used to create a confirmation on the user interface that the batch update has completed, or for another adjustment of the operating parameters of the controller. Conversely, failure of the controller to obtain the validation array within the set time may result in the generation of an error message or another adjustment of the controller's operating parameters.

An important feature of the method for single update of some embodiments is that the topology of the data network and the order it defines for the plurality of nodes is used to create an efficient transmission. As described above with respect to FIG. 7, batch updates rely on this ordering of nodes to split their composite array in an efficient manner so that the correct instructions arrive at the designated nodes. The single update approach, rather than splitting, uses a target index and a temporary counter to test whether a path to a given node passes through any given network interface of a given node. Path testing, accomplished by simple delta and integer comparisons, can thus effectively drop paths, thereby reducing the number of logical instructions that each node must execute.

By executing the set of logical instructions described above and shown in fig. 8 on multiple nodes, path testing for a single update method is accomplished throughout the data network. In some embodiments, the path test may be done on the controller. In embodiments where the controller has complete information of the tree topology, the logic instructions where the temp counter, target index and node counter are incremented and compared as described above may all be executed on the controller. Thus, the controller can infer the path that a single updated array should use. In these embodiments, the controller may instead generate a composite array comprising the message type identifier, an array for updating the node state, and an array of ordered plurality of network interface identifiers. For example, an array such as [ c, b ] may be interpreted by logic instructions executing on a node of a data network to mean that a given array should be processed by the network interface c of a first node and made to reach a specified node through the network interface b of a second node. Since the network interfaces are ordered, arrays such as [1,1,3] may be interpreted by logic instructions executing on nodes of the data network to mean that a given array should be made to reach a specified node by the first network interface or first node, then the first network interface of the second node, then the third network interface of the third node.

Other arrays embodying paths through multiple network interfaces are contemplated. An important feature of all embodiments of the single update method is that the known tree topology implements logical instructions that when executed ensure efficient routing to the target node, with few logical steps being performed on the path, and no logical steps being performed for nodes not on the path.

As described in the previous section, the data network may contain sensors as well as actuators. Batch update and single update methods are means of transmitting instructions from the controller throughout the data network. This may include, but is not limited to, altering the optical output of a plurality of LED luminaires, altering the audio intensity from a plurality of speakers, altering the intensity of climate control equipment (such as fans and heat sinks), altering the spatial configuration of robotic arms. The known tree topology may be used to retrieve sensor data generated by the plurality of nodes and transmit it to the controller for further processing.

An example scenario of logical instructions for a batch fetch method is shown in FIG. 9. First, the controller generates an array of bulk extract message identifiers that maps to a set of logical instructions 901 for bulk extract node state. The controller forwards the array 902. The first node receives the array and interprets the message identifier as a batch fetch and executes the following set of logical instructions. A given node initializes an empty array 903. As execution proceeds, the array will populate one or more node state arrays. Execution of the logic instructions then begins to iterate 904 over the occupied network interface. As in the other methods described above, the occupied network interface is known from the topology.

If there is an occupied network interface, the given node starts an internal clock 905. Thereafter, the array with the batch request message identifier will be forwarded 906 through the given network interface. In this step, the second node in the logic instruction begins performing the operation 903 by initializing its instance of an empty array, which will then fill in one or more node state arrays.

If, because the given node is an end node that does not have any occupied network interfaces, or because the ordered list of network interfaces has been exhausted, execution continues to retrieve the array 907 that embodies the current state of the node, because the iteration over the ordered set of ordered network interfaces ends. This array may be a single integer, multiple integers, or a large and complex array, depending on how the state of a given node is represented. The entities that embody the current state of a given node may be described as state arrays. The first array of the given node, which was initially initialized in the earlier step 903, is edited so that the state array is added to the first array of the given node 908. The composite array thus obtained is forwarded to node 909 above the given node in the hierarchy.

If the node receiving the array is not the controller, the internal clock is stopped. To ensure that the batch extraction is performed for no more than a reasonable time, the duration between forwarding the array with the message identifier for batch extraction 906 and receiving the composite status array 909 from the same network interface may need to be below a threshold. The reason for not meeting this condition may be due to an error somewhere in the data network, thus ensuring that the batch fetch is performed for a non-infinite duration.

If a composite state array is received within the threshold duration, the composite array for the given node is edited such that composite arrays received from one or more nodes below the hierarchy are added to it 910. In this way, the composite array for a given node contains all of the state arrays for nodes lower in the hierarchy through a given network interface, with the ordering of the state arrays of the composite array following convention. Execution on the given node will then attempt another step of iterating over the ordered set of network interfaces 911.

If the given node has another occupied network interface, then the same recursion down to the tree is performed as described above, steps 905 and 906. Eventually, this recursion results in the creation of a composite array that is received over a given network interface once the corresponding step for recursion up in the tree is reached (step 909). Thus, the composite array for a given node is further expanded. This continues until the given node has no other occupied network interfaces to iterate. At this stage, the given node retrieves its own state array 907 and adds it to the composite array. These steps continue until the controller is reached recursively upward. The controller thus receives a composite array containing all state arrays for nodes in the data network in a custom order.

The ordering convention is the result of the tree topology and its representation in the array. Thus, any other logical instruction to be executed on the controller may determine which node in the data network generated which state array. This determination explicitly encodes such information as an array without requiring header comparison or other logical interpretation. Thus, the communication method enables embodiments without explicitly coded node identifiers set during manufacturing or during network initialization. Furthermore, the arrays used to encode the control instructions are compact and therefore can be transmitted relatively quickly between nodes and throughout the network. This means that, as described above, the data rate is higher than in the method that does not explicitly consider and utilize the tree topology.

Similar to the other methods described above, the logic instructions illustrated in FIG. 9 may be modified in certain respects without departing from the scope and spirit of the present invention. In some embodiments, the use of the internal clock is modified or removed altogether so that error checking is ignored or otherwise accomplished. In some embodiments, the composite array that is progressively expanded during execution of the batch extraction is forwarded down the tree hierarchy along with the message type identifier and edited by another microprocessor in the plurality of nodes, rather than the one defined by the logic instructions shown in FIG. 9. This means that the task in 910 is moved to an earlier location in execution.

In some embodiments, rather than waiting to receive an array from a given network interface after forwarding a batch fetch array, a given node continues to forward batch fetch requests to its other occupied network interfaces. This embodiment may allow the composite array to be returned to the controller more quickly. Thus, the execution of logic instructions is performed in parallel, rather than sequentially, on multiple microprocessors in a data network. Parallel processes create other conditions to be handled, such as how multiple events are synchronized because their respective output arrays must be linked together. Thus, this implementation of logic instructions may result in additional complexity of execution in order to handle events such as, but not limited to, receiving arrays from two or more network interfaces simultaneously. There are some methods to deal with the conditions of these situations, which can be organized under concurrent control names. Methods that adequately address the additional complexity of concurrent processes may be used in various embodiments.

The above methods may be combined to perform a single extraction. That is, the controller should receive an array of states for a particular node in the data network. Instead of sending an array to set the state of a particular node, a single update method may be adjusted to send a message identifier to request an array for the particular node. Once the array with the message identifier is received by a particular node and subsequently interpreted by executing a set of logical instructions (similar or identical to the set of logical instructions in step 907 of fig. 9), the array of states (similar or identical to the set of logical instructions in step 810 of fig. 8) is recursively forwarded up the tree hierarchy. With this combination of logic instructions already described, the controller will receive a given state array.

The set of logical instructions for layout detection, bulk update, single update, bulk fetch, and single fetch has been described using a composite array containing a specific number and type of component arrays. These arrays may contain the necessary information about the data network and the expected operations so that the transmission is performed according to the specifications. In some embodiments, the composite array may contain additional arrays that may be used for purposes other than efficient transmission of data in the network. Examples of other arrays include, but are not limited to: a point counter that increments by some integer each time a data packet is forwarded; a checksum field, the value usable to determine whether the array is corrupted upon transmission; a version identifier, which is a value that enables a node to ensure that the version of the implemented method that generated the array is compatible with the version of the implemented method that used or forwarded the array; a header length specification, which is a value for specifying how long the array containing the header is; the message priority identifier is used for sequencing the priority of the arrays, so that when the network interface has conflict, the messages with higher priority are processed first, and then the arrays with lower priority are processed; a data source identifier that specifies which node generated the array; a security type identifier, which may be used if the payload is encrypted and the security type enables the node to decrypt the message in an appropriate way; unspecified arrays, which may be part of a composite array, but may not contain any data to be interpreted, are instead used to implement future or custom functions without changing the overall size of the array of headers. Composite arrays consisting of other arrays do not alter significant aspects of the method. Thus, it should be understood that the exemplary embodiments of the above set of logical instructions and the flow diagrams in FIGS. 6, 7, 8, and 9 are illustrated to describe the minimum array and what the logical instructions can be, such that the specified commands and transfer of the array is performed, not the complete specification that the array can contain, nor the complete specification of the logical instructions that can be executed.

Inferring tree topology from compilation

In some embodiments, the data network is typically constructed by mechanical coupling of individual LED luminaires or nodes. In these embodiments, the means for forming a mechanical attachment may coincide, in whole or in part, with the means for forming a communication medium for data network connections. This may be achieved by the movable object of one LED luminaire or node object extending into the indentation of another LED luminaire or node object by magnetic attraction above a certain threshold. This may be achieved by interlocking teeth that frictionally lock the individual units into a certain physical configuration. This can be done by a separate linker consisting of some solid material (e.g. plastic or metal) and a communication medium, enabling data transmission, typically between LED luminaires or nodes. Other methods of establishing mechanical and communication connections are contemplated. In these embodiments, the connection of the plurality of nodes to the node may not be in a tree topology, nor in any of its subset topologies, such as a linear and star topology. In particular, the connection of multiple nodes to a node may form a loop such that there is more than one path between two nodes. Some of the above-described transportation methods may experience difficulty or be inoperable without further adjustment.

In the embodiment shown in fig. 3, network interfaces c and a are connected, respectively, if at installation a mechanical attachment between the LED luminaire with identifier II and the LED luminaire with identifier IV is desired. This results in a loop being formed as the array from the controller to the LED luminaire with identifier IV can pass through the LED luminaire with identifier II as well as the LED luminaire with identifier III.

The above plurality of logical instruction sets comprises iterations on the network interface, or specifically comprises the occupied network interface. If during initialization the network interface c of the LED luminaire with identifier II and the network interface a of the LED luminaire with identifier IV are removed from the ordered set of occupied network interfaces, the tree topology of fig. 3 will be restored. This removal operation can be implemented as an operation on an array stored in memory and processed by the microprocessor without mechanically modifying the installation. It is to be noted that if the aforementioned pair of network interfaces is kept in the respective ordered set of network interfaces, instead of removing the network interface c of the LED luminaire with identifier I and the network interface a of the LED luminaire with identifier III from the ordered set of occupied network interfaces, another tree topology will be obtained. The latter tree topology is a linear topology, which, as mentioned above, is a subset of the tree topology. As before, this removal operation may be implemented as an operation on the array without mechanically altering the installation.

The technical problem of constructing a tree topology from a set of nodes and their connections to nodes may be referred to as finding one or more spanning trees. According to graph theory, it is believed that a first plurality of nodes connected by a second plurality of node-to-node connections in a network of a mesh topology or a fully connected topology or a mixed topology may be transformed into the same first plurality of nodes connected by a third plurality of node-to-node connections in a network of a tree topology, wherein the third plurality of node-to-node connections consists of a suitable subset of node-to-node connections of the second plurality of node-to-node connections. Furthermore, in some cases, there may be a fourth plurality of node-to-node connections, different from the third plurality of node-to-node connections, that apply to the network where the first plurality of nodes also generate the tree topology. Furthermore, in some cases there may be a fifth, sixth or seventh, up to a limited number of other multiple node-to-node connections, which apply to networks where the first multiple nodes also generate a tree topology. In other words, in some cases, there may be multiple different spanning trees for any given data network.

There are methods of discovering spanning trees, typically by executing logical instructions. These methods can be used so that a network of tree topology is obtained from any given data network, to which the above transmission method can be applied. In this way, the above set of logical instructions may be used to set or sense the state of a plurality of nodes in a given data network. Methods such as depth-first and breadth-first searches of mathematical graphs may be used to find one of a plurality of possible spanning trees for a given network. An important feature of both methods is that when traversing the network, it will order all node-to-node connections and can remove from the node-to-node collection any such connections that connect two nodes that have already been traversed. Variations of these methods may be employed, including methods formulated for weighted graphs, such as, but not limited to, the Kruskal algorithm. Thus, the method of creating at least one spanning tree can be used to edit an ordered set of network interfaces in a given component of a node, thereby allowing the connections to form a network of tree-like topology without requiring mechanical modification of the components.

Data transmission method in multi-stage network

So far, using one controller and one or more nodes, which may be actuators or sensors, logical instructions for the transmission method in a network of nodes of a tree topology have been described. The controller initiates batch updates or batch fetches and other instructions. In some embodiments, the network includes a node of a first type that may control one or more nodes of a second type. In these embodiments, the first type of node may act as a controller for the second type of node. The first type of node is in turn controlled by a controller. This is a multi-level network or network of networks.

In an embodiment of the network as a network of networks, the batch update may comprise the following steps. As described with reference to fig. 7, a composite array is created by the controller. As described above and shown in FIG. 7, a composite array is transmitted to each of the nodes of the first type. Each node of the first type receives an array to set its state. The first type of node then assumes the role of the controller and creates a composite array. The array may be a copy of the array received by a given node of the first type of array from its controller. The array may be created or derived by some other logical instruction executed on the microprocessor of the node of the first type with the received array as input. Regardless of the source, after executing the above-described logic instructions (as shown in FIG. 7), the composite array of nodes of the first type will be transmitted through its network of nodes of the second type. The second type of node receives the associated array and executes some logic instructions with the array as an input. The validation array (if created) for the node of the second type of array reaches the relevant node of the first type, which may initiate execution of the set of logical instructions that will create the version of the validation array to be sent to the controller.

In some embodiments, the set of nodes of the second type are disjoint, so only one node of the first type may act as a controller for any given node of the second type. In some embodiments, the second type of node may act as a controller for the third type of node. Additional levels of nodes and networks may be considered.

Multiple levels may be advantageous for use cases where the size or granularity unit created by the aggregation of the minimum units of nodes (which may be referred to as an atomic node type) is more suitable for the intended use. In some embodiments, LED luminaires mechanically and electrically coupled in a grid may be individually controlled. However, it is preferable to group them into larger units, which may correspond to the size of a room, desk space, kitchen counter, entrance near a door, or other grouping of spaces arranged to suit the purpose of a given space function. In these embodiments, the controller may in fact instruct a change in light output at an entrance near the door, which is communicated to the node, which in turn interprets the corresponding array as an instruction to change the light output of certain identified and spatially arranged pluralities of LED luminaires. The controller in these embodiments does not need to access the identities of the plurality of LED luminaires. This information will be delegated to another node. This may simplify the message and its transmission in the network, which may be simplified by the grouping of the atomic nodes.

The grouping of atomic nodes may be obtained from manual input through a user interface. Thus, a user of the space in which the atomic nodes are installed may decide which nodes should be homed together, and then may assign an atomic node to act as a controller for the group at the same time. The grouping of atomic nodes may be obtained from automatic grouping derived from the functional data. The network may initially consist of only atomic nodes. The controller tracks how the atomic nodes are used or certain characteristics of the environment they sense, and infers a functional grouping based on a plurality of characteristics that change over time. Other methods of automatic grouping and subsequent control are contemplated. Whichever method is employed for the grouping, a transmission method may be used as described above, in which the nature of the nodes and controllers may vary, but in which the levels of the network are connected by one of a plurality of nodes bridging the network at two or more levels.

Program code is applied to input data to perform the functions described herein and generate output information. The output information is to be applied to one or more output devices. In some implementations, the communication interface can be a network communication interface. In embodiments where elements may be combined, the communication interface may be a software communication interface, such as those used for interprocess communication. In other embodiments, there may be a combination of communication interfaces implemented as hardware, software, and combinations thereof.

In the foregoing discussion, numerous references will be made to servers, services, interfaces, portals, platforms, or other systems formed by computing devices. It should be understood that the use of such terms is considered to represent one or more computing devices having at least one processor configured to execute software instructions stored on a computer-readable tangible, non-transitory medium. For example, a server may include one or more computers that act as a network server, database server, or other type of computer server in a manner that achieves the described roles, responsibilities, or functions.

60页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:针对IOT设备的回退安全网络通信逻辑单元及对其进行管理的方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类