Field of the Invention:
This invention relates to building automation systems. More particularly, this invention relates to apparatus and methods for providing building automation system data updates to a web client.
In a first aspect of the invention, a building automation system is provided that includes a building automation controller, a web server, and a client. The building automation controller includes multiple building automation objects, each comprising data that may be used to generate a model that includes multiple elements, wherein each element is associated with one or more of the building automation objects. The web server includes business logic that is adapted to read and subscribe to the building automation objects, wherein each building automation object is adapted to notify the business logic of changes to the data of the building automation object, and to process the data from the building automation objects to provide model update commands based on the changed data. The client includes presentation logic adapted to display the model, receive the model update commands from the business logic, update the model using the model update commands, and display the updated model.
In a second aspect of the invention, a building automation method is provided that includes providing multiple building automation objects, a web server, and a client. Each building automation objects includes data that may be used to generate a model that has multiple elements, wherein each element is associated with one or more of the building automation objects. The web server includes business logic that is adapted to read and subscribe to the building automation objects, wherein each building automation object is adapted to notify the business logic of changes to the data of the building automation object, and to process the data from the building automation objects to provide model update commands based on the changed data. The client includes presentation logic adapted to display the model, receive the model update commands from the business logic, update the model using the model update commands, and display the updated model.
Other features and aspects of the present invention will become more fully apparent from the following detailed description, the appended claims and the accompanying drawings.
Features of the present invention can be more clearly understood from the following detailed description considered in conjunction with the following drawings, in which the same reference numerals denote the same elements throughout, and in which:
Referring now to
To provide such control, building automation controller 12 typically includes a building automation model 18 that includes one or more building automation objects 201, 202, . . . 20N that represent corresponding physical elements of the building control system, and are used to exchange data with the corresponding physical elements. For example, object 201 may represent a temperature sensor, and may include data indicating the temperature of a room in which the temperature sensor is located, whereas object 202 may represent a lighting control switch, and may include data indicating whether one or more light fixtures controlled by the control switch are ON or OFF.
Clients 161, 162, . . . 16M are coupled to building automation controller 12 via web server 14, and are used to communicate building automation data to users. To minimize costs, clients 161, 162, . . . 16M typically are “thin clients” that include minimal processing capabilities. Each client 161, 162, . . . 16M typically includes software (referred to herein as “presentation logic”) that receives data regarding the building automation system (referred to herein as a “model”) from web server 14, and renders the model on a display device, such as a liquid crystal, or light emitting diode (“LED”) touch screen display.
Each client 161, 162, . . . 16M typically receives and displays a unique model. For example, as shown in
Referring again to
Web server 14 may be implemented on building automation controller 12 and may directly access objects 201, 202, . . . 20N. Alternatively, as shown in
To reflect changes in model data over time, clients 161, 162, . . . 16M periodically request model updates from web server 14. For example, once per second, each of clients 161, 162, . . . 16M may issue a request command to web server 14, which requires web server 14 to process N objects 201, 202, . . . 20N to form M models, and communicate the new model data in parallel to M clients 161, 162, . . . 16M. To provide such a large amount of data each second, previously known web server 14 requires a significant amount of processing power and memory.
Although the data displayed on each of clients 161, 162, . . . 16M changes over time, not all displayed model data changes at each request interval, and not all model data changes at the same time. For example, in
Nevertheless, referring again to
Apparatus and methods in accordance with this invention seek to avoid the problems associated with previously known building automation system. As described in more detail below, apparatus and methods in accordance with this invention provide building automation systems that include a building automation controller, a web server, and one or more clients. The building automation controller includes building automation objects, and the web server includes business logic that accesses the object data, and processes the data to provide a model to each client, which displays the model on a display device. Each model includes multiple elements, and each element is associated with one or more of the objects.
The business logic implements an observer pattern to notify the business logic of any changes in the data values of the objects. In response to a notification of a change in object data, the business logic determines which associated model elements must be updated as a result of the changed data. The clients periodically issue read commands to the business logic. In response to a read command from a client, the business logic determines if any element of the model displayed by the client must be updated, and provides model update commands to the client only for the model elements that require updating. If no element of the model requires updating, the business logic does not provide any model data to the client. If a client receives model update commands from the business logic, the client implements the model update commands to modify the elements of the model that require updating, and displays the modified model.
Referring now to
Building automation controller 42 includes a building automation model 48 that includes one or more building automation objects 501, 502, . . . 50N that represent corresponding physical elements of the building control system, and are used to exchange data with the corresponding physical elements. For example, object 501 may represent a temperature sensor, and may include data indicating the temperature of a room in which the temperature sensor is located, whereas object 502 may represent a lighting control switch, and may include data indicating whether one or more light fixtures controlled by the control switch are ON or OFF.
Clients 461, 462, . . . 46M are coupled to building automation controller 42 via web server 44, and are used to communicate building automation data to users. Clients 461, 462, . . . 46M may be personal computers, laptop computers, handheld computers, smartphones, remote operator terminals, or other similar client device. For example, one or more of clients 461, 462, . . . 46M may be the Simatic Thin Clients by Siemens Aktiengesellschaft, Munich Germany. As described in more detail below, each client 461, 462, . . . 46M includes presentation logic that receives data regarding a building automation model from web server 44, and renders the model on a display device, such as a liquid crystal touchscreen display (not shown in
Each client 461, 462, . . . 46M typically receives and displays a unique model. In other words, client 461 may display a first model, client 462 may display a second model, and so on, with no two clients displaying the same model. Persons of ordinary skill in the art will understand, however, that more than one client 461, 462, . . . 46M may display the same model.
The model displayed on a client 461, 462, . . . 46M, and the format used to display the model may be selected by user input. For example, a user may view a model in a graphical layout format, and subsequently may enter a command to view the model in a list format, or other similar format.
In addition, one or more of clients 461, 462, . . . 46M may receive inputs from users to control or modify aspects of building automation system 40. For example, a user may enter a command on a client 461 to change a specified temperature, control a light switch, open or close a damper, or other similar command to change a building automation system parameter.
Web server 44 includes business logic 52 that accesses remote objects 501, 502, . . . 50N, processes the data from the objects to form the models, and provides the models to clients 461, 462, . . . 46M via a communication protocol, such as HTTP, PL-Link or other similar communication protocol. In addition, in response to periodic read requests from clients 461, 462, . . . 46M, web server 44 provides model updates to clients 461, 462, . . . 46M for portions of the models that have changed data, if any. Persons of ordinary skill in the art will understand that web server 44 may include elements other than and/or in addition to the elements illustrated in
Web server 44 may be implemented on building automation controller 42 and may directly access remote objects 501, 502, . . . 50N. Alternatively, as shown in
In accordance with this invention, web server 44 implements an observer pattern to notify business logic 52 of any changes in the data values of proxy objects 50p1, 50p2, . . . 50pN and remote objects 501, 502, . . . 50N. In particular, business logic 52 issues commands to read and subscribe to each of proxy objects 50p1, 50p2, . . . 50pN, each of which in turn issues commands to read and subscribe to each of corresponding remote objects 501, 502, . . . 50N.
To reflect changes in model data over time, each of clients 461, 462, . . . 46M periodically requests model updates from web server 44. In particular, in accordance with this invention, each of clients 461, 462, . . . 46M periodically issues a read command to business logic 52. For example, each of clients 461, 462, . . . 46M may issue a read command once per second, or at some other time interval. Persons of ordinary skill in the art will understand that clients 461, 462, . . . 46M may issue read requests at the same time or at different times, and at the same rate or at different rates.
As described in more detail below, in response to receiving a read command from a client 46i, business logic 52 determines if any portion of the model displayed by client 46i has changed. If no portion of the model has changed, business logic 52 does not provide any model data to client 46i. If, however, one or more portions of the model have changed, business logic 52 provides model update instructions to client 46i, but only for the changed portions of the model.
For example, if remote object 501 and corresponding proxy object 50p1 notify business logic 52 of a changed value, that change may affect a portion of a model displayed by client 46i. Business logic 52 determines the affected portion of the model, reads the changed values of remote object 501 and corresponding proxy object 50p1, provides model update instructions to client 46i only for the changed portions, client 46i processes the model update instructions to update the model, and then renders the updated model on a display device.
Under certain conditions, business logic 52 may transfer the entire model to client 46i. For example, in response to an out of sync condition between client 46i and web server 44, a server reboot, a client reboot, or some other condition, business logic 52 may transfer the entire model to client 46i.
Referring now to
Presentation logic 64 includes a read request processor 66 and a model processor 68. Read request processor periodically issues read requests to business logic 52 to obtain changes in model data. Model processor 68 receives model update commands from business logic 52. In response to such model update commands, model processor 68 retrieves the current model from memory 62, processes the model update instructions to update the current model, replaces the current model in memory 62 with the updated model, and renders the updated model to display interface 60. Persons of ordinary skill in the art will understand that presentation logic 64 may include elements other than and/or in addition to the elements illustrated in
Referring now to
Building automation model interface logic 74 issues read and subscribe commands to proxy objects 50p1, 50p2, . . . 50pN in response to commands from processing logic 72, receives model change notifications from proxy objects 50p1, 50p2, . . . 50pN, and provides received model change notifications to processing logic 72. For simplicity, the remaining discussion refers only to proxy objects 50p1, 50p2, . . . 50pN. Persons of ordinary skill in the art will understand that building automation model interface logic 74 may issue read and subscribe commands to, and receive model change notifications directly from remote objects 501, 502, . . . 50N if remote objects are hosted on web server 44.
Customized view database 78 describes how model data are to be displayed on each of clients 461, 462, . . . 46M. As described in more detail below, processing logic 72 accesses customized view database 78 to generate model update commands, and provides the model update commands to clients 461, 462, . . . 46M via model manipulator logic 82.
In addition, processing logic 72 maintains flag database 76, which includes one or more flags, with each flag corresponding to a model element. Model elements may include graphic pages, graphic elements (e.g., widgets) within a graphic page, and other similar model elements. Each model element may include or be based on data from one or more associated proxy objects 50p1, 50p2, . . . 50pN. Table 1, below, illustrates an example relationship between flags, associated proxy objects 50p1, 50p2, . . . 50pN, corresponding model elements, and clients 461, 462, . . . 46M:
In the illustrated example, flag F1 corresponds to model element “Element 1,” which is based on associated proxy objects 50p1, 50p8, 50p12, and is displayed on clients 462 and 467. As the illustrated example shows, data from a single proxy object may be used in more than one model element, and may affect model elements that are displayed on more than one client. For example, in Table 1, proxy objects 50p8 is used in model element Element 1 and model element “Element 3.”
Each flag has a first value (e.g., “1,” “TRUE,” a first color, or some other value) and a second value (e.g., “0,” “FALSE,” a second color, or some other value) that indicates whether the corresponding model element has changed. For example, at a first time instant, flag F1 may have the first value (e.g., green) that indicates that corresponding model element Element 1 has not changed. At a subsequent time instant, flag F1 may have the second value (e.g., red) that indicates that corresponding model element Element 1 has changed and must be regenerated.
Processing logic 72 maintains flag database 76 based on model change notifications received via building automation model interface logic 74 from proxy objects 50p1, 50p2, . . . 50pN. In particular, if processing logic 72 receives a model change notification indicating that one or more proxy objects 50p1, 50p8, 50p12 has a changed value, processing logic 72 determines the model element(s) associated with the changed proxy objects, and changes the corresponding flag(s) from the first value to the second value.
For example, if processing logic 72 receives a model change notification indicating that proxy object 50p2 has a changed value, processing logic 72 changes corresponding flag F3 from the first value to the second value. Likewise, if processing logic 72 receives a model change notification indicating that proxy object 50p8 has a changed value, processing logic 72 changes corresponding flags F1 and F3 from the first value to the second value.
Read request logic 80 receives periodic read commands from clients 461, 462, . . . 46M, and provides the periodic read commands to processing logic 72. In response to a read command from a client 46i, processing logic 72 determines which model elements are displayed by client 46i, and checks the corresponding flag for each model element. If all corresponding flags have the first value (e.g., green), the model data on client 46i are up-to-date, and processing logic 72 does not need to provide any model data to client 46i.
If, however, a flag for a corresponding model element displayed by client 46i has the second value (e.g., red), processing logic 72 reads the values of the proxy object(s) associated with the flag, accesses customized view database 78 to generate model update commands for the corresponding model element, and provides the model update commands to client 46i via model manipulator logic 82. Processing logic 72 generates model update commands only for model elements whose corresponding flag has the second value.
Thus, in the example illustrated above in Table 1, in response to a read request from a client 463, processing logic 72 determines that model element “Element 2” is displayed by client 463, and that corresponding flag F2 is red. Accordingly, processing logic 72 reads the values of proxy objects 461, 463, 4611 associated with Element 2, accesses customized view database 78 to generate model update commands for Element 2, and provides the model update commands to client 463 via model manipulator logic 82.
In response to such model update commands, model processor 68 of client 463 retrieves the current model from memory 62, processes the model update instructions to update the current model, replaces the current model in memory 62 with the updated model, and renders the updated model to display interface 60 of client 463.
Referring now to
Client 461 includes a display device 30 that displays a model 32 depicted as a graphical representation of a building HVAC system. Model 32 includes various elements 32a-32i of the HVAC system, including a display of a temperature 32a measured by a temperature sensor 32b located inside an air duct 32c that is coupled to a first heat exchanger 32d, which in turn is coupled via a first valve 32e and a second valve 32f to a second heat exchanger 32h, and a display of flow rate 32g of a bypass damper 32i.
Proxy objects 50p1, 50p2 and 50p3 represent temperature sensor 32b, first valve 32e and a temperature alarm 32j. In
Table 2, below, illustrates the relationship between flags F1-F3, associated proxy objects 50p1, 50p2 and 50p3, and corresponding model elements 32a, 32e and 32j:
Persons of ordinary skill in the art will understand that flags typically do not correspond to individual proxy objects, and individual proxy objects typically are not associated with individual model elements.
As shown in
After displaying model 32, presentation logic 62 periodically issues read commands to at time intervals Δt to business logic 52. As shown in
As shown in
As shown in
Business logic 52 determines that model element 32a corresponds to flag F1, reads the changed values of associated proxy object 50p1, provides model update instructions to presentation logic 62 only for the changed portions, presentation logic 62 processes the model update instructions to update model 32 to model 32′, and then renders the updated model 32′ on display device 30. In addition, business logic changes flag F1 from the second value to the first value.
As shown in
Because F1-F3 all have the first value, the model data on client 461 are up-to-date, and business logic 52 does not need to provide any model data to client 461. Client 461 continues to display model 32′.
As shown in
As shown in
Business logic 52 determines that model element 32e corresponds to flag F2, reads the changed values of associated proxy object 50p2, provides model update instructions to presentation logic 62 only for the changed portions, presentation logic 62 processes the model update instructions to update model 32′ to model 32″, and then renders the updated model 32″ on display device 30. In addition, business logic changes flag F2 from the second value to the first value.
As shown in
As shown in
As shown in
Business logic 52 determines that model elements 32a and 32j corresponds to flags F1 and F3, respectively, reads the changed values of associated proxy objects 50p1 and 50p3, provides model update instructions to presentation logic 62 only for the changed portions, presentation logic 62 processes the model update instructions to update model 32″ to model 32′″, and then renders the updated model 32′″ on display device 30. In addition, business logic changes flags F1 and F3 from the second value to the first value.
As shown in
As described above, business logic 52 maintains flags that correspond to model elements to determine if some or all elements of model data on client 46i is no longer up-to-date. In accordance with another example embodiment of this invention, to further simplify model update processing, business logic 52 may maintain flags in a flag hierarchy, and may determine if some or all elements of model data requires updating by scanning the flags in a hierarchical manner.
For example, a model typically is organized in a hierarchy, with the top level corresponding to the entire model, a next lower level corresponding to individual graphics pages, a next lower level corresponding to individual graphics view elements of individual graphics pages, and so on. Thus, flags may be organized hierarchically in accordance with the model hierarchy. Persons of ordinary skill in the art will understand that flag hierarchies in accordance with this invention may be organized in other hierarchical techniques.
Referring now to
A second level includes flag sub-nodes 200a1 and 200a2, which depend from flag sub-nodes 200a, and flag 200c1, which depends from flag sub-node 200c. Flag sub-nodes 200a1 and 200a2A each may correspond to graphics view elements of a first page, and flag sub-node 200c1 may correspond to a graphics view element of a second page.
A third level includes flag sub-nodes 200a1a, 200a1b and 200a1c, which depend from flag sub-node 200a1, and flag sub-nodes 200c1a and 200c1b, which depend from flag sub-node 200c1. Flag sub-nodes 200a1a, 200a1b and 200a1c each may correspond to a graphics view sub-element of a first graphics view element, and flag sub-nodes 200c1a and 200c1b each may correspond to a graphics view sub-element of a second graphics view element.
Flag node 200, and flag sub-nodes 200a, 200b, . . . , 200c1b each may have a first value and a second value, as described above. If a flag sub-node has the second value, each higher-order flag node from which the flag sub-node depends also has the second value. Thus, business logic 52 in accordance with this invention may quickly scan the flag hierarchy from top to bottom to determine if any flags have the second value, indicating that some or all elements of the model must be updated.
For example, in the embodiment of
Referring now to
Business logic then checks flag sub-nodes 200a, 200b and 200c. Because flag sub-node 200c has the first value, all flag sub-nodes that depend from flag sub-node 200c must have the first value, and thus business logic 52 does not need to check any of flag sub-nodes 200c1, 200c1a, or 200c1b. Because flag sub-node 200a has the second value, business logic 52 checks flag sub-nodes 200a2 and 200a1. Because flag sub-node 200a1 has the first value, all flag sub-nodes that depend from flag sub-node 200a1 must have the first value, and thus business logic 52 does not need to check any of flag sub-nodes 200a1a, 200a1b, or 200a1c. Thus, rather than checking all eleven flag sub-nodes, business logic 52 may check just five flag sub-nodes to determine that flag sub-nodes 200a2, 200a and 200 have the second value, and all other flag sub-nodes have the first value.
Referring now to
Business logic then checks flag sub-nodes 200a, 200b and 200c. Because flag sub-nodes 200a and 200b each have the first value, all flag sub-nodes that depend from flag sub-nodes 200a, 200b and 200c must have the first value, and thus business logic 52 does not need to check any of flag sub-nodes 200a1, 200a2, 200a1a, 200a1b, or 200a1c. Because flag sub-node 200c has the second value, business logic 52 checks flag sub-node 200c1. Because flag sub-node 200c1 has the second value, business logic 52 checks flag sub-nodes 200c1a and 200c1c, and determines that flag sub-node 200c1a has the second value. Thus, rather than checking all eleven flag sub-nodes, business logic 52 may check just six flag sub-nodes to determine that flag subnodes 200c1a, 200c1, 200c and flag node 200 have the second value, and all other flags have the first value.
The foregoing merely illustrates the principles of this invention, and various modifications can be made by persons of ordinary skill in the art without departing from the scope and spirit of this invention.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/EP2012/069210 | 9/28/2012 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2014/048491 | 4/3/2014 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5596701 | Augusteijn | Jan 1997 | A |
5790416 | Norton | Aug 1998 | A |
5857198 | Schmidt | Jan 1999 | A |
6484234 | Kedem | Nov 2002 | B1 |
20030176930 | Nold | Sep 2003 | A1 |
20040031061 | McCalla | Feb 2004 | A1 |
20060058922 | Kruk et al. | Mar 2006 | A1 |
20100017739 | Han | Jan 2010 | A1 |
20100274366 | Fata | Oct 2010 | A1 |
20110088000 | Mackay | Apr 2011 | A1 |
20110107281 | Sun | May 2011 | A1 |
Number | Date | Country |
---|---|---|
1345097 | Sep 2003 | EP |
Entry |
---|
Corcoran, P.M., “Mapping home-network appliances to TCP/TP sockets using a three-tiered home gateway architecture”, IEEE Transactions on Consumer Electronics, 1998, pp. 729-736, vol. 44, No. 3. |
Corcoran, P.M., et al., “Browser-style interfaces to a home automation network”, IEEE Transactions on Consumer Electronics, 1997, pp. 1063-1069, vol. 43, No. 4. |
Desbonnet, J., et al., “System architecture and implementation of a CEBus/internet gateway”, IEEE Transactions on Consumer Electronics, 1997, pp. 1057-1062, vol. 43, No. 4. |
Number | Date | Country | |
---|---|---|---|
20150253748 A1 | Sep 2015 | US |