System and method for optimizing and automatically configuring edge processing devices
Through a system automated configuration of the connector templates and components of the building device, the problem of low configuration efficiency of edge processing devices in the prior art is solved, and the automation and optimization of the building management system is realized.
Patent Information
- Application Number
- CN202380078761.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-09-29
- Filing Date
- 2023-09-29
- Publication Date
- 2025-06-27
Smart Images

Figure CN120226332A_ABST
Abstract
Description
[0001] Cross - Reference to Related Applications
[0002] This application claims the benefit and priority of U.S. Provisional Application No. 63 / 411,540, filed on September 29, 2022, the content of which is incorporated herein by reference in its entirety for all purposes. Background Art
[0003] The present disclosure generally relates to a building management system (BMS) for a building and automatic configuration techniques that can be used to configure various computing systems or devices of a building.
[0004] The BMS can be operable to collect data from subsystems of the building and / or operate based on the collected data. In some embodiments, the BMS can utilize a gateway device. The gateway device can manage the collection of data points of the subsystems of the building. The gateway device can provide the collected data points of the subsystems to the BMS. In some embodiments, the BMS can operate based on the collected data and / or push new values of data points to the subsystems through the gateway. Summary of the Invention
[0005] At least one aspect of the present disclosure relates to a system for optimizing and automatically configuring an edge processing device. The system can receive a request to configure a target building device. The system can identify a connector template for the target building device based on the target building device. The connector template can include one or more parameters of a connector component configured to communicate the target building device with a cloud computing system. The system can generate the connector component for the target building device based on the one or more parameters. The system can deploy the connector component to the target building device.
[0006] In some embodiments, the system can generate the connector template in response to the request. In some embodiments, the system can present one or more graphical user interfaces that present one or more interactive elements corresponding to the one or more parameters. In some embodiments, the system can receive the one or more parameters from a user device via the one or more interactive elements. In some embodiments, the one or more parameters include one or more of a communication direction, one or more server fields, one or more sensor fields, and one or more default values.
[0007] In some embodiments, the connector component includes a Representational State Transfer (REST) Application Programming Interface (API). In some embodiments, the system may receive a request from a user device to access data of the target building device. In some embodiments, the system may use the connector component to retrieve the data from the target building device. In some embodiments, the system may store the connector template. In some embodiments, the system may receive a request to generate a second connector component for a second target building device. In some embodiments, the system may use the connector template to generate the second connector component for the second target building device.
[0008] In some embodiments, the system may receive a second request from a user device to update the target building device. In some embodiments, the system may send one or more of application data or an update image to the target building device to update the target building device according to the second request. In some embodiments, the system may identify a machine learning model to be deployed to the target building device. In some embodiments, the system may select a runtime of the machine learning model. In some embodiments, the system may generate an optimized component for the target building device based on the runtime and the machine learning model. In some embodiments, the system may additionally generate the optimized component based on a processing component of the target building device.
[0009] At least one other aspect of the present disclosure relates to a method for optimizing and automatically configuring an edge processing device. The method may be performed, for example, by one or more processors of a cloud computing system. The method includes receiving a request to configure a target building device. The method includes identifying, based on the target building device, a connector template for the target building device. The connector template may include one or more parameters of a connector component configured to enable communication between the target building device and the cloud computing system. The method includes generating, based on the one or more parameters, the connector component for the target building device. The method includes deploying the connector component to the target building device.
[0010] In some embodiments, the method includes generating the connector template in response to the request. In some embodiments, the method includes presenting one or more graphical user interfaces that present one or more interactive elements corresponding to the one or more parameters. In some embodiments, the method includes receiving, via the one or more interactive elements, the one or more parameters from a user device. In some embodiments, the one or more parameters include one or more of a communication direction, one or more server fields, one or more sensor fields, and one or more default values. In some embodiments, the connector component includes a REST API.
[0011] In some embodiments, the method includes receiving, from a user device, a request to access data of a target building device. In some embodiments, the method includes retrieving the data from the target building device using the connector component. In some embodiments, the method includes storing the connector template. In some embodiments, the method includes receiving a request to generate a second connector component for a second target building device. In some embodiments, the method includes generating, using the connector template, the second connector component for the second target building device. In some embodiments, the method includes receiving, from the user device, a second request to update the target building device. In some embodiments, the method includes sending to the target building device one or more of application data or an update image to update the target building device according to the second request.
[0012] Another aspect of the present disclosure relates to a non-transitory computer-readable memory having instructions embodied thereon that, when executed by one or more processors, cause the one or more processors to perform operations. The operations include receiving a request to configure a target building device. The operations include identifying, based on the target building device, a connector template for the target building device. The connector template may include one or more parameters of a connector component configured to enable the target building device to communicate with the cloud computing system. The operations include generating, based on the one or more parameters, the connector component for the target building device. The operations include deploying the connector component to the target building device. In some embodiments, the operations include generating the connector template in response to the request.
[0013] Another aspect of the present disclosure relates to a building system of a building that includes one or more storage devices. The one or more storage devices may include instructions that, when executed by one or more processors, cause the one or more processors to perform one or more operations. The one or more processors may store one or more gateway components on the one or more storage devices. The one or more gateway components may facilitate communication with a cloud platform and facilitate communication with physical building devices. The one or more processors may identify a computing system of the building that communicates with the physical building devices. The physical building devices may store one or more data samples. The one or more processors may deploy the one or more gateway components to the computing system in response to identifying that the computing system communicates with the physical building devices. The one or more gateway components may enable the computing system to communicate with the physical building devices to receive the one or more data samples. The one or more gateway components may enable the computing system to transmit the one or more data samples to the cloud platform.
[0014] In some embodiments, the one or more processors may identify one or more communication protocols of one or more physical building devices that collect the one or more data samples. In some embodiments, the one or more processors may deploy one or more integration components for the one or more communication protocols to the computing system to enable the computing system to communicate with the one or more physical building devices via the one or more communication protocols.
[0015] In some embodiments, the one or more processors may deploy an adapter service to the computing system, where the adapter service enables the computing system to communicate with a network engine and receive the one or more data samples from the network engine, and the network engine is configured to manage one or more building networks and receive the one or more data samples from one or more devices of the building via the one or more building networks.
[0016] In some embodiments, the one or more gateway components may detect a new physical building device connected to the computing system. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: in response to identifying the configuration of the new physical building device in the device library, implementing the configuration to facilitate communication with the new physical building device; or performing a discovery process to discover the configuration of the new physical building device and storing the configuration in the device library.
[0017] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the device library is distributed across multiple instances of one or more gateway components in multiple different buildings. In some embodiments, the one or more gateway components include building services configured to generate data based on the one or more data samples.
[0018] In some embodiments, the one or more processors may identify one or more requirements of the building service. The one or more requirements may indicate at least one of processing resources, storage resources, data availability, or the presence of another building service. In some embodiments, the one or more processors may determine that the computing system meets the one or more requirements. In some embodiments, the one or more processors may deploy the building service to the computing system in response to determining that the computing system meets the one or more requirements.
[0019] In some embodiments, the one or more processors may identify that the computing system no longer meets the one or more requirements of the building service. In some embodiments, the one or more processors may move the building service from the computing system to a second computing system that meets the one or more requirements of the building service. In some embodiments, the one or more gateway components cause the computing system to: receive one or more values of control points of the physical building device; and transmit the one or more values to the control points of the physical building device via the one or more gateway components.
[0020] At least one other aspect relates to a method implemented by a building system of a building that includes one or more storage devices. The method may be performed, for example, by one or more processors of the building system. The method may include storing one or more gateway components on the one or more storage devices. The one or more gateway components may be configured to facilitate communication with a cloud platform and facilitate communication with physical building devices. The method may include identifying a computing system of the building that communicates with the physical building device, the physical building device storing one or more data samples. The method may include deploying the one or more gateway components to the computing system in response to identifying that the computing system communicates with the physical building device. The one or more gateway components may cause the computing system to communicate with the physical building device to receive the one or more data samples. The one or more gateway components may cause the computing system to transmit the one or more data samples to the cloud platform.
[0021] In some embodiments, the method may include identifying one or more communication protocols of one or more physical building devices that collect the one or more data samples. In some embodiments, the method may include deploying one or more integration components for the one or more communication protocols to the computing system to enable the computing system to communicate with the one or more physical building devices via the one or more communication protocols.
[0022] In some embodiments, the method may include deploying an adapter service to the computing system. In some embodiments, the adapter service enables the computing system to communicate with a network engine and receive one or more data samples from the network engine. The network engine may be configured to manage one or more building networks and receive the one or more data samples from one or more devices of the building via the one or more building networks.
[0023] In some embodiments, the one or more gateway components may detect a new physical building device connected to the computing system. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: in response to identifying the configuration of the new physical building device in the device library, implementing the configuration to facilitate communication with the new physical building device; or performing a discovery process to discover the configuration of the new physical building device and storing the configuration in the device library.
[0024] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the device library is distributed across multiple instances of one or more gateway components in multiple different buildings. In some embodiments, the one or more gateway components include a building service configured to generate data based on the one or more data samples.
[0025] In some embodiments, the method may include identifying one or more requirements of the building service, the one or more requirements indicating at least one of processing resources, storage resources, data availability, or the presence of another building service. In some embodiments, the method may include determining, by the one or more processors, that the computing system meets the one or more requirements. In some embodiments, the method may include deploying the building service to the computing system in response to determining that the computing system meets the one or more requirements.
[0026] In some embodiments, the method may include identifying that the computing system no longer meets one or more requirements of the building service. In some embodiments, the method may include moving the building service from the computing system to a second computing system that meets the one or more requirements of the building service. In some embodiments, the one or more gateway components may cause the computing system to receive one or more values of control points of the physical building device. In some embodiments, the one or more gateway components may cause the computing system to transmit the one or more values to the control points of the physical building device via the one or more gateway components.
[0027] At least one other aspect of the present disclosure relates to another building system of a building that includes one or more storage devices. The one or more storage devices may store instructions that, when executed by one or more processors, cause the one or more processors to perform one or more operations. The one or more processors may store one or more gateway components on the one or more storage devices. The one or more gateway components may be configured to facilitate communication between a cloud platform and physical building devices on which the one or more gateway components are deployed. The one or more gateway components may provide an interface with one or more existing components of the physical building device. The one or more processors may deploy the one or more gateway components to a building management system (BMS) server of the building. The BMS server may be configured to receive one or more data samples from one or more physical building devices of the building and perform one or more BMS applications based on the one or more data samples. The one or more gateway components may be connected to one or more existing components of the BMS server, receive the one or more data samples based on the connection of the one or more gateway components to the one or more existing components of the BMS server, and transmit the one or more data samples to the cloud platform.
[0028] In some embodiments, the one or more gateway components cause the BMS server to receive one or more values of control points of the physical building device; and transmit the one or more values to the control points of the physical building device via the one or more gateway components. In some embodiments, the one or more gateway components cause the BMS server to receive the one or more values of the control points of the physical building device from at least one cloud platform or a local control algorithm running locally on the BMS server via the one or more gateway components.
[0029] In some embodiments, the one or more processors may identify one or more communication protocols of the one or more physical building devices that collect the one or more data samples; and deploy one or more integration components for the one or more communication protocols to the BMS server to enable the BMS server to communicate with the one or more physical building devices via the one or more communication protocols.
[0030] In some embodiments, the one or more processors may deploy an adapter service to the BMS server. The adapter service may enable the BMS server to communicate with a network engine and receive one or more data samples from the network engine. The network engine may be configured to manage one or more building networks and receive the one or more data samples from one or more devices of the building via the one or more building networks.
[0031] In some embodiments, the one or more gateway components may detect a new physical building device connected to the BMS server. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: implement the configuration to facilitate communication with the new physical building device in response to identifying the configuration of the new physical building device in the device library; or perform a discovery process to discover the configuration of the new physical building device and store the configuration in the device library.
[0032] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the one or more gateway components include building services configured to generate data based on the one or more data samples. In some embodiments, the one or more processors may identify one or more requirements of a building service, the one or more requirements indicating at least one of processing resources, storage resources, data availability, or the presence of another building service; and deploy the building service to the BMS server in response to determining that the BMS server meets the one or more requirements of the building service.
[0033] In some embodiments, the one or more processors may identify that the BMS server no longer meets the one or more requirements of the building service; and remove the building service from the BMS server.
[0034] At least one other aspect of the present disclosure relates to yet another method. The method may be implemented by a building system of a building that includes one or more storage devices. The method may be performed, for example, by one or more processors of the building system. The method may include storing one or more gateway components on the one or more storage devices. The one or more gateway components may be configured to facilitate communication between a cloud platform and physical building devices on which the one or more gateway components are deployed, and the one or more gateway components provide a connection to one or more existing components of the physical building devices. The method may include deploying the one or more gateway components to a building management system (BMS) server of the building, the BMS server being configured to receive one or more data samples from one or more physical building devices of the building and perform one or more BMS applications based on the one or more data samples. The one or more gateway components may be connected to one or more existing components of the BMS server, receive the one or more data samples based on the connection of the one or more gateway components to the one or more existing components of the BMS server, and transmit the one or more data samples to the cloud platform.
[0035] In some embodiments, the one or more gateway components cause the BMS server to receive one or more values of control points of the physical building devices; and transmit the one or more values to the control points of the physical building devices via the one or more gateway components. In some embodiments, the one or more gateway components cause the BMS server to receive the one or more values of the control points of the physical building devices from at least one cloud platform or a local control algorithm running locally on the BMS server via the one or more gateway components.
[0036] In some embodiments, the method may include identifying, by the one or more processors, one or more communication protocols of the one or more physical building devices that collect the one or more data samples. In some embodiments, the method may include: deploying one or more integration components for the one or more communication protocols to the BMS server to enable the BMS server to communicate with the one or more physical building devices via the one or more communication protocols.
[0037] In some embodiments, the method may include deploying an adapter service to the BMS server. In some embodiments, the adapter service may cause the BMS server to communicate with a network engine and receive the one or more data samples from the network engine. In some embodiments, the network engine may be configured to manage one or more building networks and receive the one or more data samples from one or more devices of the building via the one or more building networks.
[0038] In some embodiments, the one or more gateway components may detect a new physical building device connected to the BMS server. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: in response to identifying the configuration of the new physical building device in the device library, implementing the configuration to facilitate communication with the new physical building device; or performing a discovery process to discover the configuration of the new physical building device and storing the configuration in the device library.
[0039] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the one or more gateway components include building services configured to generate data based on the one or more data samples. In some embodiments, the method may include identifying one or more requirements of the building service, the one or more requirements indicating at least one of processing resources, storage resources, data availability, or the presence of another building service. In some embodiments, the method may include deploying the building service to the BMS server in response to determining that the BMS server meets the one or more requirements of the building service.
[0040] In some embodiments, the method may include identifying that the BMS server no longer meets the one or more requirements of the building service. In some embodiments, the method may include removing the building service from the BMS server by the one or more processors.
[0041] At least one other aspect of the present disclosure relates to another building system of a building that includes one or more storage devices. The one or more storage devices may include instructions that, when executed by one or more processors, cause the one or more processors to perform one or more operations. The one or more processors may store one or more gateway components on the one or more storage devices. The one or more gateway components may be configured to facilitate communication between a cloud platform and building devices on which the one or more gateway components are deployed. The one or more gateway components may provide a connection to one or more existing components of the building devices. The one or more processors deploy the one or more gateway components to a building network engine. The building network engine may implement one or more local communication networks for one or more building devices of a building and receive one or more data samples from the one or more building devices. The one or more gateway components are connected to the one or more existing components of the building network engine, receive the one or more data samples based on the connection of the one or more gateway components to the one or more existing components of the building network engine, and transmit the one or more data samples to the cloud platform.
[0042] In some embodiments, the one or more gateway components may receive one or more values of control points of the building devices. In some embodiments, the one or more gateway components may transmit the one or more values to the control points of the building devices via the one or more gateway components. In some embodiments, the one or more gateway components may cause the building network engine to receive the one or more values of the control points of the building devices from at least one cloud platform.
[0043] In some embodiments, the one or more processors may deploy an adapter service to the building network engine. In some embodiments, the adapter service enables the building network engine to communicate with a cloud platform and provides one or more data samples to the cloud platform. In some embodiments, the adapter service enables the building network engine to communicate with a BMS server and provides the one or more data samples to the BMS server. In some embodiments, the adapter service enables the building network engine to communicate with a computing device of the building.
[0044] In some embodiments, the one or more gateway components may detect new physical building devices connected to the building network engine. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: in response to identifying the configuration of the new physical building device in the device library, implementing the configuration to facilitate communication with the new physical building device; or performing a discovery process to discover the configuration of the new physical building device and storing the configuration in the device library.
[0045] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the one or more gateway components include building services configured to generate data based on the one or more data samples.
[0046] At least one other aspect of the present disclosure relates to another method implemented by a building system of a building including one or more storage devices. The method may include storing one or more gateway components on the one or more storage devices. The one or more gateway components may facilitate communication between a cloud platform and building devices on which the one or more gateway components are deployed. The one or more gateway components may provide a connection to one or more existing components of the building devices. The method may include deploying the one or more gateway components to a building network engine. The building network engine may implement one or more local communication networks for one or more building devices of the building and receive one or more data samples from the one or more building devices. The one or more gateway components are connected to the one or more existing components of the building network engine, receive the one or more data samples based on the connection of the one or more gateway components to the one or more existing components of the building network engine, and transmit the one or more data samples to the cloud platform.
[0047] In some embodiments, the one or more gateway components may receive one or more values of control points of the building device. In some embodiments, the one or more gateway components may transmit the one or more values to the control points of the building device via the one or more gateway components. In some embodiments, the one or more gateway components may cause the building network engine to receive the one or more values of the control points of the building device from at least one cloud platform.
[0048] In some embodiments, the method may include deploying an adapter service to the building network engine. In some embodiments, the adapter service enables the building network engine to communicate with a cloud platform and provides one or more data samples to the cloud platform. In some embodiments, the adapter service enables the building network engine to communicate with a BMS server and provides the one or more data samples to the BMS server. In some embodiments, the adapter service enables the building network engine to communicate with a computing device of the building.
[0049] In some embodiments, the one or more gateway components may detect a new physical building device connected to the building network engine. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: in response to identifying the configuration of the new physical building device in the device library, implementing the configuration to facilitate communication with the new physical building device; or performing a discovery process to discover the configuration of the new physical building device and storing the configuration in the device library. In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the one or more gateway components include building services configured to generate data based on the one or more data samples.
[0050] At least one aspect of the present disclosure relates to a building system of a building including one or more storage devices. The one or more storage devices may store instructions that, when executed by one or more processors, cause the one or more processors to perform one or more operations. The one or more processors may store one or more gateway components on the one or more storage devices. The one or more gateway components may facilitate communication between a cloud platform and physical building devices. The one or more processors may deploy the one or more gateway components to a physical gateway. The physical gateway is configured to communicate with one or more building devices and receive one or more data samples from the one or more building devices. The one or more gateway components may receive the one or more data samples and transmit the one or more data samples to the cloud platform. The one or more processors may identify that a building device of the building running one or more services does not meet one or more requirements for running the one or more services. The one or more processors may cause the one or more services executed on the building device to be relocated to the physical gateway such that the one or more gateway components perform the one or more services.
[0051] In some embodiments, the one or more processors may identify one or more communication protocols of one or more building devices that collect the one or more data samples. In some embodiments, the one or more processors may deploy one or more integration components for the one or more communication protocols to the physical gateway to enable the physical gateway to communicate with the one or more building devices via the one or more communication protocols.
[0052] In some embodiments, the one or more processors may deploy an adapter service to the physical gateway. In some embodiments, the adapter service enables the physical gateway to communicate with a network engine and receive the one or more data samples from the network engine. In some embodiments, the network engine may manage one or more building networks and receive the one or more data samples from one or more second building devices of the building via the one or more building networks. In some embodiments, the adapter service enables the physical gateway to communicate with a cloud platform and transmit the one or more data samples to the cloud platform via the adapter service.
[0053] In some embodiments, the one or more gateway components may detect a new physical building device connected to the physical gateway. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: implement the configuration to facilitate communication with the new physical building device in response to identifying the configuration of the new physical building device in the device library; or perform a discovery process to discover the configuration of the new physical building device and store the configuration in the device library.
[0054] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the device library is distributed across multiple instances of one or more gateway components in multiple different buildings. In some embodiments, one or more gateway components include building services configured to generate data based on the one or more data samples.
[0055] In some embodiments, the one or more processors may identify one or more requirements of the building service. The one or more requirements may indicate at least one of processing resources, storage resources, data availability, or the presence of another building service. In some embodiments, the one or more processors may determine that the physical gateway meets the one or more requirements. In some embodiments, the one or more processors may deploy the building service to the physical gateway in response to determining that the physical gateway meets the one or more requirements.
[0056] At least one aspect of the present disclosure is a method implemented by a building system of a building that includes one or more storage devices. The method may include storing one or more gateway components on the one or more storage devices. The one or more gateway components may facilitate communication between a cloud platform and physical building devices. The method may include deploying the one or more gateway components to a physical gateway. The physical gateway is configured to communicate with one or more building devices and receive one or more data samples from the one or more building devices. The one or more gateway components may receive the one or more data samples and transmit the one or more data samples to the cloud platform. The method may include identifying that one or more building devices of the building running one or more services do not meet one or more requirements for running the one or more services. The method may include causing the one or more services executed on the building devices to be relocated to the physical gateway such that the one or more gateway components execute the one or more services.
[0057] In some embodiments, the method may include identifying one or more communication protocols of the one or more building devices that collect the one or more data samples. In some embodiments, the method may include deploying one or more integration components for the one or more communication protocols to the physical gateway to enable the physical gateway to communicate with the one or more building devices via the one or more communication protocols.
[0058] In some embodiments, the method may include deploying an adapter service to the physical gateway. In some embodiments, the adapter service enables the physical gateway to communicate with a network engine and receive the one or more data samples from the network engine. In some embodiments, the network engine may manage one or more building networks and receive the one or more data samples from one or more second building devices of the building via the one or more building networks. In some embodiments, the adapter service enables the physical gateway to communicate with the cloud platform and transmit the one or more data samples to the cloud platform via the adapter service.
[0059] In some embodiments, the one or more gateway components may detect a new physical building device connected to the physical gateway. In some embodiments, the one or more gateway components may search a device library for a configuration of the new physical building device. In some embodiments, the one or more gateway components may perform at least one of the following: in response to identifying the configuration of the new physical building device in the device library, implementing the configuration to facilitate communication with the new physical building device; or performing a discovery process to discover the configuration of the new physical building device and storing the configuration in the device library.
[0060] In some embodiments, the device library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the device library is distributed across multiple instances of one or more gateway components in multiple different buildings. In some embodiments, the one or more gateway components may include building services configured to generate data based on the one or more data samples. In some embodiments, the method may include identifying one or more requirements of the building services. In some embodiments, the one or more requirements indicate at least one of processing resources, storage resources, data availability, or the presence of another building service. In some embodiments, the method may include determining that the physical gateway meets the one or more requirements. In some embodiments, the method may include deploying the building service to the physical gateway in response to determining that the physical gateway meets the one or more requirements.
[0061] At least one aspect of the present disclosure relates to a building device of a building that includes one or more storage devices. The one or more storage devices may store instructions that, when executed by one or more processors, cause the one or more processors to perform one or more operations. The one or more processors may receive one or more gateway components and implement the one or more gateway components on the building device. Implementing the one or more gateway components may facilitate communication between the cloud platform and the building device. The one or more processors may identify physical devices connected to the building device based on the one or more gateway components. The one or more processors may search a configuration library for multiple different physical devices using the identities of the physical devices to identify a configuration for collecting data samples from the physical devices connected to the building device and retrieve the configuration. The one or more processors may implement a configuration for the one or more gateway components. The one or more processors may collect one or more data samples from the physical devices based on the one or more gateway components and the configuration.
[0062] In some embodiments, the one or more processors may receive an integration component for a communication protocol corresponding to the physical device. In some embodiments, the one or more processors may communicate with the physical device via the communication protocol. In some embodiments, the one or more processors may receive an adapter service configured to facilitate communication with one or more computing devices. In some embodiments, the adapter service is configured to facilitate communication with a network engine and receive the one or more data samples via the network engine. The adapter service is configured to facilitate communication with a BMS server and provide the one or more data samples to the BMS server.
[0063] In some embodiments, the one or more processors may detect a new physical device connected to the building device. In some embodiments, the one or more processors may search a library for a configuration of the new physical device. In some embodiments, the one or more processors may perform at least one of the following: in response to identifying the configuration of the new physical device in the library, implementing the configuration to facilitate communication with the new physical device; or performing a discovery process to discover the configuration of the new physical device and storing the configuration in the library. In some embodiments, the library is stored in at least one cloud platform or on one or more gateway components.
[0064] In some embodiments, the library is distributed across multiple instances of one or more gateway components in a plurality of different buildings. In some embodiments, the one or more processors may execute a building service configured to generate data based on the one or more data samples. In some embodiments, the one or more processors are configured to receive the building service from the cloud platform.
[0065] At least one aspect of the present disclosure relates to another method implemented by a building device of a building comprising one or more storage devices. The method may be executed, for example, by one or more processors of the building device. The method may include receiving one or more gateway components and implementing the one or more gateway components on the building device, the one or more gateway components being configured to facilitate communication between a cloud platform and the building device. The method may include identifying, by the one or more processors, a physical device connected to the building device based on the one or more gateway components. The method may include searching a configuration library for a plurality of different physical devices using the identity of the physical device to identify a configuration for collecting data samples from the physical device connected to the building device and retrieving the configuration. The method may include implementing a configuration for the one or more gateway components. The method may include collecting one or more data samples from the physical device based on the one or more gateway components and the configuration.
[0066] In some embodiments, the method may include receiving an integration component for a communication protocol corresponding to the physical device. In some embodiments, the method may include communicating with the physical device via the communication protocol. In some embodiments, the method may include receiving an adapter service configured to facilitate communication with one or more computing devices. In some embodiments, the adapter service is configured to facilitate communication with a network engine and receive the one or more data samples via the network engine. In some embodiments, the adapter service is configured to facilitate communication with a BMS server and provide the one or more data samples to the BMS server.
[0067] In some embodiments, the method may include detecting a new physical device connected to the building device. In some embodiments, the method may search a library for a configuration of the new physical device. In some embodiments, the method may perform at least one of the following: in response to identifying the configuration of the new physical device in the library, implementing the configuration to facilitate communication with the new physical device; or performing a discovery process to discover the configuration of the new physical device and storing the configuration in the library.
[0068] In some embodiments, the library is stored in at least one cloud platform or on one or more gateway components. In some embodiments, the library is distributed across multiple instances of one or more gateway components in multiple different buildings. In some embodiments, the method may include executing a building service configured to generate data based on the one or more data samples. In some embodiments, the method may include receiving the building service from the cloud platform.
[0069] At least one other aspect of the present disclosure relates to another building system for a building that includes one or more storage devices. The one or more storage devices may store instructions that, when executed by one or more processors, cause the one or more processors to perform one or more operations. The one or more processors may store one or more gateway components on the one or more storage devices, and the one or more gateway components perform one or more gateway functions. The one or more processors may deploy a first instance of the one or more gateway components to a first edge device and a second instance of the one or more gateway components to a second edge device. The first edge device may measure a first condition of the building, and the second edge device may control a first condition or a second condition of the building. The first instance of the one or more gateway components may cause the first edge device to transmit an event to the second edge device in response to a rule associated with the first condition being triggered. The second instance of the one or more gateway components may cause the second edge device to control the first condition or the second condition in response to receiving the event.
[0070] In some embodiments, the first instance of the one or more gateway components includes a cloud connector configured to facilitate communication between a cloud platform and the first edge device. In some embodiments, the first instance of the one or more gateway components includes an adapter configured to establish an interface connection between components of the first edge device and a building device agent. In some embodiments, the building system may include a building device agent that facilitates communication between the first edge device and the second edge device. In some embodiments, the one or more processors may deploy an endpoint to a local building server. In some embodiments, the one or more processors may cause the first instance of the one or more gateway components to transmit the first condition to the local building server based on the endpoint deployed to the local building server.
[0071] In some embodiments, the first edge device is a surveillance camera and the first condition is the presence of people in the building. In some embodiments, the one or more processors may identify the communication protocol of the first edge device that measures the first condition. In some embodiments, the one or more processors may deploy an integration component for the communication protocol to the first edge device to enable the first edge device to communicate with the second edge device via the communication protocol.
[0072] In some embodiments, a first instance of the one or more gateway components includes a building service configured to generate data based on the first condition. In some embodiments, the second edge device is a smart thermostat, and the second condition is the temperature setting of the building. In some embodiments, the first instance of the one or more gateway components causes the first edge device to transmit an event to the second edge device via a building device proxy.
[0073] At least one other aspect of the present disclosure relates to yet another method implemented by a building system of a building that includes one or more storage devices. The method may be performed, for example, by one or more processors of the building system. The method may include storing one or more gateway components on the one or more storage devices, the one or more gateway components performing one or more gateway functions. In some embodiments, a first instance of the one or more gateway components is deployed to a first edge device, and a second instance of the one or more gateway components is deployed to a second edge device. The first edge device may measure a first condition of the building, and the second edge device may control the first condition or a second condition of the building. The first instance of the one or more gateway components may cause the first edge device to transmit an event to the second edge device in response to a rule associated with the first condition being triggered. The second instance of the one or more gateway components may cause the second edge device to control the first condition or the second condition in response to receiving the event.
[0074] In some embodiments, the first instance of the one or more gateway components includes a cloud connector configured to facilitate communication between a cloud platform and the first edge device. In some embodiments, the first instance of the one or more gateway components includes an adapter configured to establish an interface connection between components of the first edge device and a building device proxy. In some embodiments, the first instance of the one or more gateway components causes the first edge device to communicate via a building device proxy that facilitates communication between the first edge device and the second edge device.
[0075] In some embodiments, the method may include deploying an endpoint to a local building server. In some embodiments, the method may include causing a first instance of the one or more gateway components to transmit a first condition to the local building server based on the endpoint deployed to the local building server. In some embodiments, the first edge device is a surveillance camera, and the first condition is the presence of people in the building. In some embodiments, the method may include identifying a communication protocol of the first edge device that measures the first condition. In some embodiments, an integration component for the communication protocol is deployed to the first edge device to enable the first edge device to communicate with the second edge device via the communication protocol.
[0076] In some embodiments, the first instance of the one or more gateway components includes a building service configured to generate data based on the first condition. In some embodiments, the second edge device is a smart thermostat, and the second condition is the temperature setting of the building. In some embodiments, the first instance of the one or more gateway components causes the first edge device to transmit an event to the second edge device via a building device proxy. BRIEF DESCRIPTION OF THE DRAWINGS
[0077] Various objects, aspects, features, and advantages of the present disclosure will become more apparent and better understood by reference to the detailed description taken in conjunction with the drawings, in which like reference numerals identify corresponding elements throughout. In the drawings, like reference numerals generally denote identical, functionally similar, and / or structurally similar elements.
[0078] Figure 1 is a block diagram of a building data platform including an edge platform, a cloud platform, and a twin manager according to an embodiment.
[0079] Figure 2 is according to an embodiment of Figure 1 a graphical projection of a twin manager, including application programming interface (API) data, capability data, policy data, and services.
[0080] Figure 3 is according to an embodiment of Figure 1 another graphical projection of a twin manager, including application programming interface (API) data, capability data, policy data, and services.
[0081] Figure 4 is according to an embodiment of Figure 1 a graphical projection of a twin manager, including devices and capability data of the devices.
[0082] Figure 5 is according to an embodiment of Figure 1Block diagram of an edge platform, which is shown in more detail as including a connection manager, a device manager, and a device identity manager.
[0083] Figure 6A is according to an embodiment Figure 1 Another block diagram of an edge platform, which is shown in more detail as including a communication layer for facilitating communication between building subsystems and Figure 1 the cloud platform and the twin manager.
[0084] Figure 6B is according to an embodiment Figure 1 Another block diagram of an edge platform, which is shown as having building devices distributed across buildings.
[0085] Figure 7 is according to an embodiment Figure 1 Block diagram of components of an edge platform according to an embodiment, including connectors, a building standardization layer, services, and integration distributed across various computing devices in a building.
[0086] Figure 8 Block diagram of a local building management system (BMS) server according to an embodiment, the BMS server including Figure 1 connectors and adapter services of an edge platform, which operate to connect an engine to Figure 1 the cloud platform.
[0087] Figure 9 is according to an embodiment Figure 8 Block diagram of an engine according to an embodiment, the engine including connectors and adapter services for connecting the engine to Figure 8 the local BMS server and Figure 1 the cloud platform.
[0088] Figure 10 Block diagram of a gateway according to an embodiment, including an adapter service that connects an Figure 8 engine to Figure 1 the cloud platform.
[0089] Figure 11 is according to an embodiment Figure 1 Block diagram of a surveillance camera and an intelligent thermostat in an area of a building that uses an
[0090] Figure 12 edge platform to perform event-based control.
[0091] Figure 13 Flowchart of an example method for deploying gateway components on one or more computing systems in a building according to an embodiment.
[0092] Figure 14 is a flowchart of an example method for deploying a gateway component on a local BMS server according to an embodiment.
[0093] Figure 15 is a flowchart of an example method for deploying a gateway component on a network engine according to an embodiment.
[0094] Figure 16 is a flowchart of an example method for deploying a gateway component on a dedicated gateway according to an embodiment.
[0095] Figure 17 is a flowchart of an example method for implementing a gateway component on a building device according to an embodiment.
[0096] Figure 18 is a flowchart of an example method for deploying a gateway component to execute a building control algorithm according to an embodiment.
[0097] Figure 19 is a system diagram of a system that can be used to perform optimization and automatic configuration of an edge processing device according to an embodiment.
[0098] Figure 20 and 21 22 and 23 illustrate various user interfaces that can be used in one or more device management techniques described herein according to an embodiment.
[0099] Figure 24 and 25 26, 27, and 28 illustrate various user interfaces that can be used to define or customize one or more connectors based on the techniques described herein according to an embodiment.
[0100] Figure 29 and 30 31, 32, and 33 illustrate various user interfaces that can be used to perform connectivity detection and diagnosis according to an embodiment.
[0101] Figure 34 is a flowchart of an example method for a connector component for a target building device according to an embodiment. Specific Embodiments
[0102] Overview
[0103] Generally referring to the accompanying drawings, systems and methods for a building management system (BMS) having an edge system are shown in accordance with various exemplary embodiments. In some embodiments, the edge system can be a software service added to the network of the BMS, and the software service can run on one or more different nodes of the network. The software service can be composed of various components, such as integration components, connector components, building standardization components, software service components, endpoints, etc. The various components can be deployed on various nodes of the network to implement an edge platform that facilitates communication between a cloud or other off-site platform and local subsystems of a building. In some embodiments, the edge platform technology described herein can be implemented to support off-site platforms, such as servers, computing clusters, computing systems located in buildings other than the edge platform, or any other computing environment.
[0104] Nodes of the network can be servers, desktop computers, controllers, virtual machines, etc. In some embodiments, the edge system can be deployed on multiple nodes of the network or multiple devices of the BMS, with or without connection to a cloud or off-site system. For example, in some embodiments, the systems and methods of the present disclosure can be used to coordinate between multiple in-site devices to partially or fully perform the functions of the BMS without interacting with a cloud or off-site device (e.g., in a peer-to-peer manner between edge-based devices or in coordination with an in-site server / gateway).
[0105] In some embodiments, the various components of the edge platform can move around various nodes of the BMS network and around the cloud platform. The components can include software services, such as control applications, analytics applications, machine learning models, artificial intelligence systems, user interface applications, etc. The software services can have requirements, such as the requirement that another software service should be present or communicate with the software service, a specific level of processing resource availability, a specific level of storage availability, etc. In some embodiments, the services of the edge platform can move around the nodes of the network based on the available data, processing hardware, memory devices, etc. of the nodes. The various software services can be dynamically repositioned around the nodes of the network based on the requirements of each software service. In some embodiments, an orchestrator running in the cloud platform, an orchestrator distributed across the nodes of the network, and / or the software service itself can make determinations to dynamically reposition the software service around the nodes of the network and / or the cloud platform.
[0106] In some embodiments, the edge system may implement a plug-and-play capability for connecting devices in a building and connecting the devices to a cloud platform. In some embodiments, the components of the edge system may be automatically configured for connection of new devices. For example, when a new device is connected to the edge platform, a tagging and / or identification process may be performed. This tagging and identification may be performed in a first building. The result of the tagging and / or identification may be a configuration indicating how the new device or subsystem should be connected, such as a point map, a point list, a communication protocol, necessary integrations, etc. In some embodiments, the tagging and / or discovery may be performed in the cloud platform and / or a twin platform such as a digital twin-based platform. The resulting configuration may be distributed to each node of the edge system, for example, to building standardization components. In some embodiments, the configuration may be stored in a single system such as the cloud platform, and the building standardization components may retrieve the configuration from the cloud platform.
[0107] When another device of the same type is installed in the building or another building, the building standardization components may store an indication of the configuration and / or an indication to retrieve the configuration from the cloud platform. The building standardization components may facilitate plug-and-play by loading and / or implementing the configuration of the device without the need for a tagging and / or discovery process. This may allow the device to be installed and operated without any significant setup.
[0108] In some embodiments, the building standardization components of a node may discover a device connected to the node. In response to detecting a new device, the building standardization components may search a device library and / or registry stored in the standardization components (or on another system) to identify the configuration of the new device. If there is no new device configuration, the standardization components may send a broadcast to other nodes. For example, the broadcast may indicate a specific type of air handling unit (AHU) with specific points for a particular vendor. Other nodes may respond to the broadcast message with the configuration of the AHU. In some embodiments, the cloud platform may unify the configurations of devices at multiple building sites, and thus the configuration discovered at one building site may be used at another building site through the cloud platform. In some embodiments, the configurations of different devices may be stored in a digital twin. In some embodiments, the digital twin may be used to perform automatic configuration.
[0109] In some embodiments, the digital twin of the building may be analyzed to identify how to configure the new device when it is connected to the edge device. For example, the digital twin may indicate the various points, communication protocols, functions, etc. of the device type of the new device (e.g., another instance of the device type). Based on the indication of the digital twin, a specific configuration of the new device may be deployed to the edge device to facilitate communication of the new device.
[0110] Building data platform
[0111] Now refer to Figure 1, showing a building data platform 100 including an edge platform 102, a cloud platform 106, and a twin manager 108 according to an exemplary embodiment. The edge platform 102, the cloud platform 106, and the twin manager 108 may each be separate services deployed on the same or different computing systems. In some embodiments, the cloud platform 106 and the twin manager 108 are implemented in an off-site computing system, such as outside the building. The edge platform 102 may be implemented on-site, such as inside the building. However, any combination of on-site and off-site components of the building data platform 100 may be implemented.
[0112] The building data platform 100 includes applications 110. The applications 110 may be various applications for managing building subsystems 122. The applications 110 may be remote or on-site applications (or a mixture of both) running on various computing systems. The applications 110 may include an alert application 168 configured to manage alerts of the building subsystems 122. The applications 110 include an assurance application 170 that implements assurance services for the building subsystems 122. In some embodiments, the applications 110 include an energy application 172 configured to manage the energy usage of the building subsystems 122. The applications 110 include a security application 174 configured to manage the security system of the building.
[0113] In some embodiments, the applications 110 and / or the cloud platform 106 interact with a user device 176. In some embodiments, components of the applications 110 or the entire applications run on the user device 176. The user device 176 may be a laptop computer, a desktop computer, a smart phone, a tablet computer, and / or any other device having an input interface (e.g., a touch screen, a mouse, a keyboard, etc.) and an output interface (e.g., a speaker, a display, etc.).
[0114] The applications 110, the twin manager 108, the cloud platform 106, and the edge platform 102 may be implemented on one or more computing systems, such as on a processor and / or a memory device. For example, the edge platform 102 includes a processor 118 and a memory 120, the cloud platform 106 includes a processor 124 and a memory 126, the applications 110 include a processor 164 and a memory 166, and the twin manager 108 includes a processor 148 and a memory 150.
[0115] The processor can be a general-purpose or special-purpose processor, an application-specific integrated circuit (ASIC), one or more field-programmable gate arrays (FPGAs), a group of processing components, or other suitable processing components. The processor can be configured to execute computer code and / or instructions stored in the memory or received from other computer-readable media (such as CDROM, network storage devices, remote servers, etc.).
[0116] The memory can include one or more devices (such as memory units, memory devices, storage devices, etc.) for storing data and / or computer code for completing and / or facilitating the various processes described in this disclosure. The memory can include random access memory (RAM), read-only memory (ROM), hard drive storage devices, temporary storage devices, non-volatile memory, flash memory, optical memory, or any other suitable memory for storing software objects and / or computer instructions. The memory can include database components, object code components, script components, or any other type of information structure and the information structures described in this disclosure for supporting various activities. The memory can be communicatively connected to the processor and can include computer code for executing one or more processes described herein (such as by the processor).
[0117] The edge platform 102 can be configured to provide a connection to the building subsystem 122. The edge platform 102 can receive messages from the building subsystem 122 and / or deliver messages to the building subsystem 122. The edge platform 102 includes one or more gateways, such as gateways 112 - 116. The gateways 112 - 116 can act as gateways between the cloud platform 106 and the building subsystem 122. The gateways 112 - 116 can be the gateways described in U.S. Provisional Patent Application No. 62 / 951,897, filed on December 20, 2019, the entire content of which is incorporated herein by reference. In some embodiments, the application 110 can be deployed on the edge platform 102. In this regard, lower latency can be achieved when managing the building subsystem 122.
[0118] The edge platform 102 can be connected to the cloud platform 106 via the network 104. The network 104 can communicatively couple the devices and systems of the building data platform 100. In some embodiments, the network 104 is at least one and / or a combination of a Wi-Fi network, a wired Ethernet network, a ZigBee network, a Bluetooth network, and / or any other wireless network. The network 104 can be a local area network or a wide area network (such as the Internet, a building WAN, etc.) and can use various communication protocols (such as BACnet, IP, LON, etc.). The network 104 can include routers, modems, servers, cell phone towers, satellites, and / or network switches. The network 104 can be a combination of wired and wireless networks.
[0119] The cloud platform 106 can be configured to facilitate messaging and routing between the application 110, the twin manager 108, the edge platform 102, and / or any other systems. The cloud platform 106 can include a platform manager 128, a messaging manager 140, a command processor 136, and an enrichment manager 138. In some embodiments, the cloud platform 106 can facilitate messaging between building data platforms 100 via the network 104.
[0120] The messaging manager 140 can be configured to operate as a transport service that controls communication with the building subsystems 122 and / or any other systems, such as commands to devices (C2D), commands to connectors for external systems (C2C), commands from devices to the cloud (D2C), and / or notifications. The messaging manager 140 can receive different types of data from the application 110, the twin manager 108, and / or the edge platform 102. The messaging manager 140 can receive value change data 142, such as data indicating that the value of a point has changed. The messaging manager 140 can receive time series data 144, such as a time-related sequence of data entries each associated with a specific timestamp. Additionally, the messaging manager 140 can receive command data 146. All messages processed by the cloud platform 106 can be handled as events. For example, the data 142 - 146 can each be packaged as an event with a data value that occurred at a specific time (e.g., a temperature measurement taken at a specific time).
[0121] The cloud platform 106 includes a command processor 136. The command processor 136 can be configured to receive commands to perform actions from the application 110, the building subsystems 122, the user device 176, etc. The command processor 136 can manage the commands, determine whether the command - issuing system is authorized to execute a specific command, and transmit the command to the commanded system, such as the building subsystems 122 and / or the application 110. The commands can be commands to change the operating settings that control building environmental conditions, commands to run analytics, etc.
[0122] The cloud platform 106 includes a enrichment manager 138. The enrichment manager 138 can be configured to enrich events received by the messaging manager 140. The enrichment manager 138 can be configured to add context information to the events. The enrichment manager 138 can communicate with the twin manager 108 to retrieve context information. In some embodiments, the context information is an indication of information related to the event. For example, if the event is a time series temperature measurement of a thermostat, context information such as the location of the thermostat (e.g., what room), the device controlled by the thermostat (e.g., what VAV), etc. can be added to the event. In this regard, when a consuming application, such as one of the applications 110, receives an event, the consuming application can operate based on the data of the event, the temperature measurement, and also the context information of the event.
[0123] The enrichment manager 138 can address the following problem: when a device generates a large amount of information, the information may contain simple data without context. Examples can include data generated when a user scans a badge at a badge scanner in the building subsystem 122. This physical event can generate an output event containing information such as "DeviceBadgeScannerID", "BadgeID", and / or "date / time". However, if the system sends this data to consuming applications, such as consumer A and consumer B, each consumer may need to call the building data platform knowledge service to query the information through queries such as "what space, building, floor is the badge scanner in" or "what user is associated with the badge?".
[0124] By performing enrichment on the data feed, the system is able to perform inferences on the data. The result of the enrichment can be a transformation of the message "DeviceBadgeScannerId, BadgeId, date / time" to "area, building, floor, asset, DeviceId, BadgeId, username, EmployeeId, scan date / time". This can be a significant optimization because the system can reduce the number of calls by 1 / n, where n is the number of consumers of this data feed.
[0125] By using this enrichment, the system is also able to filter out unwanted events. If there are 100 buildings in the campus and each building receives 100,000 events per hour, but in fact only 1 building is in use, then only 1 / 10 of the events are enriched. By looking at which events are enriched and which events are not, the system can shape the traffic of these event forwards to reduce the cost of forwarding events that no consuming application wants or reads.
[0126] Examples of events received by the enrichment manager 138 can be:
[0127] {
[0128] “id”: “someguid”,
[0129] “eventType”: “Device_Heartbeat”,
[0130] “eventTime”: “2018-01-27T00:00:00+00:00”
[0131] “eventValue”: 1,
[0132] “deviceID”: “someguid”
[0133] }
[0134] An example of an enriched event generated by the enrichment manager 138 could be:
[0135] {
[0136] “id”: “someguid”,
[0137] “eventType”: “Device_Heartbeat”,
[0138] “eventTime”: “2018-01-27T00:00:00+00:00”
[0139] “eventValue”: 1,
[0140] “deviceID”: “someguid”,
[0141] “buildingName”: “Building-48”,
[0142] “buildingID”: “SomeGuid”,
[0143] “panelID”: “SomeGuid”,
[0144] “panelName”: “Building-48-Panel-13”,
[0145] “cityID”: 371,
[0146] “cityName”: “Milwaukee”,
[0147] “stateID”: 48,
[0148] “stateName”: “Wisconsin(WI)”,
[0149] “countryID”: 1,
[0150] “countryName”: “United States”
[0151] }
[0152] By receiving enriched events, the applications in Application 110 can populate and / or filter what events are associated with what regions. Additionally, the user interface generation application can generate a user interface containing context information based on the enriched events.
[0153] The cloud platform 106 includes a platform manager 128. The platform manager 128 can be configured to manage the users and / or subscriptions of the cloud platform 106. For example, what subscriptions buildings, users, and / or tenants use the cloud platform 106. The platform manager 128 includes a provisioning service 130 that is configured to provision the cloud platform 106, the edge platform 102, and the twin manager 108. The platform manager 128 includes a subscription service 132 that is configured to manage the subscriptions of buildings, users, and / or tenants, and a permissions service 134 that can track the permissions of buildings, users, and / or tenants.
[0154] The twin manager 108 can be configured to manage and maintain digital twins. A digital twin can be a digital representation of a physical environment such as a building. The twin manager 108 can include a change feed generator 152, an architecture and ontology 154, a projection manager 156, a policy manager 158, an entities, relationships, and events database 160, and a graphical projection database 162.
[0155] The graphical projection manager 156 can be configured to build graphical projections and store the graphical projections in the graphical projection database 162. Entities, relationships, and events can be stored in the database 160. The graphical projection manager 156 can retrieve entities, relationships, and / or events from the database 160 and build graphical projections based on the retrieved entities, relationships, and / or events. In some embodiments, the database 160 includes entity-relationship sets for multiple subscriptions.
[0156] In some embodiments, the graphics projection manager 156 generates a graphics projection for a particular user, application, subscription, and / or system. In this regard, in addition to the ontology specific to a particular user, application, and / or system, the graphics projection may be generated based on policies for the user, application, and / or system. In this regard, an entity may request a graphics projection, and the graphics projection manager 156 may be configured to generate a graphics projection for the entity based on entity-specific policies and ontology. The policy may indicate what entities, relationships, and / or events the entity has access to. The ontology may indicate the types of relationships between entities that the requesting entity expects to see, e.g., floors within a building, devices within a floor, etc. Another requesting entity may have an ontology to view the devices within the building and the applications for the devices within the graph.
[0157] The graphics projection generated by the graphics projection manager 156 and stored in the graphics projection database 162 may be a knowledge graph and an integration point. For example, the graphics projection may represent a floor plan and system associated with each floor. Additionally, the graphics projection may contain events, such as telemetry data for the building subsystem 122. The graphics projection may represent application services as nodes and API calls between the services as edges in the graph. The graphics projection may show the capabilities of spaces, users, and / or devices. The graphics projection may contain indications of building subsystems 122, such as thermostats, cameras, VAVs, etc. The graphics projection database 162 may store the graphics projection that follows the current state of the building.
[0158] The graphics projection of the graphics projection database 162 may be a digital twin of the building. A digital twin may be a digital copy of a physical entity that enables in-depth analysis of the data of the physical entity and provides the possibility for a monitoring system to reduce risks, manage problems, and utilize simulations to test future solutions. The digital twin may play an important role in helping technicians find the root cause of problems and solve them faster, supporting safety and security protocols, and supporting the building manager to utilize energy and other facility resources more effectively. The digital twin may be used to implement and unify security systems, employee experience, facility management, sustainability, etc.
[0159] In some embodiments, the enrichment manager 138 may use the graphics projection of the graphics projection database 162 to enrich events. In some embodiments, the enrichment manager 138 may identify nodes and relationships associated with and related to the device that generated the event. For example, the enrichment manager 138 may identify the thermostat that generated a temperature measurement event within the graph. The enrichment manager 138 may identify the relationship between the thermostat and the space (e.g., the area where the thermostat is located). The enrichment manager 138 may add an indication of the area to the event.
[0160] In addition, the command processor 136 can be configured to command the building subsystem 122 using a graphical projection. The command processor 136 can identify a policy for the commanding entity within the graphical projection to determine whether the commanding entity has the ability to issue commands. For example, before allowing a user to issue a command, the command processor 136 determines based on the graphical projection database 162 that the user has a policy that enables issuing commands.
[0161] In some embodiments, the policy can be a condition-based policy. For example, the building data platform 100 can apply one or more conditional rules to determine whether a particular system has the ability to perform an action. In some embodiments, the rule analysis is based on behavior-based biometrics. For example, behavior-based biometrics can indicate the normal behavior of the system and / or normal behavior rules. In some embodiments, when the building data platform 100 determines based on one or more conditional rules that the action requested by the system does not match the normal behavior, the building data platform 100 can deny the system the ability to perform the action and / or request approval from a higher-level system.
[0162] For example, the behavior rule can indicate that a user has the right to log in to the system with a specific IP address between 8:00 am and 5:00 pm. However, if the user logs in to the system at 7:00 pm, the building data platform 100 can contact the administrator to determine whether to provide the user with login privileges.
[0163] The change feed generator 152 can be configured to generate an event feed indicating changes to a digital twin (e.g., a graph). The change feed generator 152 can track changes to the entities, relationships, and / or events of the graph. For example, the change feed generator 152 can detect the addition, deletion, and / or modification of nodes or edges of the graph, such as changes to the entities, relationships, and / or events within the change database 160. In response to detecting a change to the graph, the change feed generator 152 can generate an event summarizing the change. The event can indicate what nodes and / or edges have changed and how the nodes and edges have changed. The event can be published by the change feed generator 152 to a topic.
[0164] The change feed generator 152 can implement a change feed for the knowledge graph. The building data platform 100 can implement a subscription to knowledge graph changes. When the change feed generator 152 publishes an event in the change feed, a subscribing system or application can receive the change feed event. By generating a record of all changes that have occurred, the system can categorize the data in different ways and then replay the data in any order the system desires. This can include running the changes sequentially one by one and / or by jumping from one major change to the next. For example, to generate a graph at a specific time, all change feed events up to that specific time can be used to construct the graph.
[0165] In some embodiments, changes to each node in the feedable traceable graph and the relationships associated therewith are changed. If a user wishes to subscribe to these changes and the user has the appropriate permissions, the user can simply submit a network API call to obtain sequential notifications of each change that occurs in the graph. The user and / or system can replay the changes one by one at any given time slice to re-establish the graph. Although the messages are "lean" and only contain change notifications and reference "id / seq id", the change feed can maintain a copy of each state of each node and / or relationship so that the user and / or system can retrieve those past states of each node at any time. In addition, consumers of the change feed can also create dynamic "views", thereby allowing different "snapshots" of the appearance of the graph to be obtained in a timely manner from a specific context. Although the twin manager 108 can contain the historical and current states of the graph based on the architecture evaluation, the consumer can retain a copy of the data, thereby creating a dynamic view using the change feed.
[0166] The architecture and ontology 154 can define the message architecture and the graph ontology of the twin manager 108. The message architecture can define what format the messages received by the messaging manager 140 should have, such as what parameters, what format, etc. The ontology can define the graph projection, for example, the ontology that the user wishes to view. For example, various systems, applications, and / or users can be associated with the graph ontology. Thus, when the graph projection manager 156 generates a graph projection for a user, system, or subscription, the graph projection manager 156 can generate the graph projection according to the user-specific ontology. For example, the ontology can define what types of entities are related in what order in the graph. For example, for the subscribed ontology of "Consumer A", the graph projection manager 156 can create the relationships of the graph projection based on the following rules:
[0167] Region ←→ Building ←→ Floor ←→ Space ←→ Asset
[0168] For the subscribed ontology of "Consumer B", the graph projection manager 156 can create relationships based on the following rules:
[0169] Building ←→ Floor ←→ Asset
[0170] The Policy Manager 158 can be configured to respond to requests from other applications and / or policy systems. The Policy Manager 158 can query the graphical projection to determine what permissions different applications, users, and / or devices have. The graphical projection can indicate the various permissions that different types of entities have, and the Policy Manager 158 can search the graphical projection to identify the permissions of a specific entity. The Policy Manager 158 can facilitate fine-grained access control using user permissions. The Policy Manager 158 can apply permissions across the graph, for example, if "a user can view all data associated with Floor 1", then the user can view all subsystem data for that floor, such as surveillance cameras, HVAC devices, fire detection and response devices, etc.
[0171] The Twin Manager 108 includes a Query Manager 165 and a Twin Function Manager 167. The Query Manager 164 can be configured to process queries received from requesting systems (e.g., the User Device 176, the Application 110, and / or any other system). The Query Manager 165 can receive a query that includes query parameters and context. The Query Manager 165 can use the query parameters to query the Graphical Projection Database 162 to retrieve results. Then, the Query Manager 165 can cause an event processor (e.g., a twin function) to operate based on the results and the context. In some embodiments, the Query Manager 165 can select a twin function based on the context and / or perform an operation based on the context.
[0172] The Twin Function Manager 167 can be configured to manage the execution of twin functions. The Twin Function Manager 167 can receive an indication of a context query that identifies a specific data element and / or pattern in the Graphical Projection Database 162. In response to the occurrence of a specific data element and / or pattern in the Graphical Projection Database 162 (e.g., based on a new data event added to the Graphical Projection Database 162 and / or a change to a node or edge in the Graphical Projection Database 162), the Twin Function Manager 167 can cause a specific twin function to execute. The twin function can execute based on events, context, and / or rules. An event can be the data for which the twin function executes. Context can be information that provides a contextual description of the data, e.g., which device is associated with the event, which control points should be updated based on the event, etc. The Twin Function Manager 167 can be configured to perform Figures 11 - 15 the operations.
[0173] Now refer to Figure 2, showing a graphical projection 200 of the twin manager 108 according to an exemplary embodiment, including application programming interface (API) data, capability data, policy data, and services. The graphical projection 200 includes nodes 202-240 and edges 250-272. The nodes 202-240 and edges 250-272 are defined according to the legend 201. The nodes 202-240 represent different types of entities, devices, locations, points, individuals, policies, and software services (e.g., API services). The edges 250-272 represent the relationships between the nodes 202-240, such as dependency calls, API calls, inferred relationships, and architectural relationships (e.g., BRICK relationships).
[0174] The graphical projection 200 includes a device center 202, which can represent a software service that facilitates the transfer of data and commands between the cloud platform 106 and devices of building subsystems 122 such as a door actuator 214. The device center 202 is related to a connector 204, an external system 206, and a digital asset "door actuator" 208 through edges 250, 252, and 254.
[0175] The cloud platform 106 can be configured to identify the device center 202, the connector 204, and the external system 206 related to the door actuator 214 by searching the graphical projection 200 and identifying the edges 250-254 and 258. The graphical projection 200 includes a digital representation of the "door actuator" node 208. The digital asset "door actuator" 208 includes a "DeviceNameSpace" represented by the node 207 and related to the digital asset "door actuator" 208 through an "object property" edge 256.
[0176] The "door actuator" 214 has points and time series. The "door actuator" 214 is related to "Point A" 216 through a "has_a" edge 260. The "door actuator" 214 is related to "Point B" 218 through a "has_A" edge 258. In addition, the time series associated with points A and B are represented by nodes "TS" 220 and "TS" 222. The time series are related to points A and B through "has_a" edges 264 and 262. The time series "TS" 220 has specific samples, samples 210 and 212, each sample being related to "TS" 220 through edges 268 and 266 respectively. Each sample contains time and value. Each sample can be an event received from the door actuator, and the cloud platform 106 ingests the event into an entity, relationship, and event database 160, such as into the graphical projection 200.
[0177] The graphical projection 200 includes a building 234 representing a physical building. The building includes floors represented by floors 232, which are related to the building 234 through a "has_a" edge from the building 234 to the floor 232. The floor has a space between the floor 232 and the space 230 indicated by the edge "has_a" 270. The space has specific capabilities, for example, it is a room that can be reserved for meetings, conferences, private study time, etc. In addition, the reservation can be cancelled. The capabilities of the floor 232 are represented by a capability 228 related to the space 230 through an edge 280. The capability 228 is related to two different commands, which are the command "reserve a room" 224 and the command "cancel reservation" 226 related to the capability 228 through an edge 284 and an edge 282 respectively.
[0178] If the cloud platform 106 receives a command to reserve a space (space 230) represented by a node, the cloud platform 106 can search for the capability 228 related to the space 230 in the graphical projection 200 to determine whether the cloud platform 106 can reserve a room.
[0179] In some embodiments, the cloud platform 106 can receive a request to reserve a room in a specific building such as the building 234. The cloud platform 106 can search the graphical projection 200 to identify a space with a reservable capability, such as identifying the space 230 based on the capability 228 related to the space 230. The cloud platform 106 can reply to the request with an indication of the space and allow the requesting entity to reserve the space 230.
[0180] The graphical projection 200 includes a policy 236 for the floor 232. The policy 236 is a related set for the floor 232 based on the "to floor" edge 274 between the policy 236 and the floor 232. The policy 236 is related to different roles of the floor 232, reads an event 238 via an edge 276, and sends a command 240 via an edge 278. The policy 236 is a set for the entity 203 based on the "has" edge 251 between the entity 203 and the policy 236.
[0181] The twin manager 108 can identify a policy for a specific entity such as a user, software application, system, device, etc. based on the policy 236. For example, if the cloud platform 106 receives a command to reserve the space 230, the cloud platform 106 can communicate with the twin manager 108 to verify that the entity requesting to reserve the space 230 has a policy to reserve the space. The twin manager 108 can identify the entity requesting to reserve the space as the entity 203 by searching the graphical projection 200. In addition, the twin manager 108 can also identify the "has" edge 251 between the entity 203 and the policy 236 and the edge between the policy 236 and the command 240.
[0182] In addition, the twin manager 108 may identify that the entity 203 has the ability to command the space 230 based on the edge between the policy 236 and the floor 232 and the edge 270 between the floor 232 and the space 230. In response to identifying that the entity 203 has the ability to reserve the space 230, the twin manager 108 may provide an indication to the cloud platform 106.
[0183] In addition, if the entity requests an event to read the space 230, such as samples 210 and 212, the twin manager 108 may identify the edge "has" 251 between the entity 203 and the policy 236, the edge between the policy 236 and the read event 238, the edge between the policy 236 and the floor 232, the "has_a" edge 270 between the floor 232 and the space 230, the edge 268 between the space 230 and the door actuator 214, the edge 260 between the door actuator 214 and point A 216, the "has_a" edge 264 between point A 216 and TS220, and the edges 268 and 266 between TS220 and samples 210 and 212, respectively.
[0184] Now refer to Figure 3 , a graphical projection 300 of the twin manager 108 according to an exemplary embodiment is shown, including application programming interface (API) data, capability data, policy data, and services. The graphical projection 300 includes the nodes and edges described in the graphical projection 200 of Figure 2 . The graphical projection 300 includes a connection proxy related to the capability 228 through the edge 398a. The connection proxy 353 may be a node representing a software application configured to facilitate a connection with another software application. In some embodiments, the cloud platform 106 may identify the system implementing the capability 228 by identifying the edge 398a between the capability 228 and the connection proxy 353.
[0185] The connection proxy 353 is related to the space optimization proxy 356 via the edge 398b. The proxy represented by the node 356 may reserve and cancel the reservation of the space represented by the node 230 based on the edge 398b between the connection proxy 353 and the node 356 and the edge 398a between the capability 228 and the connection proxy 353.
[0186] The connection proxy 353 is related to the cluster 308 through the edge 398c. The cluster 308 is related to the connector B 302 via the edge 398e and is related to the connector A 306 via the edge 398d. The connector A 306 is related to the external subscription service 304. The connection proxy 310 is related to the cluster 308 via the edge 311, and the edge represents that the connection proxy represented by the node 310 can make a REST call to the cluster represented by the cluster 308.
[0187] The connection broker 310 is associated with the virtual conferencing platform 312 via edge 354. Node 312 represents an external system, and the external system represents a virtual conferencing platform. The connection broker represented by node 310 can represent a software component that facilitates the connection between cloud platform 106 and the virtual conferencing platform represented by node 312. When cloud platform 106 needs to communicate with the virtual conferencing platform represented by node 312, cloud platform 106 can identify edge 354 between connection broker 310 and virtual conferencing platform 312 and select the connection broker represented by node 310 to facilitate communication with the virtual conferencing platform represented by node 312.
[0188] The capabilities node 318 can be connected to the connection broker 310 via edge 360. The capabilities 318 can be capabilities of the virtual conferencing platform represented by node 312 and can be associated with node 312 via edge 360 to the connection broker 310 and edge 354 between the connection broker 310 and node 312. The capabilities 318 can define the capabilities of the virtual conferencing platform represented by node 312. Node 320 is associated with capabilities 318 via edge 362. The capabilities can be the invite bob command represented by node 316 and the email bob command represented by node 314. The capabilities 318 can be linked to node 320 representing user Bob. Cloud platform 106 can facilitate the email command to send an email to user Bob via the email service represented by node 304. Node 304 is associated with connection node 306 via edge 398f. Additionally, cloud platform 106 can facilitate sending an invitation for a virtual conference via the virtual conferencing platform represented by node 312, which is linked to node 318 via edge 358.
[0189] The node 320 for user Bob can be associated with policy 236 via a "has" edge 364. Additionally, node 320 can have a "check policy" edge 366 with the portal node 324. The device API node 328 has a check policy edge 370 to the policy node 236. The portal node 324 has an edge 368 to the policy node 236. The portal node 324 has an edge 323 to the node 326 representing the user input manager (UIM). The portal node 324 is associated with the UIM node 326 via edge 323. The UIM node 326 has an edge 323 to the device API node 328. Node 326 is associated with the door actuator node 214 via edge 372. The door actuator node 214 has an edge 374 to the device API node 328. The door actuator 214 has an edge 335 to the connector virtual object 334. The device hub 332 is associated with the connector virtual object via edge 380. The device API node 328 can be an API for the door actuator 214. The connector virtual object 334 is associated with the device API node 328 via edge 331.
[0190] The device API node 328 is associated with the transport connection proxy 330 via the edge 329. The transport connection proxy 330 is associated with the device hub 332 via the edge 378. The device hub represented by the node 332 can be a software component that conveys communications for data and commands for the door actuator 214. The cloud platform 106 can identify the location within the graphical projection 300 where data received from the door actuator is stored by the nodes and edges between the identification points 216 and 218 and the device hub node 332. Similarly, the cloud platform 308 can identify commands for the door actuator, for example, by identifying the edges between the device hub node 332 and the door open node 352 and the door lock node 350, which can be facilitated by the device hub represented by the node 332. The door actuator 114 has an "mapped asset" 280 edge between the node 214 and the capabilities node 348. The capabilities node 348 and the nodes 352 and 350 are linked by the edges 396 and 394.
[0191] The device hub 332 is linked to the cluster 336 via the edge 384. The cluster 336 is linked to the connector A 340 and the connector B 338 via the edges 386 and 389. The connector A 340 and the connector B 338 are linked to the external system 344 via the edges 388 and 390. The external system 344 is linked to the door actuator 342 via the edge 392.
[0192] Now refer to Figure 4 , a graphical projection 400 of the twin manager 108 according to an exemplary embodiment is shown, including devices and the capabilities data of the devices. The graphical projection 400 includes nodes 402 - 456 and edges 360 - 498f. The cloud platform 106 can search the graphical projection 400 to identify the capabilities of different devices.
[0193] The building node 404 represents a specific building that includes two floors. The floor 1 node 402 is linked to the building node 404 via the edge 460, while the floor 2 node 406 is linked to the building node 404 via the edge 462. Floor 2 includes a specific room represented by the edge 464 between the floor 2 node 406 and the room node 408. Various devices are included within the room. Lights represented by the light node 416, the bedside lamp node 414, the bedside lamp node 412, and the hallway light node 410 are associated with the room node 408 via the edges 466, 472, 470, and 468.
[0194] The lamp represented by lamp node 416 is associated with lamp connector 426 via edge 484. Lamp connector 426 is associated with multiple commands for the lamp represented by lamp node 416 via edges 484, 486, and 488. The commands can be brightness setpoint 424, turn-on command 425, and hue setpoint 428. Cloud platform 106 can receive a request to identify commands for the lamp represented by lamp 416, and can identify nodes 424 - 428 and provide an indication of the commands represented by nodes 424 - 428 to the requesting entity. The requesting entity can then send commands for the commands represented by nodes 424 - 428.
[0195] Bedside lamp node 414 is linked to bedside lamp connector 481 via edge 413. Connector 481 is associated with commands for the bedside lamp represented by bedside lamp node 414 via edges 492, 496, and 494. The command nodes are brightness setpoint node 432, turn-on command node 434, and color command 436. Hallway lamp 410 is associated with hallway lamp connector 446 via edge 498d. Hallway lamp connector 446 is linked to multiple commands for hallway lamp node 410 via edges 498g, 498f, and 498e. The commands are represented by turn-on command node 452, hue setpoint node 450, and bulb activity node 448.
[0196] Graphical projection 400 includes namespace node 422, which is associated with server A node 418 and server B node 420 via edges 474 and 476. Namespace node 422 is associated with bedside lamp connector 481, bedside lamp connector 444, and hallway lamp connector 446 via edges 482, 480, and 478. Bedside lamp connector 444 is associated with commands such as color command node 440, hue setpoint command 438, brightness setpoint command 456, and turn-on command 454 via edges 498c, 498b, 498a, and 498.
[0197] Edge platform
[0198] Now referring to Figure 5 , according to an exemplary embodiment, edge platform 102 is shown in more detail as including a connection manager 506, a device manager 508, and a device identity manager 510. In some embodiments, Figure 5 the edge platform 102 of can be a specific instance running on a computing device. For example, edge platform 102 can be instantiated one or more times on various computing devices in a building, cloud, etc. In some embodiments, each instance of edge platform 102 can include a connection manager 506, a device manager 508, and / or a device identity manager 510. These three components can serve as the core of edge platform 102.
[0199] The edge platform 102 may include a device hub 502, a connector 504, and / or an integration layer 512. The edge platform 102 may facilitate communication between devices 514-518 and the cloud platform 106 and / or the twin manager 108. The communication may be telemetry, commands, control data, etc. Examples of commands and control via a building data platform are described in U.S. Patent Application No. 17 / 134,661, filed on December 28, 2020, the entire content of which is incorporated herein by reference.
[0200] Devices 514-518 may be building devices that communicate with the edge platform 102 via various building protocols. For example, the protocol may be Open Platform Communications (OPC) Unified Architecture (UA), Modbus, BACnet, etc. In some embodiments, the integration layer 512 may integrate the various devices 514-518 via the respective communication protocols of each of the devices 514-518. In some embodiments, the integration layer 512 may dynamically include various integration components based on the needs of an instance of the edge platform 102. For example, if a BACnet device is connected to the edge platform 102, the edge platform 102 may run a BACnet integration component. The connector 504 may be a core service of the edge platform 102. In some embodiments, each instance of the edge platform 102 may include the connector 504. In some embodiments, the edge platform 102 is a lightweight version of a gateway.
[0201] In some embodiments, the connection manager 506 operates to connect the devices 514-518 to the cloud platform 106 and / or the twin manager 108. The connection manager 506 may allow the device running the connection manager 506 to connect to an ecosystem, the cloud platform 106, another device, and then another device that connects the device to the cloud, to a data center, a private on-premises cloud, etc. The connection manager 506 may facilitate northbound (to a higher-level network), southbound (to a lower-level network), and / or east / west (e.g., to a peer network) communication. In some embodiments, the connection manager 506 may implement communication via the MQ Telemetry Transport (MQTT) and / or the sparkplug protocol. The operational capabilities of the connection manager 506 may be extended via a software development kit (SDK) and / or an API. In some embodiments, the connection manager 506 may handle the offline network states of various networks.
[0202] In some embodiments, the device manager 508 may be configured to manage updates and / or upgrades for the device on which the device manager 508 runs, the software for the edge platform 102 itself, and / or the devices connected to the edge platform 102 (e.g., devices 514 - 518). Software updates may be new software components, such as services, new integrations, etc. The device manager 508 may be used to manage the software of the edge platform of a site, e.g., to perform updates or changes on a large scale across multiple devices. In some embodiments, the device manager 508 may perform the upgrade activities, where one or more specific device types and / or multiple software are updated all together. The depth of the update may follow any order, e.g., a single update to a device, an update to a device and lower-level devices communicating with the device, etc. In some embodiments, the software update is an incremental update suitable for low-bandwidth devices. For example, instead of replacing the entire software on the edge platform 102, only the parts of the software that need to be updated may be updated, thus reducing the amount of data that needs to be downloaded to the edge platform 102 to complete the update.
[0203] The device identity manager 510 may perform authorization and authentication for the edge platform 102. For example, when the edge platform 102 is connected to the cloud platform 106, the twin manager 108, and / or devices 514 - 518, the device identity manager 510 may identify the edge platform 102 to various platforms, managers, and / or devices. Regardless of the device on which the edge platform 102 is implemented, the device identity manager 510 may handle identification and uniquely identify the edge platform 102. The device identity manager 510 may handle attestation management, trust data, authentication, authorization, encryption keys, credentials, signatures, etc. In addition, the device identity manager 510 may implement various security features of the edge platform 102, such as antivirus software, firewalls, virtual private networks (VPNs) for authentication, etc. In addition, the device identity manager 510 may manage the debugging and / or provisioning of the edge platform 102.
[0204] Now referring to Figure 6A , according to an exemplary embodiment, another block diagram of the edge platform 102 is shown in more detail as including a communication layer for facilitating communication between the building subsystem 122 for Figure 1 and the cloud platform 106 and / or the twin manager. The building subsystem 122 may include devices of various different building subsystems, such as an HVAC subsystem, a fire response subsystem, an access control subsystem, a surveillance subsystem, etc. The devices may include a temperature sensor 614, a lighting system 616, an air flow sensor 618, an air side system 620, a chiller system 622, a surveillance system 624, a controller 626, a valve 628, etc.
[0205] The edge platform 102 may include a protocol integration layer 610 that facilitates communication with the building subsystem 122 via one or more protocols. In some embodiments, in response to detecting that a new device is connected to the edge platform 102 and the new device requires new protocol integration, the new protocol integration can be used to dynamically update the protocol integration layer 610. In some embodiments, the protocol integration layer 610 can be customized via the SDK 612.
[0206] In some embodiments, the edge platform 102 can handle MQTT communication via the MQTT layer 608 and the MQTT connector 606. In some embodiments, the MQTT layer 608 and / or the MQTT connector 606 handle MQTT-based communication and / or any other publish / subscribe-based communication, where devices can subscribe to and publish topics. In some embodiments, the MQTT connector 606 implements an MQTT broker that is configured to manage topics and facilitate publishing to topics, subscribing to topics, etc., to support communication between the building subsystems 122 and / or with the cloud platform 106. Figure 11 An example of devices in a building that communicate via a publish / subscribe method is shown.
[0207] The edge platform 102 includes a conversion, rate limiting, and routing layer 604. The layer 604 can handle converting data from one format to another, e.g., from a first format used by the building subsystem 122 to a format expected by the cloud platform 106 and vice versa. The layer 604 can further perform rate limiting to control the rate of sending data, sending requests, receiving requests, etc. In some embodiments, the layer 604 can further perform message routing. The cloud connector 602 can connect the edge platform 102, e.g., establish and / or communicate with one or more communication endpoints between the cloud platform 106 and the cloud connector 602.
[0208] Now refer to Figure 6B, System 629 according to an exemplary embodiment, wherein the edge platform 102 is shown as distributed across building devices. In some embodiments, the local server 656, the computing system 660, the device 662, and / or the device 664 may all be located within the building on-site. In some embodiments, the various devices 662 and / or 664 may be gateway boxes, such as gateways 112-116. The gateway box may be various gateways described in U.S. Patent Application No. 17 / 127,303, filed on December 18, 2020, the entire content of which is incorporated herein by reference. The computing system 660 may be a desktop computer, a server system, a microcomputer, a mini personal computer (PC), a laptop computer, dedicated computing resources in a building, etc. The local server 656 may be an on-site computer system that provides resources, data, services, or other programs to the computing devices of the building. In some embodiments, the system 629 includes the local server 656, which may include a server database 658 that stores data of the building.
[0209] In some embodiments, the device 662 and / or the device 664 perform gateway operations for connecting the devices of the building subsystem 122 to the cloud platform 106 and / or the twin manager 108. In some embodiments, the device 662 and / or 664 may communicate with the building subsystem 122, collect data from the building subsystem 122, and transmit the data to the cloud platform 106 and / or the twin manager 108. In some embodiments, the device 662 and / or the device 664 may push commands from the cloud platform 106 and / or the twin manager 108 to the building subsystem 122.
[0210] The systems and devices 656-664 may each run an instance of the edge platform 102. In some embodiments, the systems and devices 656-664 run the connector 504, which in some embodiments may include a connection manager 506, a device manager 508, and / or a device identity manager 510. In some embodiments, the device manager 508 controls what services each of the systems and devices 656-664 runs, e.g., what services from the service catalog 630 each of the systems and devices 656-664 runs.
[0211] The service catalog 630 may be stored in the cloud platform 106, stored within the local server (e.g., stored in the server database 658 of the local server 656), stored on the computing system 660, stored on the device 662, stored on the device 664, etc. In some embodiments, the various services of the service catalog 630 may run on the systems and devices 656-664. The services may also move around the systems and devices 656-664 based on available computing resources, processing speed, data availability, the location of other services required to generate data or perform services, etc.
[0212] The service catalog 630 may include an analysis service 632 that generates analysis data based on building data of the building subsystem 122, a workflow service 634 that implements a workflow, and / or an activity service 636 that executes an activity. The service catalog 630 includes an integration service 638 that integrates a device with a specific subsystem (e.g., BACnet integration, Modbus integration, etc.), a digital twin service 640 that runs a digital twin, and / or a database service 642 that implements a database for storing building data. The service catalog 630 may include a control service 644 for operating the building subsystem 122, a scheduling service 646 for scheduling the disposition of areas of the building (e.g., desks, meeting rooms, etc.), and / or a monitoring service 648 for monitoring a piece of equipment of the building subsystem 122. The service catalog 630 includes a command service 650 that implements an operation command for the building subsystem 122, an optimization service 652 that runs an optimization to identify operation parameters of the building subsystem 122, and / or an implementation service 654 that archives settings, configurations, etc. of the building subsystem 122, etc.
[0213] In some embodiments, various systems 656, 660, 662, and 664 may achieve technical advantages by implementing the services of the service catalog 630 locally and / or storing the service catalog 630 locally. Since the services can be implemented locally, i.e., within the building, lower latency can be achieved when making control decisions or deriving information because the communication time between the systems 656, 660, 662, and 664 and the cloud is not required to run the services. Additionally, since the systems 656, 660, 662, and 664 can operate independently of the cloud (e.g., implement their services independently) even if the network 104 fails or encounters an error that prevents communication between the cloud and the systems 656, 660, 662, and 664, the systems can continue to operate without interruption. Further, by balancing the computing between the cloud and the systems 656, 660, 662, and 664, power usage can be more effectively balanced. Additionally, the system 629 is capable of scaling (e.g., growing or shrinking) the functions / services provided on the edge device based on the capabilities of the edge hardware implementing the edge system above.
[0214] Now refer to Figure 7, showing a system 700 according to an exemplary embodiment, where connectors, building standardization layers, services, and integrations are distributed across various computing devices in a building. In system 700, cloud platform 106, local server 702, and device / gateway 720 run components of edge platform 102, such as connectors, building standardization layers, services, and integrations. Local server 702 can be a server system located within the building. In some embodiments, device / gateway 720 can be a building device located within the building. For example, device / gateway 720 can be a smart thermostat, surveillance camera, access control system, etc. In some embodiments, device gateway 720 is a dedicated gateway box. The building device can be a physical building device and can include a memory device (e.g., flash memory, RAM, ROM, etc.). The memory of the physical building device can store one or more data samples, and the one or more data samples can be any data related to the operation of the physical building device. For example, if the building device is a smart thermostat, the data sample can be a timestamped temperature reading. If the building device is a surveillance camera, the data sample can be
[0215] Local server 702 can include connector 704, services 706 - 710, building standardization layer 712, and integrations 714 - 718. These components of local server 702 can be deployed to local server 702 from cloud platform 106, for example. In some embodiments, these components can also be dynamically moved to various other devices in the building. Connector 704 can be the connector described in Figure 5 which includes connection manager 506, device manager 508, and / or device identity manager 510. In some embodiments, connector 704 can connect local server 702 to cloud platform 106. For example, connector 704 can implement communication with an endpoint of cloud platform 106 (e.g., endpoint 754 which can be an MQTT endpoint or a Sparkplug protocol endpoint).
[0216] Building standardization layer 712 can be a software component that runs integrations 714 - 718 and / or analytics 706 - 710. Building standardization layer 712 can be configured to allow various different integrations and / or analytics to be deployed to local server 702. In some embodiments, building standardization layer 712 can allow any service in service catalog 630 to run on local server 702. Additionally, building standardization layer 712 can relocate or allow the relocation of services and / or integrations across cloud platform 106, local server 702, and / or device / gateway 720. In some embodiments, services 706 - 710 can be relocated based on the processing power of local server 702, based on communication bandwidth, available data, etc. Services can move from one device to another in system 700 such that the requirements of the services are appropriately met.
[0217] In addition, instances of integrations 714 - 718 can be relocatable and / or deployable. Integrations 714 - 718 can be instantiated on the devices of system 700 based on the requirements of the device, such as whether the local server 702 needs to communicate with a particular device (e.g., in response to detecting that the local server 702 needs to communicate with a Modbus device, the Modbus integration 714 can be deployed to the local server 702). The location of the integration may be limited by the physical protocols that each device can implement and / or the security restrictions of each device.
[0218] In some embodiments, the deployment and / or movement of services and / or integrations can be done manually and / or in an automated manner. For example, when a building site is being commissioned, a user can manually select, via a user interface on the user device 176 for example, the devices in system 700 on which each service and / or integration should run. In some embodiments, instead of having the user select the location, a system such as the cloud platform 106 can automatically deploy the services and / or integrations to the devices of system 700 based on the ideal location of each of the multiple different services and / or integrations.
[0219] In some embodiments, an orchestrator (e.g., running on an instance of the building standardization layer 712 or in the cloud platform 106) or the service and / or integration itself can determine that a particular service and / or integration should be moved from one device to another after deployment. In some embodiments, when the devices of system 700 change - e.g., running more or fewer services, the hard drive is filled with data, physical building devices are moved, installed, and / or uninstalled - the available data, bandwidth, computing resources, and / or memory resources can change. In response to detecting that a first device does not meet the requirements of a service and / or integration, the service and / or integration can be moved from the first device to a more suitable second device.
[0220] As an example, an energy efficiency model service can be deployed to system 700. For example, a user can request that the energy efficiency model service run in their building. Alternatively, the system can identify that the energy efficiency model service will improve the performance of the building and automatically deploy the service. The energy efficiency model service may have requirements. For example, the energy efficiency model may have high data throughput requirements, requirements to access weather data, high requirements for a data store that stores historical data needed for inference, etc. In some embodiments, a rule engine with rules can define whether the service is pushed to other devices, whether the model is returned to the cloud for more training, whether an upgrade is needed to implement an increase in points, etc.
[0221] As another example, a historian service may manage logs of historical building data collected for a building, e.g., store records of historical temperature measurements for the building, store records of building occupant counts, store records of operation control decisions (e.g., setpoints, static pressure setpoints, fan speeds, etc.), and so on. One or more other services may depend on the historian, e.g., one or more other services may use the historical data logged by the historian. In some embodiments, other services may be relocated with the historian service such that the other services can operate on the historian data. For example, an occupancy prediction service may need the historical log of occupancy records from the historian service to operate. In some embodiments, instead of having the occupancy prediction service and the historian run on the same physical device, a specific integration may be established between the two devices on which the historian service and the occupancy prediction service run such that occupancy data from the historian service can be provided to the occupancy prediction service.
[0222] This mobility of services and / or integrations eliminates dependencies between hardware and software. Allowing services and / or integrations to move from one device to another enables the services to remain continuously operational even when running in various locations. This separates the software from the hardware.
[0223] In some embodiments, the building normalization layer 712 may facilitate the automatic discovery and / or perform automatic configuration of devices. In some embodiments, the building normalization 726 of the cloud platform 106 performs automatic discovery. In some embodiments, in response to detecting a new device connected to the local server 702, e.g., a new device of the building subsystem 122, the building normalization may identify the points of the new device, e.g., identify measurement points, control points, etc. In some embodiments, the building normalization layer 712 performs a discovery process in which strings, tags, or other metadata are analyzed to identify each point. In some embodiments, the discovery process as discussed in U.S. Patent Application No. 16 / 885,959, filed on May 28, 2020, U.S. Patent Application No. 16 / 885,968, filed on May 28, 2020, U.S. Patent Application No. 16 / 722,439, filed on December 20, 2019 (now U.S. Patent No. 10,831,163), and U.S. Patent Application No. 16 / 663,623, filed on October 25, 2019, the entire contents of which are incorporated herein by reference.
[0224] In some embodiments, the cloud platform 106 performs a site survey of all devices at one or more sites. For example, the cloud platform 106 can identify all devices installed in the system 700. Additionally, the cloud platform 106 can perform discovery on any device that is not recognized. The discovery result of a device can be the configuration of the device, e.g., an indication of the points from which data is collected and / or to which commands are sent. In some embodiments, the cloud platform 106 can distribute a copy of the device's configuration to all instances of the building standardization layer 712. In some embodiments, a copy of the configuration can be distributed to other buildings different from the building where the device was discovered. In this regard, in response to similar device types being installed elsewhere in the same building, in different buildings, in different campuses, etc., an instance of building standardization can select a copy of the device configuration and implement the device configuration of the device.
[0225] Similarly, if an instance of building standardization detects a new device that is not recognized, the building standardization can perform a discovery process on the new device and distribute the configuration of the new device to other instances of the building standardization. In this regard, each instance of building standardization can implement learning by discovering new devices and injecting the device configuration into a device directory stored and distributed across each instance of the building standardization.
[0226] In some embodiments, the device directory can store the name of each data point of each device. In some embodiments, services operating on a data point can use the data point based on the indication of the data point in the device directory. Additionally, integration can collect data from and / or send actions to the data point based on the naming of the device directory. In some embodiments, various building standardizations synchronize their stored device directories. For example, a change to one device directory can be distributed to other building standardizations. If the point name of a device is changed, this change can be distributed across all building standardizations through device directory synchronization such that the services consuming that point are not interrupted.
[0227] The analytics service 706 can be a service that generates one or more analytics based on building data received from building devices (e.g., directly from building devices or through a gateway that communicates with building devices (e.g., from device / gateway 720)). The analytics service 706 can be configured to generate analytics data based on the building data, such as carbon emission metrics, energy consumption metrics, comfort scores, health scores, etc. The database service 708 can be operable to store building data, e.g., building data collected from device / gateway 720. In some embodiments, the analytics service 706 can operate on historical data stored in the database service 708. In some embodiments, the analytics service 706 can require that the analytics service 706 be implemented with access rights to the database service 706 that stores historical data. In this regard, the analytics service 706 can be deployed to or relocated to a device instantiating the database service 708. In some embodiments, in response to determining that the analytics service 706 requires the database service 708 to operate, the database service 708 can be deployed to the local server 702.
[0228] The optimization service 710 can be a service that operates to implement the optimization of one or more variables based on one or more constraints. In some embodiments, the optimization service 710 can implement optimizations for load distribution, making control decisions, improving energy usage, and / or occupant comfort, etc. The optimizations performed by the optimization service 710 can be the optimizations described in U.S. Patent Application No. 17 / 542,184, filed on December 3, 2021, which is incorporated herein by reference.
[0229] The Modbus integration 714 can be a software component that enables the local server 702 to collect data points of building devices operating in the Modbus protocol. Additionally, the Modbus integration 714 can enable the local server 702 to transmit data to building devices, e.g., operating parameters, set points, load distribution, etc. In some embodiments, the transmitted data can be control decisions determined by the optimization service 710.
[0230] Similarly, the BACnet integration 716 can enable the local server 702 to communicate with one or more BACnet-based devices, e.g., send data to or receive data from BACnet-based devices. The endpoint 718 can be an endpoint for the MQTT and / or Sparkplug protocols. In some embodiments, the element 718 can be a software service that includes endpoints and / or layers for implementing MQTT and / or Sparkplug protocol communication. In some embodiments, in the system 700, the endpoint 718 can be used for the local server 702 to communicate with the device / gateway 720.
[0231] The cloud platform 106 may include an artificial intelligence (AI) service 721, an archiving service 722, and / or a dashboard service 724. The AI service 721 may run one or more artificial intelligence operations, such as inferring information, performing autonomous control of a building, etc. The archiving service 722 may archive building data (e.g., collected point data) received from the device / gateway 720. In some embodiments, the archiving service 722 may store control decisions made by another service such as the AI service 721, the optimization service 710, etc. The dashboard service 724 may be configured to provide a user interface with analysis results generated by, for example, the analysis service 706, the command interface, etc. The cloud platform 106 is also shown to include building standardization 726, which may be an instance of the building standardization layer 712.
[0232] The cloud platform 106 also includes an endpoint 754 for communicating with the local server 702 and / or the device / gateway 720. The cloud platform 106 may include an integration 756, such as an MQTT integration that supports MQTT-based communication with MQTT devices.
[0233] The device / gateway 720 may include a local server connector 732 and a cloud platform connector 734. The cloud platform connector 734 may connect the device / gateway 720 to the cloud platform 106. The local server connector 732 may connect the device / gateway 720 to the local server 702. The device / gateway 720 includes a command service 736 that is configured to implement commands for devices of the building subsystem 122 (e.g., the device / gateway 720 itself or another device connected to the device / gateway 720). The monitoring service 738 may be configured to monitor the operation of devices of the building subsystem 122, the scheduling service 740 may implement the scheduling of spaces or assets, the alert / event service 742 may generate alerts and / or events when specific rules are violated based on device data, the control service 744 may implement control algorithms and / or applications for devices of the building subsystem 122, and / or the activity service 746 may implement specific activities for devices of the building subsystem 122.
[0234] The device / gateway 720 also includes building standardization 748. In some embodiments, the building standardization 748 may be an instance of the building standardization layer 712. The device / gateway 720 may also include integrations 750 - 752. The integration 750 may be a Modbus integration for communicating with Modbus devices. The integration 752 may be a BACnet integration for communicating with BACnet devices.
[0235] Now refer to Figure 8, showing a system 800 including a local building management system (BMS) server 804, the BMS server including a cloud platform connector 806 and a BMS API adapter service 808 that operate to connect a network engine 816 to a cloud platform 106. In some embodiments, components 802, 806, and 808 may be components of an edge platform 102. In some embodiments, cloud platform connector 806 is the same as or similar to connector 504 and includes, for example, a connection manager 506, a device manager 508, and / or a device identity manager 510.
[0236] The local BMS server 804 may be a server that implements building applications and / or data collection. The building applications may be the various services discussed herein, for example, the services of service directory 630. In some embodiments, BMS server 804 may include a data storage device for storing historical data. In some embodiments, the local BMS server 804 may be local server 656 and / or local server 702. In some embodiments, the local BMS server 804 may implement a user interface for viewing on a user device 176. The local BMS server 804 includes a BMS standardized API 810 that allows an external system to communicate with the local BMS server 804. In addition, the local BMS server 804 includes BMS components 812. These components may implement a user interface, applications, data storage, and / or logging, etc. In addition, the local BMS server 804 includes a BMS endpoint 814 for communicating with the network engine 816. The BMS endpoint 814 may also be connected to other devices via, for example, a local or external network. The BMS endpoint 814 may be connected to any type of device capable of communicating with the local BMS server 804.
[0237] System 800 includes a network engine 816. The network engine 816 may be configured to handle network operations of a building's network. For example, the engine integration 824 of the network engine 816 may be configured to facilitate communication via BACnet, Modbus, CAN, N2, and / or any other protocol. In some embodiments, the network communication is non-IP-based communication. In some embodiments, the network communication is IP-based communication, for example, Internet-enabled smart devices, BACnet / IP, etc. In some embodiments, the network engine 816 may transmit data collected from building subsystems 122 and pass the data to the local BMS server 804.
[0238] In some embodiments, the network engine 816 includes existing engine components 822. The engine components 822 may be configured to implement network features for managing the various building networks with which the building subsystem 122 communicates. The network engine 816 may also include a BMS standardization API 820 that implements integration with other external systems. The network engine 816 also includes a BMS connector 818 that facilitates the connection between the network engine 816 and the BMS endpoint 814. In some embodiments, the BMS connector 818 collects point data received from the building subsystem 122 via the engine integration 824 and transmits the collected points to the BMS endpoint 814.
[0239] In the system 800, the local BMS server 804 may be adapted to facilitate communication between the local BMS server 804, the network engine 816, and / or the building subsystem 122 and the cloud platform 106. In some embodiments, the adaptation may be implemented by deploying an endpoint 802 to the cloud platform 106. In some embodiments, the endpoint 802 may be an MQTT and / or Sparkplug protocol endpoint. Additionally, a cloud platform connector 806 may be deployed to the local BMS server 804. The cloud platform connector 806 may facilitate communication between the local BMS server 804 and the cloud platform 106. Additionally, a BMS API adapter service 808 may be deployed to the local BMS server 804 to implement the integration between the cloud platform connector 806 and the BMS standardization API 810. The BMS API adapter service 808 may form a bridge between the existing BMS components 812 and the cloud platform connector 806.
[0240] Now referring Figure 9 , a system 900 is shown that includes a local BMS server 804, a network engine 816, and a cloud platform 106, where the network engine 816 includes connectors and adapter services that connect the engine to the local BMS server 804 and the cloud platform 106. In the system 900, the network engine 816 may be adapted to facilitate direct communication between the network engine 816 and the cloud platform 106.
[0241] In the system 900, reusable cloud connector components and / or reusable adapter services may be deployed to the network engine 816 to enable the network engine 816 to communicate directly with the cloud platform 106 endpoints 802. In this regard, components of the edge platform 102 may be deployed to the network engine 816 itself, allowing for plug-and-play on the engine such that the gateway function may run on the network engine 816 itself.
[0242] In system 900, cloud platform connectors 906 and 904 can be deployed to network engine 816. Cloud platform connectors 906 and / or 904 can be instances of cloud platform 806. Additionally, endpoint 902 can be deployed to local BMS server 804. Endpoint 902 can be a sparkplug protocol and / or MQTT endpoint. Cloud platform connector 906 can be configured to facilitate communication between network engine 816 and endpoint 902. In some embodiments, point data can be transmitted between building subsystem 122 and endpoint 902. Additionally, in some embodiments, cloud platform connector 904 can be configured to facilitate communication between endpoint 802 and network engine 816. BMS API adapter service 908 can integrate cloud platform connector 906 and / or cloud platform connector 904 with BMS standardized API 820.
[0243] Now referring to Figure 10 , system 1000 is shown that includes gateway 1004 according to an exemplary embodiment, the gateway including a building management system (BMS) adapter service application programming interface (API) that connects network engine 816 to cloud platform 106. In some embodiments, in system 1000, gateway 1004 can facilitate communication between cloud platform 106 and network engine 816. Gateway 1004 can be a physical computing system and / or device, e.g., one of gateways 112-116. Gateway 1004 can be an instance of edge platform 102 as described in Figure 5 and / or Figure 6A .
[0244] In some embodiments, gateway 1004 can be deployed on a computing node of a building with gateway software such as components 1006-1014. In some embodiments, gateway 1004 can be installed as a new physical device in a building. In some embodiments, the gateway device can be constructed on a computing node of a network to communicate with legacy devices (e.g., network engine 816 and / or building subsystem 122). In some embodiments, gateway 1004 can be deployed to a computing system such that network engine 816 can communicate with cloud platform 106. In some embodiments, gateway 1004 is a new physical device and / or a modified existing gateway. In some embodiments, cloud platform 106 can identify what physical device is near and / or connected to network engine 816. Cloud platform 106 can deploy gateway 1004 to the identified physical device. Some software stacks of the gateway may be legacy.
[0245] The gateway 1004 may include a cloud platform connector 1006 configured to facilitate communication between the endpoints 802 of the cloud platform 106 and / or the gateway 1004. The cloud platform connector 1006 may be an instance of the cloud platform 806 and / or the connector 504. The gateway 1004 may also include a service 1008. The service 1008 may be the service described in reference Figure 6B and / or 7. The gateway 1004 also includes building standardization 1010. The building standardization 1010 may be the same as or similar to the building standardization layers 712, 728, and / or 748 described in reference Figure 7 . The gateway 1004 also includes a BMS API adapter service 1012 configured to facilitate communication with the BMS standard API 820. The BMS API adapter service 1012 may be the same as and / or similar to the BMS API adapter service 808 and / or the BMS API adapter service 908. The gateway 1004 may also include an integration endpoint 1014 that may facilitate direct communication with the building subsystem 122.
[0246] In some embodiments, via the cloud platform connector 1006 and / or the BMS API adapter service 1012, the gateway 1004 may facilitate direct communication between the network engine 816 and the cloud platform 106. For example, data collected from the building subsystem 122 may be collected via the engine integration 824 and transmitted to the gateway 1004 via the BMS standard API 820 and the BMS API adapter service 1012. The cloud platform connector 1006 may transmit the collected data points to the endpoint 802 of the cloud platform 106. The BMS API adapter service 1012 and the BMS API adapter service 808 may be a common adapter that can make calls to and / or respond to the BMS standard API 810 and / or the BMS standard API 820.
[0247] The gateway 1004 may allow services (e.g., service 1008) and / or integrations (e.g., integration endpoint 1014) that may not be deployed to the local BMS server 804 and / or the network engine 816 to be added to the system 1000. In Figure 10 , compared with the deployment connectivity with the local BMS server 804 in Figure 8 and the deployment connectivity with the network engine 816 in Figure 9 , the network engine 816 is not adapted, but enters the ecosystem of the system 1000 through the gateway 1004.
[0248] Now refer to Figure 11, shows a system 1100 according to an exemplary embodiment, which includes a surveillance camera 1106 and a smart thermostat 1108 for area 1102 of a building, and the area uses an edge platform 102 to facilitate event-based control. In system 1100, the surveillance camera 1106 and / or the smart thermostat 1108 may run the gateway component of the edge platform 102. For example, the surveillance camera 1106 and / or the smart thermostat 1108 may include a connector 504. In some embodiments, the surveillance camera 1106 and / or the smart thermostat 1108 may include endpoints, such as MQTT endpoints, such as Figures 7 - 10 the endpoints described in
[0249] In some embodiments, the surveillance camera 1106 and / or the smart thermostat 1108 themselves are gateways. The gateway can be constructed in a portable language such as RUST and embedded in the surveillance camera 1106 and / or the smart thermostat 1108. In some embodiments, one or both of the surveillance camera 1106 and / or the smart thermostat 1108 may implement a building device agent 1105. In some embodiments, the building device agent 1105 may be implemented on a separate building gateway (such as device / gateway 720 and / or gateway 1004).
[0250] In some embodiments, the surveillance camera 1106 may perform motion detection, such as detecting the presence of a user 1104. In some embodiments, in response to detecting the user 1104, the surveillance camera 1106 may generate an occupancy trigger event. The occupancy trigger event may be published by the surveillance camera 1106 to a topic. In some embodiments, the building device agent 1105 may handle various topics, topic subscriptions, topic publications, etc. In some embodiments, the smart thermostat 1108 may subscribe to the occupancy topic of area 1102 to which the surveillance camera 1106 publishes the occupancy trigger event. In some embodiments, the smart thermostat 1108 may adjust the temperature set point in response to receiving the occupancy trigger event published to the topic.
[0251] In some embodiments, the IoT platform and / or other applications subscribe to the topics subscribed to by the surveillance camera 1106 and command the smart thermostat 1108 to adjust its temperature set point in response to detecting the occupancy trigger event. In some embodiments, the events, topics, publications, and / or subscriptions are MQTT-based messages. In some embodiments, the events transmitted by the surveillance camera 1106 are Open Network Video Interface Forum (ONVIF) events.
[0252] Now refer to Figure 12, showing a system 1200 including a cluster-based gateway 1206 according to an exemplary embodiment, the gateway running microservices for facilitating communication between a building subsystem 122 and a cloud application 1204. In some embodiments, to collect telemetry data from a building subsystem 122 (e.g., a BMS system, a fire protection system, a security system, etc.), the system 1200 includes a gateway that collects data from the building subsystem 122 and transmits the information to the cloud, e.g., to a cloud application 1204, a cloud platform 106, etc.
[0253] In some embodiments, such a gateway may include a mini personal computer (PC) having various software connectors (e.g., BACnet connectors, OPC / UA connectors, Modbus connectors, Transmission Control Protocol and Internet Protocol TCP / IP connectors, and / or various other protocols) that connect the gateway to the building subsystem 122. In some embodiments, the mini PC runs an operating system that hosts various microservices for communication.
[0254] In some embodiments, there are problems with hosting a mini PC in a building. For example, it may be necessary to update the operating system on the mini PC for security patches and / or operating system updates. This may result in affecting the microservices running on the mini PC. The microservices may stop, may be deleted, and / or may have to be updated to manage the changes in the operating system. In addition, the mini PC may need to be managed by a local building information technology (IT) team. The mini PC may be affected by the building network and / or IT policies on the network. The mini PC may need to be debugged by a technician accessing the local site. Similarly, at any time the mini PC encounters a problem, a technician may need to visit the site for troubleshooting. With an increasing demand for mini PC services, technicians may need to visit the site to perform physical and / or software updates to the mini PC, which may incur additional costs for on-site testing and / or certifying new hardware and / or software.
[0255] To address one or more of these problems, the system 1200 may include a cluster gateway 1206. The cluster gateway 1206 may be a cluster that includes one or more microservices in containers. For example, the cluster gateway 1206 may be a Kubernetes cluster with docker instances of microservices. For example, the cluster gateway 1206 may run a BACnet microservice 1208, a Modbus microservice 1210, and / or an OPC / U microservice 1212. The cluster gateway 1206 may replace the mini PC with a more general-purpose hardware device capable of hosting one or more different and / or changing containers.
[0256] In some embodiments, software updates to the cluster gateway 1206 can be centrally managed by the gateway manager 1202. The gateway manager 1202 can push new microservices to the cluster gateway 1206, such as BACnet microservices, Modbus microservices 1210, and / or OPC / UA microservices. In this way, software upgrades do not rely on the IT infrastructure at the building site. The building owner can manage the underlying hardware on which the cluster gateway 1206 runs, while the cluster gateway 1206 can be managed by a separate development entity. In some embodiments, debugging of the cluster gateway 1206 is remotely managed. Additionally, in some embodiments, the workload of the cluster gateway 1206 can be managed. In some embodiments, the cluster gateway 1206 runs independently of the hardware on which it is hosted, so any underlying hardware upgrades do not require testing of the software tools and / or software stack of the cluster gateway 1206.
[0257] The gateway manager 1202 can be configured to install and / or upgrade the cluster gateway 1206. The gateway manager 1202 can upgrade the microservices running on the cluster gateway 1206 and / or upgrade the operating environment of the cluster gateway 1206. In some embodiments, upgrades, security patches, new software, etc. can be pushed to the cluster gateway 1206 by the gateway manager 1202 in an automated manner. In some embodiments, errors and / or problems of the cluster gateway 1206 can be remotely managed, and users can receive notifications regarding the errors and / or problems. In some embodiments, the initialization of the cluster gateway 1206 can be automated, and the cluster gateway 1206 can be set to run on various different hardware environments.
[0258] In some embodiments, the cluster gateway 1206 can provide telemetry data of the building subsystem 122 to the cloud application 1204. Additionally, the cloud application 1204 can provide command and control data to the cluster gateway 1206 for controlling the building subsystem 122. In some embodiments, command and / or control operations can be processed by the cluster gateway 1206. This enables the management of the site's requirements and / or bandwidth requirements by commanding various containers containing microservices on the cluster gateway 1206. This can allow for management of upgrades and / or testing. Additionally, this can allow for replication of development, testing, and / or production environments. The cloud application 1204 can be an energy management application, an optimization application, etc. In some embodiments, the cloud application 1204 is the application 110. In some embodiments, the cloud application 1204 is the cloud platform 106.
[0259] Reference Figure 13, which shows a flowchart of an example method 1300 for deploying gateway components on one or more computing systems of a building. In various embodiments, the local server 702 executes method 1300. However, it should be understood that any computing system described herein may execute any or all of the operations described in connection with method 1300. For example, in some embodiments, the cloud platform 106 executes method 1300. In other embodiments, the local server 702 may execute method 1300. For example, the cloud platform 106 may execute method 1300 to deploy gateway components on one or more computing devices in a building (e.g., local server 702, device / gateway 720, local BMS server 804, network engine 816, gateway 1004, gateway manager 1202, cluster gateway 1206, any other computing system or device described herein, etc.), and the gateway components may collect, store, process, or otherwise access data samples received via one or more physical building devices. The data samples may be sensor data, operation data, configuration data, or any other data described herein. The computing system that executes the operations of method 1300 is referred to herein as a "building system".
[0260] In step 1305, the building system may store one or more gateway components on one or more storage devices of the building system. The building system may be located within the building corresponding to the building system or away from the building corresponding to the building system. The gateway components stored on the storage devices of the building system may facilitate communication with a cloud platform (e.g., cloud platform 106) and facilitate communication with physical building devices (e.g., device / gateway 720, building subsystem 122, etc.). The gateway components may be, for example, any one of the connectors, building standardization layers, services, or integrations described herein, including but not limited to connector 704, services 706 - 710, building standardization layer 712, and integrations 714 - 718, as well as other components, software, integrations, configuration settings, or any other software-related data described in connection with Figures 1 - 12 the description.
[0261] At step 1310, the building system may identify a computing system of the building that communicates with a physical building device that stores one or more data samples. Identifying the computing system may include accessing a database or lookup table of computing systems or devices that are present within the building or otherwise associated with one or more aspects of managing the building. In some embodiments, the building system may query a network of the building to which the building system is communicatively coupled to identify one or more other computing systems on the network. The computing systems may be associated with respective identifiers and may communicate with the building system via the network or another suitable communication interface, connector, or integration, as described herein. As described herein, the computing systems may communicate with one or more physical building devices. In some embodiments, the building system may identify each of the computing systems of the building that communicate with at least one physical building device.
[0262] At step 1315, the building system may deploy one or more gateway components to the identified computing systems in response to identifying that the computing systems communicate with a physical building device. For example, the building system may utilize one or more communication channels that may be established via the network of the building to send the gateway components to each of the identified computing systems of the building. Deploying one or more gateway components may include installing or otherwise configuring the gateway components to execute at one or more of the identified computing systems. Generally, the gateway components may be executable to perform any of the operations described herein. Deploying the gateway components may include forming computer-executable instructions corresponding to the gateway components at the identified computing systems. In some embodiments, a particular gateway component deployed at an identified computing system may be selected based on the type of physical building device to which the identified computing system is connected. Similarly, in some embodiments, a particular gateway component deployed at an identified computing system may be selected to correspond to the operations, type, or processing capabilities of the identified computing system and other factors described herein. Deploying the gateway components may include storing the gateway components in one or more predetermined memory regions at the computing systems (e.g., stored in a particular directory, executable memory region, etc.), and may include installing, configuring, or otherwise applying one or more configuration settings for the gateway components or for the operations of the computing systems.
[0263] As described herein, one or more gateway components can include any type of software component, hardware configuration setting, or combination thereof. The gateway components can include processor-executable instructions that can be executed by a computing system on which the gateway components are deployed. The one or more gateway components can enable the computing system to communicate with physical building devices to receive one or more data samples (e.g., via one or more networks or communication interfaces). Additionally, the one or more gateway components cause the computing system to transmit the one or more data samples to a cloud platform. For example, the gateway components can include one or more adapters or communication software APIs that facilitate communication between computing devices inside and outside of the building. The gateway components can include an adapter that enables the computing system to communicate with one or more network engines. The gateway components can include instructions that, when executed by the computing system, cause the computing system to detect a new physical building device connected to the computing system (e.g., search for different connected devices by device identifier, etc.), and then search a device library for a configuration of the new physical building device. Using the configuration of the new physical device, the gateway components can cause the computing system to implement the configuration to facilitate communication with the new physical building device. The gateway components can also perform a discovery process to discover a configuration of a new physical building device and store the configuration in the device library, for example, if the device library does not contain the configuration. The device library can be stored at the cloud platform or on one or more of the gateway components themselves. In some embodiments, the device library is distributed across one or more instances of one or more gateway components in multiple different buildings, and can be retrieved, for example, by accessing one or more networks to communicate with multiple instances of the gateway components to retrieve some or all of the device library. The gateway components can receive, for example, one or more values of control points of a physical building device from a building system, from the cloud platform, or from another system or device described herein, and transmit the one or more values to the control points of the physical building device via one or more gateway components.
[0264] One or more gateway components may include building services that enable a computing system to generate data based on one or more data samples, where the data may be analytics data or any other type of data described herein that may be based on or associated with the data samples. When deploying a gateway component, the building system may identify one or more requirements of the building service or any other gateway component. The requirements may include required processing resources, storage resources, data availability, or the presence of another building service being executed at the computing system. The building system may query the computing system to determine current operating characteristics (e.g., processing resources, storage resources, data availability, or the presence of another building service being executed at the computing system, etc.) to determine if the computing system meets one or more requirements of the gateway component. If the computing system meets the requirements, the building system may deploy the corresponding gateway component to the computing system. If the requirements are not met, the building system may deploy the gateway component to another computing system. The building system may periodically query or otherwise receive messages from the computing system indicating the current operating characteristics of the computing system. Thereby, the building system may identify if the computing system no longer meets the requirements of the building service (or other gateway component). If the requirements are no longer met, the building system may move (e.g., terminate the execution of the gateway component or remove the gateway component from the computing system and redeploy the gateway component) the gateway component (e.g., the building service) from the computing system to a different computing system that meets one or more requirements of the building service or gateway component.
[0265] Reference Figure 14 , which is a flowchart of an example method 1400 for deploying a gateway component on a local BMS server according to an exemplary embodiment. In various embodiments, the local server 702 executes method 1400. However, it should be understood that any computing system described herein may execute any or all of the operations described in connection with method 1400. For example, in some embodiments, the cloud platform 106 executes method 1400. In other embodiments, the local server 702 may execute method 1400. For example, the cloud platform 106 may execute method 1400 to deploy a gateway component on one or more computing devices in a building (e.g., the local server 702, the device / gateway 720, the local BMS server 804, the network engine 816, the gateway 1004, the gateway manager 1202, the cluster gateway 1206, any other computing system or device described herein, etc.), where the gateway component may collect, store, process, or otherwise access data samples received via one or more physical building devices. The data samples may be sensor data, operational data, configuration data, or any other data described herein. The computing system that performs the operations of method 1400 is referred to herein as the "building system".
[0266] In step 1405, the building system may store one or more gateway components on one or more storage devices of the building system. The building system may be located within the building corresponding to the building system or remote from the building corresponding to the building system. The gateway components stored on the storage devices of the building system may facilitate communication with a cloud platform (e.g., cloud platform 106) and facilitate communication with physical building devices (e.g., device / gateway 720, building subsystem 122, etc.). The gateway components may be, for example, any of the connectors, building standardization layers, services, or integrations described herein, including but not limited to connector 704, services 706 - 710, building standardization layer 712, and integrations 714 - 718, as well as other components, software, integrations, configuration settings, or any other software-related data described in conjunction with Figures 1 - 12 described.
[0267] In step 1410, the building system may deploy one or more gateway components to a BMS server that may communicate with one or more building devices via one or more network engines, as Figure 8 shown. The BMS server may execute one or more BMS applications on data samples received (e.g., via one or more networks or communication interfaces) from the physical building devices. To deploy the gateway components, the building system may utilize one or more communication channels that may be established via the building's network to send the gateway components to the BMS server of the building. Deploying one or more gateway components may include installing or otherwise configuring the gateway components to execute at the BMS server. Generally, the executable gateway components may perform any of the operations described herein. Deploying the gateway components may include forming, at the BMS server, computer-executable instructions corresponding to the gateway components. In some embodiments, the particular gateway components deployed at the BMS server may be selected based on the type of physical building devices connected to the BMS server (e.g., via a network engine, etc.), or based on other types of computing systems with which the BMS server communicates. Similarly, in some embodiments, the particular gateway components deployed at the BMS server may be selected to correspond to the operations, type, or processing capabilities of the BMS server, as well as other factors described herein. Deploying the gateway components may include storing the gateway components in one or more predetermined memory regions at the BMS server (e.g., stored in a particular directory, executable memory region, etc.), and may include installing, configuring, or otherwise applying one or more configuration settings for the gateway components or for the operation of the BMS server.
[0268] As described herein, one or more gateway components can include any type of software component, hardware configuration setting, or combination thereof. The gateway components can include processor-executable instructions that can be executed by a BMS server to which the gateway components are deployed. The one or more gateway components can enable the BMS server to communicate with physical building devices to receive one or more data samples (e.g., via one or more networks or communication interfaces). Additionally, the one or more gateway components enable the BMS server to transmit the one or more data samples to a cloud platform. For example, the gateway components can include one or more adapters or communication software APIs that facilitate communication between computing devices inside and outside the building. The gateway components can include an adapter that enables the BMS server to communicate with one or more network engines. The gateway components can include instructions that, when executed by the BMS server, cause the BMS server to detect a new physical building device connected to the BMS server (e.g., search for different connected devices by device identifier, etc.), and then search a device library for a configuration of the new physical building device. Using the configuration of the new physical device, the gateway components can cause the BMS server to implement the configuration to facilitate communication with the new physical building device. The gateway components can also perform a discovery process to discover a configuration of a new physical building device and store the configuration in the device library, for example, if the device library does not contain the configuration. The device library can be stored at the cloud platform or on one or more of the gateway components themselves. In some embodiments, the device library is distributed across one or more instances of one or more gateway components in multiple different buildings and can be retrieved, for example, by accessing one or more networks to communicate with multiple instances of the gateway components to retrieve some or all of the device library. The gateway components can receive, for example, one or more values of control points of a physical building device from a building system, from the cloud platform, or from another system or device described herein, and transmit the one or more values to the control points of the physical building device via one or more gateway components.
[0269] One or more gateway components may include building services that enable a BMS server to generate data based on one or more data samples, where the data may be analytics data or any other type of data described herein that may be based on or associated with the data samples. When deploying a gateway component, the building system may identify one or more requirements of the building service or any other gateway component. The requirements may include required processing resources, storage resources, data availability, or the presence of another building service being executed at the BMS server. The building system may query the BMS server to determine the current operating characteristics (e.g., processing resources, storage resources, data availability, or the presence of another building service being executed at the BMS server, etc.) to determine if the BMS server meets one or more requirements of the gateway component. If the BMS server meets the requirements, the building system may deploy the corresponding gateway component to the BMS server. If the requirements are not met, the building system may deploy the gateway component to another BMS server. The building system may periodically query or otherwise receive messages from the BMS server indicating the current operating characteristics of the BMS server. Thereby, the building system may identify if the BMS server no longer meets the requirements of the building service (or other gateway component). If the requirements are no longer met, the building system may move (e.g., terminate the execution of the gateway component or remove the gateway component from the BMS server and redeploy the gateway component) the gateway component (e.g., the building service) from the BMS server to a different computing system that meets one or more requirements of the building service or gateway component. In some embodiments, the building system may identify the communication protocols corresponding to the physical building devices associated with the BMS server and deploy one or more integration components (e.g., associated with the physical building devices) to the BMS server to communicate with the one or more physical building devices via the one or more communication protocols. The integration components may be part of one or more gateway components.
[0270] Reference Figure 15, which is a flowchart of an example method 1500 for deploying a gateway component on a network engine according to an exemplary embodiment. In various embodiments, the local server 702 executes method 1500. However, it should be understood that any computing system described herein may execute any or all of the operations described in connection with method 1500. For example, in some embodiments, the cloud platform 106 executes method 1500. In other embodiments, the local server 702 may execute method 1500. For example, the cloud platform 106 may execute method 1500 to deploy a gateway component on one or more computing devices in a building (e.g., local server 702, device / gateway 720, local BMS server 804, network engine 816, gateway 1004, gateway manager 1202, cluster gateway 1206, any other computing system or device described herein, etc.), and the gateway component may collect, store, process, or otherwise access data samples received via one or more physical building devices. The data samples may be sensor data, operational data, configuration data, or any other data described herein. The computing system that executes the operations of method 1500 is referred to herein as a "building system".
[0271] In step 1505, the building system may store one or more gateway components on one or more storage devices of the building system. The building system may be located within the building corresponding to the building system or away from the building corresponding to the building system. The gateway components stored on the storage devices of the building system may facilitate communication with a cloud platform (e.g., cloud platform 106) and facilitate communication with physical building devices (e.g., device / gateway 720, building subsystem 122, etc.). The gateway component may be, for example, any one of the connectors, building standardization layers, services, or integrations described herein, including but not limited to connector 704, services 706-710, building standardization layer 712, and integrations 714-718, and other components, software, integrations, configuration settings, or any other software-related data described in connection with Figures 1 - 12 the description.
[0272] At step 1510, the building system may deploy one or more gateway components to a network engine that may implement one or more local communication networks for one or more building devices of a building and receive one or more data samples from the one or more building devices, as described herein. To deploy the gateway components, the building system may utilize one or more communication channels that may be established over the building's network to send the gateway components to the building's network engine. Deploying one or more gateway components may include installing or otherwise configuring the gateway components to execute at the network engine. Generally, the gateway components may be executable to perform any of the operations described herein. Deploying the gateway components may include forming, at the network engine, computer-executable instructions corresponding to the gateway components. In some embodiments, a particular gateway component deployed at the network engine may be selected based on the type of physical building device to which the network engine is connected (e.g., one or more networks implemented by the network engine, etc.), or based on other types of computing systems with which the network engine communicates. Similarly, in some embodiments, a particular gateway component deployed at the network engine may be selected to correspond to the operations, type, or processing capabilities of the network engine, as well as other factors described herein. Deploying the gateway components may include storing the gateway components in one or more predetermined memory regions at the network engine (e.g., stored in a particular directory, executable memory area, etc.), and may include installing, configuring, or otherwise applying one or more configuration settings for the gateway components or for the operations of the network engine.
[0273] As described herein, one or more gateway components may comprise any type of software component, hardware configuration setting, or combination thereof. The gateway components may comprise processor-executable instructions that may be executed by a network engine to which the gateway components are deployed. The one or more gateway components may enable the network engine to communicate with physical building devices to receive one or more data samples (e.g., via one or more networks or communication interfaces). Additionally, the one or more gateway components cause the network engine to transmit the one or more data samples to a cloud platform. For example, the gateway components may comprise one or more adapters or communication software APIs that facilitate communication between computing devices inside and outside the building. The gateway components may comprise adapters that enable the network engine to communicate with one or more other computing systems (e.g., a BMS server, other building subsystems, etc.). The gateway components may comprise instructions that, when executed by the network engine, cause the network engine to detect a new physical building device connected to the network engine (e.g., search for different connected devices by device identifier, etc.), and then search a device library for a configuration of the new physical building device. Using the configuration of the new physical device, the gateway components may cause the network engine to implement the configuration to facilitate communication with the new physical building device. The gateway components may also perform a discovery process to discover the configuration of the new physical building device and store the configuration in the device library, for example, if the device library does not contain the configuration. The device library may be stored at the cloud platform or on one or more of the gateway components themselves. In some embodiments, the device library is distributed across one or more instances of one or more gateway components in multiple different buildings, and portions or all of the device library may be retrieved, for example, by accessing one or more networks to communicate with multiple instances of the gateway components. The gateway components may receive, for example, one or more values of control points of a physical building device from a building system, from the cloud platform, or from another system or device described herein, and transmit the one or more values to the control points of the physical building device via one or more gateway components.
[0274] One or more gateway components may include building services that cause a network engine to generate data based on one or more data samples, where the data may be analytics data or any other type of data described herein that may be based on or associated with a data sample. When deploying a gateway component, the building system may identify one or more requirements of the building service or any other gateway component. The requirements may include required processing resources, storage resources, data availability, or the presence of another building service being executed at the network engine. The building system may query the network engine to determine current operating characteristics (e.g., processing resources, storage resources, data availability, or the presence of another building service being executed at the network engine, etc.) to determine if the network engine meets one or more requirements of the gateway component. If the network engine meets the requirements, the building system may deploy the corresponding gateway component to the network engine. If the requirements are not met, the building system may deploy the gateway component to another network engine. The building system may periodically query or otherwise receive messages from the network engine indicating the current operating characteristics of the BMS server. Thereby, the building system may identify if the network engine no longer meets the requirements of the building service (or other gateway component). If the requirements are no longer met, the building system may move (e.g., terminate the execution of the gateway component or remove the gateway component from the network engine and redeploy the gateway component) the gateway component (e.g., the building service) from the network engine to a different computing system that meets one or more requirements of the building service or gateway component. In some embodiments, the building system may identify the communication protocol corresponding to a physical building device associated with the network engine and deploy one or more integration components (e.g., associated with the physical building device) to the network engine to communicate with the one or more physical building devices via the one or more communication protocols. The integration components may be part of one or more gateway components.
[0275] Reference Figure 16, which is a flowchart of an example method 1600 for deploying gateway components on a dedicated gateway according to an exemplary embodiment. In various embodiments, the local server 702 executes method 1600. However, it should be understood that any computing system described herein may execute any or all of the operations described in connection with method 1600. For example, in some embodiments, the cloud platform 106 executes method 1600. In other embodiments, the local server 702 may execute method 1600. For example, the cloud platform 106 may execute method 1600 to deploy gateway components on one or more computing devices in a building (e.g., local server 702, device / gateway 720, local BMS server 804, network engine 816, gateway 1004, gateway manager 1202, cluster gateway 1206, any other computing system or device described herein, etc.), and the gateway components may collect, store, process, or otherwise access data samples received via one or more physical building devices. The data samples may be sensor data, operation data, configuration data, or any other data described herein. The computing system that executes the operations of method 1600 is referred to herein as a "building system".
[0276] In step 1605, the building system may store one or more gateway components on one or more storage devices of the building system. The building system may be located within the building corresponding to the building system or away from the building corresponding to the building system. The gateway components stored on the storage devices of the building system may facilitate communication with a cloud platform (e.g., cloud platform 106) and facilitate communication with physical building devices (e.g., device / gateway 720, building subsystem 122, etc.). The gateway components may be, for example, any one of the connectors, building standardization layers, services, or integrations described herein, including but not limited to connector 704, services 706 - 710, building standardization layer 712, and integrations 714 - 718, as well as other components, software, integrations, configuration settings, or any other software-related data described in connection with Figures 1 - 12 the description.
[0277] In step 1610, the building system may deploy one or more gateway components to a physical gateway, which may transmit and receive data samples from one or more physical building devices of the building and provide the data samples to the cloud platform. To deploy the gateway components, the building system may utilize one or more communication channels established via the building's network to send the gateway components to the physical gateway of the building. Deploying one or more gateway components may include installing or otherwise configuring the gateway components to execute at the physical gateway. Generally, the gateway components may be executable to perform any of the operations described herein. Deploying the gateway components may include forming, at the physical gateway, computer-executable instructions corresponding to the gateway components. In some embodiments, the particular gateway components deployed at the physical gateway may be selected based on the type of physical building devices to which the physical gateway is connected, or based on other types of computing systems with which the physical gateway communicates. Similarly, in some embodiments, the particular gateway components deployed at the physical gateway may be selected to correspond to the operations, type, or processing capabilities of the physical gateway, as well as other factors described herein. Deploying the gateway components may include storing the gateway components in one or more predetermined memory regions at the physical gateway (e.g., stored in a particular directory, executable memory area, etc.), and may include installing, configuring, or otherwise applying one or more configuration settings for the gateway components or for the operation of the physical gateway.
[0278] As described herein, one or more gateway components can include any type of software component, hardware configuration setting, or combination thereof. The gateway components can include processor-executable instructions that can be executed by a physical gateway to which the gateway components are deployed. The one or more gateway components can cause the physical gateway to communicate with physical building devices to receive one or more data samples (e.g., via one or more networks or communication interfaces). Additionally, the one or more gateway components cause the physical gateway to transmit the one or more data samples to a cloud platform. For example, the gateway components can include one or more adapters or communication software APIs that facilitate communication between computing devices inside and outside of the building. The gateway components can include adapters that cause the physical gateway to communicate with one or more other computing systems (e.g., a BMS server, other building subsystems, etc.). The gateway components can include instructions that, when executed by the physical gateway, cause the physical gateway to detect a new physical building device connected to the physical gateway (e.g., search for different connected devices by device identifier, etc.), and then search a device library for a configuration of the new physical building device. Using the configuration of the new physical device, the gateway components can cause the physical gateway to implement the configuration to facilitate communication with the new physical building device. The gateway components can also perform a discovery process to discover a configuration of a new physical building device and store the configuration in the device library, for example, if the device library does not include the configuration. The device library can be stored at the cloud platform or on one or more of the gateway components themselves. In some embodiments, the device library is distributed across one or more instances of one or more gateway components in multiple different buildings, and can be retrieved, for example, by accessing one or more networks to communicate with multiple instances of the gateway components to retrieve some or all of the device library. The gateway components can receive, for example, one or more values of control points of a physical building device from a building system, from the cloud platform, or from another system or device described herein, and transmit the one or more values to the control points of the physical building device via one or more gateway components.
[0279] In step 1615, the building system may identify (e.g., via a gateway on which a gateway component is deployed) building devices that are executing one or more building services and that do not meet the requirements for executing the one or more building services. For example, a building service may cause a building device to generate data based on one or more data samples, which may be analytics data or any other type of data described herein that is based on or associated with a data sample. The requirements may include required processing resources, storage resources, data availability, or the presence of another building service being executed at the building device. The building system may query the building device to determine current operating characteristics (e.g., processing resources, storage resources, data availability, or the presence of another building service being executed at the building device, etc.) to determine whether the building device meets one or more requirements of the building service. If the requirements are not met, the building system may perform step 1620. The building system may periodically query the building device to determine whether the building device meets the requirements of the building service.
[0280] In step 1620, the building system may (e.g., by sending computer-executable instructions to the building device and the gateway) cause the building service to be relocated to the gateway on which the gateway component is deployed. To do so, the building system may move the building service from the building device to the gateway on which the gateway component is deployed by, for example, terminating the execution of the building service or removing the building service from the building device and then redeploying or copying the building service (including any application state information or configuration information) to the gateway.
[0281] Reference Figure 17 , which is a flowchart of an example method 1700 for implementing a gateway component on a building device according to an exemplary embodiment. In various embodiments, the device / gateway 720 performs method 1700. However, it should be understood that, as described herein, any computing system on which a gateway component is deployed may perform any or all of the operations described in connection with method 1700. For example, in some embodiments, the BMS server 804, network engine 816, gateway 1004, building agent device 1105, gateway manager 1202, or cluster gateway 1206 performs method 1700. In other embodiments, the local server 702 may perform method 1700. The computing system that performs the operations of method 1700 is referred to herein as a "building device".
[0282] In step 1705, the building device may receive one or more gateway components and implement the one or more gateway components on the building device. Implementing one or more gateway components may facilitate communication between the cloud platform and the building device. The gateway component may be, for example, any of the connectors, building standardization layers, services, or integrations described herein, including but not limited to connector 704, services 706-710, building standardization layer 712, and integrations 714-718, and in connection with Figures 1 - 12Other components, software, integrations, configuration settings, or any other software-related data described. The building device can receive the gateway component from any type of computing device described herein that can deploy the gateway component to the building device, such as the cloud platform 106, the BMS server 804, or the network engine 816, etc.
[0283] In step 1710, the building device can identify physical devices connected to the building device based on the one or more gateway components. For example, the gateway component can include instructions that, when executed by a physical gateway, cause the physical gateway to detect physical devices connected to the physical gateway (e.g., search for different connected devices via device identifiers, etc.). Then, the gateway component can receive, for example, from a building system, from the cloud platform, or from another system or device described herein, one or more values of control points of the physical device, and transmit the one or more values to the control points of the physical device via the one or more gateway components.
[0284] In step 1715, the building device can search a configuration library for multiple different physical devices using the identity of the physical device to identify a configuration for collecting data samples from the physical devices connected to the building device and retrieve the configuration. Search the configuration library for the configuration of the physical device. The gateway component can also perform a discovery process to discover the configuration of the physical device and store the configuration in the configuration library, for example, if the configuration library does not contain the configuration. The configuration library can be stored at the cloud platform or on one or more of the gateway components themselves. In some embodiments, the configuration library is distributed across one or more instances of one or more gateway components in multiple different buildings, and can be retrieved, for example, by accessing one or more networks to communicate with multiple instances of the gateway component to retrieve a portion or all of the configuration library.
[0285] In step 1720, the building device can implement the configuration of the one or more gateway components. Using the configuration of the physical device, the gateway component can cause the physical gateway to implement the configuration to facilitate communication with the physical device. The configuration can include the configuration of communication hardware (e.g., wireless or wired communication interfaces, etc.), which configures the communication hardware to communicate with the physical device. The configuration can specify a communication protocol that can be used to communicate with the physical device, and can include computer-executable instructions that, when executed, cause the building device to execute an API that implements the communication protocol to communicate with the physical device.
[0286] At step 1725, the building device may collect one or more data samples from the physical device based on the one or more gateway components and configurations. For example, the gateway component or configuration may include an API or other computer-executable instructions that the building device may use to communicate with the physical device and retrieve one or more data samples from the physical device. The data samples may be, for example, sensor data, operational data, configuration data, or any other data described herein. Additionally, the building device may use one or more of the gateway components to transmit the data samples to another computing system, such as a cloud platform, a BMS server, a network engine, or a physical gateway, etc.
[0287] Reference Figure 18 , which is a flowchart of an example method 1800 for deploying gateway components to execute a building control algorithm according to an exemplary embodiment. In various embodiments, the local server 702 executes method 1800. However, it should be understood that any computing system described herein may execute any or all of the operations described in connection with method 1800. For example, in some embodiments, the cloud platform 106 executes method 1800. In other embodiments, the local server 702 may execute method 1800. For example, the cloud platform 106 may execute method 1800 to deploy gateway components on one or more computing devices in a building (such as the local server 702, the device / gateway 720, the local BMS server 804, the network engine 816, the gateway 1004, the gateway manager 1202, the cluster gateway 1206, any other computing system or device described herein, etc.), and the gateway components may collect, store, process, or otherwise access data samples received via one or more physical building devices. The data samples may be sensor data, operational data, configuration data, or any other data described herein. The computing system that executes the operations of method 1800 is referred to herein as a "building system".
[0288] At step 1805, the building system may store one or more gateway components on one or more storage devices of the building system. The building system may be located within the building corresponding to the building system or away from the building corresponding to the building system. The gateway components stored on the storage devices of the building system may facilitate communication with a cloud platform (such as the cloud platform 106) and facilitate communication with physical building devices (such as the device / gateway 720, the building subsystem 122, etc.). The gateway components may be, for example, any one of the connectors, building standardization layers, services, or integrations described herein, including but not limited to the connector 704, the services 706 - 710, the building standardization layer 712, and the integrations 714 - 718, as well as other components, software, integrations, configuration settings, or any other software-related data described in connection with Figures 1 - 12 the description.
[0289] In step 1810, the building system may send a first instance of one or more gateway components to a first edge device and a second instance of one or more gateway components to a second edge device. The first edge device may measure a first condition of the building, and the second edge device may control the first condition or a second condition of the building. The first edge device (e.g., a building device) may be a surveillance camera, and the first condition may be the presence of a person in the building (e.g., within the field of view of the surveillance camera). The second edge device may be a smart thermostat, and the second condition may be the temperature setting of the building. However, it should be understood that the first and second edge devices may be any type of building device capable of capturing data related to the building or controlling one or more functions, conditions, or other controllable characteristics of the building. To deploy the gateway components, the building system may utilize one or more communication channels that can be established via the building's network to send the gateway components to the first and second edge devices of the building.
[0290] Deploying one or more gateway components may include installing or otherwise configuring the gateway components to execute at the first and second edge devices. Generally, the gateway components may be executable to perform any of the operations described herein. Deploying the gateway components may include forming computer-executable instructions corresponding to the gateway components at the first and second edge devices. In some embodiments, the particular gateway components deployed at the first and second edge devices may be selected based on the operations, functions, types, or processing capabilities of the first and second edge devices, as well as other factors described herein. Deploying the gateway components may include storing the gateway components in one or more predetermined memory regions at the first and second edge devices (e.g., stored in a specific directory, executable memory region, etc.), and may include installing, configuring, or otherwise applying one or more configuration settings for the gateway components or for the operations of the first and second edge devices. The gateway components may be deployed to the first or second edge device based on the communication protocol utilized by the first or second edge device. The building system may select gateway components to deploy to the first or second edge device that include computer-executable instructions that allow the first and second edge devices to communicate with each other and with other computing systems using various communication protocols.
[0291] As described herein, one or more gateway components can include any type of software component, hardware configuration setting, or combination thereof. The gateway components can include processor-executable instructions that can be executed by a physical gateway to which the gateway components are deployed. The one or more gateway components can enable the physical gateway to communicate with a building device agent (e.g., building device agent 1105) to facilitate the transfer of data samples, conditions, operations, or signals between a first edge device and a second edge device. Additionally, the one or more gateway components enable the first edge device or the second edge device to transfer data samples, operations, signals, or messages to a cloud platform. The gateway components can include adapters or integrations that facilitate communication with one or more other computing systems (e.g., BMS servers, other building subsystems, etc.). The gateway components can cause the first edge device to be triggered based on rules associated with a first condition to transfer an event (e.g., a person entering a building, entering a room, or any other detected event, etc.) to the second edge device. The rules can be, for example, setting certain climate control settings (e.g., temperature, etc.) when a person is detected. However, it should be understood that any type of user-definable condition can be utilized. A second instance of the one or more gateway components executed at the second edge device can cause the second edge device to control a second condition (e.g., the temperature of a building, etc.) when an event is received from the first edge device (e.g., via the building device agent, via the cloud platform, via direct communication, etc.). The building components can include one or more building services that can generate additional analysis data based on detected events, conditions, or other information collected or processed by the first edge device or the second edge device.
[0292] Optimization and Automatic Configuration of Edge Devices
[0293] The techniques described herein can be used to optimize and configure edge devices using the various computing systems described herein, including cloud platform 106, twin manager 108, edge platform 102, user device 176, local server 656, computing system 660, local server 702, local BMS server 804, network engine 816, gateway 1004, building agent device 1105, gateway manager 1206, cluster gateway 1206, or building subsystem 122, etc.
[0294] Due to the cost reduction, scale, and efficiency improvement of cloud computing systems, cloud-based data processing has become more popular. Cloud computing is useful when attempting to process data collected from devices such as various building devices described herein, which otherwise lack the processing power or appropriately optimized software to process the data locally. However, as the number of edge devices increases, using a cloud computing platform to process large amounts of data from a large pool of edge devices becomes increasingly inefficient. The reduced processing efficiency and increased latency make it impractical to use a cloud processing system architecture to perform certain types of processing (e.g., real-time or near-real-time processing).
[0295] To address these issues, the systems and methods described herein can be used to optimize software components such as, for example, machine learning models, to execute directly on edge devices. The optimization techniques described herein can be used to automatically modify, configure, or generate various components (e.g., gateway components, engine components, connectors, machine learning models, APIs, etc.) such that the components are optimized for the specific edge device on which the components will execute. The configuration of the components can be performed based on the architecture, processing power, and processing requirements of the edge device and other factors described herein. Although the various embodiments described herein are configured to allow processing to be performed at the edge device, it should be understood that in various embodiments, the processing can additionally or alternatively be performed in the edge device and other in-field and / or off-field devices (including cloud or other off-field standalone or distributed computing systems), and all such embodiments are contemplated within the scope of the present disclosure.
[0296] Automatically optimizing and configuring these components when the components of the edge device would otherwise be executed on a cloud computing system improves the overall computational efficiency of the system. Specifically, the use of edge processing enables a distributed processing platform that reduces the inherent latency of communicating with and polling the cloud computing system, which enables data captured by the edge device to be processed in real-time or near real-time. Additionally, leveraging edge processing improves the efficiency and bandwidth of the network on which the edge device operates. In a cloud computing architecture, all edge devices would otherwise need to send all captured data points to the cloud computing system for processing (which is particularly burdensome for near-real-time processing). By automatically optimizing the components to execute on the edge device, it is not necessary to collectively send the data points captured by the edge device to the cloud computing system, which significantly reduces the amount of network resources required to execute certain components and improves the overall efficiency of the system.
[0297] Additionally, the systems and methods described herein can be used to automatically configure (sometimes referred to herein as "auto - configure" or perform "auto - configuration") edge devices by managing components, connectors, operating system features, and other relevant data via a cloud computing system. The techniques described herein can be used to remotely manage the operations of edge devices and coordinate the lifecycle of edge devices via a cloud computing system. The device management techniques described herein can be used to manage and execute commands to update the software of an edge device, restart an edge device, manage the configuration of an edge device, restore an edge device to its factory default settings or software configuration, and activate or deactivate an edge device, among other operations. The techniques described herein can be used to define and customize connector software, which can facilitate communication between two or more of the computing devices described herein. The connector software can be remotely defined and managed via a user interface provided by the cloud computing system. The connector software can then be pushed to the edge device using the device management techniques described herein.
[0298] Various embodiments of the present disclosure can utilize any feature or combination of features described in U.S. Patent Application Nos. 63 / 315,442, 63 / 315,452, 63 / 315,454, 63 / 315,459, and / or 63 / 315,463, each of which is incorporated herein by reference in its entirety and for all purposes. For example, in some such embodiments, embodiments of the present disclosure can utilize a common data bus at the edge device, can be configured to ingest information from other in - field / edge devices via one or more protocol agents / brokers, and / or can utilize various other features shown and described in the foregoing patent applications. In some such embodiments, the systems and methods of the present disclosure can incorporate one or more of the features shown and described in, for example, Figure 3 (or any other illustrative figures and the accompanying disclosure) of U.S. Patent Application No. 63 / 315,463. Additionally or alternatively, various embodiments of the present disclosure can utilize any feature or combination of features described in U.S. Patent Application Nos. 16 / 792149, 17 / 229782, 17 / 304933, 16 / 379700, 16 / 190105, 17 / 648281, 63 / 267386, and / or 17 / 892927, each of which is incorporated herein by reference in its entirety and for all purposes.
[0299] Reference Figure 19, a diagram showing a system 1900 that can be used to perform optimization and automatic configuration of an edge device according to an embodiment. As shown, in an embodiment, the system 1900 may include an edge device 1902, a cloud platform 106, and a user device 176. The edge device 1902, the cloud platform 106, and the user device 176 may each be separate services deployed on the same or different computing systems. In some embodiments, the cloud platform 106 and the user device 176 are implemented in an off-site computing system, such as outside a building. The edge device 1902 may be implemented on-site, such as inside a building. However, any combination of on-site and off-site components of the system 1900 may be implemented.
[0300] As described herein, the cloud platform 106 may include one or more processors 124 and one or more memories 126. The processor 124 may include a general-purpose or special-purpose processor, an ASIC, a graphics processing unit (GPU), one or more field-programmable gate arrays, a set of processing components, or other suitable processing components. The processor 124 may be configured to execute computer code and / or instructions stored in the memory 126 or received from other computer-readable media (e.g., CDROM, network storage devices, remote servers, etc.). The processor 124 may be, for example, part of a plurality of servers or computing systems that make up the cloud platform 106 in a remote data center, server farm, or other type of distributed computing environment.
[0301] The memory 126 may include one or more devices (e.g., memory units, memory devices, storage devices, etc.) for storing data or computer code for completing or facilitating the various processes described in this disclosure. The memory 126 may include RAM, ROM, hard drive storage devices, temporary storage devices, non-volatile memories, flash memories, optical memories, or any other suitable memory for storing software objects or computer instructions. The memory 126 may include database components, object code components, script components, or any other type of information structure and the information structures described in this disclosure for supporting various activities. The memory 126 may be communicatively connected to the processor and may include computer code for performing one or more of the processes described herein (e.g., by the processor 124).
[0302] Although not necessarily depicted herein, the configuration data 1932 and the components 1934 may be stored as part of the memory 126 or may be stored in an external database that communicates with the cloud platform 106 (e.g., via one or more networks). The configuration data 1932 may include any data related to configuring the edge device 1902, as described herein. The configuration data may include software information of the edge device 1902, operating system information of the edge device 1902, status information (e.g., device uptime, service schedule, maintenance history, etc.), and metadata corresponding to the edge device 1902, as well as other information. The configuration data 1932 may be created, updated, or modified by the cloud platform 106 based on the techniques described herein. In an embodiment, in response to a corresponding request from the user device 176 or in response to a scheduled update or change, the cloud platform 106 may update the local configuration of the corresponding edge device 1902 based on the techniques described herein.
[0303] The configuration data 1932 may include data configured for multiple edge devices 1902 and for a variety of edge devices 1902 (e.g., network engines, device gateways, local servers, etc.). For example, the configuration data 1932 may include configuration data for any computing device, system, or platform described herein. The configuration data 1932 may be managed, updated, or otherwise utilized by the configuration manager 1928, as described herein. The configuration data 1932 may also include connection data. The connection data may include information related to: which edge devices 1902 are connected to other devices in the network, one or more possible communication paths for communicating with the edge device 1902 (e.g., via routers, switches, gateways, etc.), and network topology information (e.g., network topology information of the network 1904, network topology information of the network to which the network 1904 is connected, etc.).
[0304] The components 1934 may include software that can be optimized using the various techniques described herein. The components 1934 may include connectors, data processing applications, or other types of processor-executable instructions. The components 1934 may be executed by the cloud platform 106 to perform one or more data processing operations (e.g., analysis of sensor data, machine learning operations, unsupervised clustering of data retrieved using the various techniques described herein). As described in further detail herein, the optimization manager 1930 may optimize one or more components in the components 1934 for one or more target edge devices 1902. Briefly, the optimization manager 1930 may access the computing capabilities, architectures, status, and other information related to the target edge device 1902 and may automatically modify one or more components to be optimized for the target edge device 1902.
[0305] Each of the configuration manager 1928 and the optimization manager 1930 can be hardware, software, or a combination of hardware and software of the cloud platform 106. The configuration manager 1928 and the optimization manager 1930 can operate one or more computing devices or servers of the cloud platform 106 to perform various operations described herein. In an embodiment, the configuration manager 1928 and the optimization manager 1930 can be stored as processor-executable instructions in the memory 126, and when executed by the cloud platform 106, cause the cloud platform 106 to perform various operations associated with each of the configuration manager 1928 and the optimization manager 1930.
[0306] The edge device 1902 can include any functionality of the edge device 102 or its components. The edge device 1902 can communicate with the building subsystem 122 as described herein. The edge device 1902 can receive messages from the building subsystem 122 or deliver messages to the building subsystem 122. The edge device 1902 can include one or more optimized components, e.g., optimized components 1912, 1914, and 1916. Additionally, the edge device 1902 can include a local configuration, which can include software configuration or installation, operating system configuration or installation, driver configuration or installation, or any other type of component configuration described herein.
[0307] The optimized components 1912 - 1916 can include software that has been optimized by the optimization manager 1930 of the cloud platform 106 to execute on the edge device 1902, e.g., to perform edge processing on data received from or retrieved from the building subsystem 122. Although not illustrated here for visual clarity, the edge device 1902 can include communication components, such as the connectors or other communication software, hardware, or executable instructions described herein, that can act as a gateway between the cloud platform 106 and the building subsystem 122. In some embodiments, the cloud platform 106 can deploy one or more of the optimized components 1912 - 1916 to the edge device 1902 using the various techniques described herein. In this regard, lower latency can be achieved in managing the building subsystem 122.
[0308] The edge device 1902 can be connected to the cloud platform 106 via the network 1904. The network 1904 can communicatively couple the devices and systems of the system 1900. In some embodiments, the network 1904 is at least one and / or a combination of a Wi-Fi network, a wired Ethernet network, a ZigBee network, a Bluetooth network, and / or any other wireless network. The network 1904 can be a local area network or a wide area network (e.g., the Internet, a building WAN, etc.) and can use various communication protocols (e.g., BACnet, IP, LON, etc.). The network 1904 can include routers, modems, servers, cell phone towers, satellites, and / or network switches. The network 1904 can be a combination of wired and wireless networks. Although only one edge device 1902 is shown in the system 1900 for visual clarity and simplicity, it should be understood that any number of edge devices 1902 (corresponding to any number of buildings) can be included in the system 1900 and communicate with the cloud platform 106 described herein.
[0309] The cloud platform 106 can be configured to facilitate message passing and routing between the user device 176 and the edge device 1902 and / or any other system. The cloud platform 106 can include any of the components described herein and can implement any of the processing functions of the devices described herein. In an embodiment, the cloud platform 106 can host a network-based service or website through which the user device 176 can access one or more user interfaces to coordinate the various functions described herein. In some embodiments, the cloud platform 106 can facilitate communication between the various computing systems described herein via the network 1904.
[0310] The user device 176 can be a laptop computer, a desktop computer, a smartphone, a tablet computer, and / or any other device having an input interface (e.g., a touch screen, a mouse, a keyboard, etc.) and an output interface (e.g., speakers, a display, etc.). The user device 176 can receive input via the input interface and provide output via the output interface. For example, the user device 176 can receive user input that can correspond to an interaction (e.g., an interaction such as a mouse click, a keyboard input, a tap, or a touch gesture). The user device 176 can present one or more user interfaces described herein (e.g., a user interface provided by the cloud platform 106) via the output interface.
[0311] The user device 176 can communicate with the cloud platform 106 via the network 1904. For example, the user device 176 can access one or more web-based user interfaces provided by the cloud platform 106 (e.g., by accessing a corresponding Uniform Resource Locator (URL) or Uniform Resource Identifier (URI), etc.). In response to corresponding interactions with the user interface, the user device 176 can send requests to the cloud platform 106 to perform one or more operations, including the operations described in conjunction with the configuration manager 1928 or the optimization manager 1930.
[0312] Now referring to the operation of the configuration manager 1928, the configuration manager 1928 can coordinate and facilitate the management of the edge devices 1902, including creating and automatically configuring connector templates for one or more edge devices 1902 and providing device management functions via the network 1904. For example, the configuration manager 1928 can manage and execute commands to update the software of the edge devices, restart the edge devices, manage the configurations of the edge devices 1902, restore the edge devices 1902 to their factory default settings or software configurations, and activate or deactivate the edge devices 1902 and other operations. As described in further detail herein, the connection manager 1928 can also monitor the connections between the edge devices, identify connection failures between two edge devices, and determine suggestions for resolving the connection failures.
[0313] In Figure 19 the context of the components of Figure 20 , an example user interface provided by the cloud platform 106 for display on the user device 176 is shown. The user interface can be provided after the user device 176 has logged in to the cloud platform 106 using an appropriate authentication process. As shown, Figure 20 the user interface in
[0314] is a device management interface. The configuration manager 1928 can access and provide a list of edge devices 1902 that the cloud platform 106 can communicate with. To generate and display the list, the configuration manager 1928 can access the configuration data 1932, which stores the identifiers of the edge devices 1902 and the corresponding status of the edge devices. As shown, the user interface can display various information about each edge device 1902, including the device name, group name, edge status, platform name (e.g., processor architecture), operating system version, software package version (e.g., which can correspond to one or more components described herein), hostname (shown here as an IP address), the gateway name of the door to which the edge device is connected (if any), and the date identifying the last software upgrade. Figure 21As shown, the user has interacted with the management button of the "edge-ceg-arm32" device, and a drop-down menu with a list of commands has appeared. Although four commands are shown here, it should be understood that any number of commands can be provided to perform any of the operations described herein. As shown, the command list for this device includes: "Restart", which causes the configuration manager 1928 to send a restart command to the corresponding edge device 1902; "Reset to Factory Defaults", which causes the configuration manager 1928 to send commands and data to reset the edge device 1902 to the default configuration; "Deactivate Edge", which causes the configuration manager 1928 to send a command to deactivate the corresponding edge device 1902. The command list also includes "Upgrade OBB Software", which, when interacted with, can cause the configuration manager 1928 to send updated software to the corresponding edge device 1902 and cause the corresponding edge device 1902 to execute processor-executable instructions to install and configure the software according to the commands issued by the configuration manager 1928.
[0315] In an embodiment, when the upgraded software command is selected at the user interface provided by the configuration manager 1928, the configuration manager 1928 may provide another user interface to enable the user to select one or more software components, versions, or deployments to deploy to the corresponding edge device. An example of such an interface is shown in Figure 22 In an embodiment and as shown here, if the software version is already the latest (e.g., there are no available upgrades), the configuration manager 1928 may display a notification indicating that the software is up to date.
[0316] The configuration manager 1928 may also present optional fields (or other types of optional user interface elements) that enable the user to specify the software components to be deployed, upgraded, or otherwise provided to the edge device 1902. As Figure 22 shown, the user may select a software version (e.g., roll back to an earlier version, install the latest beta, test, or development version, etc.). Although only a single software component is shown, the configuration manager 1928 may manage any type of software, component, connector, or other processor-executable instructions that can be provided to and executed by the edge device 1902 in a similar manner. When a software upgrade is selected, the configuration manager 1928 may begin deploying the selected software to the edge device 1902 and may execute one or more scripts or processor-executable instructions to install and configure the selected software at the edge device 1902. The configuration manager 1928 may send data for installation to the edge device 1902 via the network 1904.
[0317] When deploying the selected component, the configuration manager 1928 may display another user interface indicating the status of the edge device 1902 and the deployment status. An example of such an interface is shown in Figure 23is shown in. As Figure 23 shown, the status of the most recent software deployment is "In Progress", indicating that the Configuration Manager 1928 is currently installing and configuring software on the Edge Device 1902. A historical list of other operations performed by the Configuration Manager 1928 may be shown in the status interface. Each item in the list may include the name of the action performed by the Configuration Manager 1928, the status of the corresponding item (e.g., "In Progress", "Completed", "Failed", etc.), the date and time stamp corresponding to the operation, and a message corresponding to the respective action (e.g., a status message, etc.). Any information presented on the user interface provided by the Configuration Manager 1928 may be stored as part of the Configuration Data 1932.
[0318] In some embodiments, the Configuration Manager 1928 is capable of performing a loading process, for example, by interacting with a programming device that configures the initial configuration of the Edge Device 1902. For example, the Configuration Manager 1928 may coordinate the distribution of verification information, authentication keys, and device registration in the Configuration Data 1932, which itself may include one or more private repositories storing device installation images or components 1934. For example, a cloud platform may communicate with one or more programming stations, which in some embodiments may include user devices 176 configured to generate the initial configuration of the Edge Device 1902. The programming station may authenticate the account associated with the Edge Device 1902 to be loaded and provide an access token, authorization information, and / or information for accessing the loaded Edge Device 1902 or communicating with the loaded Edge Device.
[0319] During the loading process, the Edge Device 1902 may communicate with the Cloud Platform 106 to receive device credentials for accessing the functionality of the Cloud Platform 106. In some embodiments, the Configuration Manager 1928 may generate credentials and / or access tokens based on information and / or authentication data associated with the Edge Device 1902 to be loaded. Once the access credentials and / or access tokens have been generated, the programming system may retrieve the factory-installed image corresponding to the Edge Device 1902 and provide it to the Edge Device 1902 for installation. The factory-installed image may include one or more "baseline" components 1934 or other software packages used by the Edge Device 1902 to operate the Cloud Platform 106 and communicate correctly with the Cloud Platform.
[0320] In some embodiments, the configuration manager 1928 may perform a bulk upgrade of multiple edge devices 1902. For example, the configuration manager 1928 may receive a request (e.g., from a user device 176, from an automatic update schedule, etc.) indicating that a set of edge devices 1902 is to be updated with additional or replacement components 1934. In some embodiments, the update may include an update to low-level software, such as an operating system image or a locally installed agent that coordinates the local installation of components deployed by the configuration manager 1928. Once the installation image is provided and installed on the edge device 1902, the edge device 1902 may communicate with the configuration manager 1928 using previously received authentication credentials to retrieve additional components 1934 utilized by the edge device 1902. The additional components 1934 may be specified by the user device 176 or may be specified via one or more configuration files installed via the installation image. Once the additional components 1934 are provided and deployed on the edge device 1902, the edge device 1902 may signal the programming device indicating that the edge device 1902 has been loaded and any necessary components 1934 have been successfully deployed thereon.
[0321] In some embodiments, an edge device 1902 may request one or more updates to components 1934 deployed thereon. When doing so, the edge device 1902 may use authentication credentials / access tokens generated during the loading process to send a request for updated components to the configuration manager 1928. In some embodiments, the edge device 1902 may request updated components 1934 in response to a signal from the configuration manager 1928, from a user device 176 communicating with the edge device 1902, or in response to user input at the edge device 1902. The edge device 1902 may then receive the updated components 1902, which may be deployed on the edge device 1902 as described herein.
[0322] In some embodiments, the configuration manager 1928 may perform a batch update or upgrade on multiple edge devices 1902. In one instance, a batch update may occur when multiple edge devices 1902 of the same or similar type, or that execute a common set of components 1934 or optimized components 1912 - 1916, are to be updated with new device software. Such an instance may occur when the lower-level or common software components 1934 of all such edge devices 1902 are changed or updated to a newer version. In another instance, a batch update may occur in response to a request to update multiple edge devices 1902 simultaneously. For example, the request may include identifiers of the edge devices 1902 to be updated and an indication of the software components 1934 to be deployed to perform the update on each edge device 1902. In some embodiments, the configuration manager 1928 may perform a similar operation to batch deploy one or more components 1934 to multiple edge devices 1902 (e.g., new or additional components rather than an update to an existing component).
[0323] In some embodiments, an operator of the system may provide a request (e.g., via the user device 176) to create a schedule for updating one or more edge devices 1902. The request may identify the edge devices 1902 to be updated and a specific timestamp (e.g., date, time, etc.) at which to update the identified edge devices 1902. In some embodiments, the request may specify different timestamps for different edge devices 1902, and / or different components 1934 or optimized components 1912 - 1916 to be updated for the edge devices 1902. In response to the request, the configuration manager 1928 may generate (or in some embodiments, modify) an update schedule for the edge devices 1902. The schedule may identify the edge devices 1902 to be updated, the software to be deployed or otherwise executed to perform the update, and one or more timestamps corresponding to when the update will occur. In some embodiments, the schedule may identify batch update operations.
[0324] To perform an update according to the schedule, the configuration manager 1928 may determine whether the current time identifies (or exceeds) the timestamp for the update of the edge devices 1912 identified in the schedule. After making such a determination, the configuration manager 1928 may retrieve the data for performing the update and send the data to the identified edge devices 1902 to perform the update according to the schedule. The configuration manager 1928 may then automatically update the schedule to indicate that the edge devices 1902 have been successfully updated after receiving an acknowledgement message from the edge devices 1902 indicating that the update is complete.
[0325] In some embodiments, if one or more edge devices 1902 are offline, in use, or otherwise unable to be updated according to schedule, the configuration manager 1928 may generate an error message and / or log that stores an indication that the edge device 1902 cannot be updated. In some embodiments, the error message and / or log may include an indication of the reason that the edge device 1902 cannot be updated according to schedule. In some embodiments, the configuration manager 1928 may monitor the status of the edge devices 1902 identified in the schedule to determine whether the edge devices are ready to receive an update (e.g., back online, out of use status, etc.). After determining that the edge device 1902 can be updated, the configuration manager 1928 may retrieve and send data to the edge device 1902 to perform the scheduled update.
[0326] The configuration manager 1928 may also provide the ability to access diagnostic or runtime information generated and / or stored at one or more edge devices 1902 without requiring the user device 176 to communicate directly with the edge device 1902 via a communication protocol such as, for example, the Secure Shell (SSH) protocol. In such embodiments, the configuration manager 1928 may provide one or more user interfaces to the user device 176 or expose one or more APIs that enable the user device 176 to request information from one or more logs, diagnostic reports, or other information generated and / or stored at the edge device 1902.
[0327] In response to receiving such a request, the configuration manager 1928 may generate one or more commands to the edge device 1902 identified in the request to retrieve the requested log, diagnostic report, or information. The commands may be instructions for one or more connector components stored and / or executed on the edge device 1902. After receiving the instruction, the edge device 1902 may retrieve the requested information and send it to the configuration manager 1928. In some embodiments, the configuration manager 1928 may display the information in one or more interactive elements on a graphical user interface provided to the user device.
[0328] The user interface provided by the configuration manager 1928 may also include a user interface that enables an operator to configure one or more edge devices 1902 or components deployed thereon. As Figure 24 shown, when the "Configure" button on the left menu is selected, the configuration manager 1928 may display a user interface presenting a list of configuration templates. Figure 24 And subsequent Figures 25 - 28 describes the configuration process of a cooler controller with the device name "VSExxx". However, similar operations may be performed for any software on any number of edge devices in order to configure one or more connectors, components, or other processor-executable instructions to facilitate communication between building devices.
[0329] The connectors implemented by the configuration manager 1928 can be used to connect different sensors and devices at the edge (e.g., building subsystem 122), retrieve and format the data retrieved from the building subsystem 122, and provide the data in one or more data structures to the cloud platform 106. The connectors can be similar to or can be or include any of the connectors described herein. The configuration manager 1928 can provide a user interface that enables a user to specify the parameters of a template connector, and then the template connector can be generated by the configuration manager 1928 and provided to the edge device 1902 to retrieve data.
[0330] In Figure 24 the example in, the operator has defined a new connector template for the VSExxx device. After creating the connector template for the VSExxx device, the configuration manager 1928 can present a user interface that enables the user to specify one or more parameters for the template connector. An example of such a user interface is shown in Figure 25 In Figure 25 as shown, the operator can specify the name of the template, the direction of the data (e.g., inbound is to receive data from a sensor, outbound is to provide data, and bidirectional includes functions for both inbound and outbound), and the use of sensor discovery (e.g., the device discovery function described herein). The configuration manager 1928 can also provide user interface elements that enable the operator to specify one or more applications to be executed on the edge device 1902 where the connector is implemented. In an embodiment, if no application is selected, a default application can be selected based on other parameters specified for the connector (e.g., data type or server field). The operator can develop an application for a specific edge device using one or more APIs that call the cloud platform 106 or the software development kit of the configuration manager 1928, enabling the cloud platform 106 to communicate with the edge device 1902 via the API.
[0331] In some embodiments, the configuration manager 1928 graphical user interface can provide interactive elements that enable the user to select to create a REST-based connector for a specified target edge device 1902. In one embodiment, to generate a REST-based connector, an application corresponding to the REST-based connector can be selected from a user interface element (shown here as a drop-down menu). In response to selecting the REST-based connector, the configuration manager 1928 can select a REST-based application that will be based on the one via Figures 24 - 28configured using the template of the graphical user interface shown in. The selected REST-based connector application may include instructions for exposing one or more regions of memory (e.g., which stores sensor measurements, etc.) via corresponding HTTPS requests.
[0332] In such embodiments, the connector template can be configured to define one or more endpoints and / or Uniform Resource Identifier (URI) parameters, which can be used to retrieve (e.g., using an HTTPS GET operation, etc.) or send (e.g., using an HTTPS POST operation, etc.) information between the cloud platform and the target edge device 1902 for which the connector is configured. To this end, the configuration manager 1928 can target device information that defines the location in the memory region at the target device 1902 where the data of interest is stored. The target device information can be used to specify how the endpoints of the REST-based connector are mapped to different memory regions on the target edge device 1902. In some embodiments, one or more parts or all of the target device information can be specified using Figures 25 - 28 the interactive user interface elements shown in. For example, the orientation of the REST-based connector can specify what types of requests the REST-based connector supports (e.g., GET, POST, combinations thereof).
[0333] After selecting the connector parameters and interacting with the "Next" button, the configuration manager 1928 can display a user interface that enables the operator to specify one or more server parameters of the connector (e.g., parameters for coordinating data retrieval or provision, port, address, device data, etc.). As Figure 26 shown, the user can select one or more fields from a list of fields (which can be added by selecting the "Add Field" button). After selecting a field, the configuration manager 1928 can provide a user interface that enables the operator to specify one or more parameters of the field (e.g., field name, property name, value type (e.g., data types such as string, integer, floating-point value, etc.), default value, whether the parameter is a required parameter, and one or more guiding notes that can be accessed when working with the corresponding connector via the user device 176).
[0334] As Figure 26As shown, the example fields correspond to different network characteristics of the cloud platform 106, authentication information used by the cloud platform 106, and fields specifying various aspects of how data is to be transmitted to / from the target edge device 1902. In some embodiments, the configuration manager 1928 may specify one or more default fields to be created and populated to create a REST-based connector. For example, the server parameters of the REST-based connector may utilize the IP address of the cloud platform 106, the port of the cloud platform 106, and the authentication information of the cloud platform 106 (e.g., API key, etc.). However, it should be understood that the server parameters are non-limiting, and any number of server parameters may be utilized when generating a REST-based connector, including alternative parameters or no server parameters. In some embodiments, the configuration manager 1928 may retrieve and populate the default values of the REST-based connector instead of specifying them through the graphical user interface described herein. In some embodiments, one or more of the server parameters may include specifying an endpoint at which to retrieve the data corresponding thereto. If the server parameter refers to a memory region of the cloud platform 106 (e.g., file, folder, database, etc.), the server parameter may include an indication of the location where the memory region is stored in the memory 126.
[0335] The operator may select the "Sensor Parameters" button to cause the configuration manager 1928 to display a user interface that enables the user to select one or more sensor data parameters for the connector template. An example of such an interface is shown in Figure 27 As shown in Figure 27 Sensor parameters may be similarly selected and added from the user interface elements provided by the configuration manager 1928. The sensor parameters may include parameters of sensors that communicate with the edge device 1902 using the connector template. As shown, fields similar to those provided for the server parameters may be specified for each field of the sensor parameters. In this example, the edge device communicates with a building subsystem 122 that collects data from four vibration sensors, and thus there are fields for the sensor parameters corresponding to each of the four vibration sensors. In an embodiment, the device discovery function described herein may be used to identify one or more configurations or sensors that may be provided to the configuration manager 1928 such that the template connector may be automatically populated.
[0336] As shown in Figure 27As shown, the example fields correspond to different sensor data characteristics and control characteristics of the target edge device 1912. In some embodiments, the sensor parameters of the target edge device 1902 may include authentication information used by the cloud platform 106 and fields specifying various aspects of how data is to be transmitted to / from the target edge device 1902. In some embodiments, the configuration manager 1928 may specify one or more default fields to be created and populated to create a REST-based connector. For example, the sensor parameters of a REST-based connector may include an endpoint location generated according to a predetermined pattern, a port of the target edge device 1902, and authentication information (e.g., API key, etc.) of the edge device platform 1902, and data will be transmitted via the port via the REST-based connector. However, it should be understood that the sensor parameters are non-limiting, and any number of server parameters may be utilized when generating a REST-based connector, including alternative parameters or no server parameters. In some embodiments, the configuration manager 1928 may retrieve and populate the default values of the REST-based connector instead of specifying them through the graphical user interface described herein. In some embodiments, one or more of the sensor parameters may include a specified endpoint at which the corresponding data is retrieved and / or published. If the sensor parameter refers to a memory area (e.g., file, folder, database, etc.) of the target edge device 1902 where data will be stored, retrieved, and / or published for access by other applications executing on the target edge device 1902, the sensor parameter may include an indication of the location in the memory of the target edge device 1902 where the memory area is stored.
[0337] Once the operator has defined all the sensor parameters, the operator can interact with the "Save" button to save the template in the configuration data 1932. When the operator wants to deploy a connector to the edge device 1902 using the generated template, the configuration manager 1928 can provide a corresponding user interface (in response to a request from the user device 176) that enables the deployment of one or more connectors. As Figure 28 shown, when interacting with the "Manage" button in the left menu, the configuration manager 1928 can present a user interface that enables the operator to deploy one or more connectors to a selected edge device. In this example, one edge device is listed, but it should be understood that the configuration manager 1928 can list and manage any number of edge devices. By interacting with the "Add Solution" button, the configuration manager 1928 can provide a user interface that allows the operator to select one or more of the generated connector templates, and then the connector templates can be deployed on the edge device 1902 using the techniques described herein.
[0338] In some embodiments, the configuration manager 1928 may then generate a connector for the target edge device 1902 using the selected template. For example, a connector component 1934 may be generated using the template and specific data associated with the target edge device 1902 (e.g., IP address, port information, authentication information, or other information). Generating the connector component 1934 may include populating each field specified during the template creation process with retrieved corresponding data about the target edge device 1902, which may be stored in the configuration data 1932 or specified via one or more user interfaces. Once deployed, the cloud platform 106 (or any of its components) may communicate with the target edge device 1902 via the deployed connector to retrieve sensor data, provide control signals, or perform other operations defined by the connector.
[0339] In embodiments where the connector is a REST-based connector, the cloud platform 106 (or any of its components) may use the IP address or domain name of the target edge device 1902 to access the target edge device 1902 and specify one or more endpoints and / or URI parameters to access and / or publish specific information. For example, the configuration manager 1928 may send control instructions for the target edge device 1902 by sending a POST command to a specific endpoint of the specified target edge device 1902 according to the configuration specified via the connector template. In another example, the configuration manager 1928 may send a GET command to one or more specific endpoints of the target edge device 1902 to retrieve sensor data corresponding to the endpoints. Similar operations may be used to retrieve logs, diagnostics, or runtime information of the target edge device 1902. According to the techniques described herein, the deployed connector component 1934 may be installed, updated, removed, or replaced.
[0340] Now referring to the operation of the optimization manager 1930, the optimization manager 1930 may optimize one or more of the components in the component 1934 by generating corresponding optimized components (e.g., optimized components 1912 - 1916) for execution on the target edge device 1902. As described herein, due to the inherent latency of cloud computing, cloud-based computing is impractical or impossible for real-time or near real-time data processing. To address these issues, the optimization manager 1930 may optimize and deploy one or more components 1934 for the target edge device 1902 such that the target edge device 1902 may execute the corresponding optimized components at the edge without having to perform cloud computing.
[0341] Component 1932 may include a machine learning model that uses data collected from building subsystem 122 as input. Example machine learning workflows may include preprocessing, prediction (or performing another type of machine learning operation), and postprocessing. Constrained devices (e.g., edge device 1902) typically may have fewer resources than cloud platform 106 to run machine learning workflows. This problem is complicated by the fact that typical machine learning workflows are written in dynamic languages such as Python. Although dynamic languages may accelerate the deployment of machine learning implementations, such languages are inefficient when it comes to resource usage and are not computationally efficient compared to compiled languages. Thus, machine learning models are typically developed in dynamic languages and then executed on large server clusters (e.g., cloud platform 106). Additionally, data is preprocessed and postprocessed by cloud platform 106 (e.g., by another cluster of computing devices, etc.) before and after the machine learning model prediction in the workflow.
[0342] Our approach to solving this problem is to combine machine learning and stream processing using components (e.g., optimized components 1912 - 1916) to be executed on edge device 1902. To this end, optimization manager 1930 may generate code that is compiled into code specific to the machine learning model and target edge device 1902, thus using the computing resources and memory of edge device 1902 as efficiently as possible. To this end, optimization manager 1930 may utilize two sets of APIs. One set of APIs is for stream processing and the other set of APIs is for machine learning. The stream processing APIs may be used to read data and perform preprocessing and postprocessing. The machine learning APIs may be executed on edge device 1902 to load the model, bind the model inputs to the data stream, and bind the outputs to a stream that can be further processed.
[0343] Optimization manager 1930 may support existing machine learning libraries as any new machine libraries, which may be developed as part of component 1934. Once the machine learning model is developed in its chosen framework, the machine learning model may define all preprocessing and postprocessing of inputs and outputs using API bindings that call the functions of optimization manager 1930. Once the code for the machine learning model and the preprocessing and postprocessing steps is developed, optimization manager 1930 may apply software optimization techniques and generate the optimized model and stream processing definition (e.g., optimized components 1912 - 1916) as a compiled language (e.g., C, C++, Rust, etc.). Then, optimization manager 1930 may compile the generated code while targeting the native binary code for target edge device 1902 using the runtime (e.g., one or more software configurations, operating systems, hardware acceleration libraries, etc.) already deployed on target edge device 1902.
[0344] One advantage of this method is that the operator developing the machine learning model does not need to manually optimize the machine learning model for any specific target edge device 1902. The optimization manager 1930 can automatically identify optimizations and apply the optimizations to the machine learning model based on the corresponding type of model, input data, and other operator-specified (e.g., via one or more user interfaces) parameters of the machine learning model. Some example optimizations include pruning. The optimization manager 1930 can generate code for the machine learning model that can execute efficiently while using fewer computing resources and having a faster inference time for the target edge device 1902. This enables effective edge processing without cumbersome manual intervention or optimization.
[0345] The model optimized by the optimization manager 1930 can be platform agnostic and can be developed using any suitable machine learning library or framework. Once the model has been locally developed and tested using the framework implemented or utilized by the optimization manager 1930, the optimization manager 1930 can use the inputs provided by the user to determine one or more model parameters. The model parameters can include, but are not limited to, model architecture type, number of layers, layer type, loss function type, layer architecture, or other types of machine learning model architecture parameters. The optimization manager 1930 can also enable the user to specify target system information (e.g., architecture, computing resources, other constraints, etc.). Based on this data, the optimization manager 1930 can select the best runtime for the model, which can be used to compile the model when targeting the target edge device 1902.
[0346] In an example implementation, an operator may first use a library such as TensorFlow to define a machine learning model, which may utilize more computing resources than are actually available at the target edge device 1902. Since the model is specified in a dynamic language, the model is agnostic to the target platform but can be implemented in the target runtime, which may be different from the runtime present at the target edge device 1902. Then, the optimization manager 1930 may perform one or more optimization techniques on the model to optimize the model across various dimensions. For example, the optimization manager 1930 may detect the type of processor present on the target edge device 1902 (e.g., via the configuration data 1932 or by communicating with the target edge device 1902 via the network 1904). To further illustrate this example, if the target of the model is to run on one or more GPUs and the target edge device 1902 includes a GPU available for machine learning processing, the optimization manager 1930 may configure the model to utilize the GPU-accelerated runtime of the target edge device. Similarly, if the target of the model is to run on a general-purpose CPU and the target edge device includes a general-purpose CPU available for machine learning processing, the optimization manager 1930 may automatically transform the model to execute on the CPU runtime of the target edge device 1902 (e.g., OpenVINO, etc.). In another example, if the target edge device 1902 is a resource-constrained device, such as an ARM platform, the optimization manager 1930 may transform the model to utilize the tflite runtime, which has a lower computational intensity and is optimized for ARM devices. Additionally, if not already installed, the optimization manager 1930 may deploy tflite to the target edge device 1902. Further, the optimization manager 1930 may further optimize the model to utilize vendor-specific libraries, such as armnn, when targeting ARM devices, for example.
[0347] Return to the functionality of the reference configuration manager 1928, which can monitor and identify connection failures in network 1904 or other networks to which edge device 1902 is connected. Specifically, the configuration manager can monitor connections between edge devices, identify connection failures between two edge devices, and determine suggestions for resolving the connection failures. The configuration manager 1928 can perform these operations, for example, in response to a corresponding request from user device 176. As described herein, the configuration manager 1928 can provide one or more network-based user interfaces that enable user device 176 to provide requests related to the connection functionality of the configuration manager 1928. The configuration manager 1928 can store connection data as part of the configuration information 1930. The connection data can include information related to which edge devices 1902 are connected to other devices in the network, one or more possible communication paths (e.g., via routers, switches, gateways, etc.) for communicating with edge device 1902, and network topology information (e.g., network topology information of network 1904, network topology information of networks to which network 1904 is connected, etc.), network status information, and other network characteristics described herein.
[0348] The configuration manager 1928 can utilize various techniques to diagnose connection problems on various networks (e.g., network 1904, underlying network, overlay network, etc.). For example, the configuration manager 1928 can ping local devices to check the connection of local devices behind the Airwall gateway, check tunnels to determine whether communication can travel through a Host Identity Protocol (HIP) tunnel (e.g., and create a tunnel between two Airwalls when no tunnel exists), ping an IP or hostname from an Airwall via the underlying network or overlay network (e.g., both of which can be included in network 1904), perform a route trace of an IP or hostname from an Airwall from the overlay network or underlying network, and check the connection to a HIP to Airwall relay (e.g., an Airwall that relays traffic between two other Airwalls when the two other Airwalls cannot communicate directly on the underlying network due to potential Network Address Translation (NAT) issues), and other functions.
[0349] Based on a request from user device 176 and based on network information in configuration data 1932, configuration manager 1928 can automatically select and perform operations to check for and diagnose potential connectivity problems between at least two edge devices 1902 (or between an edge device 1902 and another computing system described herein, or between two other computing systems communicating via network 1904). Automatic detection and diagnosis of network connectivity problems is useful because, without the techniques of the present invention, an operator may not have all the information or resources to manually detect or correct connectivity problems. Some example network problems include: Airwalls that need to comply with relay rules in order to be able to communicate via a relay because these Airwalls do not have a direct underlying connection; firewall rules inadvertently blocking HIP ports and thus preventing a connection; or an underlying network connection interruption due to a gateway and its local device not being set up to route to a remote device; and other problems.
[0350] Configuration manager 1928 can detect network settings (e.g., portions of configuration data 1932) that have been misconfigured and are causing connectivity problems between two or more devices. Some example network configuration problems can include disabled devices, disabled gateways, disabled networks or subnets, or rules (e.g., blocked ports, blocked connection capabilities, etc.) that otherwise prevent traffic between two or more devices. Using a user interface provided by configuration manager 1928, user device 176 can select two or more devices to be checked for and diagnosed for connectivity. Based on the results of its analysis, configuration manager 1928 can provide one or more suggestions in a network-based interface to resolve any detected connectivity problems.
[0351] Some example conditions in network 1904 that configuration manager 1928 can detect include connection rules (or lack of connection rules) in the underlying or overlay network that prevent devices from connecting, port filtering that blocks Internet Control Message Protocol (ICMP) traffic, offline gateways (e.g., Airwalls), or lack of configuration to communicate with remote devices, etc. To detect these conditions, configuration manager 1928 can identify and maintain various information about the network state in configuration data 1932, including device group policies and blocks; the state (e.g., enabled, disabled) of devices, gateways (e.g., Airwalls), and overlay networks; relay rule data; local device pings; remote device pings over the overlay network; information from gateway underlying network pings and BEX (e.g., HIP tunnel handshakes); gateway connection data (e.g., whether a gateway has successfully connected to other Airwalls); relay probes; and relay diagnostic information; and other data. The user interface provided by configuration manager 1928 to implement connectivity functionality is shown in Figures 29 - 34 is shown.
[0352] Reference Figure 29 , showing an example user interface that can be provided by the configuration manager 1928 to perform the connection functions described herein. As shown, the operator can select one or more source devices (e.g., edge device 1902, other computing systems described herein) and one or more destination devices (e.g., another edge device 1902, other computing systems described herein, etc.) to evaluate the connection between the selected devices. The operator can also provide a hostname or IP address as the source device or destination device. After selecting the devices, the configuration manager 1928 can access the network topology information in the configuration data 1932 and generate a graph indicating the communication path between the two devices (e.g., via network 1904, which may include one or more gateways).
[0353] The configuration manager 1928 can then present the generated graph showing the communication path on another user interface. An example of such a user interface is shown in Figure 30 . As shown in Figure 30 , the user interface includes a button labeled "Check Connection" that, when interacted with, causes the user device 176 to send a request to the configuration manager 1928 to check the connection between the two selected devices. Also as shown, the user interface can include a graphical representation of the communication path between the two devices, including the names of one or more gateways to which each selected device is connected. When the operator selects the "Check Connection" button, the configuration manager 1928 can begin performing the various connection checks described herein. In an embodiment, the configuration manager 1928 can perform one or more connection operations in parallel to improve computational efficiency. In doing so, the configuration manager 1928 can analyze the results of the diagnostic tests performed between the two devices to determine whether the connection is successful.
[0354] While the configuration manager 1928 is performing the connection check, the configuration manager 1928 can display another user interface showing the status of the diagnostic operations. An example of such a user interface is shown in Figure 31 . As shown in the user interface of Figure 31 , the connection status and suggestions can display "Waiting for results". When each diagnostic test is completed, the configuration manager 1928 can dynamically update the user interface to include each result of each diagnostic test under the "Connection Status" area. The user interface can be dynamically updated to display a list of each completed diagnostic test and its corresponding status (e.g., passed, failed, waiting for results, etc.). Once all diagnostic tests have been performed, the configuration manager 1928 can provide a list of suggestions to resolve any detected connection issues.
[0355] Figure 32Shows an example user interface provided by the configuration manager 1928, which shows a list of diagnostic tests executed to check the connection between two selected devices. As shown, passed diagnostic tests are marked with a tick, while failed diagnostic tests are marked with an "X". Additionally, the connection status information may include a "score" for the connection of two or more devices. The score may be proportional (or inversely proportional) to, for example, the round-trip time of the communication between the corresponding devices. In this example, the connection between the two selected devices is successful, and thus no recommendations are provided. However, as shown in the graphical area of the user interface, the configuration manager 1928 determines that the two selected devices can only be connected via a repeater. The configuration manager 1928 has accordingly updated the graphical representation of the network topology to indicate that communication has occurred via the repeater.
[0356] Figure 33 Shows another example user interface generated for two different selected devices that cannot communicate successfully. As shown, the configuration manager 1928 determines that the connection has failed due to a blocked port. Accordingly, the configuration manager 1928 has generated a recommendation indicating that the blocked port 10500 should be unblocked to resolve the connection issue. As shown, the graphical representation of the network topology has been updated (e.g., in red) to indicate that the configuration manager 1928 has determined that the first device ("Marrone Mac") cannot communicate with the Airwall ("HS-75w-skene-0064"). When a connection problem is detected, the configuration manager 1928 can determine the connections between each device (and intermediate devices) in the network between the two selected devices, and update the graphical representation (e.g., in green if there is successful communication, or in red if the communication is unsuccessful) to indicate which devices can communicate with each other.
[0357] Some example recommendations include: "You have a blocking policy. This will override any other policies and prevent communication. Remove any blocking policies to enable communication", "The device cannot be accessed from its Airwall via ICMP ping. Check if the device is connected and routable, and check if the device responds to ICMP messages.", "You need a policy for communication.", "These Airwalls do not appear to be able to access each other directly. Add them to the relay rules to ensure they can communicate.", "You have a disabled device group in your policy, or the overlay network is disabled. Make sure everything is enabled and check the connection again.", "The remote device is accessible via ping from its Airwall but not from the source device. This may be because the route back to the remote device with the correct IP is not configured correctly. <ip>This can be fixed by enabling SNAT on the underlying port group of the Airwall of the remote device. ", "The source device can directly ping the remote device but no Airwall tunnel is formed. This may be because the devices can access each other at the underlying layer. ", "The Airwalls can ping each other but cannot form a HIP tunnel. Please ensure that they do not block port 10500. ", "The Airwalls comply with the relay rules but cannot access any repeater. This may indicate that port 10500 is blocked from going out from the Airwall, or the repeater cannot access on this port. Please ensure that port 10500 can go out from the Airwall and the repeater can access it. ", "These Airwalls can all access the repeater but cannot access the same relay. Please ensure that at least one repeater can be accessed from both Airwalls. ", and "The peer Airwall cannot be pinged, but the peer Airwall can ping this peer Airwall. This may be due to a routing problem or ICMP being blocked. Either fix the routing problem or add a relay rule to ensure that they can communicate. " and other suggestions.
[0358] The configuration manager 1928 can detect or implement port filtering (e.g., including layer 4 rules), provide tunnel statistics, pass application traffic (e.g., RDP, HTTP / S, SSH, etc.), and check cloud routing and security groups, as well as other functions. In some embodiments, the configuration manager 1928 can enable a user to select network objects and indicate IP addresses within the network objects. In addition to suggestions, the configuration manager 1928 can also provide links that, when interacted with, cause the configuration manager 1928 to attempt to automatically resolve detected connection problems. For example, the configuration manager 1928 can enable one or more devices, device groups, or overlay networks, add one or more gateways to the relay rules, or activate the managed relay rules for the overlay network, as well as other operations.
[0359] Additional functions of the configuration manager 1928 include spoofing traffic from the local device so that the gateway can directly ping the traffic or pass the traffic to the remote device to address limitations that are not controlled by the configuration manager 1928 related to initiating traffic on the device. The configuration manager 1928 can mine data from the policy builder that may indicate what the connection intent should be, and add the ability to detect device-to-device traffic on the overlay network. The configuration manager 1928 can provide a beacon server on the overlay network to detect whether the beacon server can be accessed by the selected device. The configuration manager 1928 can test the basic connectivity of the overlay network by determining whether the selected device can communicate with another device on the network.
[0360] Reference Figure 34 , which is a flowchart of an example method 3400 for implementing a gateway component on a building device according to an exemplary embodiment. In various embodiments, the cloud platform 106 or any of its components (e.g., the configuration manager 1928) executes method 3400. However, it should be understood that any computing system that can configure one or more building devices, as described herein, can execute any or all of the operations described in connection with method 3400. For example, in some embodiments, the BMS server 804, the network engine 816, the gateway 1004, the building agent device 1105, the gateway manager 1202, or the cluster gateway 1206 executes method 3400. In other embodiments, the local server 702 can execute method 3400. The computing system that executes the operations of method 3400 is referred to herein as the "cloud platform".
[0361] In step 3405, the cloud platform may receive a request to configure a target building device (e.g., the edge device 1902). In one example, the request may be provided in response to an interaction with one or more graphical user interfaces provided by the cloud platform. In another example, the request may be provided via an API call of the cloud platform. The request may be received from a user device (e.g., the user device 176) and may identify the target building device to be configured. In some implementations, the request may specify to generate a connector template. In some implementations, the request may identify a connector template to be utilized to generate a connector component for the target building device. The connector component may include any one of the components 1934 or the optimized components 1912 - 1916 described in connection with Figure 19 or any connector described herein. The connector component may include software, such as a script, a configuration file, or processor-executable instructions, that facilitates communication between the target building device and one or more other devices, such as the cloud platform. In some implementations, a connector may be generated such that the target building device can communicate with other devices, including any server, user device, gateway, or computing device described herein.
[0362] In step 3410, the cloud platform may identify a connector template for the target building device based on the target building device. The connector template may include one or more parameters of a connector component configured to enable the target building device to communicate with the cloud computing system. To this end, the cloud platform may execute in connection with Figures 19 - 33 Any functions of the described configuration manager 1928 and / or optimization manager 1930. The connector template may include a plurality of parameters that will be populated with information of the target building device to configure and generate a corresponding connector template for the target building device. In some embodiments, the cloud platform may identify a connector template from a request (the request itself may specify a connector template for the target building device). In some embodiments, a connector template may be identified based on the target building device identified in the request. For example, the cloud platform may determine that the target building device is associated with a specific connector template and retrieve the connector template from a storage device of the cloud platform (e.g., configuration data 1932).
[0363] In some embodiments, the cloud platform may generate a connector template in response to a request. To this end, the cloud platform may access information about the target building device to identify one or more parameters to be included in the template. Information about the target building device may be stored in a storage device of the cloud platform (e.g., configuration data 1932) or may be specified via a user device. In some embodiments, the cloud platform may perform any of the operations described in conjunction with Figures 19 - 28 to generate a connector template for the target building device. For example, the cloud platform may present one or more graphical user interfaces that display one or more interactive elements corresponding to one or more parameters of the connector template, as described herein.
[0364] Any parameter of the connector template described herein may be specified by a user or retrieved from a storage device, including any one of communication direction, one or more server fields, one or more sensor fields, and one or more default values. In some embodiments, it may be specified that the connector template will be used to generate a REST connector. In such embodiments, the parameters of the connector template may include the domain or IP address of the cloud platform and / or the target building device, one or more communication ports through which data will be transmitted, and / or one or more endpoints from which different information is retrieved and / or to / from which different information is published to / from the target building device.
[0365] The graphical user interface provided by the cloud platform may include one or more interactive elements corresponding to the parameters of the connector template, as Figures 25 - 27 As shown. The cloud platform can receive one or more parameters from a user device via one or more interactive elements displayed on a user interface and store the parameters as part of a configuration template for a target building device. The cloud platform can use the connector template parameters to generate a connector template for the target building device in response to a request. For example, the cloud platform can store the parameters as fields of the connector template, and the fields will be filled with information of the target building device to generate and configure the corresponding connector component. In some embodiments, one or more of the fields can be pre-filled with information specified via one or more graphical user interfaces or information specified via information about the target building device retrieved from the storage device of the cloud platform.
[0366] In step 3415, the cloud platform can generate a connector component for the target building device based on one or more parameters. To this end, the cloud platform can use information related to the building device (including any default or pre-filled values present in the connector template) to fill one or more of the fields of the connector template. The connector template can then be used to configure the connector component to conform to the documents, configurations, and properties of the target building device. For example, the connector can map the corresponding endpoints (e.g., for requesting published information) to the corresponding metadata of its corresponding information (e.g., the type of sensor data retrieved via the endpoint, the type of any sensors present on the target building device, or the location in the memory of the target building device from which information is to be retrieved or to which information is to be published and / or stored (e.g., a file, a folder, a location in the memory, etc.)). In embodiments where the connector component includes the REST API described herein, the REST API can be used to map one or more endpoints of the cloud platform and / or the target building device to the corresponding information or memory location.
[0367] In step 3420, the cloud platform can deploy the connector component to the target building device. According to the techniques described herein, deploying the generated connector component can include sending the connector component to the specified target building device. For example, the cloud platform can send one or more packages or computer-executable instructions that cause the target building device gateway to install and / or execute the connector component. After sending the connector component, the cloud platform can monitor the target building device to confirm that the connector has been successfully deployed on the target building device. In some embodiments, if the deployment is unsuccessful, the cloud platform can store and / or send an error message or error log.
[0368] Once the connector component is deployed, the cloud platform can use the deployed connector component to coordinate the automatic or manual data retrieval to / from the target building device. In some embodiments, the cloud platform can receive a request to access data of the target building device from a user device. In response to the request, the cloud platform can use the connector component to retrieve data from the target building device by accessing the endpoint corresponding to the requested data. In some embodiments, the specific endpoint corresponding to the data can be retrieved from the corresponding connector template or stored as part of the configuration data (e.g., configuration data 1932) of the target building device stored as part of the deployed connector component.
[0369] In some embodiments, the generated connector component can be reused for other building devices having a similar type, sensors, or data collection mode as the target building device. For example, once generated, the cloud platform can store the connector template generated for the target building device in association with various characteristics of the target building device. After receiving a request to generate a second connector component for a second target building device, the cloud platform can retrieve the characteristics of the second target building device. If sufficient characteristics of the second target building device match such that the previously generated connector template for the target building device is suitable for the second target building device, the cloud platform can retrieve the previously generated connector template and use the connector template to generate a second connector component for the second target building device.
[0370] In some embodiments, the connector component for the second building device can be automatically generated without any additional user input. In some embodiments, additional input (e.g., device input or device characteristics) can be provided to generate the connector component according to the techniques described herein. Once generated, the connector component can be sent to the second building device for deployment as described herein.
[0371] In some embodiments, the cloud platform can update various components (e.g., component 1934, optimized components 1912 - 1916, etc.) of one or more building devices based on requests, update schedules, or bulk update / upgrade instructions from a user device, as described in connection with Figure 19 For example, the cloud platform can receive a request to update the target building device from a user device. In response to the request, the cloud platform can send one or more of application data or an update image to the target building device to update the target building device according to a second request, as described herein.
[0372] In some embodiments, the cloud platform may perform one or more operations of the optimization manager 1930 described herein to generate one or more optimized components (e.g., optimized components 1912 - 1916) for a target building device. In one example, the component to be optimized may be a machine learning model, such as a neural network. To optimize the component (e.g., in response to a request from a user device to optimize a machine learning model of a target building device), the cloud platform may identify the machine learning model to be deployed to the target building device. As described in conjunction with Figure 19 The cloud platform may select a runtime for the machine learning model. The runtime may be selected based on the processing components and / or processing architecture of the target building device, which may be determined by querying the target building device or by accessing the stored configuration data (e.g., configuration data 1932) of the target building device.
[0373] The cloud platform may generate an optimized component for the target building device based on the runtime and the machine learning model, for example, by adapting the parameters of the machine learning model to the target runtime. In some embodiments, the optimized component may include deploying the target runtime to the target building device or including the target runtime in the optimized component to be deployed at the target building device. In some embodiments, the cloud platform may prune, quantize, or otherwise optimize various parameters of the machine learning model based on the processing capabilities (e.g., memory, number of processors, or processing capabilities, etc.) of the target building device. Once the optimized component is generated according to the techniques described herein, the cloud platform may send the optimized component to the target building device for deployment, as described herein.
[0374] Configuration of Exemplary Embodiments
[0375] The construction and arrangement of the systems and methods shown in the various exemplary embodiments are illustrative only. Although only a few embodiments are described in detail in this disclosure, many modifications are possible (e.g., changes in the size, dimensions, structure, shape and proportions, parameter values, installation arrangements, use of materials, colors, orientations, etc. of the various elements). For example, the positions of the elements may be reversed or otherwise changed, and the nature or number or position of the discrete elements may be altered or varied. Accordingly, all such modifications are intended to be included within the scope of this disclosure. The order or sequence of any process or method steps may be changed or re - ordered according to alternative embodiments. Other substitutions, modifications, changes, and omissions may be made to the design, operating conditions, and arrangement of the exemplary embodiments without departing from the scope of this disclosure.
[0376] The present disclosure contemplates methods, systems, and program products on any machine-readable medium for accomplishing various operations. Embodiments of the present disclosure may be implemented using an existing computer processor or by a special computer processor for a suitable system incorporated for this or another purpose, or by a hard-wired system. Embodiments within the scope of the present disclosure include program products comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media can be any available media accessible by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can include RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store the desired program code in the form of machine-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer or other machine with a processor. When information is transferred or provided to a machine via a network or another communication connection (either hardwired, wireless, or a combination of hardwired or wireless), the machine properly views the connection as a machine-readable medium. Thus, any such connection is properly termed a machine-readable medium. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machine to perform a particular function or a group of functions.
[0377] Although the figures illustrate a particular order of method steps, the order of the steps may be different than that depicted. Also, two or more steps may be executed concurrently or partially concurrently. Such variations will depend on the software and hardware systems selected and the designer's choice. All such variations are within the scope of the present disclosure. Similarly, software implementations can be accomplished with standard programming techniques with rule-based logic and other logic to accomplish various connection steps, processing steps, comparison steps, and decision steps.
[0378] References to "or" may be construed as inclusive such that any item described using "or" may indicate any one of the described items, more than one, and all.
[0379] In various embodiments, the steps and operations described herein may be performed on one processor or in combination of two or more processors. For example, in some embodiments, various operations may be performed in a central server or a collection of central servers configured to receive data from one or more devices (e.g., edge computing devices / controllers) and perform operations. In some embodiments, the operations may be performed by a local controller or computing device (e.g., an edge device), such as a controller dedicated to and / or located within a particular building or portion of a building. In some embodiments, the operations may be performed by a combination of one or more central or off-site computing devices / servers and one or more local controllers / computing devices. All such embodiments are contemplated within the scope of the present disclosure. Further, unless otherwise specified, when the present disclosure refers to one or more computer-readable storage media and / or one or more controllers, such computer-readable storage media and / or one or more controllers may be implemented as one or more central servers, one or more local controllers or computing devices (e.g., edge devices), any combination thereof, or any other combination of storage media and / or controllers, regardless of the location of such devices.< / ip>
Claims
1. A system, comprising: One or more processors of a cloud computing system, the one or more processors being configured to: Receive a request to configure a target building device; Based on the target building device, identify a connector template for the target building device, the connector template including one or more parameters of a connector component configured to enable communication between the target building device and the cloud computing system; Generate the connector component for the target building device based on the one or more parameters; And Deploy the connector component to the target building device.
2. The system according to claim 1, wherein the one or more processors are further configured to generate the connector template in response to the request.
3. The system according to claim 1, wherein the one or more processors are further configured to: Present one or more graphical user interfaces that present one or more interactive elements corresponding to the one or more parameters; and Receive the one or more parameters from a user device via the one or more interactive elements.
4. The system according to claim 1, wherein the one or more parameters include one or more of a communication direction, one or more server fields, one or more sensor fields, and one or more default values.
5. The system according to claim 1, wherein the connector component includes a Representational State Transfer (REST) Application Programming Interface (API).
6. The system according to claim 1, wherein the one or more processors are further configured to: Receive a request from a user device to access data of the target building device; and Retrieve the data from the target building device using the connector component.
7. The system according to claim 1, wherein the one or more processors are further configured to: Store the connector template; Receive a request to generate a second connector component for a second target building device; and Generate the second connector component for the second target building device using the connector template.
8. The system according to claim 1, wherein the one or more processors are further configured to: Receive a second request from a user device to update the target building device; and Send one or more of application data or an update image to the target building device to update the target building device according to the second request.
9. The system according to claim 1, wherein the one or more processors are further configured to: Identify a machine learning model to be deployed to the target building device; Select a runtime of the machine learning model; and Generate an optimized component for the target building device based on the runtime and the machine learning model.
10. The system according to claim 9, wherein the one or more processors are configured to further generate the optimized component based on a processing component of the target building device.
11. A method, comprising: Receiving, by one or more processors of a cloud computing system, a request to configure a target building device; Based on the target building device identifier, one or more processors determine a connector template for the target building device, the connector template including one or more parameters of a connector component configured to enable communication between the target building device and the cloud computing system; Based on the one or more parameters, one or more processors generate the connector component for the target building device; and deploy the connector component to the target building device by the one or more processors.
12. The method according to claim 11, further comprising: In response to the request, one or more processors generate the connector template.
13. The method according to claim 11, further comprising: presenting, by the one or more processors, one or more graphical user interfaces presenting one or more interactive elements corresponding to the one or more parameters; and receiving, by the one or more processors, the one or more parameters from a user device via the one or more interactive elements.
14. The method according to claim 11, wherein the one or more parameters include one or more of communication direction, one or more server fields, one or more sensor fields, and one or more default values.
15. The method according to claim 11, wherein the connector component includes a Representational State Transfer (REST) Application Programming Interface (API).
16. The method according to claim 11, further comprising: receiving, by the one or more processors, a request from a user device to access data of the target building device; and retrieving, by the one or more processors, the data from the target building device using the connector component.
17. The method according to claim 11, further comprising: storing, by the one or more processors, the connector template; receiving, by the one or more processors, a request to generate a second connector component for a second target building device; and generating, by the one or more processors, the second connector component for the second target building device using the connector template.
18. The method according to claim 11, further comprising: receiving, by the one or more processors, a second request from a user device to update the target building device; and sending, by the one or more processors, one or more of application data or an update image to the target building device to update the target building device according to the second request.
19. A non-transitory computer-readable memory having instructions embodied thereon that, when executed by one or more processors of a cloud computing system, cause the one or more processors to perform operations including: receiving a request to configure a target building device; based on the target building device identifier, determining a connector template for the target building device, the connector template including one or more parameters of a connector component configured to enable communication between the target building device and the cloud computing system; generating, based on the one or more parameters, the connector component for the target building device; Deploy the connector component to the target building device; Receive a request to access data of the target building device; And Retrieve the data from the target building device using the connector component.
20. The non-transitory computer-readable memory according to claim 19, wherein the operation further includes generating the connector template in response to the request.
Citation Information
Patent Citations
Visualization tool for real-time dataflow programming language
US10628135B2
Syntax translation from first syntax to second syntax based on string analysis
US10831163B2
Composition of pattern-driven reactions in real-time dataflow programming
US11561774B2
Intelligent edge computing platform with machine learning capability
US11616839B2
Building system with string mapping based on a sequence to sequence neural network
US11693374B2