Integrate and control multiple load control systems
By using processors and memory devices in the load control system, receiving messages from web applications and modifying URIs, the problem of users needing to interact separately with multiple load control systems is solved, and unified control of multiple systems is achieved.
Patent Information
- Application Number
- CN202211408815.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2017-02-20
- Filing Date
- 2018-02-20
- Publication Date
- 2025-07-01
- Estimated Expiration
- 2038-02-20
AI Technical Summary
Users need to interact with multiple load control systems separately, making it difficult for users to control all systems as a unified system.
By an apparatus and method, the apparatus comprises at least one processor and tangible memory device, capable of receiving messages from the web application, transmitting messages to the load control system on the communication connection, modifying the URI of the control device to include a URI associated with the communication connection, and transmitting the modified URI to the web application.
The integration of multiple load control systems into a unified system is implemented, allowing users to interact and control the system in a unified way.
Smart Images

Figure CN115755687B_ABST
Abstract
Description
[0001] This application is a divisional application of a Chinese patent application with an application number of 201880025299.2 and an invention title of "Integrating and Controlling Multiple Load Control Systems", which was filed on February 20, 2018.
[0002] Cross - reference to related applications
[0003] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 461,195, filed on February 20, 2017, the entire disclosure of which is incorporated herein by reference. Background of the Invention
[0004] A user environment (such as, for example, a residence, an office building, or a hotel) can be configured to include various types of load control systems. For example, a lighting control system can be used to control lighting loads in the user environment. An electric window treatment control system can be used to control the natural light provided to the user environment. A heating, ventilation, and air conditioning (HVAC) system can be used to control the temperature in the user environment. A given environment can include multiple load control systems. Summary of the Invention
[0005] One problem with an environment that includes multiple load control systems may be that a user must interact with the multiple systems individually, making it difficult for the user to interact with all of the systems and control all of the systems (e.g.) as a single system. For example, it may be desirable to integrate the multiple load control systems such that the systems appear to the user as a unified system and can interact with the user as a unified system.
[0006] According to one example, a device can include at least one processor and can also include at least one tangible memory device communicatively coupled to the at least one processor. The at least one tangible memory device can have software instructions stored thereon that, when executed by the at least one processor, direct the at least one processor to: receive a first message from a web application; and based on the first message, transmit a second message over a communication connection to a load control system. The communication connection can have a Uniform Resource Identifier (URI) associated therewith, the load control system can be configured to control an electrical load of an environment, the load control system can include a control device, and the load control system can associate the URI with the control device. In response, in part, to transmitting the second message to the load control system, the software instructions, when executed by the at least one processor, can further direct the at least one processor to receive a third message from the load control system over the communication connection. The third message received from the load control system can include the URI of the control device. When executed by the at least one processor, the software instructions can further direct the at least one processor to modify the URI of the control device to include the URI associated with the communication connection and, at least in part based on the third message received from the load control system, transmit a fourth message to the web application. The fourth message can include the modified URI of the control device. The software instructions, when executed by the at least one processor, can further direct the at least one processor to: receive a fifth message from the web application that includes the modified URI of the control device; and in response to receiving the fifth message from the web application, remove the URI associated with the communication connection from the modified URI of the control device and, based on the fifth message, transmit a sixth message over the communication connection to the load control system. The transmitted sixth message can include the URI of the control device without the URI associated with the communication connection.
[0007] According to another example, a method may include: receiving, by at least one processor, a first message from a web application; and based on the first message, transmitting, by at least one processor, a second message over a communication connection to a load control system. The communication connection may have a Uniform Resource Identifier (URI) associated therewith, the load control system may be configured to control electrical loads of an environment, the load control system may include a control device, and the load control system may associate the URI with the control device. In response, in part, to transmitting the second message to the load control system, the method may include receiving, by at least one processor, a third message from the load control system over the communication connection. The third message received from the load control system may include the URI of the control device. The method may include: modifying, by at least one processor, the URI of the control device to include the URI associated with the communication connection; and transmitting, by at least one processor, a fourth message to the web application based, at least in part, on the third message received from the load control system. The fourth message may include the modified URI of the control device. The method may include: receiving, by at least one processor, a fifth message from the web application that includes the modified URI of the control device; and in response to receiving the fifth message from the web application, removing, by at least one processor, the URI associated with the communication connection from the modified URI of the control device; and based on the fifth message, transmitting, by at least one processor, a sixth message over the communication connection to the load control system. The transmitted sixth message may include the URI of the control device without the URI associated with the communication connection.
[0008] One advantage of such exemplary systems and methods may be that multiple load control systems can be integrated such that the load control systems can be presented to a user as a unified load control system and controlled by the user as a unified load control system.
[0009] The above advantages and features are only representative embodiments. They are not considered limiting. In the following description, drawings, and claims, additional features and advantages of the embodiments will become apparent. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Figure 1 is a system diagram showing an exemplary load control system including a control device.
[0011] Figure 2 is a system diagram showing Figure 1 a more detailed exemplary representation of the load control system.
[0012] Figure 3 is a system diagram showing Figure 2 an exemplary problem of the system shown.
[0013] Figure 4 is a system diagram showing an exemplary load control system.
[0014] Figure 5 is a system diagram showing another exemplary load control system.
[0015] Figure 6 is a system diagram showing yet another exemplary load control system.
[0016] Figure 7 is showing Figure 4 an exemplary application of the load control system of
[0017] Figure 8 is a system diagram showing another exemplary load control system.
[0018] Figure 9 is a system diagram showing another exemplary load control system.
[0019] Figure 10 is a system diagram showing yet another exemplary load control system. Detailed Description
[0020] Figure 1 shows a high-level diagram of an exemplary load control system 100 for controlling one or more electrical loads in a user environment (also referred to herein as a load control environment). The exemplary user environment can include one or more floors of a building, one or more floors of several buildings, hotel rooms, etc. As an example, the load control system 100 can implement automatic control of lighting systems, curtains, and heating, ventilation, and air conditioning (HVAC) systems, as well as other electrical loads in the user environment. The load control system 100 can also allow a user to control and monitor the user environment, including, for example, overriding automation settings, determining occupancy at one or more locations in the environment, determining power / energy usage at one or more locations in the environment, determining error conditions regarding electrical loads in the user environment, etc.
[0021] The load control system 100 can include a system controller 110 and multiple control source devices and multiple control target devices (in Figure 1collectively referred to as component 120 and collectively referred to as the control device). The system controller 110, the control source device, and the control target device may be configured to communicate (directly or indirectly) via one or more communication links 104, which may be wired communication links (although wireless communication links or some combination thereof may also be used). For example, the communication link 104 may be a digital communication link. The system controller 110, the control source device, and the control target device may be assigned unique addresses or identifiers (IDs) on the communication link 104 and may be configured to use these addresses to transmit and / or receive digital messages to and from each other via the communication link 104 (the messages may include, for example, commands to perform operations, information queries, status messages, response messages, etc.).
[0022] The control source device may include, for example, an input device that is operable to detect conditions within the user environment (e.g., user input, occupancy / vacancy conditions, changes in measured light intensity, and / or other input information) and transmit a digital message on the communication link 104 in response to the detected conditions. The control target device may include, for example, a load control device that is operable to, for example, receive a digital message on the communication link 104 and control a corresponding electrical load in response to the received digital message. A single control device of the load control system 100 may operate as both a control source device and a control target device. According to one example, the system controller 110 may be configured to receive digital messages transmitted by the control source device on the communication link 104, interpret these messages based on the configuration of the system, and then transmit digital messages on the communication link 104 to the control target device, whereupon the control target device controls the corresponding electrical load (although it will be appreciated that the control source device may also communicate directly with the control target device). The system controller 110 may also run a time-clock application that automatically adjusts the loads in the load control system, for example, based on the time of day and the day of the year. In this way, the system controller 110, the control source device, and the control target device may achieve automatic control of the electrical loads in the load control system. The system controller 110 may also be configured to communicate messages directly with the control source device and the control target device, such as: overriding the automatic settings based on user input from the user at the network device 164, reconfiguring the control source device and the control target device, determining status information of the control source device and the control target device, such as error conditions and power levels, etc. The system controller 110 may also determine the power usage and occupancy conditions within the user environment based on information communicated with the control source device and the control target device. These are merely examples, and other examples are possible. One example of the system 100 is the Lutron system.
[0023] As an example of a controlled target device, the load control system 100 may include one or more drivers, such as light-emitting diode (LED) drivers 130 for driving corresponding LED light sources 132 (e.g., LED light engines). The LED drivers 130 may be located in the luminaires of the corresponding LED light sources 132. The LED drivers 130 may have addresses on the corresponding communication links 104 and may be configured to transmit and / or receive digital messages to / from the system controller 110 via the communication links 104. The LED drivers 130 may be configured to control the corresponding LED light sources 132 in response to the received digital messages and may also be configured to monitor the status of the corresponding LED light sources 132 and transmit digital messages to the system controller to report the status. The LED drivers 130 may alternatively be coupled to a separate communication link (not shown), such as or a Digital Addressable Lighting Interface (DALI) communication link, and the load control system 100 may include a digital lighting controller coupled between the communication link 104 and the separate communication link. The load control system 100 may include other types of lighting load control devices, such as, for example, electronic dimming ballasts for driving fluorescent lamps.
[0024] As another example of a controlled target device, the load control system 100 may include daylight control devices, such as motorized window coverings, such as motorized roller shades 140. The load control system 100 may utilize the daylight control devices to control the amount of daylight entering the user environment in which the load control system 100 is installed. Each motorized roller shade 140 may include an electronic drive unit (EDU) 142. When the daylight control device is a motorized roller shade, the electronic drive unit 142 may be located within the roller tube. The electronic drive unit 142 may have an address on the communication link 104 and may be configured to transmit and receive digital messages on the link. The electronic drive unit 142 may be configured to adjust the position of the window covering fabric in response to digital messages received from the system controller 110 via the communication link. The load control system 100 may include other types of daylight control devices, such as, for example, cellular shades, draperies, roman shades, blinds, persian windows, pleated windows, tensioned roller shade systems, electrochromic or smart windows, or other suitable daylight control devices.
[0025] The load control system 100 may also include one or more other types of controlled target devices, and the one or more other types of controlled target devices may have addresses on the communication link 104 and may be configured to transmit and / or receive digital messages to and from the system controller 110 via the communication link. For example, such other devices may include: screw-in type lighting fixtures including a dimmer circuit and an incandescent or halogen lamp; screw-in type lighting fixtures including a ballast and a compact fluorescent lamp; screw-in type lighting fixtures including an LED driver and an LED light source; electronic switches, controllable circuit breakers, or other switching devices for turning appliances on and off; plug-in load control devices, controllable electrical outlets, or controllable power strips for controlling one or more plug-in loads; motor control units for controlling motor loads such as ceiling fans or exhaust fans; drive units for controlling projection screens; electric interior or exterior window blinds; thermostats for heating and / or cooling systems; temperature control devices for controlling the set temperature of an HVAC system; air conditioners; compressors; electric baseboard heater controllers; controllable dampers; variable air volume controllers; fresh air intake controllers; ventilation controllers; hydraulic valves for radiator and radiant heating systems; humidity control units; humidifiers; dehumidifiers; water heaters; boiler controllers; pool pumps; refrigerators; freezers; televisions or computer monitors; cameras; audio systems or amplifiers; elevators; power supplies; generators; chargers such as electric vehicle chargers; and / or alternative energy controllers, etc.
[0026] Regarding the control source devices, the load control system 100 may include a keyboard device 150, an occupancy sensor 154, and / or a daylight sensor 156. For example, each of them may have an address on the communication link 104 and may be enabled to transmit and / or receive digital messages to and from the system controller 110. For example, the keyboard device 150 may be configured to transmit a digital message to the system controller 110 via the communication link 104 in response to the actuation of one or more buttons of the keyboard device. The system controller 110 may be configured to transmit one or more digital messages to the load control devices (e.g., the LED driver 130 and / or the electric roller shutter 140) in response to the message to control the control devices.
[0027] The occupancy sensor 154 can be configured to detect occupancy and / or vacancy conditions in a user environment in which the load control system 100 is installed. The occupancy sensor 154 can transmit a digital message to the system controller 110 in response to detecting an occupancy and / or vacancy condition. The system controller 110 can be configured to, in response to receiving an occupancy message and a vacancy message respectively, turn on and off one or more LED light sources 132, for example. The occupancy sensor 154 can operate as a vacancy sensor such that the lighting load is turned off in response to detecting a vacancy condition (e.g., but not turned on in response to detecting an occupancy condition). The occupancy sensor 154 can be a wired device directly connected to the communication link 104. Alternatively, as Figure 1 shown, the occupancy sensor 154 can be a wireless device that transmits wireless messages via an RF (radio frequency) signal 106. Here, the load control system 100 can further include a wireless adapter device 158 connected to the communication link 104. The wireless adapter device 158 can be configured to receive the RF signal 106 and transmit a digital message to the system controller 110 via the communication link 104 in response to a wireless message from the occupancy sensor.
[0028] The daylight sensor 156 can be configured to measure the total light intensity in a user environment in which the load control system 100 is installed. The daylight sensor 156 can transmit a digital message including the measured light intensity to the system controller 110. In response to the measured light intensity, the system controller 110 can transmit one or more digital messages to the LED light sources 132 for controlling the intensity of the lights. Similarly, the daylight sensor 156 can be a wired device or a wireless device.
[0029] The load control system 100 can include one or more other types of control source devices that can have addresses on the communication link 104 and can be configured to transmit and / or receive digital messages with the system controller 110. For example, the load control system can include a temperature sensor, a humidity sensor, a radiometer, a glare sensor, a cloudiness sensor, a shadow sensor, a pressure sensor, a smoke detector, a carbon monoxide detector, an air quality sensor, a motion sensor, a security sensor, a proximity sensor, a fixture sensor, a separation sensor, a keyboard, a multi-zone control unit, a slider control unit, a kinetic or solar remote control, a key fob, an audio-visual control, a security device, a power monitoring device (e.g., an electricity meter, an energy meter, a utility sub-meter, a utility billing meter, etc.), and the like.
[0030] Similarly, it will be appreciated that the load control system 100 can include other types of control devices, including devices that can be configured to communicate directly without the need for the system controller 110.
[0031] In addition to communication link 104, system controller 110 may also be configured to communicate via one or more wireless and / or wired networks 160 to communicate with external devices and systems. As an example, system controller 110 may act as a web-based server and provide web-based services to users via network device 164 used by the user ( Figure 1 an exemplary network device is shown). However, it will be appreciated that system controller 110 may provide services to users in other ways, such as supporting applications directly executed by network device 164. Network device 164 may be, for example, a smart phone (e.g., smart phone, smart phone or smart phone), a personal computer, a laptop computer, a tablet device (e.g., handheld computing device), etc. In this way, system controller 110 may provide users with access to load control system 100. Through such services, users may interact with load control system 100, including, for example, determining the configuration of the load control system (such as determining the control source devices and control target devices in a given room or floor in the user's environment), overriding the automatic settings of the control source devices and control target devices in a given room or floor, determining the occupancy at one or more locations in a given room or floor, determining the energy usage of a given room or floor, determining the error conditions regarding electrical loads in a given room or floor, etc. It will be appreciated that system controller 110 may provide other services to users.
[0032] Now refer to Figure 2, showing a more detailed example of the load control system 100. It will be recognized that other examples are possible. As shown, the system controller 110 may include a server / compute server 210 and a plurality (two or more) of processors 270, which are referred to herein as Q processors for illustrative purposes only. For example, the server 210 may include one or more general-purpose processors, dedicated processors, conventional processors, digital signal processors (DSPs), microprocessors, microcontrollers, integrated circuits, programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), or any suitable controller or processing device, etc. (not shown) (collectively referred to herein as processors). The processors of the server 210 may be configured to execute one or more software-based applications including instructions that, when executed by the processors, may configure the processors to perform signal encoding, data processing, input / output processing, or any other function that enables the server 210 to perform as described herein. Once executed, the application may provide a plurality of software-based modules, including, for example, modules 250-258, which are further described below. For example, modules 250-258 may be executed as one or more software-based processes. Nevertheless, it will be recognized that, in addition to and / or as an alternative to software-based instructions and processes, the features and processes described herein may also and / or alternatively be provided by firmware and / or hardware. The server 210 may also include one or more memory modules / devices (including volatile and non-volatile memory modules / devices) that may be communicatively coupled to the processors. The memory modules / devices may be implemented as one or more external integrated circuits (ICs) and / or as one or more internal circuits of the processors. One or more memory modules / devices may store software-based applications and may also provide an execution space when the processors execute the applications. The server 210 may also include one or more communication interfaces / transceivers / network interface devices (not shown) communicatively coupled to the processors and / or the memory devices / modules. The communication interface may allow the server 210 to communicate through one or more wired and / or wireless communication networks including networks 160 and 162. As an example, the communication interface may allow the server 210 to communicate through one or more Ethernet-based networks. The server 210 may also include one or more database management systems for providing databases 260 and 262 as further described herein. These databases may be flat databases, relational / SQL databases, NoSQL / non-SQL databases, and / or time series databases, etc., but any form of database may be used. The server 210 may also include one or more user interfaces, such as a display monitor, keyboard, mouse, speaker, audio receiver, etc.Although server 210 is shown and described as a single system, server 210 can also be a distributed system in which modules 250-258 execute on different servers and communicate via a communication network. Similarly, if load control system 100 is to include a database management system, such a database management system can execute on a server other than server 210. Although server 210 is shown as having exemplary modules 250-258 and exemplary databases 260-262, it will be appreciated that a server can include fewer, other, and / or additional modules and databases.
[0033] Each Q processor 270 can be, for example, an embedded computing system that includes, for example, one or more processors (not shown) described similarly above and is configured to execute one or more software-based applications that include instructions that, when executed by the processor, can configure the processor to perform signal encoding, data processing, input / output processing, or any other function that enables the Q processor to perform as described herein. For example, these functions can be performed as one or more software-based processes. Nevertheless, it will be appreciated that, in addition to and / or as an alternative to software-based instructions and processes, the features and processes of the Q processors described herein can also and / or alternatively be provided by firmware and / or hardware. Each Q processor can also include one or more memory modules / devices (including volatile and non-volatile memory modules / devices) that can be communicatively coupled to the processor in the Q processor. The memory modules / devices can be implemented as one or more external integrated circuits (ICs) and / or as one or more internal circuits of the processor. The one or more memory modules / devices can store software-based applications or firmware and can also provide an execution space when the processor executes the application. Each Q processor can also include one or more communication interfaces / network interface devices / transceivers (not shown) communicatively coupled to the processor and / or the memory device / module. The communication interface of the Q processor can allow the Q processor to communicate via one or more wired and / or wireless communication networks including network 162. The communication interface of the Q processor can also allow the Q processor to communicate with the control source device and the control target device (shown as control device 120 in Figure 2 shown) of load control system 100 via one or more communication links 104.
[0034] Referring more specifically to Q-processor 270, each Q-processor may interface with one or more communication links 104. Each communication link of a given Q-processor may be connected to one or more control source devices and one or more control target devices 120. Each control source device and each control target device on a given communication link 104 of the Q-processor may be configured to have a unique address or identifier on the link, the unique address or identifier enabling the Q-processor to uniquely identify and communicate with the control device (and possibly enable the control devices to communicate with each other) by transmitting and receiving messages with the control device (again, the messages may include, for example, commands to perform an operation, information queries, status information messages, response messages, etc.). As an example, the address / identifier may be a binary-based address (i.e., 1s and 0s), but other address formats may be used. As one example, the address may include multiple parts, such as a first part identifying the type of control device (e.g., occupancy sensor, daylight sensor, driver, curtain, etc.) and a second part including a unique identifier of the device. Each Q-processor may also be connected to server 210 via network 162, and specifically to one or more modules of server 210 (such as runtime 258), as further described below. This connection may be a bidirectional UDP or TCP connection that allows communication between the Q-processor and server 210. As another example, multiple Q-processors may be communicatively coupled together, where one Q-processor is connected to server 210 via network 162 and relays messages for the other Q-processors (as shown by Q-processors 270' and 270").
[0035] Depending on the user environment, each Q-processor may be associated with a floor of a building to control the control source devices and control target devices on that floor. As another example, such as in a hotel, each Q-processor may be associated with a room of the hotel to control the control source devices and control target devices in that room. Other configurations are possible. Generally, the Q-processors may be physically located within the user environment they control.
[0036] Each Q-processor can be an autonomous system, which can be configured by an administrator according to the desired operation of the load control system 100. In other words, based on the desired operation of the load control system, each Q-processor can be configured to control its corresponding control device according to the overall desired operation. Once configured, the Q-processor and its associated control device on the corresponding communication link 104 may not need to interact with the server 210 to operate. For example, the software application executed on each Q-processor can be configured by an administrator to perform many functions on the control device associated with the Q-processor. For example, the Q-processor can receive messages (such as daylight readings) from a control source device on its communication link and, based on the messages and configuration of the system, transmit messages (such as changing the brightness level) to a control target device on its link. Similarly, these messages can each include a unique address or identifier assigned to the corresponding control device. The Q-processor can also transmit to the server 210 the messages it receives from the control device and / or the messages it transmits to the control device via the network 162, thereby providing the server 210 with the current state of the control device (brightness level, shading level, heating level, detected occupancy, detected vacancy, glare level, light intensity level, temperature / HVAC level, etc.). All such messages transmitted by the Q-processor can include the unique address of the control source device and / or the control target device. The Q-processor can also perform a time-clock function and, based on, for example, a certain day, the time of day, and the configuration of the load control system 100, transmit messages to the control source device and / or the control target device to change the configuration (such as changing the brightness level based on the time of day). Similarly, the messages transmitted to the control source device and / or the control target device in this way can also be transmitted by the Q-processor to the server 210 via the communication network 162, thereby providing the server with the current state of the control device. The Q-processor can also receive status information from the control source device and the control target device on its link 104. This information can include error conditions, and this information can also be transmitted by the Q-processor to the server 210 via the network 162. This information can include occupancy / vacancy conditions, and this information can also be transmitted by the Q-processor to the server 210 via the network 162. The Q-processor can also determine the energy or power consumption of a given load and periodically report this information to the server 210 via the network 162. The Q-processor can also receive messages from the server 210 via the network 162, such as changes to the time-clock operation, changes to the configuration of the control source device or the control target device, or commands to turn on / off lights or raise / lower curtains, etc. The user can initiate such commands from the network device 164. Similarly, like the information transmitted by the Q-processor to the server 210, the messages received from the server 210 can also include the unique address of the control device the message is directed to. It will be appreciated that the Q-processor can provide other, additional, and / or fewer functions.Typically, the Q processor can be configured to use a well - defined command / response / messaging protocol to communicate messages as described herein with a control device and with server 210. Such protocols can include, for example, one or more messages described in the Lutron Integration Protocol (http: / / www.lutron.com / TechnicalDocumentLibrary / 040249.pdf), the entire content of which is incorporated herein by reference.
[0037] More specifically referring to server 210, it can include a number of functional modules (such as, Web application 250, gateway 252, runtime 258, reporting 254, and alerts 256) and a number of databases (such as, project database 260 and log database 262). It will be appreciated that server 210 can include other, fewer, and / or additional functional modules and databases. Each functional module can be provided as one or more software - based applications and can be executed on / by a processor of server 210 as one or more software - based processes. It will be appreciated that the services / functions provided by these example modules can be provided in other ways and that the described functions of a given module can be performed by other modules and processes.
[0038] Starting with the project database 260, it can contain a complete definition of the load control system 100 for a given user environment (as defined / provided, for example, by a system administrator). It can contain entries for each control source device and control target device 120 in the load control system 100, including: (i) the unique address assigned to each control device on the respective communication link 104 of each control device, as discussed above; (ii) which Q processor controls that control device; (iii) the attributes of these control devices and the configuration parameters of these attributes, which can describe how these devices operate in the load control system defined by the administrator. The Q processor can use this information when configuring the control devices. For example, the project database 260 can also include a definition of the user environment defined by the system administrator. For example, the database can define the user environment as having multiple floors, where each floor has multiple zones and / or offices. For example, the database can also describe which specific control devices are on each floor and in a given area or room. For example, for a hotel, the database can define the number of floors, which hotel rooms are on a given floor, and which specific control devices are in each room. The project database 260 can be configured as any type of database, such as a relational / SQL database, but other configurations can be used, such as the flat database structure, NoSQL database structure, etc., as described herein.
[0039] According to one aspect of the load control system 100, the server 210 can be based on the REST (Representational State Transfer) architecture. According to the REST architecture, the load control system 100 for a given user environment can be regarded as a set of resources (the term used in the RESTful architecture). As for which resources constitute the resources of a given load control system 100, it can be flexible because it can depend on the actual user environment being controlled and the services provided by the load control system 100 to users at the network device 164 in this environment. For example, in the case of an office building, each control source device and each control target device can be regarded as resources. Similarly, each floor of the building can be regarded as a resource, each office in the building can be regarded as a resource, each meeting room can be regarded as a resource, etc. The building can also be regarded as a region or zone, so each region or zone can be regarded as a resource. For example, in the case of a hotel, in addition to each control source device and each control target device being regarded as resources, each floor and each hotel room can be regarded as resources. The services provided by the server 210 to users at the network device 164 can be based on operations performed on the defined resources.
[0040] According to the REST architecture, each defined resource of a given load control system 100 can have one or more Uniform Resource Identifiers (URIs) associated with it. For example, assume that a given load control system 100 has multiple occupancy sensors and daylight sensors (each being a resource), then each can be assigned a URI / associated with a URI, as shown in Table 1.
[0041] Table 1
[0042] · / sensors / occupancy_sensors / Occupancy Sensor ID#1 (where ID#1 refers to a specific occupancy sensor)
[0043] · / sensors / occupancy_sensors / Occupancy Sensor ID#2 (where ID#2 refers to another occupancy sensor)
[0044] · / sensors / daylight_sensors / Daylight Sensor ID#1 (where ID#1 refers to a specific daylight sensor)
[0045] · / sensors / daylight_sensors / Daylight Sensor ID#2 (where ID#1 refers to another daylight sensor)
[0046] As another example, assume that the load control system 100 has multiple drivers (each a resource) that drive different LED light sources, and each driver can be assigned to be associated with a URI, as shown in Table 2.
[0047] Table 2
[0048] · / drivers / Driver ID#1 (where ID#1 refers to a specific driver)
[0049] · / drivers / Driver ID#2 (where ID#2 refers to another driver)
[0050] As another example, each floor and / or office of the user environment that the load control system 100 is controlling can be considered a resource and can be assigned / associated with a URI as shown in Table 3.
[0051] Table 3
[0052] · / floors / Floor#1 (where Floor#1 refers to the first floor of the building)
[0053] · / floors / Floor#2 (where Floor#2 refers to the second floor of the building)
[0054] · / offices / Office#3 (where Office#3 refers to the third office that may be located on the first floor of the building)
[0055] · / offices / Office#4 (where Office#4 refers to the fourth office that may be located on the second floor of the building)
[0056] Similarly, each resource can also have additional URIs assigned / associated with it based on other URIs (such as location) to show its relationship with other resources. For example, Table 4 shows an example using location.
[0057] Table 4
[0058] · / floors / Floor#1 / offices / Office#3
[0059] · / floors / Floor#2 / offices / Office#4
[0060] · / floors / Floor#1 / offices / Offices#3 / sensors / occupancy_sensors / Occupancy-Sensor-ID#1
[0061] · / floors / Floor#2 / offices / Offices#4 / sensors / daylight_sensors / Daylight-Sensor-ID#1
[0062] · / floors / Floor#1 / offices / Offices#3 / drivers / Driver-ID#1
[0063] Similarly, these are merely examples. The item database 260 can store, for each resource, a representation (as the term is used in a RESTful architecture), one or more URIs thereof, and, in the case of a control device, its relationship to the Q-processor of the control device, as well as the address on the communication link 104 for accessing the device. In another aspect, the item database 260 may not include one or more URIs of the resources, but may be configured such that when a module such as the gateway 252 interfaces with the database, the gateway 252 can form / determine the URIs of the resources. Other configurations will be recognized as possible. For a control device type resource, its representation may include the parameters of the resource and the values of the parameters. For example, for a curtain control device or a light control device type resource, the representations of these resources may include, respectively, the current settings of the curtain or the light and their locations (e.g., floor and office). Alternatively, each representation may include, for example, the URIs of the floor and office where the curtain or light is located and / or information for forming the URIs. Similarly, these are merely examples.
[0064] Now turning to module 250 - 258 of server 210, runtime 258 can serve as an interface between server 210 and the Q processor, and in particular, can maintain a communication connection with the Q processor via network 162. Also, for example, these connections can be UDP or TCP bidirectional connections. In this way, runtime 258 can serve as a router to route data / information / messages from the Q processor to various modules within server 210, and route data / information / messages from various modules within server 210 to a specific Q processor. Runtime 258 can also serve as a converter to convert message and information formats between, for example, the Q processor and the modules of server 210. For example, runtime 258 can receive data from the Q processor. As indicated above, such information can include status information of control devices (e.g., light level, shading level, HVAC level), error conditions, and power consumption. For example, runtime 258 can maintain the current status and power consumption level of the device. Runtime 258 can also aggregate some information, such as the power consumption of a given room or floor. Runtime 258 can also communicate with report 254 to send it any information or at least part of the information (including any status information and error conditions) that it receives from the Q processor, and can send it any power consumption determination, etc. Report 254 can communicate with runtime 258 to specify the type of information that runtime 258 should forward to it. Runtime 254 can also communicate with alert 256 to convey any error conditions reported by the Q processor, for example. Alert 256 can communicate with runtime 258 to specify the type of error that runtime 258 should forward to it. Before transmitting information to report 254 or alert 256, runtime 258 can perform data conversion or transformation, including, for example, converting the unique address of the control device used on communication link 104 to the URI of the device and / or associating the transmitted information with the specific URI of the device. Runtime 258 can also communicate with gateway 252. As an example, runtime 254 can receive messages from gateway 252, such as a change in time - clock operation, a change in the configuration of the control source device and / or control target device 120, or a command to turn on / off lights or raise / lower curtains. Such commands can be initiated by the user from network device 164. Runtime 258 can convert the message into a format understood by the Q processor, route the message to the appropriate Q processor, and, assuming the message is directed to a specific control device, convert the URI address to the unique address of the device used on communication link 104. As another example, runtime 258 can receive messages from gateway 252 that the runtime can directly respond to, such as the current status or current power consumption of a control device. As a result of the message received from the Q processor, runtime 258 can also transmit the message directly to gateway 252. Also, for example, the communication from runtime 258 to gateway 252 can use the URI of the relevant device.Other variations are possible.
[0065] Report 254 can interface with runtime 258, as described above, and can store all or part of the data it receives from the runtime in log database 262. Log database 262 can be configured as any type of database, such as a relational / SQL database, but other configurations can be used, such as the flat database structure, NoSQL database structure, etc. described herein. Report 254 can also communicate with gateway 252. Through this interface with gateway 252, report 254 can receive requests for certain reports (e.g., the request can be initiated by the user from network device 164), generate a report using data from log database 262, and then transmit the report to gateway 252, which can forward the report to the user via web application 250.
[0066] As described above, alert 256 can interface with runtime 258 and can receive error conditions, e.g., error conditions reported by Q processor 270. Alert 256 can also communicate with gateway 252. Through this interface, gateway 252 can request notification of any error or certain errors within system 100 in response to a user's request (e.g., from network device 164). When alert 256 receives an error condition from runtime 258, it can report these errors to gateway 252, which can then report the errors to the user at network device 164 via web application 250.
[0067] Now referring to the Web application 250 and the gateway 252, the Web application can act as a web-based server and provide web-based services to users via the network 160 through the network device 164. For example, by using a web browser / web interface 165 on the network device 164, a user can access the Web application 250 using a standard URL (Uniform Resource Locator). These services provided by the Web application can include, for example, a user's request for an indication of the configuration of the load control system 100 regarding a controlled user environment (e.g., floors, offices, control devices within the office, etc. that make up the user environment), a request to control or configure a control device (e.g., turn on / off lights, raise / lower curtains), a request to reconfigure the time-clock configuration, a request for error conditions, a request for reports (such as occupancy and power consumption), etc. The Web application can interact with the gateway 252 to provide such services by using an API (Application Programming Interface) 272 provided by the gateway through a communication interface / connection 271. This API can be a RESTful API (i.e., an API that operates on resource representations identified by URIs as discussed herein), and can be based on, for example, HTTP (Hypertext Transfer Protocol) and use standard HTTP methods (such as GET, PUT, POST, DELETE, etc.). Nevertheless, it will be recognized that the API 272 can be any RESTful API that supports basic operations (such as create, read, update, and delete). The API can also support subscription request operations. For illustrative purposes only, create, read, update, and delete will be used herein. The API 272 can include operations that can be performed on defined resources of the load control system 100, and specifically, the API 272 can provide operations based on the URIs of the resources. For example, the Web application (based on the services provided to the user via the network device 164) can send a read-based message to the gateway 252, which can cause the gateway to pass back to the Web application 250 one or more messages (e.g., responses) that include the URIs of the corresponding resources. Similarly, the Web application can, for example, send read, create, update, and / or delete-based messages to the gateway indicating one or more URIs of the corresponding resources involved in the message. In response, the gateway can operate on the specified resources and pass back a Web application message containing information about the resources.
[0068] Therefore, when a user uses the network device 164 to access the Web application 250, the Web application can provide a web page (e.g., a graphical user interface (GUI)) to the user via the network device, and the web page includes a set of services that allow the user to interact with the load control system 100. When the user issues these requests, the Web application 250 can provide services to the user by sending one or more messages (similarly, the messages can include, for example, commands to perform operations, information queries, status information messages, response messages, etc.) to the gateway 252 by using the API 272 provided by the gateway. These messages can be formatted / based on the API 272 provided by the gateway 252 to the Web application 250. The gateway 252 can then act as a router and translator based on the messages. For example, when the gateway 252 receives a message from the Web application 250, it can determine the location to which it needs to route the message, such as to the report 254, runtime 258, project database 260, and / or alert 256. The gateway 252 may also need to transform the message from the API 272 used by the Web application 250 into a format understood by the modules and databases 254 - 262. For example, the gateway can transform the message from the format corresponding to the API 272 into the internal format used by the server 210, and can transform, for example, the commands of the API into the commands used by the system. Similarly, when the gateway 252 receives information from, for example, the report 254, runtime 258, project database 260, and / or alert 256, it may be necessary to transform the information into a format corresponding to the API 272 and transmit the information to the Web application 250 for processing according to the provided services and subsequent presentation to the user.
[0069] Since the server 210 can be based on the RESTful architecture, the initial interaction of the user of the network device 164 / device with the Web application 250 can cause the Web application to initially send a discovery or query type command (e.g., read) (based on the specific services provided by the Web application) to the gateway 252 to determine / discover the resources within the load control system that the Web application can operate on. In response to the initial request of the Web application 250, the gateway 252 can provide an indication of the resources to the Web application 250 by using the URIs of the corresponding resources. The Web application 250 can then provide the URIs to the network device 164 / user, and the network device / user can subsequently continue to use the URIs to communicate with the Web application 250. In other words, according to the RESTful architecture, the presentation of the load control system components (e.g., load control devices) by the gateway to the Web application and the network device / user, and the subsequent interaction of the Web application and the network device / user with the gateway, can be achieved through the resource URIs and the operations performed on the resources specified by the resource URIs.
[0070] Typically, although the modules of server 210 (e.g., gateway 252, reporting 254, runtime 258, and alerting 256, as well as web application 250) are described herein as executing on one / the same server, the modules and / or databases may execute / reside on any combination of hardware-based servers. For example, when executing on the same server, the modules may communicate using any inter-process communication (IPC) mechanism (e.g., the “.Net Remoting” architecture), and when executing on different servers, for example, the modules may communicate using any remote processing communication mechanism (e.g., remote procedure call).
[0071] Now referring to Figure 3 , an exemplary problem with load control system 100 as shown in Figure 1 and Figure 2 is shown (for simplicity, Figure 3(Only a subset of the Q processor 270 is shown). As an example of a problem, a user can have two buildings A and B in a single campus. The user can install a load control system 302 in building A at a first time, where the load control system 302 can operate as the system 100 described herein. The load control system 302 can include a server 210a similar to the server 210 and can include one or more Q processors 270a that can be similar to the Q processor 270 described herein. At the first time, the load control system 302 can run a first version of an application software, and the first version of the application software can be referred to as version X. Similarly, the application software can be software executed on the server 210a and / or the Q processor 270a. Later, the user can install a load control system 304 in building B, where the load control system 304 can operate as the system 100 described herein. The load control system 304 can include a server 210b similar to the server 210 and can include one or more Q processors 270b that can be similar to the Q processor 270 described herein. At this later time, the load control system 304 can run a second version of the software, and the second version of the software can be referred to as version Y and can be different from version X. For example, version X and version Y may differ in terms of bug fixes, new features, etc. Similarly, the version Y software can be software executed on the server 210b and / or the Q processor 270b. The user may not expect to update the load control system 302 from version X to version Y. Therefore, the user can now have two independent load control systems, and the user needs to interact with the load control systems independently of each other because the load control systems are on different versions of the software. In other words, the user may need to independently interact with the web application 250a of the load control system 302 and also with the web application 250b of the load control system 304, thus opening two web browsers / interfaces 165a and 165b on the network device 164, each web browser / interface for one of the load control systems 302 and 304, and switching between the web browsers depending on the building the user wishes to interact with (as Figure 3 shown, the user can open two web browsers, each web browser for one system 302 / 304). In addition to having to independently handle multiple load control systems, Figure 3 another problem with the example is that the user may not be able to obtain an aggregated view of the building A-building B campus and instead has to perform the aggregation himself. As a simple example, the user may expect to know the total power consumption of the entire campus. In Figure 3In the example shown, the user may need to perform the aggregation himself based on information provided independently by each load control system. If the user then installs a third system in a third building, etc., then these problems may become worse. Similar problems may occur if the user installs a load control system on a first set of floors of a building at a first time and then installs a load control system on a second set of floors of the building at a second time. Similar problems may also occur if the user has multiple buildings at different geographical locations where the user installs load control systems at different times.
[0072] Now referring to Figure 4 , there is shown an exemplary load control system 400 applied to the building example discussed in Figure 3 . In this example, the load control system 400 includes two load control systems 302 and 304, where the load control system 302 corresponds to Figure 3 Building A and the load control system 304 corresponds to Building B (as another example, each load control system can correspond to different floors of a building). Each of the load control systems 302 and 304 can be similar to the load control system 100 and operate independently in a manner similar to that described for the load control system 100, as relative to Figure 1 , Figure 2 and Figure 3 described. Each of the load control systems 302 and 304 can run the same or different versions of software ( Figure 4 shows load control systems of different versions X and Y). Similarly, the network device 164 / user can interact with the load control systems 302 and 304 independently of each other, as described relative to Figure 3 . In other words, by using the network device 164, the user can use a web browser / interface 165a and interface with the Web application 250a of the server 210a of the load control system 302 and control the load control system. Similarly, by using the network device 164, the user can use a web browser / interface 165b and interface with the Web application 250b of the server 210b of the load control system 304 and control the load control system. Nevertheless, neither the system 302 nor the system 304 requires the Web application 250a / b, and the user does not necessarily need to interface with either Web application.
[0073] Compared with the load control system 100, the load control system 400 now includes a server 490, which can be configured similarly to, for example, the server 210 as described herein. The server 490 can include a composite gateway function module 452 and a web application function module 450. Each module can be provided as one or more software-based applications and can be executed as one or more software-based processes on the processor of the server 490, for example, similarly to the description of the modules of the server 210 herein. Nevertheless, it will be recognized that the services / functions provided by these exemplary modules 452 and 450 can be provided in other ways (such as, hardware- and / or firmware-based modules), and certain of the described functions of a given module can be performed by other modules.
[0074] Similar to the web application 250, the web application 450 can act as a web-based server and provide web-based services to users via a network (not shown) through a network device 164. For example, using a web browser / interface 492 on the network device 164, a user can access the web application 450 using a standard URL. The services provided by the web application 450 can be similar to the types of services provided by the web application 250a and the web application 250b. However, while the web application 250a can allow a user to control and interact with the control device 120a of the load control system 302, and the web application 250b can allow a user to control and interact with the control device 120b of the load control system 304, the web application 450 can allow a user to control and interact with both the load control systems 302 and 304 simultaneously, and thus control and interact with both the control device 120a and the control device 120b. Additionally, compared with Figure 3Unlike the example shown, Web application 450 may allow a user to interact with two load control systems using a web browser / interface 492. In other words, using a composite gateway 452 as described below, Web application 450 may provide a composite view of both load control systems 302 and 304 to a user of network device 164, thereby controlling and interacting with the load control systems as if they were a single unified load control system. However, due to composite gateway 452, the services provided by Web application 450 may be designed / configured independently of knowing that multiple load control systems 302 and 304 exist below it. Thus, a user of network device 164 may use Web application 450 to determine the configuration of load control system 302 relative to Building A (e.g., floors of Building A, offices, control devices within the offices, etc.), determine the configuration of load control system 304 relative to Building B (e.g., floors of Building B, offices, control devices within the offices, etc.), control or configure the control devices of Building A and Building B (e.g., turn lights on / off, raise / lower window coverings), reconfigure the time-clock configurations of Building A and Building B, receive error conditions of Building A and Building B, receive reports of Building A and Building B (such as occupancy and power consumption), and in particular receive information in an aggregated form. For example, Web application 450 together with composite gateway 452 may allow a user to obtain an aggregated report / information for the entire campus of Building A and Building B, such as total power consumption, total occupancy, etc. Web application 450 may provide such services by interacting with composite gateway 452 using API 430 provided by the gateway.
[0075] An administrator may configure composite gateway 452 to have communication interfaces / connections 412 and 422 with gateway 252a of server 210a / load control system 302 and gateway 252b of server 210b / load control system 304, respectively. Gateway 252a of server 210a / load control system 302 and gateway 252b of server 210b / load control system 304 may be as described above with reference to Figure 2operate as described for gateway 252, except that, for example, each may run a different version of software (X and Y). The gateway 252a of server 210a / load control system 302 may provide API 410 to the web application 250a of server 210a / load control system 302 via communication interface / connection 414, and may also provide the same API to the composite gateway 452 via interface 412. API 410 may be a RESTful API and may be based on and use standard operations such as create, read, update, delete, and / or subscribe requests, etc., as discussed above with respect to system 100. Similarly, other examples are possible. API 410 may include operations that can be performed on the defined resources of load control system 302, and in particular, may provide operations based on the URIs of the resources of load control system 302. As a REST-based architecture, the gateway 252a of server 210a / load control system 302 may be configured to communicate and interact with the web application 250a of load control system 302 and the composite gateway 452 in the same manner, and may interact with both simultaneously.
[0076] Similarly, the gateway 252b of server 210b / load control system 304 may provide API 420 to the web application 250b of server 210b / load control system 304 via communication interface / connection 416, and may also provide the same API to the composite gateway 452 via interface 422. API 420 may be a RESTful API and may be based on and use standard operations such as create, read, update, delete, and / or subscribe requests, etc., as discussed above. Similarly, other examples are possible. API 420 may include operations that can be performed on the defined resources of system 404, and in particular, may provide operations based on the URIs of the resources of load control system 304. As a REST-based architecture, the gateway 252b of server 210b / load control system 304 may be configured to communicate and interact with the web application 250b of server 210b / load control system 304 and the composite gateway 452 in the same manner, and may interact with both simultaneously.
[0077] According to this example, in addition to interacting with the gateway 252a of the load control system 302 through the API 410 and interacting with the gateway 252b of the load control system 304 through the API 420, the composite gateway 452 can also interact with the Web application 450 through the API 430. The composite gateway 452 provides the API 430 to the Web application 450 through the communication interface / connection 418. The API 430 can be a RESTful API and can be based on and use standard operations such as create, read, update, delete, and / or subscribe requests, etc., as discussed above with respect to the system 100. Similarly, other examples are possible. The API 430 can include operations that can be performed on the defined resources of the load control system 302 and the load control system 304, and in particular, can provide operations based on the URIs of the resources of these systems.
[0078] The API 430 can be the same as the API 410 provided by the gateway 252a to the composite gateway 452 and can be the same as the API 420 provided by the gateway 252b to the composite gateway. According to another example, the APIs can be different. For example, the composite gateway 452 and the gateway 252b can run the same version of software (as Figure 4 shown), and thus the API 430 provided by the composite gateway 452 can be the same as the API 420 provided by the gateway 252b. However, since the gateway 252a can be on an earlier version of the software, the API 410 it provides to the composite gateway can be different from the API 430 provided by the composite gateway to the Web application 450. For example, the API 430 provided by the composite gateway to the Web application 450 can include additional messages, and / or one or more messages can now include additional fields. According to one example, the gateway 252a can be configured such that if the composite gateway 452 transmits an API message that does not conform to the API 410 of the gateway 252a to the gateway 252a, then the gateway 252a can ignore the message and / or the fields of the message that are inconsistent with its API. According to another example, the API 430 can be different from the API 410 and the API 420, and the composite gateway 452 can act as a converter between these APIs to convert the message format.
[0079] The modules 250a - 258a and databases 260a - 262a of the load control system 302, the modules 250b - 258b and databases 260a - 262a of the load control system 304, the composite gateway 452, and the Web application 450 can be executed on any combination of hardware-based servers. For example, all the modules and databases of the load control system 400 can be executed on the same server. As another example, as Figure 4As shown, the modules and databases of the load control system 302 may be executed on the first server 210a, the modules and databases of the load control system 304 may be executed on the second server 210b, and the composite gateway 452 and the web application 450 may be executed on the third server 490, or some combination thereof. As another example, one or more modules and databases of the load control system 400 may be executed on one or more cloud-based servers. Generally speaking, for example when the modules described herein are executed on the same server, the modules may communicate using any inter-process communication (IPC) mechanism (e.g., the ".Net Remoting" architecture), and for example when executed on different servers, the modules may communicate using any remote processing communication mechanism (e.g., remote procedure call).
[0080] Turning now more specifically to the composite gateway 452 and the web application 450, according to another aspect of the load control system 400, a system administrator may, for example, configure the composite gateway to associate the communication connection / interface 412 to the load control system 302 with Building A (or a first set of floors, or a first area, etc., depending on the area controlled / installed by the load control system 302), and associate the communication connection / interface 422 to the load control system 304 with Building B (or a second set of floors, or a second area, etc., depending on the area controlled / installed by the load control system 304). The composite gateway 452 may also be configured, for example by the system administrator, to associate each of Buildings A and B with, for example, a campus. According to another aspect of the load control system 400, the system administrator may configure the composite gateway 452 to associate a URI with the communication connection / interface 412 to the load control system 302 and associate another different URI with the communication connection / interface 422 to the load control system 304. For example, the composite gateway 452 may be configured to associate any one or more of the following with the connection 412 to the load control system 402: " / BuildingA", " / buildings / BuildingA", or " / campus / buildings / BuildingA". Similarly, the composite gateway 452 may be configured to associate any one or more of the following with the connection 422 to the load control system 404: " / BuildingB", " / buildings / BuildingB", or " / campus / buildings / BuildingB". Again, these are merely examples.
[0081] According to an exemplary operation of the load control system 400, when a user accesses the Web application 450 using the network device 164, the Web application can provide a web page to the user via the network device, the web page including a set of services that allow the user to interact with the load control system 400. When the user issues these requests, the Web application 450 can provide services by sending messages (e.g., similarly, the messages can include, for example, commands to perform operations, queries for information, etc.) to the composite gateway 452 using the API 430 provided by the composite gateway and receiving messages (e.g., response messages) from the composite gateway 452. The composite gateway 452 can then act as a router, transformer, and data aggregator based on the messages. For example, when the composite gateway 452 receives a message from the Web application 450, it can determine where it needs to route the message, including whether it needs to route the message to the gateway 252a via the connection 412 and / or whether it needs to route the message to the gateway 252b via the connection 422. Assuming that the API 430, API 410, and API 420 are the same or substantially the same as those discussed above (i.e., different versions), the composite gateway 452 can forward the messages it receives from the Web application 450 on each of the interfaces 412 and 422. Routing is further discussed below. When the gateway 252a and the gateway 252b receive the messages, they can operate on the messages, for example, as relative to Figure 1 and Figure 2as discussed with respect to load control system 100. For example, when gateways 252a and 252b generate response messages, they can each in turn forward the response messages to the composite gateway 452 at their respective interfaces 412 and 422 using their respective APIs. For example, the composite gateway 452 can in turn be configured to aggregate the responses from each of gateways 252a and 252b into a single response message and forward the response message to the Web application 450 for processing according to the services provided and subsequent presentation to a user at network device 164. When aggregating the response messages from each of gateways 252a and 252b into a single response, the composite gateway can extract information (information A) from the response message from gateway 252a and extract information (information B) from the response message from gateway 252b and combine the information to at least partially form the response message forwarded to the Web application 450 (e.g., the message forwarded to the Web application can include information A and information B). According to another example, the composite gateway can be configured to perform an operation on information A and / or information B to form new information C, and the new information C can at least partially form the response message forwarded to the Web application 450. For example, gateways 252a and 252b can each forward power measurements (e.g., corresponding to building A and building B respectively) to the composite gateway. The composite gateway can be configured to combine the power measurements into a single value and provide a total power reading across the two buildings to the Web application 450. Other examples are possible. Generally, the response message forwarded from the composite gateway 452 to the Web application 450 can include a URI corresponding only to the resources of load control system 302, can include a URI corresponding only to the resources of load control system 304, or can include a URI corresponding to the resources of load control system 302 and load control system 304, as further described below. It will also be appreciated that, for example, depending on the information being transmitted, the composite gateway can forward the responses received from each of gateways 252a and 252b to the Web application 450 as separate messages rather than performing aggregation of the information or some combination thereof. Additionally, while messages are described herein as being forwarded from the Web application 450 to the composite gateway 452 and then to gateways 252a and 252b (and vice versa), the composite gateway can perform transformations of the message and data / information formats to conform to each interface API.
[0082] As indicated, messages transmitted by gateways 252a and 252b to the composite gateway 452 may or may not include URIs of resources controlled by the respective load control systems (depending on the messages sent to the gateways). When the messages do include URIs of resources, the composite gateway may forward these URIs to the Web application 450, which may also forward the URIs to the web browser 492 at the network device 164. Thereafter, based on the services provided by the Web application 450 and requests issued by the user at the network device 164, the Web application 450 may issue a message to the composite gateway 452 that includes URIs of resources controlled by the load control system 302 and / or the load control system 304, and may cause the gateways 252a and 252b to forward other resource URIs to the composite gateway 452 and thus to the Web application 450. Preferably, an initial interaction of the user with the Web application 450 via the network device 164 will cause the Web application 450 to send a general search or discovery or query type command / message (e.g., a command based on a read) to the composite gateway, which will then forward the command / message to each of the gateways 252a and 252b and cause each of the gateways 252a and 252b to respond to the composite gateway with URIs of one or more resources of the load control system 302 and / or the load control system 304. Similarly, the composite gateway may forward these URIs to the Web application 450, which may also forward the URIs to the web browser 492 at the network device 164.
[0083] Now referring more specifically to the routing performed by the composite gateway 452, since the gateway receives URIs of resources from the gateway 252a of the load control system 302 via the interface 412, the composite gateway may modify or transform or convert the URIs to include URIs that the composite gateway has been configured to associate with the interface 412 (e.g., " / BuildingA", " / buildings / BuildingA" or " / campus / buildings / BuildingA"), or modify or transform or convert the URIs to be associated with the above URIs. For example, the gateway 252a may forward any of the following example URIs shown in Table 5 to the composite gateway 452, each URI representing a resource of the load control system 302.
[0084] Table 5
[0085] · / sensors / occupancy_sensors / Occupany-Sensor-ID#1
[0086] · / drivers / Driver-ID#1
[0087] · / floors / Floor#1
[0088] · / offices / Office#3
[0089] · / floors / Floor#1 / offices / Office#3
[0090] · / floors / Floor#1 / offices / Office#3 / sensors / occupancy_sensors / Occupany-Sensor-ID#1
[0091] · / floors / Floor#2 / offices / Office#3 / drivers / Driver-ID#1
[0092] Subsequently, the composite gateway 452 can transform each URI to include the URI that the composite gateway has been configured to associate with the interface 412 or associated with the URI. For example, assuming the URI is " / campus / buildings / BuildingA", the URIs in Table 5 can be transformed by adding " / campus / buildings / BuildingA" as a prefix, as shown in Table 6, for example.
[0093] Table 6
[0094] · / campus / buildings / BuildingA / sensors / occupancy_sensors / Occupany-Sensor-ID#1
[0095] · / campus / buildings / BuildingA / drivers / Driver-ID#1
[0096] · / campus / buildings / BuildingA / floors / Floor#1
[0097] · / campus / buildings / BuildingA / offices / Office#3
[0098] · / campus / buildings / BuildingA / floors / Floor#1 / offices / Office#3
[0099] · / campus / buildings / BuildingA / floors / Floor#1 / offices / Office#3 / sensors / occupancy_sensors / Occupany-Sensor-ID#1
[0100] · / campus / buildings / BuildingA / floors / Floor#2 / offices / Office#3 / drivers / Driver-ID#1
[0101] Similarly, when the composite gateway 452 receives the URI of a resource from the gateway 252b of the load control system 304 via the interface 422, the composite gateway may modify or transform or convert the URI to include a URI that the composite gateway has been configured to associate with the interface 422 (e.g., " / BuildingB", " / buildings / BuildingB", or " / campus / buildings / BuildingB") or modify or transform or convert the URI to be associated with the above URIs. For example, assuming that the gateway 252b of the load control system 304 forwards the URIs shown in Table 5 to the composite gateway, the composite gateway may transform the URIs in Table 5 by adding " / campus / buildings / BuildingB" as a prefix, as shown in Table 7, for example.
[0102] Table 7
[0103] · / campus / buildings / BuildingB / sensors / occupancy_sensors / Occupany-Sensor-ID#1
[0104] · / campus / buildings / BuildingB / drivers / Driver-ID#1
[0105] · / campus / buildings / BuildingB / floors / Floor#1
[0106] · / campus / buildings / BuildingB / offices / Office#3
[0107] · / campus / buildings / BuildingB / floors / Floor#1 / offices / Office#3
[0108] · / campus / buildings / BuildingB / floors / Floor#1 / offices / Office#3 / sensors / occupancy_sensors / Occupany-Sensor-ID#1
[0109] · / campus / buildings / BuildingB / floors / Floor#2 / offices / Office#3 / drivers / Driver-ID#1
[0110] Once the composite gateway transforms the URI, as shown in exemplary Table 6 or Example Table 7, it can forward the transformed URI to the Web application 450, and the Web application 450 can forward the transformed URI to the web browser 492 of the network device 164. In other words, from the perspective of the user / web browser 492 at the Web application 450 and / or the network device 164, the load control systems 302 and 304 can appear as a unified load control system with a set of consistent URIs. Similarly, if the composite gateway 452 sends messages to the gateway 252a and the gateway 252b, and both gateways respond with the corresponding URIs to the composite gateway, then the composite gateway can transform the URIs based on the corresponding interfaces on which the URIs are received, aggregate the transformed URIs into a response message, and forward the aggregated response to the Web application 450, and the aggregated response can be forwarded to the web browser 492 of the network device 164. Similarly, the composite gateway can alternatively forward each response as a separate message to the Web application 450, but still transform the corresponding URIs as described above.
[0111] When a user at the network device 164 requests a continuous service from the Web application 450, the Web application can (using the API 430) forward a message to the composite gateway 452, where the message may not include a URI (e.g., a general read message), include one or more transformed URIs corresponding to the load control system 302, include one or more transformed URIs corresponding to the load control system 304, or include one or more transformed URIs corresponding to both the load control systems 302 and 304. The composite gateway can transform the message as follows:
[0112] · General Message : The composite gateway can determine that the message from the Web application 450 is a general message (e.g., it does not include any URIs), and thus forward the message to the load control system 302 via the interface 412 and forward the message to the load control system 304 via the interface 422.
[0113] ·The message includes URIs from Load control system 302 : The composite gateway can determine that a message from the Web application 450 includes only a URI corresponding to the load control system 302 (the composite gateway can make this determination based on, for example, the URI including only the prefix " / campus / buildings / BuildingA" or being associated therewith). In this case, for example, the composite gateway can transform the URI by removing the prefix " / campus / buildings / BuildingA" (e.g., transforming the URI from the form shown in Table 6 back to the form shown in Table 5), and then forward the message with the transformed URI only on the interface 412 to the gateway 252a.
[0114] · The message includes URIs from system Load control 304 : The composite gateway can determine that a message from the Web application 450 includes only a URI corresponding to the load control system 304 (the composite gateway can make this determination based on, for example, the URI including only the prefix " / campus / buildings / BuildingB" or being associated therewith). In this case, for example, the composite gateway can transform the URI by removing the prefix " / campus / buildings / BuildingB" (e.g., transforming the URI from the form shown in Table 7 back to the form shown in Table 5), and then forward the message with the transformed URI only on the interface 422 to the gateway 252b.
[0115] · The message includes URIs from negative Load control system 302 and Load control system 304 : The composite gateway can determine that a message from the Web application 450 includes a URI corresponding to load control system 302 and load control system 304The URI (the composite gateway can make this determination based on, for example, one or more URIs including the prefix " / campus / buildings / BuildingA" or associated therewith, and for example, one or more additional URIs including the prefix " / campus / buildings / BuildingB" or associated therewith). For the load control system 302, the composite gateway can remove the URI corresponding to the load control system 304 from the message and can transform the URI corresponding to the load control system 302 by, for example, removing the prefix " / campus / buildings / BuildingA". Thereafter, the composite gateway can forward the message with the transformed URI of the load control system 302 on the interface 412 to the gateway 252a. Similarly, for the load control system 304, the composite gateway can remove the URI corresponding to the load control system 302 from the message and can transform the URI corresponding to the load control system 304 by, for example, removing the prefix " / campus / buildings / BuildingB". Thereafter, the composite gateway can forward the message with the transformed URI of the load control system 304 on the interface 422 to the gateway 252b.
[0116] Thus, by using, for example, prefix URIs, the composite gateway 452 can provide a composite view of the load control system 302 and the load control system 304 to users at the Web application 450 and the network device 164, and at the same time, can route messages to the load control systems 302 and 304 such that the load control systems only receive messages regarding the resources they respectively control.
[0117] Although the load control system 400 is shown as having a composite gateway 452 that aggregates two load control systems, it will be appreciated that the load control system 400 can be used with one system (such as the load control system 302) and then extended to include additional load control systems (such as the load control system 304). Here, the composite gateway 452 can first be configured to have one connection (e.g., 412) with an associated URI and then reconfigured at a later time to include additional load control systems with additional communication interfaces / connections, where each connection has an associated URI.
[0118] Similarly, although the load control system 400 is shown as having a composite gateway 452 that aggregates two load control systems, it will be appreciated that the load control system 400 can be extended to a composite gateway 452 that aggregates multiple systems. For example, Figure 5 an exemplary load control system 500 is shown that aggregates load control systems 502, 504, 506, 508, and 510 (the load control systems 502 - 510 are only partially shownFigure 5 (shown in). Each of the load control systems 502-510 can be similar to the load control system 100 as described with reference to Figure 1 and Figure 2 The load control system 100 described, where the respective servers of each load control system are similar to, for example, the servers 210a and 210b as described with respect to Figure 4 For example, each of the load control systems 502-510 can control the respective buildings A, B, C, D, and E at different geographical locations. For example, the load control system 502 can be the load control system for building A, and the load control system 504 can be the load control system for building B. Building A and building B can each be a building at the first campus #1 on the east coast of the United States. The load control system 506 can be the load control system for building C at the second campus #2 in the midwestern United States. And, the load control system 508 can be the load control system for building D, and the load control system 510 can be the load control system for building E, where buildings D and E can each be a building at the third campus #3 on the west coast of the United States. Each of the load control systems 502-510 can have a corresponding set of control devices / resources that it controls, each of which has a corresponding URI as described herein. Similar to what was described for the load control system 400, the composite gateway 452 can have corresponding communication interfaces / connections 520, 522, 524, 526, and 528 with each of the gateways 252 of the corresponding load control systems 502-510. The composite gateway 452 can be configured to associate a corresponding unique URI with each connection, as shown in Table 8.
[0119] Table 8
[0120] · Interface 520: / campus / Campus#1 / buildings / BuildingA
[0121] · Interface 522: / campus / Campus#1 / buildings / BuildingB
[0122] · Interface 524: / campus / Campus#2 / buildings / BuildingC
[0123] · Interface 526: / campus / Campus#3 / buildings / BuildingD
[0124] · Interface 528: / campus / Campus#3 / buildings / BuildingE
[0125] It will be appreciated that while a uniform naming scheme such as " / campus / Campus#1 / buildings" is used in this example, this is not required and different naming schemes for each URI can be used. As similarly described for load control system 400, the composite gateway 452 of load control system 500 can transform the URI by adding and removing (e.g.) the prefixes of Table 8 when the URI is passed to web application 450 through each interface 520 - 526, and also use these prefixes to route messages to the corresponding load control systems 502 - 510.
[0126] Again turning to Figure 4, according to another aspect of the load control system 400, the server 490 may also include a log database 494. This database may be a flat database, a relational / SQL database, a NoSQL / non-SQL database, and / or a time series database, etc., but any form of database may be used. According to one example, the composite gateway 452 may be configured to store information of the load control systems 302 and 304 in the log database 494, such as status information of the control devices (e.g., energy / power consumption status information, occupancy information, etc.). In one example, for instance, the composite gateway 452 may receive a message for energy consumption information from the Web application 450. Based on this message, the Web application 450 may transmit one or more messages to the gateway 252a and / or the gateway 252b to obtain such information. In response, the gateway 252a and / or the gateway 252b may transmit one or more messages containing energy consumption information to the composite gateway 452, which may then process the information (such as aggregating the information) and forward the information to the Web application 450, which may then forward the information to the network device 164. In addition to forwarding information to the Web application, the composite gateway 452 may also store the information in the log database 494 and may further process the information before storing it. According to another example, the composite gateway 452 may, for example, subscribe to the gateway 252a and / or the gateway 252b to obtain certain information (such as status information of the control devices) as the information is generated within the corresponding load control system 302 and / or load control system 304. When the information is generated, the corresponding gateway 252a or 252b may detect the information and automatically forward it to the composite gateway, which may then store the information in the log database 494 and / or forward the information to the Web application 450. For example, as discussed herein, the Q processors 270a and 270b may respectively report the energy / power consumption status information of the corresponding loads to the server 210a and the server 210b. The composite gateway 452 may subscribe to the gateway 252a and the gateway 252b to obtain the energy consumption status information. When the corresponding server 210a or 210b receives this information, the gateway 252a and / or the gateway 252b may forward the information to the composite gateway 452, which may be configured to store the information in the log database 494, thereby possibly aggregating the information with other information (e.g., to produce the total energy consumption of a given area). One advantage of the log database 494 is that, for example, if the Web application transmits a message to the composite gateway 452 to obtain energy consumption information (e.g., due to a user's request for the information at the network device 164), then the composite gateway 452 may access the information from the log database 494 without having to request the information from the load control systems 302 and 304 and forward the information to the Web application 450.In this way, a more timely response can be provided to the users of the network device 492. It will be appreciated that (in addition to energy consumption and occupancy / vacancy information) the composite gateway 452 can also store other types of information in the log database 494.
[0127] Now turning to Figure 6 , another exemplary load control system 600 is shown. The exemplary load control system 600 is similar to Figure 5 the load control system 500 in that the exemplary load control system 600 includes a set of load control systems 502 - 510 for controlling corresponding buildings A - E at different geographical locations (each of which can be similar to the load control system 100). The exemplary load control system 600 now includes a hierarchy of composite gateways 452a, 452b, and 452c, each of which can operate, for example, in a manner similar to that described for the composite gateway 452, as Figure 4 discussed in Figure 6 This is merely an example and other hierarchical architectures can be used.
[0128] The composite gateway 452b can have communication interfaces / connections 620 and 622 with the load control systems 502 and 504. These interfaces and the associated APIs can be similar to (for example) the interfaces 412 and APIs 410 of the load control system 400. The composite gateway 452b can also have communication interfaces / connections 624 to the composite gateway 452a and to the Web application 450b (which can be similar to Figure 4Interface of Web application 450), Web application 450b may allow a user to control load control systems 502 and 504, but Web application 450b is not required. These interfaces and associated APIs with composite gateway 452a and Web application 450b may be similar to (e.g.) interface 418 and API 430 of load control system 400. As similarly described for load control system 400, composite gateway 452b may be configured to associate a URI with communication interface 620 and another different URI with communication interface 622. As similarly described for load control system 400, when a URI is passed between load control system 502, load control system 504, Web application 450b, and / or composite gateway 452a, composite gateway 452b may transform the URI of the resource associated with load control systems 502 and 504 by, for example, adding and removing the corresponding URIs associated with interfaces 620 and 622. Composite gateway 452b may also use the URIs associated with load control systems 502 and 504 to route messages it receives from Web application 450b and / or composite gateway 452a to load control systems 502 and 504, as similarly described for system 400. As similarly described for load control system 400, composite gateway 452b may also aggregate information from load control systems 502 and 504 and perform operations on such information before forwarding this information to composite gateway 452a and / or Web application 450b.
[0129] Similarly, composite gateway 452c may have communication interfaces / connections 630 and 632 to load control systems 508 and 510. These interfaces and associated APIs may be similar to (e.g.) interface 412 and API 410 of load control system 400. Composite gateway 452c may also have communication interfaces / connections 628 to composite gateway 452a and to Web application 450c (which may be similar to Figure 4Interface of Web application 450), Web application 450c may allow users to control load control systems 508 and 510, but Web application 450c is not required. These interfaces and associated APIs with composite gateway 452a and Web application 450c may be similar to (e.g.) interface 418 and API 430 of load control system 400. Similar to composite gateway 452b, composite gateway 452c may be configured to associate a URI with communication interface 630 and another different URI with communication interface 632. When the URI is passed between load control system 508, load control system 510, Web application 450c, and / or composite gateway 452a, composite gateway 452c may transform the URI of the resources associated with load control systems 508 and 510 by, for example, adding and removing the corresponding URIs associated with interfaces 630 and 632. Composite gateway 452c may also use the URIs associated with load control systems 508 and 510 to route the messages it receives from Web application 450c and / or composite gateway 452a to load control systems 508 and 510, as similarly described for load control system 400. As similarly described for load control system 400, composite gateway 452c may also aggregate information from load control systems 508 and 510 and perform operations on this information before forwarding such information to composite gateway 452a and / or Web application 450c.
[0130] The composite gateway 452a may have communication interfaces / connections 624, 626, and 628 to the composite gateway 452b, to the load control system 506, and to the composite gateway 452c. The composite gateway 452a may also have a communication interface 634 to the Web application 450a, which may allow a user to control the load control systems 502, 504, 506, 508, and 510. The communication interface 634 and its associated API may be similar to, e.g., the interface 418 and API 430 of the load control system 400. The composite gateway 452a may be configured to associate a URI with the communication interface 624, a different URI with the communication interface 626, and yet another different URI with the communication interface 628. Similar to the composite gateway 452, the composite gateway 452a may transform the URI of a resource by adding and removing, e.g., the corresponding URI associated with the interface as the URI is passed between each of the interfaces 624, 626, and 628 between the composite gateway 452b, the gateway 252 of the load control system 506, the composite gateway 452c, and the Web application 450a. The composite gateway 452a may also use the URIs associated with the interfaces 624, 626, and 628 for routing messages, as similarly described for the load control system 400. As similarly described for the load system 400, the composite gateway 452a may also aggregate information from the composite gateway 452b, the load control system 506, and / or the composite gateway 452c and perform operations on such information before forwarding the information to the Web application 450a.
[0131] As an example of how the load control system 600 operates, the URI passed by the gateway 252 of the load control system 502 to the composite gateway 452b can be modified by the composite gateway 452b to include the URI that the composite gateway 452b associates with the interface 620. Similarly, when the composite gateway 452b passes this modified URI to the composite gateway 452a via the interface 624, the composite gateway 452a can further modify the URI to include the URI that the composite gateway 452a associates with the interface 624, and then forward this further modified URI to the web application 450a. The opposite may occur when the resource URI is passed from the web application 450a to the load control system 502, where each of the composite gateways 452a and 452b uses the URI as a routing mechanism and removes the added URI when passing the resource URI down towards the load control system. Generally, through the network device 164, a user can access the web application 450a in an aggregated / composite manner through a web browser and control the load control systems 502 - 510. Similarly, through the network device 164, a user can access the web application 450b in an aggregated / composite manner through a web browser and control the load control systems 502 and 504. As similarly described for the load control system 400, according to another aspect of the load control 600, any one of the composite gateway 452a, the composite gateway 452b, and the composite gateway 452c can have an associated log database, similar to the log database 494. The corresponding composite gateway can use its respective database to store information about the load control systems it communicates with. Also, such databases can provide faster access to information.
[0132] Now referring to Figure 7 , another exemplary load control system 700 is shown, which shows Figure 4 another example application of the load control system 400. According to this example, a hotel can have a load control system 702 running version X of the application software (the load control system 702 can be similar to the load control system 100). As an example, the load control system 702 can be configured such that each hotel room is assigned a corresponding Q processor 270a - z, where each Q processor controls the load control device 120a - z of its corresponding room. Each Q processor can have a corresponding communication connection 740 - 744 to the runtime 258a of the load control system 702. For example, an administrator may expect to upgrade the load control system 702 to run version Y of the application software.
[0133] According to this example, due to room occupancy, it may not be possible to migrate the entire load control system to version Y. Thus, an administrator can install another load control system 704 of version Y that runs the application software (the load control system 704 can be similar to the load control system 100), and integrate the load control systems as discussed herein via the composite gateway 452 and the web application 450. Also, the load control system 702, the load control system 704, the composite gateway 452, and the web application 450 can execute on the same server, on different servers respectively, or in some combination thereof, including as a cloud-based system.
[0134] When the room (e.g., such as the room associated with the Q processor 270a) becomes vacant, the administrator can update the project database 260a to indicate that the control device 120a is disabled, remove the connection 740 between the Q processor 270a and the runtime 258a, upgrade the Q processor 270a to version Y, copy the relevant information about the control device 120a from the project database 260a to the project database 260b, and form a communication connection between the Q processor 270a and the runtime 258b of the load control system 704. Other rooms can be moved in a similar manner. Thereafter, a user at the network device 164 can interact with the web application 450 and still have a single access point to all hotel rooms. According to this example, when the gateway 252a receives a command from the composite gateway 452 that indicates a resource / control device provided by the load control system 702, the gateway 252a may not provide the URI of the control device 120a that was disabled in the project database 260a and is now part of the load control system 704 and reported by the gateway 252b. However, the gateway 252a can continue to provide information about these resources stored in the log database 262a.
[0135] Now refer to Figure 8, shows another exemplary load control system 800. Although the composite gateway is described herein as connecting multiple load control systems with similar architectures (e.g., reporting modules, alert modules, runtime modules, etc.), the composite gateway can also be used to integrate load control systems with different architectures. For example, the load control system 800 can include a load control system 802, which can be similar to, for example, the load control system 100 and / or 302. The load control system 800 can also include a load control system 804, which can have an architecture different from that of the load control system 802. Similar to the load control system 802, the load control system 804 can implement automatic control of lighting systems, curtains, and heating, ventilation, and air conditioning (HVAC) systems in a user environment, as well as other electrical loads. The load control system 804 can also allow users to control and monitor the user environment, including, for example, overriding automation settings, determining occupancy at one or more locations in the environment, determining power / energy usage at one or more locations in the environment, determining error conditions regarding electrical loads in the user environment, etc. The load control system 804 can include a system controller 860, a plurality of control source devices 870, and a plurality of control target devices 872. The control source devices, control target devices, and system controller can communicate via messages transmitted via a wireless signal 874 (such as an RF signal). For example, the control source device 870 can transmit a wireless message directly to the control target device 872 to control the device, and / or can transmit such a message to the system controller 860, which can then transmit the message to the control target device. Similarly, the system controller 860 can communicate wireless messages with the control source device 870 and / or the control target device 872, such as for configuring and controlling the control devices, for obtaining status information from the control devices, etc. For example, the system controller 860 can include a processor 862 and a coprocessor 864, each of which can execute one or more software-based applications. The processor 862 can be configured to provide overall control of the system controller 860, such as time-clock applications and monitoring error and status information of the control devices, while the coprocessor 864 can manage communication messages between the system controller and the control devices and / or communication between the control devices. The system controller can include a configuration database 866, which can store information similar to, for example, the project database 260 of the load control system 100. This is only an example, and the load control system 804 can have other configurations. For example, U.S. Patent Application Publication No. 2017 / 0123390, titled Commissioning Load Control Systems, describes another exemplary load control system. The entire content of U.S. Patent Application Publication No. 2017 / 0123390 is incorporated herein by reference.To integrate the load control system 804 into the load control system 800 as described herein, the system controller 860 can be modified to further include a gateway 830, which can be similar to the gateway 252 of the load control system 802, for example, and can communicate with the composite gateway 452 through the interface 822 and the API, similar to the way the gateway 252 can communicate with the composite gateway 452 through the interface 820. Nevertheless, the way the gateway 830 interacts with the components of the system controller 860 (e.g., the processor and the configuration database) can be different from the way the gateway 252 interacts with the modules of the load control system 802. The system controller 860 can also be configured to represent the control devices, etc. of the load control system 804 as resources with corresponding URIs, as similarly discussed herein. In this way, the composite gateway 452 can associate the corresponding URIs with each of the interfaces 820 and 822, and transmit / rout messages to / from the load control systems 802 and 804, as described herein. The user of the network device 164 can now view the load control systems 802 and 804 as one load control system. It will be further appreciated that instead of integrating different types of load control systems, the composite gateway 452 can also be used to integrate additional and other types of systems in the system 800, such as alarm systems, doorbell systems, etc. Similarly, this can be accomplished by modifying such systems to include a gateway such as the gateway 252 and representing resources with corresponding URIs, as similarly discussed herein.
[0136] Referring again to Figure 6 the system 600, the composite gateway 452a is shown to have connections 624 and 628 to the composite gateway 452b and the composite gateway 452c, respectively. In addition to these connections, the composite gateway 452a can also have communication connections / interfaces directly to the gateways of the load control system 502, the load control system 504, the load control system 508, and / or the load control system 510, and can also associate URIs with each interface. In this way, the composite gateway 452a can communicate with the corresponding load control systems 502, 504, 508, and 510, for example, directly or through the composite gateway 452b or the composite gateway 452c. Regardless of which interface / connection the composite gateway 452a uses to communicate with the load control system, the composite gateway 452a can receive responses from the corresponding load control system back through the same connection.
[0137] The URIs that the composite gateway 452a associates with its connections directly to the load control systems can be the same or similar to the URIs that the composite gateway 452b or the composite gateway 452c associates with the load control systems. For example, Figure 9 shown Figure 6Part of the system 600, where the composite gateway 452a now also has a communication connection / interface 902 to the gateway 252 of the load control system 502. The composite gateway 452b can, for example, associate the URI " / buildings / BuildingA" with the interface 620. The composite gateway 452a can associate the URI " / campus / Campus#1" with the interface 624 and can also associate the URI " / BuildingA" (or " / buildings / BuildingA") with the interface 902. Continuing with this example, for instance, the load control system 502 can have a resource with the URI " / drivers / Driver-ID#1". If the gateway of the load control system 502 passes the URI " / drivers / Driver-ID#1" to the composite gateway 452b via the connection 620, then the composite gateway 452b can modify the URI of the resource to include " / buildings / BuildingA" (e.g., " / buildings / BuildingA / drivers / Driver-ID#1"). Similarly, if the composite gateway 452b passes the modified URI to the composite gateway 452a via the connection 624, then the composite gateway 452a can modify the URI to further include " / campus / Campus#1" (e.g., / campus / Campus#1 / buildings / BuildingA / drivers / Driver-ID#1"). This modified URI can be passed to the web application 450a. Similarly, if the gateway of the load control system 502 passes the URI " / drivers / Driver-ID#1" to the composite gateway 452a via the connection 902, then the composite gateway 452a can modify the URI of the resource to include " / BuildingA" (e.g., " / BuildingA / drivers / Driver-ID#1"), and this URI can be passed to the web application 450a.
[0138] Figure 9The architecture can allow for the following communication efficiency. If a Web application 450a transmits a message, for example, with a URI of “ / campus / Campus#1 / buildings / BuildingA / drivers / Driver-ID#1” to the composite gateway 452a, then the composite gateway 452a can be configured to communicate the message to the load control system 502 in different ways (which can depend, for example, on the message from the Web application 450a). For example, noticing the “ / campus / Campus#1” prefix and noticing that this prefix is associated with connection 624, the composite gateway 452a can remove the prefix and transmit / route the message with the modified URI of “ / buildings / BuildingA / drivers / Driver-ID#1” to the composite gateway 452b via connection 624. The composite gateway 452b can then communicate the message to the load control system 502 as described herein, thus forwarding the message with the further modified URI of “ / drivers / Driver-ID#1” to the gateway 252 of the load control system 502 after removing the “ / buildings / BuildingA” prefix. Alternatively, noticing, for example, the “ / BuildingA” prefix and noticing that this prefix is associated with connection 902, the composite gateway 452a can remove the prefix “ / campus / Campus#1 / buildings / BuildingA” and transmit / route the message with the modified URI of “ / drivers / Driver-ID#1” to the gateway of the load control system 502 via connection 902. Similarly, the gateway 252 of the load control system 502 can respond via the connection through which it received the corresponding message. This is an example, and other examples are possible.
[0139] As described herein, for example, Figure 4 connections 412 and 422 of the load control system 400, and Figure 6 connections 620, 622, 624, 626, 628, 630, and 632 of the load control system 600 (and similar connections of system 500) can be, for example, TCP-based connections between the respective gateways. Now referring to Figure 10 FIG., an exemplary load control system 1000 is shown. The load control system 1000 can be similar to other load control systems described herein (where Figure 10The example of () is similar to the architecture of the load control system 600). However, for example, the gateway 252 and the composite gateways 452a-c of the load control system are not directly connected through the corresponding TCP connections (e.g., 620, 622, 624, 626, 628, 630, and 632), but they can be interconnected through the message broker 920. Specifically, each of the corresponding gateways 252 of the load control systems 502, 504, 506, 508, and 510 can have a corresponding connection 902, 904, 906, 908, and 910 (such as a TCP connection) with the message broker 920. Similarly, the corresponding composite gateways 452a, 452b, and 452c can have corresponding connections 912, 914, and 916 (such as a TCP connection) with the message broker 920. The message broker 920 can support messaging protocols, such as the Advanced Message Queuing Protocol (AMQP) or the Message Queuing Telemetry Transport (MQTT) protocol, through these connections. By using a message-based architecture / protocol, the message broker 920 can route messages (e.g., in a publish / subscribe manner) between the gateways and the composite gateways.
[0140] Based on this message-based architecture, the composite gateway 452b can maintain a logical connection (not shown) with each gateway 252 of the load control systems 502 and 504. These logical connections can be similar to the connections 620 and 622 of the load control system 600 (i.e., having corresponding URIs associated with each logical connection and supporting RESTful APIs, etc.). Similarly, the composite gateway 452c can maintain a logical connection (not shown) with each gateway 252 of the load control systems 508 and 510. These logical connections can be similar to the connections 630 and 632 of the load control system 600 (i.e., having corresponding URIs associated with each logical connection and supporting RESTful APIs, etc.). Similarly, the composite gateway 452a can maintain a logical connection (not shown) with each of the composite gateways 452b and 452c and with the gateway 252 of the load control system 506. These logical connections can be similar to the connections 624, 626, and 628 of the system 600 (i.e., having corresponding URIs associated with each logical connection and supporting RESTful APIs, etc.). In addition, the composite gateway 452a can maintain a logical connection (not shown) with each gateway 252 of the load control systems 502, 504, 508, and 510 and associate a corresponding URI with each logical connection (again, where each connection supports the RESTful API provided by the gateway, etc.). In other words, the composite gateway 452a can maintain multiple connections, as with respect to Figure 9Similarly discussed. Under this architecture of logical connections and associated URIs, the load control system 1000 can operate, for example, in a manner similar to that described for load control systems 400, 500, 600, 700, and 800, where the message broker 920 handles the underlying routing of messages between modules / load control systems.
[0141] According to another aspect of the load control system 1000, in addition to the logical connection between the gateway and the composite gateway, the system can also (e.g., simultaneously) include a direct connection between the gateway and the composite gateway (e.g., a connection similar to 620, 622, 624, 626, 628, 630, and / or 632), as described similarly for systems 400, 500, 600, 700, and 800.
[0142] Now refer to an exemplary process by which multiple load control systems can be viewed / managed as one load control system, for example. Although this example is described as a series of operations, not all operations are required, additional and / or other operations can be included, and the order of operations can vary. According to this example, the composite gateway can receive a first message from a Web application. Based on the first message, the composite gateway can transmit a second message on a first communication connection to a first load control system. The composite gateway can associate a uniform resource identifier (URI) with the first communication connection. The first load control system can be configured to control the electrical load of a load control environment. The first load control system can include a first control device. The load control system can be configured to associate a URI with the first control device. In partial response to transmitting the second message to the load control system, the composite gateway can receive a third message from the load control system on the first communication connection. This third message received from the first load control system can include the URI associated with the first control device. The composite gateway can modify the URI of the first control device to include the URI associated with the first communication connection. At least partially based on the third message received from the load control system, the composite gateway can transmit a fourth message to the Web application. This fourth message can include the modified URI of the first control device. The composite gateway can receive a fifth message from the Web application that includes the modified URI of the first control device. In response to receiving the fifth message from the Web application, the composite gateway can remove the URI associated with the first communication connection from the modified URI of the first control device and, based on the fifth message, transmit a sixth message on the first communication connection to the first load control system. The transmitted sixth message can include the URI of the first control device without the URI associated with the first communication connection.
[0143] According to another and / or additional example, in response to receiving a fifth message from a Web application, the composite gateway may determine that the fifth message includes a URI that contains a URI associated with the first communication connection. When transmitting a sixth message over the first communication connection, the composite gateway may transmit the message at least in part based on determining that the fifth message includes a URI that contains a URI associated with the first communication connection.
[0144] According to another and / or additional example, based on the first message, the composite gateway may also transmit a seventh message over a second communication connection to a second load control system. The composite gateway may associate a URI with the second communication connection. This URI may be different from the URI associated with the first communication connection. The second load control system may be configured to control an electrical load of a load control environment. The second load control system may include a second control device. The second load control system may be configured to associate a URI with the second control device. In response in part to transmitting the seventh message to the second load control system, the composite gateway may receive an eighth message from the second load control system over the second communication connection. The eighth message received from the second load control system may include a URI associated with the second control device. The composite gateway may modify the URI of the second control device to include the URI associated with the second communication connection.
[0145] According to another and / or additional example, the second message transmitted to the first load control system over the first communication connection and the seventh message transmitted to the second load control system over the second communication connection may each be a query message for determining a URI associated with one or more control devices of the first load control system and a URI associated with one or more control devices of the second load control system, respectively.
[0146] According to another and / or additional example, the second message transmitted to the first load control system over the first communication connection and the seventh message transmitted to the second load control system over the second communication connection may be transmitted to both the first load control system and the second load control system at least in part based on the first message not including a URI that contains a URI associated with the first communication connection and not including a URI that contains a URI associated with the second communication connection.
[0147] According to another and / or additional example, when transmitting the fourth message to the Web application, the composite gateway may form the fourth message based on information from the third message received from the first load control system and information from the eighth message received from the second load control system. The fourth message transmitted by the composite gateway to the Web application may include the modified URI of the first control device and the modified URI of the second control device.
[0148] According to another and / or additional example, in response to receiving a fifth message from a Web application, the composite gateway may determine that the fifth message includes a URI containing a URI associated with a first communication connection. When transmitting a sixth message over the first communication connection, the composite gateway may transmit the message at least in part based on determining that the fifth message includes a URI containing a URI associated with the first communication connection. However, the fifth message received from the Web application may or may not include a modified URI of the second control device. For example, the fifth message received from the Web application may not include a modified URI of the second control device. Here, in response to receiving the fifth message from the Web application, the composite gateway may determine that the fifth message does not include a URI containing a URI associated with a second communication connection, and at least in part based on making this determination, the composite gateway may not transmit a message in response to the fifth message over the second communication connection to the second load control system. Alternatively, the fifth message received from the Web application may include a modified URI of the first control device and may also include a modified URI of the second control device. Here, in response to receiving the fifth message from the Web application, the composite gateway may determine that the fifth message from the Web application also includes a URI containing a URI associated with a second communication connection. Here, the composite gateway may remove the URI associated with the second communication connection from the modified URI of the second control device and, based on the fifth message, transmit a ninth message over the second communication connection to the second load control system. The ninth message transmitted to the second load control system may include the URI of the second control device without the URI associated with the second communication connection. According to another aspect of this example, the sixth message transmitted over the first communication connection to the first load control system may not include the URI of the second load control device. Similarly, the ninth message transmitted over the second communication connection to the second load control system may not include the URI of the first load control device.
[0149] According to another and / or additional example, based on the first message, the composite gateway may transmit a tenth message to a second composite gateway over a third communication connection, the second composite gateway having a fourth communication connection to a third load control system. The composite gateway may associate a URI with the third communication connection. This URI of the third communication connection may be different from the URIs associated with the first and / or second communication connections. The second composite gateway may associate a URI with the fourth communication connection. This URI of the fourth communication connection may be the same as or different from the URIs associated with the first, second, and / or third communication connections. The third load control system may be configured to control an electrical load of a load control environment. The third load control system may include a third control device. The third load control system may be configured to associate a URI with the third control device. According to this example, the second composite gateway may transmit a message to the third load control system over the fourth communication connection in response to receiving the tenth message. In part in response to transmitting the tenth message to the second composite gateway, the composite gateway may receive an eleventh message from the second composite gateway over the third communication connection. The eleventh message received from the second composite gateway may include the URI of the third control device modified by the second composite gateway to include the URI associated with the fourth communication connection. The composite gateway may also modify the URI of the third control device to include the URI associated with the third communication connection.
[0150] According to another and / or additional example, when transmitting a fourth message to a Web application, the composite gateway may form the fourth message based on information from a third message received from a first load control system, information from an eleventh message received from a second composite gateway, and / or information from an eighth message received from a second load control system. The fourth message transmitted by the composite gateway to the Web application may include a modified URI of a first control device, a URI of a third control device modified to include the URI associated with the third communication connection, and / or a modified URI of a second control device.
[0151] It will be recognized that this is one example and other examples are possible. It will also be recognized that the use of first, second, third, etc. herein is meant to distinguish, for example, different messages, control devices, load control systems, communication connections, composite gateways, etc., and does not imply a minimum or maximum number of such messages, control devices, load control systems, communication connections, composite gateways, etc.
[0152] Although the system has been described herein as applicable to various example scenarios (e.g., buildings, hotels, different versions of software, etc.), it will be recognized that these are merely examples and the system described herein is applicable to other scenarios.
[0153] In addition to what is described herein, the methods and systems may also be implemented in, for example, one or more computer programs, software, or firmware embodied in one or more computer-readable media for execution by one or more computers or one or more processors. Examples of computer-readable media include electronic signals (transmitted via wired or wireless connections) and tangible / non-transitory computer-readable storage media. Examples of tangible / non-transitory computer-readable storage media include, but are not limited to, read-only memory (ROM), random access memory (RAM), removable disks, and optical media such as CD-ROM disks and digital versatile disks (DVDs).
[0154] Although the present disclosure has been described in terms of certain embodiments and generally associated methods, changes and permutations of the embodiments and methods will be apparent to those skilled in the art. Accordingly, the above description of exemplary embodiments does not limit the present disclosure. Other variations, substitutions, and alterations are also possible without departing from the spirit and scope of the present disclosure.
Claims
1. An electrical load control system, comprising: A plurality of system controllers, each system controller communicatively coupled to one or more electrical load control devices, each system controller including a data memory containing a respective unique local address of each of the one or more communicatively coupled electrical load control devices; Wherein the electrical load control devices include one or more of an electrical load control source device or an electrical load control target device; A plurality of gateway servers, each of the plurality of gateway servers communicatively coupled to one or more of the plurality of system controllers, wherein each gateway server: Converts a message originating from an electrical load control device communicatively coupled to one of the plurality of system controllers from a first message format including the local address of the control device to a second message format, the second message format including data representing the local address of the electrical load control device and data representing a unique identifier associated with the respective one of the plurality of system controllers communicatively coupled to the corresponding electrical load control device; and Converts a received message destined for an electrical load control device communicatively coupled to a system controller from the second message format to the first message format; And A composite gateway server communicatively coupled to each of the plurality of gateway servers, wherein the composite gateway server: Converts a message received from a communicatively coupled gateway server and destined for a network-connected device from the second message format to a third message format, the third message format including data indicating a unique identifier associated with the respective communicatively coupled gateway server; and Converts a message received from the network-connected device and destined for a communicatively coupled gateway server from the third message format to the second message format.
2. The electrical load control system according to claim 1, wherein each of the plurality of gateway servers further includes: A runtime circuit for communicatively coupling to the one or more of the plurality of system controllers; And A gateway circuit for bidirectionally communicatively coupling to the composite gateway server.
3. The electrical load control system according to claim 2, wherein each of the plurality of gateway servers further includes: A processor circuit communicatively coupled to the gateway circuit, the processor circuit for executing a web application to communicatively couple the respective gateway server to one or more network devices via one or more networks.
4. The electrical load control system according to claim 3, wherein the composite gateway server includes: A composite gateway circuit for bidirectionally communicatively coupling to each gateway server; And A processor circuit for executing a web application to communicatively couple the composite gateway server to one or more network devices via one or more networks.
5. The electrical load control system according to claim 4, wherein the processor circuit further: Aggregates data received from each of at least some of the plurality of gateway servers.
6. The electric load control system according to claim 5, wherein the processor circuit further: transmits the aggregated data to the one or more network devices via the one or more networks.
7. The electric load control system according to claim 6, wherein in order to transmit the aggregated data to the one or more network devices via the one or more networks, the processor circuit further: in response to receiving a request for the aggregated data from one or more network devices, transmits the aggregated data to the one or more network devices via the one or more networks.
8. The electric load control system according to claim 4, wherein: the first gateway server among the plurality of gateway servers is configured to: execute a first system management application to control one or more operating parameters of one or more communicatively coupled electric load control devices; and communicate with the composite gateway server via a first application programming interface API; wherein the second gateway server among the plurality of gateway servers is configured to: execute a second system management application to control one or more operating parameters of one or more communicatively coupled electric load control devices; and communicate with the composite gateway server via a second application programming interface API.
9. The electric load control system according to claim 8: wherein the first system management application is different from the second system management application; and wherein the first application programming interface API and the second application programming interface API are different application programming interfaces API.
10. The electric load control system according to claim 8: wherein the first system management application is different from the second system management application; and wherein the first application programming interface API and the second application programming interface API are the same application programming interface API.
11. The electric load control system according to claim 8, wherein the composite gateway server includes a third application programming interface API to communicatively couple the composite gateway circuit to the composite gateway processor circuit.
12. The electric load control system according to claim 11, wherein each of the plurality of gateway servers includes a fourth application programming interface API to communicatively couple the gateway server circuit to the processor circuit of the corresponding gateway server.
13. The electric load control system according to claim 2, further comprising: an alarm circuit communicatively coupled between the runtime circuit and the gateway server circuit, the alarm circuit receiving system controller data from the runtime circuit and using the received system controller data to transmit one or more alarm messages to the gateway server circuit.
14. An electric load control network communication method, comprising: each of a plurality of system controllers stores data representing corresponding unique local addresses of each of one or more of an electric load control source device or an electric load control target device communicatively coupled to the corresponding system controller; Via a gateway server processor circuit communicatively coupled to each of the plurality of system controllers, convert one or more messages originating from an electrical load control device communicatively coupled to one of the plurality of system controllers from a first message format including a local address of the electrical load control device to a second message format, the second message format including data representing the local address of the electrical load control device and data representing a unique identifier associated with the respective one of the plurality of system controllers communicatively coupled to the electrical load control device; and Convert a received message destined for an electrical load control device communicatively coupled to a system controller from the second message format to the first message format; and Via a composite gateway server processor circuit communicatively coupled to the gateway server processor circuit, convert a message received from a communicatively coupled gateway server and destined for a network-connected device from the second message format to a third message format, the third message format including data indicating a unique identifier associated with the respective communicatively coupled gateway server; and Via the composite gateway server processor circuit, convert a message received from the network-connected device and destined for a communicatively coupled gateway server from the third message format to the second message format.
15. The method according to claim 14, further comprising: Aggregating data received from a gateway server by a composite gateway server processor circuit; And Transmitting the aggregated data by the composite gateway server processor circuit to one or more network devices.
16. The method according to claim 14, further comprising: Executing, by a gateway server processor circuit disposed in a first gateway server, a first system management application to control one or more operating parameters of one or more electrical load control devices communicatively coupled to the first gateway server; And Communicating, by the gateway server processor circuit disposed in the first gateway server, with the composite gateway server via a first application programming interface API; Executing, by a gateway server processor circuit disposed in a second gateway server, a second system management application to control one or more operating parameters of one or more electrical load control devices communicatively coupled to the second gateway server; and Communicating, by the gateway server processor circuit disposed in the second gateway server, with the composite server via a second application programming interface API.
17. A non-transitory computer-readable medium comprising instructions that, when executed by a gateway server processor circuit, cause the gateway server processor circuit to perform the method of any one of claims 14 to 16.
Citation Information
Patent Citations
Commissioning load control systems
US20170123390A1
Selectively performing man in the middle decryption
US20140351573A1