Techniques for firmware updates in building and equipment controllers

Automatic remote firmware updates through the machine group manager, the problem of cumbersome and inefficient firmware updates in the existing technology is solved, efficient and reliable firmware updates are achieved, and maintenance costs are reduced.

CN120010880APending Publication Date: 2025-05-16TRANE INTERNATIONAL INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411635551.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-11-16
Filing Date
2024-11-15
Publication Date
2025-05-16

AI Technical Summary

Technical Problem

In the prior art, the firmware update process of construction and equipment controllers is cumbersome and inefficient, and requires on-site technicians to perform manual operations, resulting in wasted time, equipment offline, and increased maintenance costs.

Method used

The cluster manager is used to simplify and automate remote firmware updates to embedded equipment and building control devices, and automatically identify, schedule and execute firmware updates through predefined controller packets, controller mappings, and client data use.

Benefits of technology

It realizes efficient and reliable remote firmware updates of building and equipment controllers, reduces the need for on-site access, improves equipment availability and the desirability of updates, and reduces maintenance costs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120010880A_ABST
    Figure CN120010880A_ABST
Patent Text Reader

Abstract

Apparatuses, systems, and methods for updating firmware in building and equipment controllers are described. Several embodiments include a cluster manager configured to simplify and automate remote firmware updates to connected (e.g., cloud-connected) embedded equipment and building control devices. Updates may be performed or scheduled immediately, such as based on user preferences, constraints and conditions and / or device parameters and capabilities. In many embodiments, a cluster manager may participate in an interaction process, such as with a client, to schedule and execute updates.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure generally relates to improved devices, systems, and methods for remote firmware updates of building and equipment controllers. Background Art

[0002] Typically, a building management system may be responsible for the automated centralized control of various equipment within a building, such as heating, ventilation, and air conditioning (HVAC), electrical, lighting, shading, access control, security systems, manufacturing equipment, and other related systems. Building management systems are typically used to improve occupant comfort, efficient operation of building systems, reduce energy consumption, reduce operating and maintenance costs, and increase safety. For example, building management system functions may maintain the building's climate within a specific range, provide lighting to rooms based on occupancy, monitor performance and equipment failures, and provide fault alerts to building maintenance personnel. Building management systems are often utilized in commercial, institutional, and industrial buildings to reduce building energy and maintenance costs compared to uncontrolled buildings. Building management systems may also be utilized in residential buildings.

[0003] A building management system includes one or more controllers (e.g., embedded and / or programmable logic controllers) used to direct and monitor the operation of equipment in a building. A controller is typically a small, dedicated computer with input and output capabilities. These controllers typically operate based on firmware. In general, firmware is a specific class of computer software that provides low-level control for a device's specific hardware. Firmware, such as the BIOS of a personal computer, may contain the basic functionality of the device and may provide hardware abstraction services to higher-level software, such as an operating system for a workstation. For less complex devices, the firmware may act as a complete operating system for the device, performing all control, monitoring, and data manipulation functions. Firmware is typically stored in non-volatile memory devices, such as read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory. Summary of the invention

[0004] Devices, systems, and methods for updating firmware in building and equipment controllers are disclosed. Several embodiments include a fleet manager configured to simplify and automate remote firmware updates to connected (e.g., cloud-connected) embedded equipment and building control devices. Updates may be performed immediately or scheduled, such as based on user preferences, constraints and conditions, and / or device parameters and capabilities. In many embodiments, the fleet manager may engage in an interactive process, such as with a client, to schedule and perform updates.

[0005] The present disclosure thus includes, but is not limited to, the following example embodiments. Some example implementations provide a computer-implemented method for managing firmware updates for a group of controllers, the method comprising: identifying a plurality of controllers for firmware updates based on a predefined controller grouping, wherein each of the plurality of controllers includes an onboard memory having current firmware; determining a set of controllers located in a building, the set of controllers being determined based on a controller mapping, and the set of controllers being included in the plurality of controllers for firmware updates; retrieving client data corresponding to the set of controllers; determining that approval is required to perform a firmware update on the set of controllers based on client-defined constraints in the client data; automatically requesting approval to perform a firmware update on the set of controllers based on contact information included in the client data; receiving authorization to perform a firmware update on the set of controllers in response to requesting approval; based on the authorization, delivering the firmware update to a first controller in the set of controllers over a network; and based on the authorization, initiating execution of the firmware update on the first controller in the set of controllers over the network.

[0006] Other example embodiments provide a server computer system for managing a group of controllers, comprising: a memory; and a processor coupled to the memory, the processor being configured to: identify, by the server system, a plurality of controllers for firmware update based on a predefined controller grouping, wherein each of the plurality of controllers includes an onboard memory having current firmware; determine, by the server system, a set of controllers located in a building, the set of controllers being determined based on a controller mapping, and the set of controllers being included in a plurality of controllers for firmware update; retrieve, by the server system, client data corresponding to the set of controllers; determine, by the server system and based on client-defined constraints in the client data, that approval is required to perform a firmware update on the set of controllers; automatically request, by the server system, approval to perform a firmware update on the set of controllers based on contact information included in the client data; receive, by the server system in response to the request for approval, authorization to perform a firmware update on the set of controllers; deliver the firmware update to a first controller in the set of controllers via a network and by the server system based on the authorization; and initiate execution of the firmware update on the first controller in the set of controllers via the network and by the server system based on the authorization.

[0007] Still other embodiments provide a non-volatile computer-readable storage medium comprising instructions that, when executed by a processor, cause the processor to perform operations for managing a group of controllers, the operations comprising: identifying multiple controllers for firmware update based on predefined controller groupings, wherein each of the multiple controllers includes an onboard memory having current firmware; determining a set of controllers located in a building, the set of controllers being determined based on a controller mapping, and the set of controllers being included in the multiple controllers for firmware update; retrieving client data corresponding to the set of controllers; determining that approval is required to perform a firmware update on the set of controllers based on client-defined constraints in the client data; automatically requesting approval to perform a firmware update on the set of controllers based on contact information included in the client data; receiving authorization to perform a firmware update on the set of controllers in response to requesting approval; based on the authorization, delivering the firmware update to a first controller in the set of controllers over a network; and based on the authorization, initiating execution of the firmware update on the first controller in the set of controllers over the network.

[0008] By reading the following detailed description together with the accompanying drawings briefly described below, these and other features, aspects and advantages of the present disclosure will be apparent. The present disclosure includes any combination of two, three, four or more of the above-described embodiments and any combination of two, three, four or more features or elements set forth in the present disclosure, regardless of whether such features or elements are explicitly combined in the specific embodiment description herein. The present disclosure is intended to be read as a whole, so that unless the context clearly indicates otherwise, any separable features or elements of any of the various aspects and embodiments of the disclosed present disclosure should be considered as combinable as expected. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] For a detailed description of various exemplary embodiments, reference will now be made to the accompanying drawings, in which:

[0010] Figure 1 An exemplary operating environment for a fleet manager is shown in accordance with some embodiments.

[0011] Figure 2 Various aspects of an HVAC system according to some embodiments are shown.

[0012] Figure 3A and Figure 3B An exemplary configuration of a controller according to some embodiments is shown.

[0013] Figure 4 Various aspects of an operating environment for a fleet manager are shown in accordance with some embodiments.

[0014] Figure 5 An exemplary controller mapping is shown in accordance with some embodiments.

[0015] Fig. 6A and Figure 6B An exemplary controller grouping is shown in accordance with some embodiments.

[0016] Figure 7 Various aspects of scheduling firmware updates according to some embodiments are shown.

[0017] Figure 8 A logic flow for scheduling and executing a firmware update is shown according to some embodiments.

[0018] Fig. 9 A control circuit according to some embodiments is shown. DETAILED DESCRIPTION

[0019] The following discussion relates to various exemplary embodiments. However, those skilled in the art will appreciate that the examples disclosed herein have broad applications, and the discussion of any embodiment is intended only to be an example of that embodiment, and is not intended to indicate that the scope of the present disclosure, including the claims, is limited to that embodiment.

[0020] The drawings are not necessarily drawn to scale. Certain features and components herein may be shown exaggerated in scale or in somewhat schematic form, and some details of conventional elements may not be shown in the interest of clarity and conciseness.

[0021] In the following discussion and in the claims, the terms "including" and "comprising" are used in an open-ended fashion, and thus should be interpreted to mean "including, but not limited to...". Additionally, the terms "couple" or "couples" are intended to mean either an indirect or direct connection. Thus, if a first device is coupled to a second device, that connection may be through a direct connection between the two devices, or through an indirect connection established via other devices, components, nodes, and connections. Additionally, when used herein, including in the claims, the words about, typically, substantially, approximately, and the like mean within a range of plus or minus 10% unless otherwise indicated herein.

[0022] Like all software, firmware needs to be patched, upgraded, and / or updated regularly, such as to maintain security or improve performance. Historically, firmware updates have been done on-site by qualified technicians. However, this is a resource-intensive process with many inefficiencies. For example, the travel time to and from the building can take a considerable amount of time and cause wear and tear on the vehicle. In addition, on-site visits by qualified technicians usually must be made during normal business hours, however, updating firmware often requires the equipment to be offline, resulting in many inconveniences and interruptions in the normal operation of the building. For example, if the controller being updated controls HVAC equipment, the HVAC equipment is usually offline when performing the update, resulting in an uncomfortable environment for building personnel. In another example, a piece of manufacturing equipment may be offline when its controller is updated, resulting in a manufacturing slowdown. In addition, on-site visits may require special and / or supervised visits. For example, prisons / detention centers, many government facilities, and parts of hospitals may require special and / or supervised visits. More generally, access to many types of buildings, such as due to global pandemics, has become much more difficult. In addition, many controllers in a building may need to be updated, and it is required that on-site personnel may need to perform many updates at the same time, resulting in multiple pieces of equipment being unavailable at the same time. Further adding to the complexity, many customers (e.g., building owners / operators) may not want updates, or may want to perform updates based on constraints / conditions to reduce the inconvenience caused by the updates. Still further adding to the complexity, controllers come in many versions and types, have many different sets of capabilities and hardware, and are used to control a wide variety of equipment. Thus, identifying which controllers to update, how to update them, when they can be updated, and where they are located presents a complex and difficult task that is prone to errors and oversights, especially when performed manually. These limitations can significantly reduce the availability and desirability of firmware updates, causing undue inconvenience and numerous inefficiencies. Therefore, as discussed in more detail below, embodiments disclosed herein include a fleet manager that is configured to remotely manage and control firmware updates in an efficient and reliable manner, reducing inconvenience and improving equipment availability.

[0024] Figure 1An operating environment 100 for a cluster manager 103 is shown in accordance with some embodiments. The operating environment 100 includes a server 104, networks 110a, 110b, controllers 112a, 112b (collectively, controllers 112), and one or more sub-controllers 120a, 120b, 120c (collectively, sub-controllers 120). The controller 112 may be communicatively coupled to the server 104 via the network 110a. The sub-controller 120 may be communicatively coupled to the controller 112a via the network 110b. In various embodiments, the server 104 may include a processor 106 and a memory 108, the memory 108 including the cluster manager 102. In various such embodiments, the server 104 may implement the cluster manager 102 to remotely manage and update firmware on one or more of the controllers 112 and / or the sub-controllers 120. It should be understood that Figure 1 One or more components of may be the same or similar to one or more other components disclosed herein. Figure 1 The aspects discussed in the various components of the embodiments may be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. The embodiments are not limited in this context.

[0025] Each of the controller 112 and the sub-controllers 120 can be coupled to and control one or more devices in the building, such as HVAC equipment, industrial equipment, manufacturing equipment, lighting units, sensors, one or more other controllers (e.g., sub-controllers), etc. In various embodiments, each controller or sub-controller can include hardware (e.g., circuitry, dedicated logic, programmable logic, embedded controllers, microcontrollers, programmable gate arrays, processors, processing devices, central processing units (CPUs), systems on chips (SoCs), memory, etc.), software (e.g., instructions running / executing on a processing device), firmware (e.g., microcode), or a combination thereof. In the illustrated embodiment, each of the controller 112 and the sub-controllers 120 includes processing circuitry and memory that implements firmware to control the devices coupled thereto. Thus, controller 112a may include processing circuitry 114 and memory 116 with firmware 118; controller 112b may include processing circuitry 140 and memory 142 with firmware 144; sub-controller 120a may include processing circuitry 122 and memory 124 with firmware 126; sub-controller 120b may include processing circuitry 128 and memory 130 with firmware 132; and sub-controller 120c may include processing circuitry 134 and memory 136 with processing circuitry 134. In many embodiments, although not shown, the controller memory may include additional content in addition to firmware. For example, a controller may include firmware and one or more other content, such as application software. For example, the application software may include an operating system, a database, a library, application or site-specific data, such as trend logs, custom graphics, custom programs, user preferences, etc.

[0026] The cluster manager 102 may be operable to remotely map, manage, and update firmware for a cluster of controllers in an efficient and reliable manner. The cluster manager 102 may include one or more computer executable instruction sets on one or more processing devices that implement one or more of the features and / or functions discussed herein. The cluster manager 102 may be communicatively coupled to each of the controllers and sub-controllers via one or more networks. For example, the network 110a may include the internet, and the network 110b may include a local area network.

[0027] In many embodiments, the fleet manager 102 can generate a map of the controllers that includes various parameters of the controllers, such as location, capabilities, hardware, version, type, location, connectivity, etc. In many such embodiments, the map can be used to determine which controllers need to be updated and how to proceed with performing the update. For example, if the fleet manager 102 determines that a controller does not have sufficient onboard memory (e.g., memory 130 of sub-controller 120b) to store a firmware update simultaneously with the current firmware (e.g., firmware 132), the fleet manager 102 can determine to back up the current firmware to a remote location (e.g., memory 108 of server 104 or memory 116 of controller 112a) before performing the update. In some embodiments, the various parameters of the controllers can be stored in device data (see, e.g., Figure 5 ). The server 102 may include a server system, a server computer system, and / or a cloud-based computing system. In many embodiments, the server 102 may include a distributed computing system.

[0028] In various embodiments, fleet manager 102 may comply with various conditions and constraints for executing firmware updates provided by different interested entities (e.g., manufacturers, dealers, distributors, customers, operators, etc.). For example, a customer may provide specific timing constraints for executing an update. In many embodiments, fleet manager 102 may participate in an interactive process with interested entities to determine the conditions and constraints for executing a firmware update. In various embodiments, one or more of these conditions and constraints may be stored in client data (see, e.g., Figure 5 ). These and other advantageous aspects of the cluster manager disclosed herein will be discussed in more detail below.

[0029] Figure 2 Generally, an overview of the HVAC system 200 is provided. In various embodiments, one or more controllers or sub-controllers described herein may control the operation of one or more components of the HVAC system 200. Thus, Figure 2 2 and 3 to illustrate exemplary, non-limiting controllers and equipment that may be managed by a fleet manager. Figure 2 A schematic diagram of a typical HVAC system 200 is shown; in some embodiments, the HVAC system 200 includes a heat pump system that can be selectively operated to implement one or more substantially closed thermodynamic refrigeration cycles to provide a cooling function (hereinafter referred to as a "cooling mode") and / or a heating function (hereinafter referred to as a "heating mode"). Figure 2The embodiment depicted in is configured as a cooling mode. In some embodiments, the HVAC system 200 is configured as a split heat pump system and generally includes an indoor unit 202, an outdoor unit 204, and a system controller 206 that can generally control the operation of the indoor unit 202 and / or the outdoor unit 204.

[0030] It should be understood that Figure 2 One or more components of can be the same as or similar to one or more other components disclosed herein. For example, system controller 206 can be the same as or similar to controller 112a, indoor controller 224 can be the same as or similar to sub-controller 120a, and / or outdoor controller 226 can be the same as or similar to sub-controller 120b. Figure 2 The aspects discussed in the various components of the embodiments may be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. The embodiments are not limited in this context.

[0031] The indoor unit 202 generally includes an indoor air handling unit including an indoor heat exchanger 208, an indoor fan 210, an indoor metering device 212, and an indoor controller 224. The indoor heat exchanger 208 generally can be configured to facilitate heat exchange between a refrigerant carried within internal tubing of the indoor heat exchanger 208 and an airflow contacting the indoor heat exchanger 208 but separated from the refrigerant.

[0032] The indoor metering device 212 may typically include an electronic expansion valve (EEV) driven by an electronically controlled motor. However, in some embodiments, the indoor metering device 212 may include a thermostatic expansion valve, a capillary tube assembly, and / or any other suitable metering equipment.

[0033] The outdoor unit 204 generally includes an outdoor heat exchanger 214, a compressor 216, an outdoor fan 218, an outdoor metering device 220, a switching valve 222, and an outdoor controller 226. The outdoor heat exchanger 214 generally can be configured to facilitate heat transfer between a refrigerant carried within the internal tubing of the outdoor heat exchanger 214 and an airflow contacting the outdoor heat exchanger 214 but separated from the refrigerant.

[0034] The outdoor metering device 220 may generally include a thermostatic expansion valve. However, in some examples, the outdoor metering device 220 may include an electronically controlled motor-driven EEV similar to the indoor metering device 212, a capillary tube assembly, and / or any other suitable metering device.

[0035] In some examples, the switching valve 222 may generally include a four-way reversing valve. The switching valve 222 may also include a solenoid, a relay, and / or other devices configured to selectively move the switching valve 222 between operating positions to change the flow path of the refrigerant through the switching valve 222 and thus change the HVAC system 200.

[0036] The system controller 206 may generally be configured to selectively communicate with an indoor controller 224 of the indoor unit 202, an outdoor controller 226 of the outdoor unit 204, and / or other components of the HVAC system 200. In some embodiments, the system controller 206 may be configured to control the operation of the indoor unit 202 and / or the outdoor unit 204. In some embodiments, the system controller 206 may be configured to monitor and / or communicate with a plurality of temperature sensors associated with components of the indoor unit 202, components of the outdoor unit 204, and / or the outdoor ambient temperature.

[0037] In some examples, system controller 206 can be configured for selective bidirectional communication over communication bus 228. In some examples, system controller 206 can be configured to selectively communicate with components of HVAC system 200 and / or any other devices 230 via communication network 232. For example, device 230 can include server 104, and communication network 232 can include network 110a.

[0038] The indoor controller 224 can be carried by the indoor unit 202 and can generally be configured to receive information input, transmit information output and / or otherwise communicate with the system controller 206, the outdoor controller 226 and / or any other device 230 via a communication bus 228 and / or any other suitable communication medium.

[0039] The indoor EEV controller 234 may be configured to receive information regarding the temperature and / or pressure of the refrigerant in the indoor unit 202. More specifically, the indoor EEV controller 234 may be configured to receive information regarding the temperature and pressure of the refrigerant entering, exiting, and / or within the indoor heat exchanger 208.

[0040] The outdoor controller 226 may be carried by the outdoor unit 204 and may be configured to receive information input, transmit information output, and / or otherwise communicate with the system controller 206, the indoor controller 224, and / or any other device 230 via the communication bus 228 and / or any other suitable communication medium. In some embodiments, the outdoor controller 226 may be configured to receive information related to the ambient temperature associated with the outdoor unit 204, information related to the temperature of the outdoor heat exchanger 214, and / or information related to the temperature and / or pressure of the refrigerant entering, leaving, and / or within the outdoor heat exchanger 214 and / or the compressor 216.

[0041] Figure 3A and Figure 3B Exemplary configurations 300a, 300b of controllers according to some embodiments are shown. In general, embodiments described herein may include multiple building controllers and / or equipment controllers communicatively coupled to a network (e.g., the Internet) directly or indirectly in various configurations. Building and equipment controllers may receive instructions and / or data, such as for firmware updates, from a remote source (e.g., a fleet manager implemented by a cloud infrastructure) via the network. Figure 3A Included is a configuration 300a in which a building controller 304 is coupled to the Internet 302 and equipment controllers 306a, 306b, 306c, 306d (collectively referred to as building controllers 306). Figure 3B 300b, wherein equipment controllers 308, 312 and building controllers 310, 314 are coupled to the Internet 302. It should be understood that Figure 3A and Figure 3B One or more components of may be the same as or similar to one or more other components of the present disclosure. For example, the internet 302 may be the same as or similar to the network 110a, the building controller 304 may be the same as or similar to the controller 112a, one or more of the equipment controllers 306 may be the same as or similar to one or more of the sub-controllers 120, and / or one or more of the equipment controllers 308, 312 and the building controllers 310, 314 may be the same as or similar to the controller 112b. In addition, with respect to Figure 3A and Figure 3B The aspects discussed in the various components of the embodiments may be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. The embodiments are not limited in this context.

[0042] Figure 4Various aspects of an operating environment 400 for a cluster manager 440 are shown in accordance with some embodiments. The operating environment 400 includes one or more cluster access computers 402a, 402b, 402c (collectively, cluster access computers 402), a cloud infrastructure 404, a network 406, buildings 408a, 408b, 408c (collectively, buildings 408), and one or more client devices 438a, 438b, 438c (collectively, client devices 438). As previously mentioned, the embodiments described herein may include a cluster manager 440 for remotely managing and updating various controllers for operating various equipment in a building. In the illustrated embodiment, the cluster manager 440 may be located in a cloud infrastructure 404 that is communicatively coupled to the cluster access computers 402, the buildings 408, and the client devices 438. It should be understood that Figure 4 One or more components of can be the same or similar to one or more other components disclosed herein. For example, equipment controller 416 can be the same or similar to system controller 206. In another example, building controller 410 can be the same or similar to controller 112a or building controller 304. Figure 4 The aspects discussed in the various components of the embodiments may be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. The embodiments are not limited in this context.

[0043] The fleet access computer 402 may be utilized by an entity associated with one or more of manufacturing, installing, and maintaining the controller. For example, the fleet access computer 402 may be utilized by a manufacturer, a local representative, and / or a distributor. On the other hand, the client device 438 may be utilized by an entity that owns or operates one or more aspects of a building in which the controller is installed. The fleet access computer 402 and the client device 438 may include a processing device that is communicatively coupled to the fleet manager 440 via the network 406. For example, the fleet access computer 402 and the client device 438 may include one or more of a mobile device, a smart phone, a tablet computer, a laptop computer, a desktop computer, etc.

[0044] Different accounts for accessing and interacting with the fleet manager 440 may be provided to entities using the fleet manager 440. In various embodiments, different privileges, capabilities, and permissions may be provided to different accounts based on the associated entity. In addition, different user experiences (e.g., graphical user interfaces) may be provided to different users. For example, a manufacturer may have privileges that allow it to upload new firmware updates to the fleet manager 440, a dealer may have privileges to use a client to initiate a scheduling function for updating the firmware of a controller, and a client may have privileges to authorize the performance of firmware updates. In addition, some users of the fleet manager 440 may be able to see information that other users cannot obtain. For example, a customer may only be able to see information about controllers associated with a client (e.g., controllers located in a building owned or operated by the customer as indicated in the associated client data), a dealer may only be able to see controllers maintained by the dealer (e.g., the dealer's territory), and a manufacturer may be able to see all controllers in the fleet.

[0045] In some embodiments, privileges, capabilities, and permissions may be provided based on tiers. For example, a manufacturer may have all privileges, capabilities, and permissions for a customer, and a dealer may have all privileges, capabilities, and permissions for a customer. In one embodiment, a manufacturer user may be able to create dealer and customer accounts, but a dealer may only be able to create customer accounts. In various embodiments, a fleet summary about an associated controller may be generated for one or more users. In various such embodiments, the fleet summary may include one or more of a version, last update information (e.g., time, date, version), scheduled / planned update information (e.g., time, date, version), and historical update pass / fail. In one embodiment, a historical update pass / fail summary may be utilized to identify troublesome controllers. For example, multiple attempts to install a previous update may indicate that a controller may fail and should be replaced.

[0046] In many embodiments, cluster manager 440 may create, maintain, and / or utilize one or more controller mappings 442 and one or more controller groupings 444 to perform various functions described herein. Figure 5 Aspects of controller mapping are discussed in more detail. Fig. 6A and Figure 6BAspects of controller grouping are discussed in more detail. In various embodiments, the fleet manager 440 may include one or more software modules located in the cloud infrastructure 404 (or another remote computing device (e.g., a server)). Although not shown, in some embodiments, one or more of the fleet access computer, controller, and client device may include software that facilitates communication with the fleet manager 440. For example, the fleet manager 440 may be communicated with using a web browser such as on one or more fleet access computers 402 and / or client devices 438. In another example, the fleet manager 440 may be communicated with using an application such as on one or more client devices 438. In yet another example, the fleet manager 440 may be communicated with using a background program such as on a building controller 410 or an equipment controller 418. In yet another example, the firmware may include instructions for communicating with the fleet manager 440.

[0047] Referring back to the illustrated embodiment, cloud infrastructure 404 includes processor 428 and memory 430 having cluster manager 440, controller map 442, and controller grouping 444. As will be appreciated, cloud infrastructure 404 may include one or more processors and one or more memories that implement or store one or more portions of cluster manager 440, controller map 442, and controller grouping 444.

[0048] In the operating environment 400, each of the controllers can be coupled to and control one or more devices in a building. Thus, the building 408a includes a building controller 410 that is communicatively coupled to equipment controllers 414a, 414b, 414c (collectively referred to as equipment controllers 414) via a bus 420. In addition, the building controller 410 can be communicatively coupled to a workstation 412. In some embodiments, the workstation 412 can include a client device. The building controller 410 can be responsible for managing and controlling various aspects of each equipment controller 414. The equipment controller 414a can be coupled to an HVAC component 422, the equipment controller 414b can be coupled to a lighting unit 424, and the equipment controller 414c can be coupled to an occupancy sensor 426. In some embodiments, the fleet manager 440 can perform a firmware update only when certain conditions are met. For example, a firmware update can be performed on the equipment controller 414a only when the occupancy sensor 426 indicates that the building 408a has an occupancy below a threshold occupancy level. In another example, fleet manager 440 can perform updates on multiple controllers in a building outside of normal business hours (e.g., perform updates in parallel) and perform updates on multiple controllers sequentially during normal business hours (to prevent multiple controllers from being offline at the same time). Performing updates sequentially / in parallel can be utilized to minimize disruption and inconvenience to operations within the building.

[0049] Building 408b includes an equipment controller 418 that is communicatively coupled to HVAC components 432 and temperature sensors 434. In some embodiments, fleet manager 440 may perform updates to equipment controller 418 only when temperature sensor 434 indicates that the temperature is above or below a threshold temperature (which may be based on the time of year or season). For example, in the summer, fleet manager 440 may update equipment controller 418 only when temperature sensor 434 indicates that the temperature in building 408b is below 75 degrees, and in the winter, fleet manager 440 may update equipment controller 418 only when temperature sensor 434 indicates that the temperature in building 408b is above 70 degrees. In another example, temperature sensor 434 may include an indoor temperature sensor and an outdoor temperature sensor. In some such other examples, fleet manager 440 may perform updates to equipment controller 418 only when indoor and / or outdoor temperature thresholds are met. In one example, fleet manager 440 may perform updates to equipment controller 418 only when the outdoor temperature is within 15 degrees of the indoor temperature. In some embodiments, HVAC component 432 and temperature sensor 434 may have separate controllers.

[0050] Building 408c includes an equipment controller 416 communicatively coupled to HVAC components 436a, 436b, 436c (collectively, HVAC components 436). In various embodiments, each of the HVAC components 436 can include one or more components of the HVAC system 200. In one embodiment, each of the HVAC components can be coupled to a different controller. For example, HVAC component 436a can be coupled to system controller 206, HVAC component 436b can be coupled to indoor controller 224, and HVAC component 436c can be coupled to outdoor controller 226.

[0051] In various embodiments, the cluster manager 440 may implement or perform one or more of the following operations and / or methods. It should be understood that although the operations or methods may be described with respect to a specific set of components, they may be equally applicable to other sets and / or combinations of components. The cluster manager 440 may implement a method including identifying multiple controllers for firmware update based on one or more of the controller groupings 444. In addition, each of the multiple controllers may each include an onboard memory with current firmware. The cluster manager 440 may determine the controller set located in the building 408a based on the controller mapping 442, and the controller set included in the multiple controllers for firmware update. The cluster manager 440 may retrieve the client data corresponding to the controller set from the controller mapping 442, and then determine that approval is required to perform firmware update on the controller set based on the client-defined constraints in the client data. The cluster manager 440 may automatically request approval to perform firmware update on the controller set based on the contact information included in the client data of the client device 438c. The cluster manager 440 may receive authorization to perform the firmware update on the controller set in response to a request approval, such as from the client device 438c. The cluster manager 440 may communicate the firmware update to the equipment controller 414a in the controller set over the network 406 based on the authorization. The cluster manager 440 may initiate execution of the firmware update for the equipment controller 414a in the controller set over the network 406 based on the authorization.

[0052] The fleet manager 440 can determine that an equipment controller 414a in the controller set includes sufficient onboard memory to store both the firmware update and the current firmware, and based on determining that the first controller includes sufficient onboard memory to store both the firmware update and the current firmware, communicate the firmware update to the first controller via the network 406 for storage in the onboard memory with the current firmware.

[0053] The fleet manager 440 can determine that an equipment controller 414a in the controller set includes insufficient onboard memory to simultaneously store a firmware update and the current firmware, and based on determining that it includes insufficient onboard memory to simultaneously store a firmware update and the current firmware and / or contents of the controller, receive the current firmware of the equipment controller 414a via the network 406. The fleet manager 440 can store the firmware and / or current contents of the equipment controller 414a in cloud storage (e.g., memory 430), and in response to storing the current firmware of the equipment controller 414a in the cloud storage, deliver the firmware update to the equipment controller 414a via the network 406 for storage in the onboard memory in place of the current firmware.

[0054] More generally, in some embodiments, a controller may include firmware and one or more other content, such as application software. For example, the application software may include an operating system, a database, a library, application or site-specific data, such as trend logs, custom graphics, custom programs, user preferences, etc. In many embodiments, one or more portions of the firmware and / or application software may be backed up to one or more locations prior to performing an update.

[0055] In various embodiments, the fleet manager 440 communicates the firmware update to the building controller 410, which forwards the firmware update to the equipment controller 414a over the local area network. In various such embodiments, the fleet manager 440 may determine that the equipment controller 414a includes insufficient onboard memory to store both the firmware update and the current firmware, and instruct the building controller 410 to back up the current firmware on the equipment controller 414a before forwarding the firmware update to the equipment controller 414a over the local area network.

[0056] In some embodiments, the authorization received from the client device 438c may be subject to at least one client-defined condition received along with the authorization. In some such embodiments, the at least one client-defined condition received along with the authorization includes a timing constraint for performing the firmware update. In several embodiments, the client-defined constraint in the client data includes a first client-defined constraint, and the fleet manager 440 initiates execution of the firmware update at the equipment controller 414a via the network 406 based on a second client-defined constraint in the client data and sensor data indicating an operating parameter of the HVAC component 422 controlled by the equipment controller 414a, and the second client-defined constraint includes a threshold value for an operating parameter of the device. For example, the operating parameter of the device may include at least one of the current capacity of the facility (e.g., a manufacturing plant), the current resource consumption, the current operations per minute, the current load, and the current personnel load in the facility (e.g., a hospital).

[0057] In many embodiments, the client-defined constraints in the client data include a first client-defined constraint, and the fleet manager 440 initiates execution of the firmware update on the equipment controller 414a over the network 406 based on a second client-defined constraint in the client data and the sensor data generated by the occupancy sensor 426. In many such embodiments, the sensor data indicates an occupancy level in the building, and the second client-defined constraint includes a threshold occupancy level for executing the firmware update.

[0058] In various embodiments, fleet manager 440 may communicate the firmware update to equipment controller 414a over network 406 for storage in onboard memory with the current firmware based on determining that the available bandwidth of the network (or local area network) used to communicate with the first controller exceeds a bandwidth threshold amount. In some embodiments, fleet manager 440 may determine that a past execution of the firmware update on equipment controller 414a was successful, and in response to determining that the past firmware update on equipment controller 414a was successful, initiate execution of the firmware update on equipment controller 414b over the network. In some such embodiments, the firmware update is performed on equipment controller 414b using the firmware update stored in the onboard memory of equipment controller 414a.

[0059] In several embodiments, the fleet manager 440 may determine that a past execution of a firmware update on the equipment controller 414a was unsuccessful, and in response to determining that a past firmware update on the equipment controller 414a was unsuccessful, initiate recovery of the current firmware (and / or other content) of the equipment controller 414a via the network 406. More generally, recovery of any controller may include the current firmware and / or other content of the controller. In some embodiments, an unsuccessful update may be caused by one or more of the content and / or firmware of the controller being corrupted. In many embodiments, the fleet manager 440 may determine that execution of a firmware update on the equipment controller 414a was unsuccessful in response to failing to receive an update confirmation from the equipment controller 414a within a threshold amount of time.

[0060] Figure 5The figure illustrates a controller map 502 according to some embodiments. The controller map 502 may include data corresponding to various buildings, controllers, and / or devices in a fleet. For example, the controller map 502 may include controller layouts, addresses, configurations, client data (e.g., client definition constraints, contact information). In many embodiments, a fleet manager (e.g., the fleet manager 102) may utilize the controller map to identify information related to performing management and / or firmware updates on the controllers. In the illustrated embodiment, the controller map 502 includes buildings 506a, 506b, 506c, 506d, 506e (collectively referred to as buildings 506) connected to an external network 504. As discussed in more detail below, each of the buildings 506 may include one or more controllers, device data, and client data. It should be understood that Figure 5 One or more components of can be the same or similar to one or more other components disclosed herein. For example, controller map 502 can be the same or similar to controller map 442. In another example, building controller 516 can be the same or similar to controller 112a, and / or equipment controllers 518a, 518b, 518c can be the same or similar to sub-controller 120. In addition, with respect to Figure 5 The aspects discussed in the various components of can be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. For example, client data and / or device data can be stored separately from the controller map 502. In another example, a separate controller map can be maintained for each building, customer, dealer, distributor, and / or controller grouping. The embodiments are not limited in this context.

[0061] In the illustrated embodiment, building 506a includes equipment controller 508, client data 522, and device data 532; building 506b includes building controller 510, equipment controllers 512a, 512b, device data 534, and client data 524; building 506c includes equipment controller 514, client data 526, and device data 536; building 506d includes building controller 516, equipment controllers 518a, 518b, 518c, client data 528, and device data 538; and building 506e includes equipment controller 520, client data 530, and device data 540. It should be understood that controller mapping 502 can take various forms and include any number of buildings, equipment controllers, building controllers, configurations, etc. without departing from the scope of the present disclosure. Controller mapping can be used to efficiently and easily determine the configuration and layout of controllers and related information. In various embodiments, controller mapping 502 can be automatically created and maintained by a fleet manager. For example, a fleet manager can create and maintain controller mappings for all connected controllers. In some embodiments, the fleet manager may update the controller mapping periodically or in response to a triggering event. For example, the activation of a new controller or the release of a new firmware version may trigger the fleet manager to update the controller mapping.

[0062] The device data may include information that may be used to manage and / or update firmware for devices in a building. In some embodiments, the device data may include information about the building, such as address, year of construction, system overview (e.g., total HVAC capacity), builder, subcontractor, certifications (e.g., green energy certification), etc. In various embodiments, the device data may include information about controllers in a building, such as model data, version data, firmware data, location (e.g., IP address), connected equipment data (e.g., sensors, HVAC compressors, subcontrollers, etc.), capability data, connectivity (e.g., wired, wireless, via building controller, via LAN, via Wi-Fi, etc.), memory space, processing circuit data, operating parameters, etc. In many embodiments, the device data may include information about equipment in a building, such as model data, version data, firmware data, connected controller data, capability data, operating parameters, capacity, component data (e.g., motor size, fan size, etc.), etc. As discussed in more detail below, a controller mapping may include links to one or more controller groupings.

[0063] The client data may include various rules, constraints, and preferences for a customer, manufacturer, or distributor. For example, a user of a fleet manager may configure various rules, constraints, and preferences for a controller and store them in the corresponding client data. The fleet manager may then comply with the rules, constraints, and preferences for the controller when scheduling or executing updates to the controller. In some embodiments, the rules, constraints, and preferences in the client data may apply to all associated controllers or a subset of associated controllers. In some embodiments, the client data may include a schedule for business. In some such embodiments, the client data may include a rule to perform firmware updates only outside of business hours.

[0064] At least one controller in each building can be connected to an external network (e.g., external network 504), which can include the Internet, a cellular network, etc. In one embodiment, the controllers in the facility can be accessed using an access point outside the facility or at a location that does not require special access, such as via the local area network of the facility. In some embodiments, multiple controllers in the building can have multiple connections to the external network 504. For example, the equipment controller 512a can be directly connected to the external network 504 and indirectly connected to the external network 504 via the building controller 510. In various embodiments, the internal network can connect one or more controllers in the building. For example, a local area network or bus can connect each equipment controller 518 to the building controller 516. The connections between the various controllers and / or networks can be wired or wireless. For example, the equipment controller 512a can be connected to the building controller 510 and the external network 504 via a Wi-Fi network.

[0065] Fig. 6A and 6B An exemplary controller grouping according to some embodiments is shown. In general, embodiments described herein may utilize various controller groupings to organize controllers according to various parameters. Groupings may be automatically or manually created / updated, such as by one or more of a fleet manager, a customer, a dealer, a distributor, a manufacturer, a controller, etc. The illustrated embodiment includes controller groupings 602a, 602b, 602c, 602d, 602e, 602f (collectively, controller groupings 602). As will be discussed in more detail below, controller groupings 602 include various groupings of controllers in controller mapping 502. It should be understood that Fig. 6A and Figure 6B One or more components of may be the same or similar to one or more other components of the present disclosure. For example, Fig. 6A and Figure 6B Each controller group in can be included in controller group 604. In addition, Fig. 6A and Figure 6BThe aspects discussed in the various components of the embodiments may be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. The embodiments are not limited in this context.

[0066] Controller groupings may be utilized for a variety of purposes. For example, a fleet manager may automatically create controller groupings for controllers that require firmware updates, such as by creating a grouping for controllers with older versions of firmware. In another example, a building controller may create controller groupings for equipment controllers connected to the building controller. In yet another example, a client may create a first controller grouping of controllers subject to a first set of client-defined constraints and a second controller grouping of controllers subject to a second set of client-defined constraints. Thus, controller groupings may be created and / or utilized by a fleet manager and / or users of the fleet manager (e.g., dealers, distributors, manufacturers, etc.) to create and identify associations between different controllers. Additionally, each controller may belong to one or more controller groups or subgroups.

[0067] In various embodiments, controller grouping can be used to improve the efficiency of identifying controllers having one or more related parameters. For example, a controller grouping can include controllers associated with a particular client. In another example, a controller grouping can include controllers of a certain type. In yet another example, a controller grouping can include controllers that can be updated without approval. In yet another example, a controller grouping can include controllers grouped by type (e.g., residential / commercial or building / equipment) or connectivity (e.g., wireless / wired or direct / indirect). In one or more embodiments, client data and / or device data can indicate which groups the controllers belong to.

[0068] In some embodiments, a controller grouping may be associated with other controller groupings. In many embodiments, a controller grouping may have one or more subgroups. For example, a first controller grouping may include each controller associated with a client. In some such examples, multiple subgroups may include controllers in each building associated with a client. In various such examples, multiple subgroups may include controllers grouped by type (e.g., HVAC controllers, sensor controllers, manufacturing equipment controllers, motor controllers, etc.). In many such examples, a first subgrouping may include controllers that can be updated without approval, and a second subgrouping may include controllers that can only be updated with approval. In some embodiments, controller mappings, controller groupings, and / or subgroups may be linked to other controller mappings, controller groupings, and / or subgroups. For example, each controller grouping to which a controller belongs may be accessed via controller mapping 502, and / or each subgrouping of a controller grouping may be accessed via the controller grouping.

[0069] like Fig. 6A As shown, controller group 602a includes equipment controller 508, building controller 510, equipment controller 512a, equipment controller 512b, and equipment controller 514, and controller group 602b includes building controller 516, equipment controller 518, and equipment controller 520. In some embodiments, controller group 602a may include controllers associated with a first client, and controller group 602b may include controllers associated with a second client. In other embodiments, controller group 602a may include controllers located in a first geographic area, and controller group 602b may include controllers located in a second geographic area. In still other embodiments, controller group 602a may include controllers maintained by a first dealer / distributor, and controller group 602b may include controllers maintained by a second dealer. In some embodiments, controller groups may correspond to responsibility levels and / or locations, such as local, state, regional, and global. In one embodiment, different groups may be generated for each user of the fleet manager. For example, a group including all associated controllers may be generated for each manufacturer, dealer, and customer.

[0070] In many embodiments, controller groupings may include associations between controllers. For example, controller grouping 602a includes an association between building controller 510, equipment controller 512a, and equipment controller 512b, indicating that they are each located in building 506b. Additionally, controller grouping 602b includes an association between building controller 516 and equipment controller 518, indicating that they are each located in building 506d.

[0071] like Figure 6B As shown, controller group 602c includes building controller 510 and building controller 516; controller group 602d includes equipment controller 508 and equipment controller 514; controller group 602e includes equipment controller 512b, equipment controller 518a, equipment controller 518c; and controller group 602f includes equipment controller 512a, equipment controller 518b and equipment controller 520.

[0072] In some embodiments, controller grouping 602c may include building controllers from controller map 502. In additional or alternative embodiments, controller grouping 602c may include a specific type, age, facility type (e.g., commercial, residential, medical, industrial, manufacturing, etc.), or model of building controllers. In various embodiments, controller grouping 602d may include a subgroup of controller grouping 602a. For example, controller grouping 602d may include equipment controllers associated with a first client that are not connected to a building controller.

[0073] In many embodiments, the controller grouping 602e may include a specific type of equipment controller. For example, the equipment controllers in the controller grouping 602e may be connected to HVAC components. In another example, the equipment controllers in the controller grouping 602e may include a wireless connection to the external network 504. In yet another example, the equipment controllers in the controller grouping 602e may include a specific model of equipment controller.

[0074] In several embodiments, controller grouping 602f may include equipment controllers with specific parameters. For example, equipment controllers in controller grouping 602f may include a specific version of firmware (e.g., a version that requires a firmware update). In another example, equipment controllers in controller grouping 602f may need to back up their firmware to another device (e.g., another controller or server) before updating their firmware (e.g., because they do not have enough memory to store both the firmware update and the current firmware).

[0075] Figure 7 Various aspects of scheduling firmware updates according to some embodiments are shown. The illustrated embodiment includes a fleet manager 702, client data 704, and a client device 710, the client data 704 including contact information 706 and client-defined constraints 708. In various embodiments, the fleet manager 702 can participate in an interactive process for obtaining approval and / or scheduling firmware updates. It should be understood that Figure 5 One or more components of can be the same or similar to one or more other components disclosed herein. For example, controller map 502 can be the same or similar to controller map 442. In another example, building controller 516 can be the same or similar to controller 112a, and / or equipment controllers 518a, 518b, 518c can be the same or similar to sub-controller 120. Figure 5 The aspects discussed in the various components of can be implemented by one or more other components from one or more other embodiments without departing from the scope of the present disclosure. For example, customer data and / or device data can be stored separately from the controller map 502. In another example, a separate controller map can be maintained for each building, customer, dealer, distributor, and / or controller grouping. The embodiments are not limited in this context.

[0076] The fleet manager 702 may participate in a number of processes before performing a firmware update. In some embodiments, in response to determining that a controller requires a firmware update, the fleet manager 702 may access the client data 704 to determine whether any client-defined constraints 708 must be considered for performing the firmware update. For example, the client-defined constraints may require the fleet manager 702 to obtain approval to perform the firmware update. In an additional or alternative example, the client-defined constraints may require that the firmware update be performed when the building is closed or below a threshold occupancy. In some embodiments, the fleet manager 702 may access sensor data to determine whether one or more client-defined constraints 708 are satisfied. In various embodiments, the client-defined constraints 708 may refer to rules, etc. included in the client data 704, and the client-defined conditions may refer to rules, etc. received in response to one or more approval / scheduling requests 712. In various such embodiments, the client-defined constraints 708 may apply to each firmware update for the associated controller performed by the fleet manager 702, while the client-defined conditions may only apply to the specific firmware update(s) associated with the approval / scheduling request(s) 712.

[0077] In some embodiments, in response to determining that client approval is required based on the client-defined constraints 708, the fleet manager 702 can retrieve contact information 706 from the client data 704. One or more approval / scheduling requests 712 can be sent to the client device 710 using the contact information 706 to obtain one or more approval / user-defined conditions 714. Although the approval / scheduling request(s) 712 and the approval(s) / user-defined conditions 714 are shown as single arrows between the fleet manager 702 and the client device 710, it should be understood that they can include multiple messages sent and / or received involving multiple purposes. In addition, one or more of the messages can take into account the client-defined constraints 708 and / or the user-defined conditions.

[0078] For example, the fleet manager 702 may determine a suggested time for performing a firmware update based on the client-defined constraints 708. The suggested time may be automatically sent to the client device 710 (e.g., as a text message, email, or phone call) along with the approval request. For example, the approval request may require authorization to perform a firmware update at midnight on Saturday. In some such examples, the client may respond by authorizing the firmware update at midnight on Saturday. Alternatively, the client may respond by suggesting another time / date for performing the firmware update (which may be referred to as a conditional authorization subject to user-defined conditions). If another time / date is applicable to performing the firmware update (e.g., based on consideration of other client-defined constraints 708 or other constraints), the fleet manager 702 may send another message confirming the other time / date for performing the firmware update. However, if another time / date is not applicable (e.g., due to scheduled maintenance of the fleet manager 702), the fleet manager 702 may respond as such and potentially suggest another time / date for the update. This process may proceed until an acceptable time / date for the update is confirmed.

[0079] Additionally or alternatively, the client device 710 may respond with one or more other client-defined conditions. For example, the response may require the fleet manager 702 to confirm that building occupancy is below a threshold level before performing a firmware update. In another example, the response may require the fleet manager 702 to confirm that one or more operating parameters of the controlled equipment are below a threshold before performing a firmware update. In some such examples, the fleet manager 702 may be required to confirm that a piece of manufacturing equipment is operating at less than half of its capacity before performing a firmware update. An approval or authorization that is subject to one or more conditions may be referred to as a conditional approval.

[0080] Figure 8 A logic flow 800 for scheduling and executing firmware updates (such as with a fleet manager) according to some embodiments is shown. The logic flow 800 may be performed by processing logic, which may include hardware (e.g., circuits, dedicated logic, programmable logic, embedded controllers, microcontrollers, processors, processing devices, central processing units (CPUs), systems on chips (SoCs), etc.), software (e.g., instructions running / executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, at least a portion of the logic flow 800 may be performed by one or more components of the server 104 or the cloud infrastructure 404. The embodiments are not limited in this context.

[0081] refer to Figure 8, logic flow 800 illustrates example functionality used by various embodiments. Although specific functional blocks ("blocks") are disclosed in logic flow 800, such blocks are examples. That is, embodiments are well suited to executing various other blocks or variations of blocks recited in logic flow 800. It should be understood that the blocks in logic flow 800 may be executed in an order different from that presented, and that not all blocks in logic flow 800 may be executed.

[0082] Logic flow 800 begins at block 802, where the scheduling function may begin. For example, the scheduling function may begin in response to the fleet manager 102 identifying that a new version is available. At decision block 804, it may be determined whether the controller requires an update. For example, the fleet manager 702 may evaluate the device data 532 in the controller map 502 to determine whether the equipment controller 508 requires a firmware update. If the controller does not require an update, logic flow 800 may proceed to block 806, where no action is taken with respect to the controller. In some embodiments, in response to determining that no action is to be taken, logic flow 800 may restart for a different controller.

[0083] However, if the controller requires updating, the logic flow 800 may proceed to block 806. At decision block 808, it may be determined whether the associated user-defined constraints allow updating. For example, the user-defined constraints for arming the controller 508 may be accessed in the client data 522 of the controller map 502. If the user-defined constraints do not allow updating, the logic flow 800 may proceed to block 806, and no action may be taken with respect to the controller. As previously described, in response to determining that no action is to be taken, the logic flow 800 may be restarted for a different controller. If the user-defined constraints allow updating, the logic flow 800 may proceed to block 810.

[0084] At block 810, approval may be requested from the client. For example, client contact information may be retrieved from client data 522, and a message requesting approval may be sent to the client device using the client contact information. Proceeding to decision block 812, it may be determined whether client authorization and / or user-defined conditions are received. If client authorization and / or conditions are not received, logic flow 800 may proceed to block 802, and the scheduling function may be restarted. In some embodiments, if no response is received within a threshold amount of time, logic flow 800 may return to block 802 from decision block 812. However, if client authorization and / or conditions are received, logic flow 800 may proceed to block 814, which will be discussed below. In some embodiments, block 810 and decision block 812 may include an interactive process between a fleet manager and a client device. For example, a series of communications may be utilized to obtain approval and schedule a firmware update. In various embodiments, one or more client-defined conditions may be received as part of the process. For example, a time window or operating parameter threshold for one or more controllers or connected equipment may be received as part of the interactive process.

[0085] Referring back to block 814, in response to receiving the client authorization and / or conditions, the logic flow 800 can configure and initiate a firmware update. Configuring and initiating the firmware update can be subject to any conditions received as part of the interactive process (referred to as client-defined conditions) and any conditions identified in the client data (referred to as client-defined constraints). Continuing to decision block 816, it can be determined whether the update was successful. If the update was not successful, the logic flow 800 can proceed to decision block 818. In some embodiments, if a confirmation that the update was successful is not received within a threshold amount of time, it can be determined that the update was not successful.

[0086] At decision block 818, it may be determined whether there is another update opportunity available. For example, if the client-defined condition (e.g., time window) can no longer be met, it may be determined that there is no another update opportunity available. If there is no another update opportunity available, the logic flow 800 may return to block 810. However, if there is another update opportunity available, the logic flow 800 may return to block 814. Referring back to decision block 816, if the update is successful, the logic flow 800 may proceed to block 820. At block 820, a report on the update may be prepared and sent or stored in one or more locations. For example, the report may be sent to a client device, to a workstation, to a cluster access computer, and / or stored in client data. In some embodiments, a notification of the report may be sent to one or more client devices (e.g., client device 438b and / or client device 438c), one or more workstations (e.g., workstation 412), and / or one or more cluster access computers (e.g., cluster access computer 402a and / or cluster access computer 402b). In some such embodiments, the notification may include a link for viewing the report. In various embodiments, the report may indicate what was updated and the parameters of the update, such as operating parameters before and / or after the update.

[0087] Fig. 9 A control circuit 900 according to some example embodiments of the present disclosure is shown. In some examples, the control circuit includes one or more of the controllers 112, one or more of the sub-controllers 120, the system controller 206, the indoor controller 224, the outdoor controller 226, one or more of the equipment controllers 414, one or more of the equipment controllers 414, 418, 416, and the like, some or all. In some examples, the control circuit 900 may include one or more of each of a plurality of components, such as, for example, a processor 902 connected to a memory 904. The processor 902 is generally any piece of computer hardware capable of processing information, such as, for example, data, a computer program, and / or other suitable electronic information. The processor includes one or more electronic circuits, some of which may be packaged as an integrated circuit or a plurality of interconnected integrated circuits (integrated circuits are sometimes more commonly referred to as "chips"). Depending on the particular embodiment, the processor 902 may be a plurality of processors, a multi-core processor, or some other type of processor.

[0088] The processor 902 may be configured to execute a computer program, such as a computer readable program code 906, which may be stored in an onboard processor or otherwise stored in a memory 904. In some examples, the processor may be embodied as or otherwise include one or more ASICs, FPGAs, etc. Thus, while the processor may be capable of executing a computer program to perform one or more functions, the processor of various examples may be capable of performing one or more functions without the assistance of a computer program.

[0089] Memory 904 is generally any computer hardware capable of temporarily and / or permanently storing information such as, for example, data, computer readable program code 906 or other computer programs, and / or other suitable information. Memory may include: volatile memory (such as random access memory (RAM)) and / or non-volatile memory (such as a hard drive, flash memory, etc.). In various examples, memory may be referred to as a computer-readable storage medium, which is a non-transitory device capable of storing information. Then, in some examples, the computer-readable storage medium is non-transitory and has a computer-readable program code stored therein, which, in response to being executed by processor 902, causes fleet manager 102 or fleet manager 440 to perform various operations as described herein, some of which operations may in turn cause HVAC system 200 to perform various operations.

[0090] In addition to the memory 904, the processor 902 may also be connected to one or more peripheral devices (such as a network adapter 908, one or more input / output (I / O) devices 910, etc.). The network adapter 908 is a hardware component configured to connect the control circuit 900 to a computer network so that the control circuit can transmit and / or receive information via the computer network. The I / O 910 may include one or more input devices capable of receiving data or instructions for the control circuit system, and / or one or more output devices capable of providing output from the control circuit system. Examples of suitable input devices include keyboards, auxiliary keyboards, etc., and examples of suitable output devices include display devices (such as, one or more light-emitting diodes (LEDs), LED displays, liquid crystal displays (LCDs), etc.).

[0091] As explained above and reiterated below, the present disclosure includes, but is not limited to, the following example implementations.

[0092] Clause 1. A computer-implemented method for managing firmware updates for a group of controllers, the method comprising: identifying multiple controllers for firmware updates based on predefined controller groupings, wherein each of the multiple controllers includes an onboard memory having current firmware; determining a set of controllers located in a building, the controller set being determined based on a controller mapping, and the controller set being included in the multiple controllers for firmware updates; retrieving client data corresponding to the controller set; determining that approval is required to perform a firmware update on the controller set based on client-defined constraints in the client data; automatically requesting approval to perform a firmware update on the controller set based on contact information included in the client data; in response to requesting approval, receiving authorization to perform a firmware update on the controller set; based on the authorization, delivering the firmware update to a first controller in the controller set via a network; and based on the authorization, initiating execution of the firmware update on the first controller in the controller set via the network.

[0093] Clause 2. The computer-implemented method as described in the preceding clause further comprises: determining that a first controller in a controller set includes sufficient onboard memory to simultaneously store a firmware update and current firmware; and based on determining that the first controller includes sufficient onboard memory to simultaneously store a firmware update and current firmware, delivering the firmware update to the first controller via a network for storage in the onboard memory together with the current firmware.

[0094] Clause 3. A computer-implemented method as described in any of the preceding clauses, further comprising: determining that a first controller in a controller set includes onboard memory insufficient to simultaneously store a firmware update and current firmware; based on determining that the first controller in the controller set includes onboard memory insufficient to simultaneously store a firmware update and current firmware, receiving the current firmware of the first controller via a network; storing the current firmware of the first controller in cloud storage; and in response to storing the current firmware of the first controller in cloud storage, delivering the firmware update to the first controller via the network for use in replacing the current firmware stored in the onboard memory.

[0095] Clause 4. A computer-implemented method according to any preceding clause, wherein the network comprises a first network and a second network, and communicating the firmware update to the first controller comprises communicating the firmware update to a building controller via the first network, the building controller forwarding the firmware update to the first controller via the second network.

[0096] Clause 5. A computer-implemented method as described in any of the preceding clauses, further comprising: determining that a first controller in the set of controllers includes insufficient onboard memory to store both the firmware update and the current firmware; and instructing the building controller to back up the current firmware on the first controller before forwarding the firmware update to the first controller via the second network.

[0097] Clause 6. The computer-implemented method of any preceding clause, wherein the authorization is subject to at least one client-defined condition received along with the authorization.

[0098] Clause 7. The computer-implemented method of any preceding clause, wherein at least one client-defined condition received along with the authorization comprises a timing constraint for performing the firmware update.

[0099] Clause 8. A computer-implemented method according to any of the preceding clauses, wherein the client-defined constraints in the client data include a first client-defined constraint, and the method further includes initiating execution of a firmware update for a first controller in a set of controllers over a network based on a second client-defined constraint in the client data and sensor data associated with a building in which the first controller is located.

[0100] Clause 9. The computer-implemented method of any preceding clause, wherein the sensor data indicates an occupancy level in the building, and the second client-defined constraint comprises a threshold occupancy level for performing the firmware update.

[0101] Clause 10. A computer-implemented method according to any of the preceding clauses, wherein the sensor data indicates an operating parameter of a device controlled by the first controller, and the second client-defined constraints include thresholds for the operating parameters of the device, and wherein the operating parameters of the device include at least one of: current capacity, current resource consumption, current operations per minute, and current load.

[0102] Clause 11. The computer-implemented method of any preceding clause, further comprising communicating the firmware update to the first controller over the network for storage in the onboard memory with the current firmware based on determining that available bandwidth of the network for communicating with the first controller exceeds a threshold amount of bandwidth.

[0103] Clause 12. A computer-implemented method as described in any of the preceding clauses, further comprising: determining that a past execution of a firmware update on the first controller was successful; and in response to determining that a past firmware update on the first controller was successful, initiating execution of a firmware update on a second controller in the controller set over a network.

[0104] Clause 13. The computer-implemented method of any preceding clause, wherein the firmware update is performed on the second controller using a firmware update stored in an onboard memory of the first controller.

[0105] Clause 14. The computer-implemented method of any preceding clause, wherein the first controller controls operation of heating, ventilation, and air conditioning (HVAC) components of the building.

[0106] Item 15. A server computer system for managing a group of controllers, comprising: a memory; and a processor coupled to the memory, the processor being configured to: identify, by the server system, multiple controllers for firmware update based on predefined controller groupings, wherein each of the multiple controllers includes an onboard memory having current firmware; determine, by the server system, a set of controllers located in a building, the set of controllers being determined based on a controller mapping, and the set of controllers being included in multiple controllers for firmware update; retrieve, by the server system, client data corresponding to the set of controllers; determine, by the server system and based on client-defined constraints in the client data, that approval is required to perform a firmware update on the set of controllers; automatically request approval to perform a firmware update on the set of controllers based on contact information included in the client data; receive, by the server system, authorization to perform a firmware update on the set of controllers in response to requesting approval; deliver the firmware update to a first controller in the set of controllers via a network and by the server system based on the authorization; and initiate execution of the firmware update on the first controller in the set of controllers via a network and by the server system based on the authorization.

[0107] Clause 16. In a server computer system as described in the preceding clause, the processor coupled to the memory is further configured to: determine by the server system that a first controller in a controller set includes sufficient onboard memory to simultaneously store the firmware update and the current firmware; and transmit the firmware update to the first controller via a network and by the server system based on determining that the first controller includes sufficient onboard memory to simultaneously store the firmware update and the current firmware for storage in the onboard memory together with the current firmware.

[0108] Clause 17. In a server computer system as in any of the preceding clauses, the processor coupled to the memory is further configured to: determine, by the server system, that a past firmware update on the first controller was unsuccessful; and initiate recovery of the current firmware on the first controller via a network and by the server system in response to determining that a past firmware update on the first controller was unsuccessful.

[0109] Clause 18. The server computer system of any preceding clause, the processor coupled to the memory further configured to determine, by the server system, that execution of the firmware update on the first controller was unsuccessful in response to failure to receive an update confirmation from the first controller within a threshold amount of time.

[0110] Clause 19. The server computer system of any preceding clause, wherein the server system comprises a cloud-based computing system.

[0111] Item 20. A non-transitory computer-readable storage medium comprising instructions which, when executed by a processor, cause the processor to perform operations for managing a group of controllers, the operations comprising: identifying a plurality of controllers for firmware updating based on predefined controller groupings, wherein each of the plurality of controllers comprises an onboard memory having current firmware; determining a set of controllers located in a building, the set of controllers being determined based on a controller mapping, and the set of controllers being included in a plurality of controllers for firmware updating; retrieving client data corresponding to the set of controllers; determining, based on client-defined constraints in the client data, that approval is required to perform a firmware update on the set of controllers; automatically requesting approval to perform a firmware update on the set of controllers based on contact information included in the client data; receiving authorization to perform a firmware update on the set of controllers in response to requesting approval; based on the authorization, delivering the firmware update to a first controller in the set of controllers over a network; and based on the authorization, initiating execution of the firmware update on the first controller in the set of controllers over a network.

[0112] Although exemplary embodiments have been shown and described, modifications thereof may be made by those skilled in the art without departing from the scope or teachings herein. The embodiments described herein are intended to be exemplary only and not restrictive. Many variations and modifications of the systems, devices, and processes described herein are possible and are within the scope of the present disclosure. Therefore, the scope of protection is not limited to the embodiments described herein, but is limited to the following claims, the scope of which shall include all equivalents of the subject matter of the claims. Unless otherwise expressly stated, the steps in a method claim may be performed in any order. The recitation of identifiers such as (a), (b), (c) or (1), (2), (3) before the steps in a method claim is not intended to nor specifies a particular order of the steps, but is used to simplify subsequent references to those steps.

Claims

1. A computer-implemented method for managing firmware updates for a controller cluster, the method comprising: identifying a plurality of controllers for firmware update based on a predefined controller grouping, wherein the plurality of controllers each include an onboard memory having current firmware; determining a set of controllers located in a building, the set of controllers being determined based on a controller map and the set of controllers being included in the plurality of controllers for the firmware update; Retrieving client data corresponding to the set of controllers; determining, based on client-defined constraints in the client data, that approval is required to perform the firmware update on the set of controllers; automatically requesting approval to perform the firmware update on the set of controllers based on contact information included in the client data; receiving authorization to perform the firmware update on the set of controllers in response to requesting the approval; Based on the authorization, delivering the firmware update to a first controller in the set of controllers via a network; as well as Based on the authorization, execution of the firmware update on the first controller in the set of controllers is initiated over the network.

2. The computer-implemented method of claim 1 , further comprising: determining that the first controller of the set of controllers includes sufficient onboard memory to store both the firmware update and the current firmware; as well as Based on determining that the first controller includes sufficient onboard memory to store both the firmware update and the current firmware, the firmware update is communicated to the first controller over the network for storage in the onboard memory with the current firmware.

3. The computer-implemented method of claim 1 , further comprising: determining that the first controller of the set of controllers includes insufficient onboard memory to store both the firmware update and the current firmware; receiving, over the network, the current firmware of the first controller based on determining that the first controller of the set of controllers includes insufficient onboard memory to store both the firmware update and the current firmware; storing the current firmware of the first controller in cloud storage; as well as In response to storing the current firmware of the first controller in the cloud storage, the firmware update is communicated to the first controller over the network for storage in the onboard memory in place of the current firmware.

4. The computer-implemented method of claim 1, wherein: The network includes a first network and a second network, and communicating the firmware update to the first controller includes communicating the firmware update to a building controller via the first network, the building controller forwarding the firmware update to the first controller via the second network.

5. The computer network of claim 4, further comprising: determining that the first controller of the set of controllers includes insufficient onboard memory to store both the firmware update and the current firmware; as well as The building controller is instructed to back up the current firmware on the first controller before forwarding the firmware update to the first controller over the second network.

6. The computer-implemented method of claim 1, wherein: The authorization is subject to at least one client-defined condition received along with the authorization.

7. The computer-implemented method of claim 6, wherein: The at least one client-defined condition received along with the authorization includes a timing constraint for performing the firmware update.

8. The computer-implemented method of claim 1, wherein: The client-defined constraints in the client data include a first client-defined constraint, and the method further includes initiating execution of the firmware update of the first controller in the set of controllers over the network based on a second client-defined constraint in the client data and sensor data associated with the building in which the first controller is located.

9. The computer-implemented method of claim 8, wherein: The sensor data indicates an occupancy level in the building, and the second client-defined constraint includes a threshold occupancy level for performing the firmware update.

10. The computer-implemented method of claim 8, wherein: The sensor data indicates operating parameters of a device controlled by the first controller, and the second client-defined constraints include thresholds for the operating parameters of the device, and wherein the operating parameters of the device include at least one of: current capacity, current resource consumption, current operations per minute, and current load.

11. The computer-implemented method of claim 1 , further comprising communicating the firmware update to the first controller over a network for storage in the onboard memory with the current firmware based on determining that available bandwidth of the network for communicating with the first controller exceeds a threshold amount of bandwidth.

12. The computer-implemented method of claim 1, further comprising: determining that a past execution of the firmware update on the first controller was successful; as well as In response to determining that the firmware update on the first controller was successful in the past, initiating execution of the firmware update on a second controller in the set of controllers over the network.

13. The computer-implemented method of claim 12, wherein: The firmware update is performed on the second controller using the firmware update stored in the onboard memory of the first controller.

14. The computer-implemented method of claim 1, wherein: The first controller controls operation of heating, ventilation, and air conditioning (HVAC) components of the building.

15. A server computer system for managing a controller group, comprising: Memory; as well as a processor, the processor being coupled to the memory, the processor being configured to: identifying, by the server system, a plurality of controllers for firmware update based on predefined controller groupings, wherein each of the plurality of controllers includes an onboard memory having current firmware; determining, by the server system, a set of controllers located in a building, the set of controllers being determined based on a controller map and included in the plurality of controllers for the firmware update; Retrieving, by the server system, client data corresponding to the set of controllers; determining, by the server system and based on client-defined constraints in the client data, that approval is required to perform the firmware update on the set of controllers; automatically requesting, by the server system, approval to perform the firmware update on the set of controllers based on contact information included in the client data; receiving, by the server system in response to requesting the approval, authorization to perform the firmware update on the set of controllers; Delivering the firmware update to a first controller in the set of controllers via a network and by the server system based on the authorization; as well as Execution of the firmware update on the first controller in the set of controllers is initiated by the server system over the network based on the authorization.

16. The server computer system of claim 15, the processor coupled to the memory further configured to: determining, by the server system, that the first controller of the set of controllers includes sufficient onboard memory to store both the firmware update and the current firmware; and The firmware update is communicated to the first controller via the network by the server system for storage in the onboard memory with the current firmware based on a determination that the first controller includes sufficient onboard memory to store both the firmware update and the current firmware.

17. The server computer system of claim 15, the processor coupled to the memory further configured to: determining, by the server system, that a past execution of the firmware update on the first controller was unsuccessful; and Initiating, by a server system over a network, a recovery of the current firmware on the first controller in response to determining that a past update of the firmware on the first controller was unsuccessful.

18. The server computer system of claim 17, the processor coupled to the memory further configured to determine, by the server system, that execution of the firmware update on the first controller was unsuccessful in response to failure to receive an update confirmation from the first controller within a threshold amount of time.

19. The computer system of claim 15, wherein: The server system includes a cloud-based computing system.

20. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processor, cause the processor to perform operations for managing a group of controllers, the operations comprising: identifying a plurality of controllers for firmware update based on a predefined controller grouping, wherein the plurality of controllers each include an onboard memory having current firmware; determining a set of controllers located in a building, the set of controllers being determined based on a controller map and the set of controllers being included in the plurality of controllers for the firmware update; Retrieving client data corresponding to the set of controllers; determining, based on client-defined constraints in the client data, that approval is required to perform the firmware update on the set of controllers; automatically requesting approval to perform the firmware update on the set of controllers based on contact information included in the client data; receiving authorization to perform the firmware update on the set of controllers in response to requesting the approval; Based on the authorization, delivering the firmware update to a first controller in the set of controllers via a network; as well as Based on the authorization, execution of the firmware update on the first controller in the set of controllers is initiated over the network.