Patent Publication Number: US-2023153643-A1

Title: Building data platform with digital twin triggers and actions

Description:
BACKGROUND 
     This application relates generally to a building system of a building. This application relates more particularly to systems for managing and processing data of the building system. 
     A building may aggregate and store building data received from building equipment and/or other data sources. The building data can be stored in a database. The building can include a building system that operates control algorithms against the data of the database to control the building equipment. However, the development of the control algorithms may be time consuming and require a significant amount of software development. Furthermore, the control algorithms may lack flexibility to adapt to changing circumstances in the building. 
     SUMMARY 
     A building system including one or more storage devices storing instructions thereon that, when executed by one or more processors, cause the one or more processors to store a data structure of a digital twin of an entity of a building, the data structure storing information associated with at least one of the entity or entities of the building. The instructions cause the one or more processors to determine that a trigger rule of the digital twin is triggered by comparing at least some of the information of the data structure against one or more conditions of the trigger rule, determine an action of an action rule of the digital twin responsive to determining that the trigger rule is triggered by executing the action rule, and cause one or more devices to operate based on the action determined by the action rule. 
     In some embodiments, the instructions cause the one or more processors to provide the action to one or more other digital twins, determine that the action triggers one or more trigger rules of the one or more other digital twins, and determine one or more actions of one or more action rules of the one or more other digital twins by executing the one or more action rules responsive to the action triggering the one or more trigger rules. 
     In some embodiments, the data structure is a graph data structure including nodes and edges between the nodes, wherein the nodes represent the entity, the entities, and data points of the entity and the entities. In some embodiments, the edges represent relationships between the entity, the entities, and the data points of the entity and the entities. 
     In some embodiments, the instructions cause the one or more processors to cause the one or more devices to operate based on the action by sending a command to the one or more devices to perform the action or store the action in the data structure and retrieve the action from the data structure and send the command based on the action retrieved from the data structure to the one or more devices. 
     In some embodiments, the instructions cause the one or more processors to perform a learning algorithm to learn the trigger rule and the action rule. 
     In some embodiments, the instructions cause the one or more processors to perform a learning algorithm to learn one or more first parameters for the trigger rule and subsequently learn one or more second parameters for the action rule based at least in part on the one or more first parameters for the trigger rule. 
     In some embodiments, the instructions cause the one or more processors to learn one or more parameters of the trigger rule or the action rule by adjusting a value of the one or more parameters of the trigger rule or the action rule to different values and simulating one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule. In some embodiments, the instructions cause the one or more processors to determine one or more updated values for the one or more parameters of the trigger rule or the action rule based on the one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule. 
     In some embodiments, the instructions cause the one or more processors to determine the one or more updated value for the one or more parameters of the trigger rule or the action rule by determining a particular reward for the one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule, training a model that predicts a reward based on the particular reward for the one or more states and the different values of the one or more parameters of the trigger rule or the action rule, and performing an optimization that determines the one or more updated value for the one or more parameters of the trigger rule or the action rule based on the model and the reward. 
     In some embodiments, the instructions cause the one or more processors to generate the digital twin by identifying actions and data associated with the entity based on the data structure, identifying that the entities are related to the entity based on the data structure, identifying actions and data associated with the entities based on the data structure, and generating the trigger rule and the action rule based on the actions and the data associated with the entity and the actions and the data associated with the entities. 
     In some embodiments, the instructions cause the one or more processors to generate the trigger rule and the action rule based on the actions and the data associated with the entity and the actions and the data associated with the entities by determining trigger rules for the data of the entity and the data of the entities, determining action rules for the actions of the entity and the actions of the entities, simulating combinations of the trigger rules and action rules and determining rewards for the combinations, and selecting the trigger rule and the action rule from the combinations of the trigger rules and the action rules based on the rewards of the combinations. 
     In some embodiments, the instructions cause the one or more processors to generate the trigger rule and the action rule based on the actions and the data associated with the entity and the actions and the data associated with the entities by determining trigger rules for the data of the entity and the data of the entities, the trigger rules including the trigger rule, determining action rules for the actions of the entity and the actions of the entities, the action rules including the action rule, monitoring behavior of the building system of the building, determine a relationship between the trigger rule of the trigger rules and the action rule of the action rules indicated by the behavior of the building system, and selecting the trigger rule from the trigger rules and the action rule from the action rules based on the relationship. 
     Another implementation of the present disclosure is a method including storing, by a processing circuit, a data structure of a digital twin of an entity of a building, the data structure storing information associated with at least one of the entity or entities of the building, determining, by the processing circuit, that a trigger rule of the digital twin is triggered by comparing at least some of the information of the data structure against one or more conditions of the trigger rule, and determining, by the processing circuit, an action of an action rule of the digital twin responsive to determining that the trigger rule is triggered by executing the action rule. The method further includes causing, by the processing circuit, one or more devices to operate based on the action determined by the action rule. 
     In some embodiments, the method includes providing, by the processing circuit, the action to one or more other digital twins, determining, by the processing circuit, that the action triggers one or more trigger rules of the one or more other digital twins, and determining, by the processing circuit, one or more actions of one or more action rules of the one or more other digital twins by executing the one or more action rules responsive to the action triggering the one or more trigger rules. 
     In some embodiments, the data structure is a graph data structure including nodes and a edges between the nodes, wherein the nodes represent the entity, the entities, and data points of the entity and the entities. In some embodiments, the edges represent relationships between the entity, the entities, and the data points of the entity and the entities. 
     In some embodiments, causing, by the processing circuit, the one or more devices to operate based on the action includes sending a command to the one or more devices to perform the action or store the action in the data structure and retrieve the action from the data structure and send the command based on the action retrieved from the data structure to the one or more devices. 
     In some embodiments, the method includes performing, by the processing circuit, a learning algorithm to learn the trigger rule and the action rule. 
     In some embodiments, the method includes performing, by the processing circuit, a learning algorithm to learn one or more first parameters for the trigger rule and subsequently learn one or more second parameters for the action rule based at least in part on the one or more first parameters for the trigger rule. 
     In some embodiments, the method includes learning, by the processing circuit, one or more parameters of the trigger rule or the action rule by adjusting a value of the one or more parameters of the trigger rule or the action rule to different values, simulating one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule, and determining one or more updated values for the one or more parameters of the trigger rule or the action rule based on the one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule. 
     In some embodiments, the method includes generating, by the processing circuit, the digital twin by identifying actions and data associated with the entity based on the data structure, identifying that the entities are related to the entity based on the data structure, identifying actions and data associated with the entities based on the data structure, and generating the trigger rule and the action rule based on the actions and the data associated with the entity and the actions and the data associated with the entities. 
     A building system including one or more storage devices storing instructions thereon and one or more processors, wherein the one or more processors execute the instructions causing the one or more processors to store a data structure of a digital twin of an entity of a building, the data structure storing information associated with at least one of the entity or entities of the building. The instructions cause the one or more processors to determine that a trigger rule of the digital twin is triggered by comparing at least some of the information of the data structure against one or more conditions of the trigger rule, determine an action of an action rule of the digital twin responsive to determining that the trigger rule is triggered by executing the action rule, and cause one or more devices to operate based on the action determined by the action rule. 
     Another implementation of the present disclosure is a building system including one or more storage devices storing instructions thereon that, when executed by one or more processors, cause the one or more processors to receive an indication to execute an artificial intelligence (AI) agent of a digital twin, the digital twin including a graph data structure, the graph data structure including nodes representing entities of a building and edges between the nodes representing relationships between the entities of the building. The instructions cause the one or more processors to execute the AI agent based on data of the building to generate an inference of a future data value of a data point of the building for a future time and store at least one of the inference, or a link to the inference, in the graph data structure. 
     In some embodiments, wherein the instructions cause the one or more processors to store at least one of the inference, or the link to the inference, in a node of the graph data structure with an edge between an entity node of the nodes representing an entity associated with the inference and the node. 
     In some embodiments, the instructions cause the one or more processors to receive a measured data value of the data point at the future time from building equipment of the building, compare the measured data value for the data point to the future data value of the inference to determine an error, and train the AI agent with the error. 
     In some embodiments, the AI agent includes a machine learning model that predicts the inference based on the data of the building. 
     In some embodiments, the instructions cause the one or more processors to retrieve a model from a model storage database in response to receiving the indication to execute the artificial intelligence (AI) agent and cause a client to run and execute the model based on the data of the building to generate the inference and return the inference. 
     In some embodiments, the instructions cause the one or more processors to add the indication to execute the AI agent to a job request topic, wherein the AI agent reads the job request topic and the AI agent executes responsive to reading the indication from the job request topic and add the inference to a job response topic, wherein a system that generates the indication reads the inference from the job response topic. 
     In some embodiments, the AI agent includes a trigger rule and an action rule. In some embodiments, the instructions cause the one or more processors to determine that the trigger rule is triggered by comparing information of the graph data structure against one or more conditions of the trigger rule, determine an action of the action rule responsive to determining that the trigger rule is triggered by executing the action rule, and cause one or more devices to operate based on the action determined by the action rule. 
     In some embodiments, the instructions cause the one or more processors to generate the digital twin by identifying actions and data associated with an entity based on the graph data structure, wherein the digital twin is associated with the entity, identifying that the entities are related to the entity based on the graph data structure, identifying actions and data associated with the entities based on the graph data structure, and generating the trigger rule and the action rule based on the actions and the data associated with the entity and the actions and the data associated with the entities. 
     In some embodiments, the graph data structure including a nodes and the edges between the nodes, wherein the nodes represent an entity, entities, and data points of the entity and the entities. In some embodiments, the edges represent relationships between the entity, the entities, and the data points of the entity and the entities. 
     In some embodiments, the instructions cause the one or more processors to cause the one or more devices to operate based on the action by sending a command to the one or more devices to perform the action or store the action in the graph data structure and retrieve the action from the graph data structure and send the command based on the action retrieved from the graph data structure to the one or more devices. 
     In some embodiments, the instructions cause the one or more processors to perform a learning algorithm to learn the trigger rule and the action rule. 
     In some embodiments, the instructions cause the one or more processors to perform a learning algorithm to learn one or more first parameters for the trigger rule and subsequently learn one or more second parameters for the action rule based at least in part on the one or more first parameters for the trigger rule. 
     In some embodiments, the instructions cause the one or more processors to learn one or more parameters of the trigger rule or the action rule by adjusting a value of the one or more parameters of the trigger rule or the action rule to different values, simulating one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule, and determine one or more updated values for the one or more parameters of the trigger rule or the action rule based on the one or more states resulting from the different values of the one or more parameters of the trigger rule or the action rule. 
     Another implementation of the present disclosure is a method including receiving, by a processing circuit, an indication to execute an artificial intelligence (AI) agent of a digital twin, the digital twin including a graph data structure, the graph data structure including nodes representing entities of a building and edges between the nodes representing relationships between the entities of the building, executing, by the processing circuit, the AI agent based on data of the building to generate an inference of a future data value of a data point of the building for a future time, and storing, by the processing circuit, at least one of the inference, or a link to the inference, in the graph data structure. 
     In some embodiments, the method includes storing, by the processing circuit, at least one of the inference, or the link to the inference in the graph data structure includes storing the inference or the link in a node of the graph data structure with an edge between an entity node of the nodes representing an entity associated with the inference and the node. 
     In some embodiments, the AI agent includes a machine learning model that predicts the inference based on the data of the building. In some embodiments, the method further includes receiving, by the processing circuit, a measured data value of the data point at the future time from building equipment of the building, comparing, by the processing circuit, the measured data value for the data point to the future data value of the inference to determine an error, and training, by the processing circuit, the machine learning model with the error. 
     In some embodiments, the method includes retrieving, by the processing circuit, a model from a model storage database in response to receiving the indication to execute the artificial intelligence (AI) agent and causing, by the processing circuit, a client to run and execute the model based on the data of the building to generate the inference and return the inference. 
     In some embodiments, the method includes adding, by the processing circuit, the indication to execute the AI agent to a job request topic, wherein the AI agent reads the job request topic and the AI agent executes responsive to reading the indication from the job request topic and adding, by the processing circuit, the inference to a job response topic, wherein a system that generates the indication reads the inference from the job response topic. 
     In some embodiments, the AI agent includes a trigger rule and an action rule. In some embodiments, the method includes determining, by the processing circuit, that the trigger rule is triggered by comparing information of the graph data structure against one or more conditions of the trigger rule, determining, by the processing circuit, an action of the action rule responsive to determining that the trigger rule is triggered by executing the action rule, and causing, by the processing circuit, one or more devices to operate based on the action determined by the action rule. 
     Another implementation of the present disclosure is a building system including one or more storage devices storing instructions thereon and one or more processors that execute the instructions and cause the one or more processors to receive an indication to execute an artificial intelligence (AI) agent of a digital twin of a building, the digital twin of the building storing data of the building. The instructions cause the one or more processors to execute the AI agent based on data of the building to generate an inference of a future data value of a data point of the building for a future time and store at least one of the inference, or a link to the inference, in the graph data structure. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Various objects, aspects, features, and advantages of the disclosure will become more apparent and better understood by referring to the detailed description taken in conjunction with the accompanying drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. 
         FIG.  1    is a block diagram of a building data platform including an edge platform, a cloud platform, and a twin manager, according to an exemplary embodiment. 
         FIG.  2    is a graph projection of the twin manager of  FIG.  1    including application programming interface (API) data, capability data, policy data, and services, according to an exemplary embodiment. 
         FIG.  3    is another graph projection of the twin manager of  FIG.  1    including application programming interface (API) data, capability data, policy data, and services, according to an exemplary embodiment. 
         FIG.  4    is a graph projection of the twin manager of  FIG.  1    including equipment and capability data for the equipment, according to an exemplary embodiment. 
         FIG.  5    is a block diagram of a system for managing a digital twin where an artificial intelligence agent can be executed to infer information for an entity of a graph, according to an exemplary embodiment. 
         FIG.  6    is a flow diagram of a process for executing an artificial intelligence agent to infer and/or predict information, according to an exemplary embodiment. 
         FIG.  7    is a diagram of a digital twin including a connector and a database, according to an exemplary embodiment. 
         FIG.  8    is a block diagram of a digital twin including triggers, connectors, actions, and a graph, according to an exemplary embodiment. 
         FIG.  9    is a block diagram of a people counter digital twin, an HVAC digital twin, and a facility manager digital twin that have triggers and actions that are interconnected, according to an exemplary embodiment. 
         FIG.  10    is a block diagram of an employee digital twin, a calendar digital twin, a meeting room digital twin, and a cafeteria digital twin that have triggers and actions that are interconnected, according to an exemplary embodiment. 
         FIG.  11    is a flow diagram an agent of a digital twin executing a trigger rule and an action rule, according to an exemplary embodiment. 
         FIG.  12    is a block diagram of a trigger rule of a thermostat digital twin where parameters of the trigger rule is trained, according to an exemplary embodiment. 
         FIG.  13    is a flow diagram of a process for identifying values for the parameters of the trigger rule of  FIG.  12   , according to an exemplary embodiment. 
         FIG.  14    is a minimization that can be performed to identify the values for the parameters of the trigger rule of  FIGS.  12 - 13   , according to an exemplary embodiment. 
         FIG.  15    is a block diagram of an action rule of a thermostat digital twin where parameters of the action rule is trained, according to an exemplary embodiment. 
         FIG.  16    is lists of states of a zone and of an air handler unit that can be used to train the parameters of the trigger rule and the action rule of the thermostat digital twins of  FIGS.  12 - 15   , according to an exemplary embodiment. 
         FIG.  17    is a block diagram of a trigger rule of a chemical reactor digital twin where parameters of the trigger rule are trained, according to an exemplary embodiment. 
         FIG.  18    is a flow diagram of a process for identifying values for the parameters of the trigger rule of  FIG.  17   , according to an exemplary embodiment. 
         FIG.  19    is a minimization that can be performed to identify the values for the parameters of the trigger rule of  FIGS.  17 - 18   , according to an exemplary embodiment. 
         FIG.  20    is a block diagram of an action rule of a chemical reactor digital twin where parameters of the action rule are trained, according to an exemplary embodiment. 
         FIG.  21    is lists of states of a reactor and a feed of a reactor that can be included in the trigger rule and the action rule of  FIGS.  12 - 15   , according to an exemplary embodiment. 
         FIG.  22    is a block diagram of triggers and actions that can be constructed and learned for a digital twin, according to an exemplary embodiment. 
         FIG.  23    is a flow diagram of a process for constructing triggers and actions for a digital twin, according to an exemplary embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     Overview 
     Referring generally to the FIGURES, systems and methods for digital twins of a building are shown, according to various exemplary embodiments. A digital twin can be a virtual representing of a building and/or an entity of the building (e.g., space, piece of equipment, occupant, etc.). Furthermore, the digital twin can represent a service performed in a building, e.g., facility management, equipment maintenance, etc. 
     In some embodiments, the digital twin can include an information data store and a connector. The information data store can store the information describing the entity that the digital twin operates for (e.g., attributes of the entity, measurements associated with the entity, control points or commands of the entity, etc.). In some embodiments, the data store can be a graph including various nodes and edges. The connector can be a software component the provides telemetry from the entity (e.g., physical device) to the information store. Furthermore, the digital twin can include artificial intelligence (AI), e.g., an AI agent. The AI can be one or more machine learning algorithms and/or models that operate based on information of the information data store and outputs information. 
     In some embodiments, the AI agent for the digital twin can call an AI service to determine inferences about potential future events and/or predict future data values. In some embodiments, the inferences are potential future states. In some embodiments, the inferences predict a timeseries of a data point into the future. The inferences could be inferred indoor temperature for an hour, inferred future air quality from 15 minute air quality readings, etc. In some embodiments, the digital twin can store and inferred information in a graph data store as a node in the graph data store related to an entity that the digital twin represents. In some embodiments, the digital twin, or other digital twins, can operate against the inferred data, e.g., operate to construct and implement control algorithms for operating equipment of a building based on predicted future data points of the building. 
     Furthermore, the AI agent can include various triggers and/or actions, conditions that define when and how command and control occurs for an entity. The triggers and actions can be rule based conditional and operational statements that are associated with a specific digital twin, e.g., are stored and executed by an AI agent of the digital twin. In some embodiments, the building system can identify actions and/or triggers (or parameters for the actions and/or triggers) through machine learning algorithms. In some embodiments, the building system can evaluate the conditions/context of the graph and determine and/or modify the triggers and actions of a digital twin. 
     Referring now to  FIG.  1   , a building data platform  100  including an edge platform  102 , a cloud platform  106 , and a twin manager  108  are shown, according to an exemplary embodiment. The edge platform  102 , the cloud platform  106 , and the twin manager  108  can 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 off premises computing systems, e.g., outside a building. The edge platform  102  can be implemented on-premises, e.g., within the building. However, any combination of on-premises and off-premises components of the building data platform  100  can be implemented. 
     The building data platform  100  includes applications  110 . The applications  110  can be various applications that operate to manage the building subsystems  122 . The applications  110  can be remote or on-premises applications (or a hybrid of both) that run on various computing systems. The applications  110  can include an alarm application  168  configured to manage alarms for 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 security systems of the building. 
     In some embodiments, the applications  110  and/or the cloud platform  106  interacts with a user device  176 . In some embodiments, a component or an entire application of the applications  110  runs on the user device  176 . The user device  176  may be a laptop computer, a desktop computer, a smartphone, a tablet, and/or any other device with an input interface (e.g., touch screen, mouse, keyboard, etc.) and an output interface (e.g., a speaker, a display, etc.). 
     The applications  110 , the twin manager  108 , the cloud platform  106 , and the edge platform  102  can be implemented on one or more computing systems, e.g., on processors and/or memory devices. For example, the edge platform  102  includes processor(s)  118  and memories  120 , the cloud platform  106  includes processor(s)  124  and memories  126 , the applications  110  include processor(s)  164  and memories  166 , and the twin manager  108  includes processor(s)  148  and memories  150 . 
     The processors can be a general purpose or specific purpose processors, 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 processors may be configured to execute computer code and/or instructions stored in the memories or received from other computer readable media (e.g., CDROM, network storage, a remote server, etc.). 
     The memories can include one or more devices (e.g., memory units, memory devices, storage devices, etc.) for storing data and/or computer code for completing and/or facilitating the various processes described in the present disclosure. The memories can include random access memory (RAM), read-only memory (ROM), hard drive storage, temporary storage, non-volatile memory, flash memory, optical memory, or any other suitable memory for storing software objects and/or computer instructions. The memories can include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described in the present disclosure. The memories can be communicably connected to the processors and can include computer code for executing (e.g., by the processors) one or more processes described herein. 
     The edge platform  102  can be configured to provide connection to the building subsystems  122 . The edge platform  102  can receive messages from the building subsystems  122  and/or deliver messages to the building subsystems  122 . The edge platform  102  includes one or multiple gateways, e.g., the gateways  112 - 116 . The gateways  112 - 116  can act as a gateway between the cloud platform  106  and the building subsystems  122 . The gateways  112 - 116  can be the gateways described in U.S. Provisional Patent Application No. 62/951,897 filed Dec. 20, 2019, the entirety of which is incorporated by reference herein. In some embodiments, the applications  110  can be deployed on the edge platform  102 . In this regard, lower latency in management of the building subsystems  122  can be realized. 
     The edge platform  102  can be connected to the cloud platform  106  via a network  104 . The network  104  can communicatively couple the devices and systems of building data platform  100 . In some embodiments, the network  104  is at least one of 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  may be a local area network or a wide area network (e.g., the Internet, a building WAN, etc.) and may use a variety of communications protocols (e.g., BACnet, IP, LON, etc.). The network  104  may include routers, modems, servers, cell towers, satellites, and/or network switches. The network  104  may be a combination of wired and wireless networks. 
     The cloud platform  106  can be configured to facilitate communication and routing of messages between the applications  110 , the twin manager  108 , the edge platform  102 , and/or any other system. 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 the building data platform  100  via the network  104 . 
     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 system, e.g., managing commands to devices (C2D), commands to connectors (C2C) for external systems, commands from the device to the cloud (D2C), and/or notifications. The messaging manager  140  can receive different types of data from the applications  110 , the twin manager  108 , and/or the edge platform  102 . The messaging manager  140  can receive change on value data  142 , e.g., data that indicates that a value of a point has changed. The messaging manager  140  can receive timeseries data  144 , e.g., a time correlated series of data entries each associated with a particular time stamp. Furthermore, the messaging manager  140  can receive command data  146 . All of the messages handled by the cloud platform  106  can be handled as an event, e.g., the data  142 - 146  can each be packaged as an event with a data value occurring at a particular time (e.g., a temperature measurement made at a particular time). 
     The cloud platform  106  includes a command processor  136 . The command processor  136  can be configured to receive commands to perform an action from the applications  110 , the building subsystems  122 , the user device  176 , etc. The command processor  136  can manage the commands, determine whether the commanding system is authorized to perform the particular commands, and communicate the commands to the commanded system, e.g., the building subsystems  122  and/or the applications  110 . The commands could be a command to change an operational setting that control environmental conditions of a building, a command to run analytics, etc. 
     The cloud platform  106  includes an enrichment manager  138 . The enrichment manager  138  can be configured to enrich the events received by the messaging manager  140 . The enrichment manager  138  can be configured to add contextual information to the events. The enrichment manager  138  can communicate with the twin manager  108  to retrieve the contextual information. In some embodiments, the contextual information is an indication of information related to the event. For example, if the event is a timeseries temperature measurement of a thermostat, contextual information such as the location of the thermostat (e.g., what room), the equipment controlled by the thermostat (e.g., what VAV), etc. can be added to the event. In this regard, when a consuming application, e.g., one of the applications  110  receives the event, the consuming application can operate based on the data of the event, the temperature measurement, and also the contextual information of the event. 
     The enrichment manager  138  can solve a problem that when a device produces a significant amount of information, the information may contain simple data without context. An example might include the data generated when a user scans a badge at a badge scanner of the building subsystems  122 . This physical event can generate an output event including such information as “DeviceBadgeScannerID,” “BadgeID,” and/or “Date/Time.” However, if a system sends this data to a consuming application, e.g., Consumer A and a Consumer B, each customer may need to call the building data platform knowledge service to query information with queries such as, “What space, build, floor is that badge scanner in?” or “What user is associated with that badge?” 
     By performing enrichment on the data feed, a system can be able to perform inferences on the data. A result of the enrichment may be transformation of the message “DeviceBadgeScannerId, BadgeId, Date/Time,” to “Region, Building, Floor, Asset, DeviceId, BadgeId, UserName, EmployeeId, Date/Time Scanned.” This can be a significant optimization, as a system can reduce the number of calls by 1/n, where n is the number of consumers of this data feed. 
     By using this enrichment, a system can also have the ability to filter out undesired events. If there are 100 building in a campus that receive 100,000 events per building each hour, but only 1 building is actually commissioned, only 1/10 of the events are enriched. By looking at what events are enriched and what events are not enriched, a system can do traffic shaping of forwarding of these events to reduce the cost of forwarding events that no consuming application wants or reads. 
     An example of an event received by the enrichment manager  138  may be: 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 { 
               
               
                   
                 “id”: “someguid”, 
               
               
                   
                 “eventType”: “Device_Heartbeat”, 
               
               
                   
                 “eventTime”: “2018-01-27T00:00:00+00:00” 
               
               
                   
                 “eventValue”: 1, 
               
               
                   
                 “deviceID”: “someguid” 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     An example of an enriched event generated by the enrichment manager  138  may be: 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 { 
               
               
                   
                 “id”: “someguid”, 
               
               
                   
                 “eventType”: “Device_Heartbeat”, 
               
               
                   
                 “eventTime”: “2018-01-27T00:00:00+00:00” 
               
               
                   
                 “eventValue”: 1, 
               
               
                   
                 “devicelD”: “someguid”, 
               
               
                   
                 “buildingName”: “Building-48”, 
               
               
                   
                 “buildingID”: “SomeGuid”, 
               
               
                   
                 “panelID”: “SomeGuid”, 
               
               
                   
                 “panelName”: “Building-48-Panel-13”, 
               
               
                   
                 “cityID”: 371, 
               
               
                   
                 “cityName”: “Milwaukee”, 
               
               
                   
                 “stateID”: 48, 
               
               
                   
                 “stateName”: “Wisconsin (WI)”, 
               
               
                   
                 “countryID”: 1, 
               
               
                   
                 “countryName”: “United States” 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     By receiving enriched events, an application of the applications  110  can be able to populate and/or filter what events are associated with what areas. Furthermore, user interface generating applications can generate user interfaces that include the contextual information based on the enriched events. 
     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 subscribing building, user, and/or tenant utilizes the cloud platform  106 . The platform manager  128  includes a provisioning service  130  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  configured to manage a subscription of the building, user, and/or tenant while the entitlement service  134  can track entitlements of the buildings, users, and/or tenants. 
     The twin manager  108  can be configured to manage and maintain a digital twin. The digital twin can be a digital representation of the physical environment, e.g., a building. The twin manager  108  can include a change feed generator  152 , a schema and ontology  154 , a projection manager  156 , a policy manager  158 , an entity, relationship, and event database  160 , and a graph projection database  162 . 
     The graph projection manager  156  can be configured to construct graph projections and store the graph projections in the graph projection database  162 . Examples of graph projections are shown in  FIGS.  11 - 13   . Entities, relationships, and events can be stored in the database  160 . The graph projection manager  156  can retrieve entities, relationships, and/or events from the database  160  and construct a graph projection based on the retrieved entities, relationships and/or events. In some embodiments, the database  160  includes an entity-relationship collection for multiple subscriptions. Subscriptions can be subscriptions of a particular tenant as described in  FIG.  24   . 
     In some embodiment, the graph projection manager  156  generates a graph projection for a particular user, application, subscription, and/or system. In this regard, the graph projection can be generated based on policies for the particular user, application, and/or system in addition to an ontology specific for that user, application, and/or system. In this regard, an entity could request a graph projection and the graph projection manager  156  can be configured to generate the graph projection for the entity based on policies and an ontology specific to the entity. The policies can indicate what entities, relationships, and/or events the entity has access to. The ontology can indicate what types of relationships between entities 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 see devices within a building and applications for the devices within the graph. 
     The graph projections generated by the graph projection manager  156  and stored in the graph projection database  162  can be a knowledge graph and is an integration point. For example, the graph projections can represent floor plans and systems associated with each floor. Furthermore, the graph projections can include events, e.g., telemetry data of the building subsystems  122 . The graph projections can show application services as nodes and API calls between the services as edges in the graph. The graph projections can illustrate the capabilities of spaces, users, and/or devices. The graph projections can include indications of the building subsystems  122 , e.g., thermostats, cameras, VAVs, etc. The graph projection database  162  can store graph projections that keep up a current state of a building. 
     The graph projections of the graph projection database  162  can be digital twins of a building. Digital twins can be digital replicas of physical entities that enable an in-depth analysis of data of the physical entities and provide the potential to monitor systems to mitigate risks, manage issues, and utilize simulations to test future solutions. Digital twins can play an important role in helping technicians find the root cause of issues and solve problems faster, in supporting safety and security protocols, and in supporting building managers in more efficient use of energy and other facilities resources. Digital twins can be used to enable and unify security systems, employee experience, facilities management, sustainability, etc. 
     In some embodiments the enrichment manager  138  can use a graph projection of the graph projection database  162  to enrich events. In some embodiments, the enrichment manager  138  can identify nodes and relationships that are associated with, and are pertinent to, the device that generated the event. For example, the enrichment manager  138  could identify a thermostat generating a temperature measurement event within the graph. The enrichment manager  138  can identify relationships between the thermostat and spaces, e.g., a zone that the thermostat is located in. The enrichment manager  138  can add an indication of the zone to the event. 
     Furthermore, the command processor  136  can be configured to utilize the graph projections to command the building subsystems  122 . The command processor  136  can identify a policy for a commanding entity within the graph projection to determine whether the commanding entity has the ability to make the command. For example, the command processor  136 , before allowing a user to make a command, determine, based on the graph projection database  162 , to determine that the user has a policy to be able to make the command. 
     In some embodiments, the policies can be conditional based policies. 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 rules analyze a behavioral based biometric. For example, a behavioral based biometric can indicate normal behavior and/or normal behavior rules for a system. In some embodiments, when the building data platform  100  determines, based on the one or more conditional rules, that an action requested by a system does not match a 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. 
     For example, a behavior rule could indicate that a user has access to log into a system with a particular IP address between 8 A.M. through 5 P.M. However, if the user logs in to the system at 7 P.M., the building data platform  100  may contact an administrator to determine whether to give the user permission to log in. 
     The change feed generator  152  can be configured to generate a feed of events that indicate changes to the digital twin, e.g., to the 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 an addition, deletion, and/or modification of a node or edge of the graph, e.g., changing the entities, relationships, and/or events within the 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 events can be posted to a topic by the change feed generator  152 . 
     The change feed generator  152  can implement a change feed of a knowledge graph. The building data platform  100  can implement a subscription to changes in the knowledge graph. When the change feed generator  152  posts events in the change feed, subscribing systems or applications can receive the change feed event. By generating a record of all changes that have happened, a system can stage data in different ways, and then replay the data back in whatever order the system wishes. 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 particular time, all change feed events up to the particular time can be used to construct the graph. 
     The change feed can track the changes in each node in the graph and the relationships related to them, in some embodiments. If a user wants to subscribe to these changes and the user has proper access, the user can simply submit a web API call to have sequential notifications of each change that happens in the graph. A user and/or system can replay the changes one by one to reinstitute the graph at any given time slice. Even though the messages are “thin” and only include notification of change and the reference “id/seq id,” the change feed can keep a copy of every state of each node and/or relationship so that a user and/or system can retrieve those past states at any time for each node. Furthermore, a consumer of the change feed could also create dynamic “views” allowing different “snapshots” in time of what the graph looks like from a particular context. While the twin manager  108  may contain the history and the current state of the graph based upon schema evaluation, a consumer can retain a copy of that data, and thereby create dynamic views using the change feed. 
     The schema and ontology  154  can define the message schema and graph ontology of the twin manager  108 . The message schema can define what format messages received by the messaging manager  140  should have, e.g., what parameters, what formats, etc. The ontology can define graph projections, e.g., the ontology that a user wishes to view. For example, various systems, applications, and/or users can be associated with a graph ontology. Accordingly, when the graph projection manager  156  generates an graph projection for a user, system, or subscription, the graph projection manager  156  can generate a graph projection according to the ontology specific to the user. For example, the ontology can define what types of entities are related in what order in a graph, for example, for the ontology for a subscription of “Customer A,” the graph projection manager  156  can create relationships for a graph projection based on the rule: 
       Region Building Floor Space Asset 
     For the ontology of a subscription of “Customer B,” the graph projection manager  156  can create relationships based on the rule: 
       Building Floor Asset 
     The policy manager  158  can be configured to respond to requests from other applications and/or systems for policies. The policy manager  158  can consult a graph projection to determine what permissions different applications, users, and/or devices have. The graph projection can indicate various permissions that different types of entities have and the policy manager  158  can search the graph projection to identify the permissions of a particular entity. The policy manager  158  can facilitate fine grain access control with user permissions. The policy manager  158  can apply permissions across a graph, e.g., if “user can view all data associated with floor 1” then they see all subsystem data for that floor, e.g., surveillance cameras, HVAC devices, fire detection and response devices, etc. 
     The twin manager  108  includes a query manager  165  and a twin function manager  167 . The query manger  164  can be configured to handle queries received from a requesting system, e.g., the user device  176 , the applications  110 , and/or any other system. The query manager  165  can receive queries that include query parameters and context. The query manager  165  can query the graph projection database  162  with the query parameters to retrieve a result. The query manager  165  can then cause an event processor, e.g., a twin function, to operate based on the result and the context. In some embodiments, the query manager  165  can select the twin function based on the context and/or perform operates based on the context. In some embodiments, the query manager  165  is configured to perform the operations described with reference to  FIGS.  5 - 10   . 
     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 particular data element and/or pattern in the graph projection database  162 . Responsive to the particular data element and/or pattern occurring in the graph projection database  162  (e.g., based on a new data event added to the graph projection database  162  and/or change to nodes or edges of the graph projection database  162 , the twin function manager  167  can cause a particular twin function to execute. The twin function can execute based on an event, context, and/or rules. The event can be data that the twin function executes against. The context can be information that provides a contextual description of the data, e.g., what device the event is associated with, what control point should be updated based on the event, etc. The twin function manager  167  can be configured to perform the operations of the  FIGS.  11 - 15   . 
     Referring now to  FIG.  2   , a graph projection  200  of the twin manager  108  including application programming interface (API) data, capability data, policy data, and services is shown, according to an exemplary embodiment. The graph projection  200  includes nodes  202 - 240  and edges  250 - 272 . The nodes  202 - 240  and the edges  250 - 272  are defined according to the key  201 . The nodes  202 - 240  represent different types of entities, devices, locations, points, persons, policies, and software services (e.g., API services). The edges  250 - 272  represent relationships between the nodes  202 - 240 , e.g., dependent calls, API calls, inferred relationships, and schema relationships (e.g., BRICK relationships). 
     The graph projection  200  includes a device hub  202  which may represent a software service that facilitates the communication of data and commands between the cloud platform  106  and a device of the building subsystems  122 , e.g., door actuator  214 . The device hub  202  is related to a connector  204 , an external system  206 , and a digital asset “Door Actuator”  208  by edge  250 , edge  252 , and edge  254 . 
     The cloud platform  106  can be configured to identify the device hub  202 , the connector  204 , the external system  206  related to the door actuator  214  by searching the graph projection  200  and identifying the edges  250 - 254  and edge  258 . The graph projection  200  includes a digital representation of the “Door Actuator,” node  208 . The digital asset “Door Actuator”  208  includes a “DeviceNameSpace” represented by node  207  and related to the digital asset “Door Actuator”  208  by the “Property of Object” edge  256 . 
     The “Door Actuator”  214  has points and timeseries. The “Door Actuator”  214  is related to “Point A”  216  by a “has_a” edge  260 . The “Door Actuator”  214  is related to “Point B”  218  by a “has_A” edge  258 . Furthermore, timeseries associated with the points A and B are represented by nodes “TS”  220  and “TS”  222 . The timeseries are related to the points A and B by “has_a” edge  264  and “has_a” edge  262 . The timeseries “TS”  220  has particular samples, sample  210  and  212  each related to “TS”  220  with edges  268  and  266  respectively. Each sample includes a time and a value. Each sample may be an event received from the door actuator that the cloud platform  106  ingests into the entity, relationship, and event database  160 , e.g., ingests into the graph projection  200 . 
     The graph projection  200  includes a building  234  representing a physical building. The building includes a floor represented by floor  232  related to the building  234  by the “has_a” edge from the building  234  to the floor  232 . The floor has a space indicated by the edge “has_a”  270  between the floor  232  and the space  230 . The space has particular capabilities, e.g., is a room that can be booked for a meeting, conference, private study time, etc. Furthermore, the booking can be canceled. The capabilities for the floor  232  are represented by capabilities  228  related to space  230  by edge  280 . The capabilities  228  are related to two different commands, command “book room”  224  and command “cancel booking”  226  related to capabilities  228  by edge  284  and edge  282  respectively. 
     If the cloud platform  106  receives a command to book the space represented by the node, space  230 , the cloud platform  106  can search the graph projection  200  for the capabilities for the  228  related to the space  230  to determine whether the cloud platform  106  can book the room. 
     In some embodiments, the cloud platform  106  could receive a request to book a room in a particular building, e.g., the building  234 . The cloud platform  106  could search the graph projection  200  to identify spaces that have the capabilities to be booked, e.g., identify the space  230  based on the capabilities  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 book the space  230 . 
     The graph projection  200  includes a policy  236  for the floor  232 . The policy  236  is related set for the floor  232  based on a “To Floor” edge  274  between the policy  236  and the floor  232 . The policy  236  is related to different roles for the floor  232 , read events  238  via edge  276  and send command  240  via edge  278 . The policy  236  is set for the entity  203  based on has edge  251  between the entity  203  and the policy  236 . 
     The twin manager  108  can identify policies for particular entities, e.g., users, software applications, systems, devices, etc. based on the policy  236 . For example, if the cloud platform  106  receives a command to book the space  230 . The cloud platform  106  can communicate with the twin manager  108  to verify that the entity requesting to book the space  230  has a policy to book the space. The twin manager  108  can identify the entity requesting to book the space as the entity  203  by searching the graph projection  200 . Furthermore, the twin manager  108  can further identify the edge has  251  between the entity  203  and the policy  236  and the edge  1178  between the policy  236  and the command  240 . 
     Furthermore, the twin manager  108  can identify that the entity  203  has the ability to command the space  230  based on the edge  1174  between the policy  236  and the edge  270  between the floor  232  and the space  230 . In response to identifying the entity  203  has the ability to book the space  230 , the twin manager  108  can provide an indication to the cloud platform  106 . 
     Furthermore, if the entity makes a request to read events for the space  230 , e.g., the sample  210  and the sample  212 , the twin manager  108  can identify the edge has  251  between the entity  203  and the policy  236 , the edge  1178  between the policy  236  and the read events  238 , the edge  1174  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 the point A  216 , the “has_a” edge  264  between the point A  216  and the TS  220 , and the edges  268  and  266  between the TS  220  and the samples  210  and  212  respectively. 
     Referring now to  FIG.  3   , a graph projection  300  of the twin manager  108  including application programming interface (API) data, capability data, policy data, and services is shown, according to an exemplary embodiment. The graph projection  300  includes the nodes and edges described in the graph projection  200  of  FIG.  2   . The graph projection  300  includes a connection broker  354  related to capabilities  228  by edge  398   a . The connection broker  354  can be a node representing a software application configured to facilitate a connection with another software application. In some embodiments, the cloud platform  106  can identify the system that implements the capabilities  228  by identifying the edge  398   a  between the capabilities  228  and the connection broker  354 . 
     The connection broker  354  is related to an agent that optimizes a space  356  via edge  398   b . The agent represented by the node  356  can book and cancel bookings for the space represented by the node  230  based on the edge  398   b  between the connection broker  354  and the node  356  and the edge  398   a  between the capabilities  228  and the connection broker  354 . 
     The connection broker  354  is related to a cluster  308  by edge  398   c . Cluster  308  is related to connector B  302  via edge  398   e  and connector A  306  via edge  398   d . The connector A  306  is related to an external subscription service  304 . A connection broker  310  is related to cluster  308  via an edge  311  representing a rest call that the connection broker represented by node  310  can make to the cluster represented by cluster  308 . 
     The connection broker  310  is related to a virtual meeting platform  312  by an edge  354 . The node  312  represents an external system that represents a virtual meeting platform. The connection broker represented by node  310  can represent a software component that facilitates a connection between the cloud platform  106  and the virtual meeting platform represented by node  312 . When the cloud platform  106  needs to communicate with the virtual meeting platform represented by the node  312 , the cloud platform  106  can identify the edge  354  between the connection broker  310  and the virtual meeting platform  312  and select the connection broker represented by the node  310  to facilitate communication with the virtual meeting platform represented by the node  312 . 
     A capabilities node  318  can be connected to the connection broker  310  via edge  360 . The capabilities  318  can be capabilities of the virtual meeting platform represented by the node  312  and can be related to the node  312  through the edge  360  to the connection broker  310  and the edge  354  between the connection broker  310  and the node  312 . The capabilities  318  can define capabilities of the virtual meeting platform represented by the node  312 . The node  320  is related to capabilities  318  via edge  362 . The capabilities may be an invite bob command represented by node  316  and an email bob command represented by node  314 . The capabilities  318  can be linked to a node  320  representing a user, Bob. The cloud platform  106  can facilitate email commands to send emails to the user Bob via the email service represented by the node  304 . The node  304  is related to the connect a node  306  via edge  398   f  Furthermore, the cloud platform  106  can facilitate sending an invite for a virtual meeting via the virtual meeting platform represented by the node  312  linked to the node  318  via the edge  358 . 
     The node  320  for the user Bob can be associated with the policy  236  via the “has” edge  364 . Furthermore, the node  320  can have a “check policy” edge  366  with a 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 a node  326  representing a user input manager (UIM). The portal node  324  is related to the UIM node  326  via an edge  323 . The UIM node  326  has an edge  323  to a device API node  328 . The UIM node  326  is related to 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 related to 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 related to the device API node  328  via the edge  331 . 
     The device API node  328  is related to a transport connection broker  330  via an edge  329 . The transport connection broker  330  is related to a device hub  332  via an edge  378 . The device hub represented by node  332  can be a software component that hands the communication of data and commands for the door actuator  214 . The cloud platform  106  can identify where to store data within the graph projection  300  received from the door actuator by identifying the nodes and edges between the points  216  and  218  and the device hub node  332 . Similarly, the cloud platform  308  can identify commands for the door actuator that can be facilitated by the device hub represented by the node  332 , e.g., by identifying edges between the device hub node  332  and an open door node  352  and an lock door node  350 . The door actuator  114  has an edge “has mapped an asset”  280  between the node  214  and a capabilities node  348 . The capabilities node  348  and the nodes  352  and  350  are linked by edges  396  and  394 . 
     The device hub  332  is linked to a cluster  336  via an edge  384 . The cluster  336  is linked to connector A  340  and connector B  338  by edges  386  and the edge  389 . The connector A  340  and the connector B  338  is linked to an external system  344  via edges  388  and  390 . The external system  344  is linked to a door actuator  342  via an edge  392 . 
     Referring now to  FIG.  4   , a graph projection  400  of the twin manager  108  including equipment and capability data for the equipment is shown, according to an exemplary embodiment. The graph projection  400  includes nodes  402 - 456  and edges  360 - 498   f . The cloud platform  106  can search the graph projection  400  to identify capabilities of different pieces of equipment. 
     A building node  404  represents a particular building that includes two floors. A floor 1 node  402  is linked to the building node  404  via edge  460  while a floor 2 node  406  is linked to the building node  404  via edge  462 . The floor 2 includes a particular room  2023  represented by edge  464  between floor 2 node  406  and room  2023  node  408 . Various pieces of equipment are included within the room  2023 . A light represented by light node  416 , a bedside lamp node  414 , a bedside lamp node  412 , and a hallway light node  410  are related to room  2023  node  408  via edge  466 , edge  472 , edge  470 , and edge  468 . 
     The light represented by light node  416  is related to a light connector  426  via edge  484 . The light connector  426  is related to multiple commands for the light represented by the light node  416  via edges  484 ,  486 , and  488 . The commands may be a brightness setpoint  424 , an on command  425 , and a hue setpoint  428 . The cloud platform  106  can receive a request to identify commands for the light represented by the light  416  and can identify the nodes  424 - 428  and provide an indication of the commands represented by the node  424 - 428  to the requesting entity. The requesting entity can then send commands for the commands represented by the nodes  424 - 428 . 
     The bedside lamp node  414  is linked to a bedside lamp connector  481  via an edge  413 . The connector  481  is related to commands for the bedside lamp represented by the bedside lamp node  414  via edges  492 ,  496 , and  494 . The command nodes are a brightness setpoint node  432 , an on command node  434 , and a color command  436 . The hallway light  410  is related to a hallway light connector  446  via an edge  498   d . The hallway light connector  446  is linked to multiple commands for the hallway light node  410  via edges  498   g ,  498   f , and  498   e . The commands are represented by an on command node  452 , a hue setpoint node  450 , and a light bulb activity node  448 . 
     The graph projection  400  includes a name space node  422  related to a server A node  418  and a server B node  420  via edges  474  and  476 . The name space node  422  is related to the bedside lamp connector  481 , the bedside lamp connector  444 , and the hallway light connector  446  via edges  482 ,  480 , and  478 . The bedside lamp connector  444  is related to commands, e.g., the color command node  440 , the hue setpoint command  438 , a brightness setpoint command  456 , and an on command  454  via edges  498   c ,  498   b ,  498   a , and  498 . 
     Referring now to  FIG.  5   , a system  500  for managing a digital twin where an artificial intelligence agent can be executed to infer and/or predict information for an entity of a graph is shown, according to an exemplary embodiment. The system  500  can be components of the building data platform  100 , e.g., components run on the processors and memories of the edge platform  102 , the cloud platform  106 , the twin manager  108 , and/or the applications  110 . The system  500  can, in some implementations, implement a digital twin with artificial intelligence. 
     A digital twin (or a shadow) may be a computing entity that describes a physical thing (e.g., a building, spaces of a building, devices of a building, people of the building, equipment of the building, etc.) through modeling the physical thing through a set of attributes that define the physical thing. A digital twin can refer to a digital replica of physical assets (a physical device twin) and can be extended to store processes, people, places, systems that can be used for various purposes. The digital twin can include both the ingestion of information and actions learned and executed through artificial intelligence agents. 
     In  FIG.  5   , the digital twin can be a graph  529  managed by the twin manager  108  and/or artificial intelligence agents  570 . In some embodiments, the digital twin is the combination of the graph  529  with the artificial intelligence agents  570 . In some embodiments, the digital twin enables the creation of a chronological time-series database of telemetry events for analytical purposes. In some embodiments, the graph  529  uses the BRICK schema. 
     The twin manager  108  stores the graph  529  which may be a graph data structure including various nodes and edges interrelating the nodes. The graph  529  may be the same as, or similar to, the graph projections described herein with reference to  FIGS.  1 - 4   . The graph  529  includes nodes  510 - 526  and edges  528 - 546 . The graph  529  includes a building node  526  representing a building that has a floor indicated by the “has” edge  546  to the floor node  522 . The floor node  522  is relate to a zone node  510  via a “has” edge  544  indicating that the floor represented by the node  522  has a zone represented by the zone  510 . 
     The floor node  522  is related to the zone node  518  by the “has” edge  540  indicating that the floor represented by the floor node  522  has another zone represented by the zone node  518 . The floor node  522  is related to another zone node  524  via a “has” edge  542  representing that the floor represented by the floor node  522  has a third zone represented by the zone node  524 . 
     The graph  529  includes an AHU node  514  representing an AHU of the building represented by the building node  526 . The AHU node  514  is related by a “supplies” edge  530  to the VAV node  512  to represent that the AHU represented by the AHU node  514  supplies air to the VAV represented by the VAV node  512 . The AHU node  514  is related by a “supplies” edge  536  to the VAV node  520  to represent that the AHU represented by the AHU node  514  supplies air to the VAV represented by the VAV node  520 . The AHU node  514  is related by a “supplies” edge  532  to the VAV node  516  to represent that the AHU represented by the AHU node  514  supplies air to the VAV represented by the VAV node  516 . 
     The VAV node  516  is related to the zone node  518  via the “serves” edge  534  to represent that the VAV represented by the VAV node  516  serves (e.g., heats or cools) the zone represented by the zone node  518 . The VAV node  520  is related to the zone node  524  via the “serves” edge  538  to represent that the VAV represented by the VAV node  520  serves (e.g., heats or cools) the zone represented by the zone node  524 . The VAV node  512  is related to the zone node  510  via the “serves” edge  528  to represent that the VAV represented by the VAV node  512  serves (e.g., heats or cools) the zone represented by the zone node  510 . 
     Furthermore, the graph  529  includes an edge  533  related to a timeseries node  564 . The timeseries node  564  can be information stored within the graph  529  and/or can be information stored outside the graph  529  in a different database (e.g., a timeseries database). In some embodiments, the timeseries node  564  stores timeseries data (or any other type of data) for a data point of the VAV represented by the VAV node  516 . The data of the timeseries node  564  can be aggregated and/or collected telemetry data of the timeseries node  564 . 
     Furthermore, the graph  529  includes an edge  537  related to a timeseries node  566 . The timeseries node  566  can be information stored within the graph  529  and/or can be information stored outside the graph  529  in a different database (e.g., a timeseries database). In some embodiments, the timeseries node  566  stores timeseries data (or any other type of data) for a data point of the VAV represented by the VAV node  516 . The data of the timeseries node  564  can be inferred information, e.g., data inferred by one of the artificial intelligence agents  570  and written into the timeseries node  564  by the artificial intelligence agent  570 . In some embodiments, the timeseries  546  and/or  566  are stored in the graph  529  but are stored as references to timeseries data stored in a timeseries database. 
     The twin manager  108  includes various software components. For example, the twin manager  108  includes a device management component  548  for managing devices of a building. The twin manager  108  includes a tenant management component  550  for managing various tenant subscriptions. The twin manager  108  includes an event routing component  552  for routing various events. The twin manager  108  includes an authentication and access component  554  for performing user and/or system authentication and grating the user and/or system access to various spaces, pieces of software, devices, etc. The twin manager  108  includes a commanding component  556  allowing a software application and/or user to send commands to physical devices. The twin manager  108  includes an entitlement component  558  that analyzes the entitlements of a user and/or system and grants the user and/or system abilities based on the entitlements. The twin manager  108  includes a telemetry component  560  that can receive telemetry data from physical systems and/or devices and ingest the telemetry data into the graph  529 . Furthermore, the twin manager  108  includes an integrations component  562  allowing the twin manager  108  to integrate with other applications. 
     The twin manager  108  includes a gateway  506  and a twin connector  508 . The gateway  506  can be configured to integrate with other systems and the twin connector  508  can be configured to allow the gateway  506  to integrate with the twin manager  108 . The gateway  506  and/or the twin connector  508  can receive an entitlement request  502  and/or an inference request  504 . The entitlement request  502  can be a request received from a system and/or a user requesting that an AI agent action be taken by the AI agent  570 . The entitlement request  502  can be checked against entitlements for the system and/or user to verify that the action requested by the system and/or user is allowed for the user and/or system. The inference request  504  can be a request that the AI agent  570  generates an inference, e.g., a projection of information, a prediction of a future data measurement, an extrapolated data value, etc. 
     The cloud platform  106  is shown to receive an entitlement request  586 . The request  586  can be received from a system, application, and/or user device (e.g., from the applications  110 , the building subsystems  122 , and/or the user device  176 ). The entitlement request  586  may be a manual or automated request. In some embodiments, the request  586  can be automated via an API request, e.g., when such an entitlement to an AI model is enabled for a particular tenant/end-customer of the data platform  100 . In some embodiments, the request  586  may be a manual request by a person asking for an inference/future state of the building. The request  586  could be automatically made to keep the state updated on a particular cadence. In some embodiments, a request for a future state of one digital twin can cause a re-calculation of the future states of related digital twins automatically. For example, based on a request asking for the future occupancy of a room in a building in the coming week, a re-calculation of the future AHU operating value recommendations to reduce the spread of infectious diseases may be triggered. The results of these automatic triggers determining future states not directly requested by the request  586  can be collected and presented to the caller of the request  586  as causal future states. 
     The entitlement request  586  may be a request for the AI agent  570  to perform an action, e.g., an action that the requesting system and/or user has an entitlement for. The cloud platform  106  can receive the entitlement request  586  and check the entitlement request  586  against an entitlement database  584  storing a set of entitlements to verify that the requesting system has access to the user and/or system. The cloud platform  106 , responsive to the entitlement request  586  being approved, can create a job for the AI agent  570  to perform. The created job can be added to a job request topic  580  of a set of topics  578 . 
     The job request topic  580  can be fed to AI agents  570 . For example, the topics  580  can be fanned out to various AI agents  570  based on the AI agent that each of the topics  580  pertains to (e.g., based on an identifier that identifies an agent and is included in each job of the topic  580 ). The AI agents  570  include a service client  572 , a connector  574 , and a model  576 . The model  576  can be loaded into the AI agent  570  from a set of AI models stored in the AI model storage  568 . The AI model storage  568  can store models for making energy load predictions for a building, weather forecasting models for predicting a weather forecast, action/decision models to take certain actions responsive to certain conditions being met, an occupancy model for predicting occupancy of a space and/or a building, etc. The models of the AI model storage  568  can be neural networks (e.g., convolutional neural networks, recurrent neural networks, deep learning networks, etc.), decision trees, support vector machines, and/or any other type of artificial intelligence, machine learning, and/or deep learning category. In some embodiments, the models are rule based triggers and actions that include various parameters for setting a condition and defining an action. 
     The AI agent  570  can include triggers  595  and actions  597 . The triggers  595  can be conditional rules that, when met, cause one or more of the actions  597 . The triggers  595  can be executed based on information stored in the graph  529  and/or data received from the building subsystems  122 . The actions  597  can be executed to determine commands, actions, and/or outputs. The output of the actions  597  can be stored in the graph  529  and/or communicated to the building subsystems  122 . 
     In some embodiments, the triggers  595  and/or the actions  597  are stored as nodes in the graph  529 . The nodes for the triggers  595  and/or the actions  597  can be stored as capability nodes. Capability nodes may be nodes that describe operations that a digital twin can perform (e.g., is configured and/or capable of performing). Capabilities are described with reference to  FIGS.  1 - 4   . In some embodiments, the graph  529  stores a first node representing a particular digital twin, agent, artificial intelligence, machine learning entity, etc. The graph  529  can further store one or more second nodes related to the first node via one or more edges (or one or more nodes). The one or more second nodes may describe capabilities of the digital twin, agent, artificial intelligence, machine learning entity, etc. The capabilities may be triggers and/or actions (e.g., the triggers  595  and/or actions  597 ). The first node may be related to a particular component node (e.g., the VAV node  516 ) via another edge to represent that the digital twin, agent, artificial intelligence, machine learning entity, etc. makes inferences or other data determinations for the component (e.g., a VAV) represented by the particular component node (e.g., the VAV node  516 ). 
     The AI agent  570  can include a service client  572  that causes an instance of an AI agent to run. The instance can be hosted by the artificial intelligence service client  588 . The client  588  can cause a client instance  592  to run and communicate with the AI agent  570  via a gateway  590 . The client instance  592  can include a service application  594  that interfaces with a core algorithm  598  via a functional interface  596 . The core algorithm  598  can run the model  576 , e.g., train the model  576  and/or use the model  576  to make inferences and/or predictions. 
     In some embodiments, the core algorithm  598  can be configured to perform learning based on the graph  529 . In some embodiments, the core algorithm  598  can read and/or analyze the nodes and relationships of the graph  529  to make decisions. In some embodiments, the core algorithm  598  can be configured to use telemetry data (e.g., the timeseries data  564 ) from the graph  529  to make inferences on and/or perform model learning. In some embodiments, the result of the inferences can be the timeseries  566 . In some embodiments, the timeseries  564  is an input into the model  576  that predicts the timeseries  566 . 
     In some embodiments, the core algorithm  598  can generate the timeseries  566  as an inference for a data point, e.g., a prediction of values for the data point at future times. The timeseries  564  may be actual data for the data point. In this regard, the core algorithm  598  can learn and train by comparing the inferred data values against the true data values. In this regard, the model  576  can be trained by the core algorithm  598  to improve the inferences made by the model  576 . 
     Referring now to  FIG.  6   , a process  600  for executing an artificial intelligence agent to infer and/or predict information is shown, according to an exemplary embodiment. The process  600  can be performed by the system  500  and/or components of the system  500 . The process  600  can be performed by the building data platform  100 . Furthermore, the process  600  can be performed by any computing device described herein. 
     In step  602 , the twin manager  108  receives information from a physical device and stores the information, or a link to the information, in the graph  529 . For example, the telemetry component  560  can receive telemetry data from physical devices, e.g., the building subsystems  122 . The telemetry can be measured data values, a log of historical equipment commands, etc. The telemetry component  560  can store the received information in the graph  529  by relating a node storing the information to a node representing the physical device. For example, the telemetry component  560  can store timeseries data as the timeseries  566  along by identifying that the physical device is a VAV represented by the VAV node  516  and that an edge  537  relates the VAV node  516  to the timeseries node  566 . 
     In step  604 , the twin manager  108  and/or the cloud platform  106  receives an indication to execute an artificial intelligence agent of an entity represented in the graph  529 , the AI agent being associated with a model. In some embodiments, the indication is created by a user and provided via the user device  176 . In some embodiments, the indication is created by an application, e.g., one of the applications  110 . In some embodiments, the indication is a triggering event that triggers the agent and is received from the building subsystems  122  and/or another agent (e.g., an output of one agent fed into another agent). 
     In some embodiments, the AI agent is an agent for a specific entity represented in the graph  529 . For example, the agent could be a VAV maintenance agent configured to identify whether a VAV (e.g., a VAV represented by the nodes  512 ,  530 , and/or  516 ) should have maintenance performed at a specific time. Another agent could be a floor occupant prediction agent that is configure to predict the occupancy of a particular floor of a building, e.g., the floor represented by the floor node  522 . 
     Responsive to receiving the indication, in step  606 , the AI agent  570  causes a client instance  592  to run the model  576  based on the information received in step  602 . In some embodiments, the information received in step  602  is provided directly to the AI agent  570 . In some embodiments, the information is read from the graph  529  by the AI agent  570 . 
     In step  608 , the AI agent  570  stores the inferred and/or predicted information in the graph  529  (or stores the inferred and/or predicted information in a separate data structure with a link to the graph  529 ). In some embodiments, the AI agent  570  identifies that the node that represents the physical entity that the AI agent  570  inferred and/or predicted information for, e.g., the VAV represented by the VAV  516 . The AI agent  570  can identify that the timeseries node  566  stores the inferred and/or predicted information by identifying the edge  537  between the VAV node  516  and the timeseries node  566 . 
     In step  610 , the AI agent  570  can retrieve the inferred or predicted information from the graph  529  responsive to receiving an indication to execute the model of the AI agent  570  of the inferred or predicted information, e.g., similar to the step  604 . In step  612 , the AI agent  570  can execute one or more actions based on the inferred and/or predicted information of the step  610  based the inferred and/or predicted information retrieved from the graph  529 . In some embodiments, the AI agent  570  executes the model  576  based on the inferred and/or predicted information. 
     In step  614 , the AI agent  570  can train the model  576  based on the inferred or predicted information read from the graph  529  and received actual values for the inferred or predicted information. In some embodiments, the AI agent  570  can train and update parameters of the model  576 . For example, the timeseries  564  may represent actual values for a data point of the VAV represented by the VAV node  516 . The timeseries  566  can be the inferred and/or predicted information. The AI agent  570  can compare the timeseries  564  and the timeseries  566  to determine an error in the inferences and/or predictions of the model  576 . The error can be used by the model  576  to update and train the model  576 . 
     Referring now to  FIG.  7   , a digital twin  700  including a connector and a database is shown, according to an exemplary embodiment. The digital twin  700  can be a software component stored and/or managed by the building data platform  100 . The building data platform  100  includes connectors  702  and a database  704 . The database  704  can store data attributes for a physical entity, e.g., a building, a VAV, etc. that describe the current state and/or operation of the physical entity. The connector  702  can be a software component that receives data from the physical device represented by the digital twin  700  and updates the attributes of the database  704 . For example, the connector  702  can ingest device telemetry data into the database  704  to update the attributes of the digital twin  700 . 
     Referring now to  FIG.  8   , a digital twin  800  including triggers  802 , connectors  804 , actions  806 , and a graph  808  is shown, according to an exemplary embodiment. The digital twin  800  can be a digital replica of physical assets (e.g., a physical device twin, sensor twin, actuator twin, building device twin, etc.) and can be used to store processes, people, places, systems that can be used for various purposes. The digital twins can be created, managed, stored, and/or operated on by the building data platform  100 . 
     In some cases, the devices can also be actuated on (told to perform an action). For example, a thermostat has sensors to measure temperature and humidity. A thermostat can also be asked to perform an action of setting the setpoint for a HVAC system. In this regard, the digital twin  800  can be configured so that information that the digital twin  800  can be made aware of can be stored by the digital twin  800  and there are also actions that the digital twin  800  can take. 
     The digital twin  800  can include a connector  804  that ingests device telemetry into the graph  808  and/or update the digital twin attributes stored in the graph  808 . In some embodiments, the connectors  804  can ingest external data received from external data sources into the graph  808 . The external data could be weather data, calendar data, etc. In some embodiments, the connectors  804  can send commands back to the devices, e.g., the actions determined by the actions  806 . 
     The digital twin  800  includes triggers  802  which can set conditional logic for triggering the actions  706 . The digital twin  800  can apply the attributes stored in the graph  808  against a rule of the triggers  802 . When a particular condition of the rule of the triggers  802  involving that attribute is met, the actions  706  can execute. One example of a trigger could be a conditional question, “when the temperature of the zone managed by the thermostat reaches x degrees Fahrenheit.” When the question is met by the attributes store din the graph  808 , a rule of the actions  706  can execute. 
     The digital twin  800  can, when executing the actions  806 , update an attribute of the graph  808 , e.g., a setpoint, an operating setting, etc. These attributes can be translated into commands that the building data platform  100  can send to physical devices that operate based on the setpoint, the operating setting, etc. An example of an action rule for the actions  806  could be the statement, “update the setpoint of the HVAC system for a zone to x Degrees Fahrenheit.” 
     In some embodiments, the triggers  802  and/or the actions  806  are predefined and/or manually defined through user input of the user device  176 . In some cases, it may be difficult for a user to determine what the parameter values of the trigger rule should be (e.g., what values maximize a particular reward or minimize a particular penalty). Similarly, it may be difficult for a user to determine what the parameter values of the action rule should be (e.g., what values maximize the particular reward or minimize the particular penalty). Furthermore, even if the user is able to identify the ideal parameter values for the triggers  802  and the actions  806 , the ideal values for the parameters may not be constant and may instead change over time. Therefore, it would be desirable if the values of the attributes for the triggers  802  and the actions  806  are tuned optimally and automatically by the building data platform  100  by observing the responses from other related digital twins. 
     Causal patterns between one or more digital twins having their triggering conditions satisfied and one or more digital twins (including the triggering digital twin) actuating by sending specific commands to their physical counterparts could be learned and defined by the building data platform  100 . Automated learning can be used by the building data platform  100  during real operations, by running simulations using digital twins, or using predicted inference within the digital twin. There may not even be the need for all standard operating procedures in building systems to be defined upfront by a user since patterns of interaction between digital twins can be learned by the building data platform  100  to define and recommend those to building and facility owners. 
     Referring now to  FIG.  9   , a system  900  of digital twins including a people counter digital twin  902 , an HVAC digital twin  904 , and a facility manager digital twin  906  that are interconnected is shown, according to an exemplary embodiment. In  FIG.  9   , the people counter digital twin  902  includes triggers  908 , connectors  910 , actions, and/or the graph  926 . 
     The system  900  further includes an HVAC digital twin  904  that includes triggers, connectors  916 , actions  918 , and/or the graph  928 . The system further includes the facility manager  906  that includes triggers, connectors  922 , actions  924 , and/or the graph  930 . In some embodiments, the graph  926 , the graph  928 , and the graph  930  are the same graph or different graphs. In some embodiments, the graphs  926 - 930  are the graph  529 . 
     The people counter digital twin  902  can output a “low occupancy” attribute which can be stored in the graph  926  and/or provided to the HVAC digital twin  904  and/or the facility manager digital twin  906 , in some embodiments. In some embodiments, if all of the digital twins use and/or have access to the same graph, if the people counter digital twin  902  stores the low occupancy indicator in the graph, the HVAC digital twin  904  and the facility manager digital twin  906  can read the attribute from the graph. In some embodiment, a rules engine  926  can store rules that link the twins  902 ,  904 , and  906  together. The rules engine  926  can determine whether the triggers of the various digital twins are triggered, e.g., the trigger  908 . Furthermore, the rules engine  926  can determine (based on one or more rules stored by the rules engine  926 ) that if the trigger  908  of the people counter digital twin  902  is triggered, the actions  918  of the HVAC digital twin  904  and the actions  924  of the facility manager digital twin  906  should be executed. 
     In some embodiments, the trigger  908  is the logical condition, “when there are less than twenty people in a particular area.” Responsive to an occupancy count of the particular area is less than twenty, which the people counter digital twin  902  can determine from models and/or information of the graph  926 , a low occupancy indication can be generated. 
     Responsive to the trigger  908  being triggered, the rules engine  926  can cause the actions  918  to execute to switch an HVAC mode to an economy mode. The economy mode status for an HVAC system can be stored in the graph  928  and/or communicated to an HVAC controller to execute on. Responsive to the trigger  908  being triggered, the rules engine  926  can cause the actions  924  to execute to notify a facility manager of the low occupancy status, e.g., send a notification to a user device of the facility manager. 
     In some embodiments, the digital twins of the system  900  can be solution twins, e.g., the people counter twin  902 , the HVAC digital twin  904 , the facility manager twin  906 , etc. The digital twin can be a solution twin because it represents a particular software solutions for the building. For example, in some embodiments, an occupancy sensor digital twin of a zone could be triggered with under-utilized criteria (e.g., the triggering of the people counter digital twin  902  shown in  FIG.  9   ). The people counter digital twin  902  could be configured to identify what AHU is serving the zone that it has made an occupancy detection for based on the nodes and/or edges of the graph  926  relating a zone node for the zone and an AHU node for the AHU. In some embodiments, the AHU digital twin can evaluate the desired setting for the zone through running a simulation with one or more models. In some embodiments, an FM digital twin can evaluate space arrangement and/or purposing. 
     Referring now to  FIG.  10   , a system  1000  including an employee digital twin  1002 , a calendar digital twin  1006 , a meeting room digital twin  1004 , and a cafeteria digital twin  1008  that are interconnected is shown, according to an exemplary embodiment. The system  1000  includes a solution digital twin for an employee, a meeting room, a cafeteria, and a calendar. In the system  1000 , an employee digital twin  1002  and a calendar digital twin  1006  trigger and a rules engine  926  causes one or more associated digital twins, a meeting room digital twin  1004  and a cafeteria digital twin  1008  to execute responsive to the triggers. The calendar digital twin  1006  can include a connector  1016 , the meeting room digital twin can include a connector  1022 , and the cafeteria digital twin  1008  can include a connector  1028  for ingesting information into the graphs  1034 - 1038 . In some embodiment, the rules engine  926  can store rules that link the twins  1002 ,  1006 ,  1004 , and/or  1008  together. The rules engine  926  can determine whether the triggers of the various digital twins are triggered, e.g., the triggers  1010  and/or  1014 . Furthermore, the rules engine  926  can determine (based on one or more rules stored by the rules engine  926 ) that if the triggers  1010  and  1014  are triggered, the actions  1024  and  1030  should be executed. 
     In  FIG.  10   , the employee digital twin  1002  includes a graph  1032 , the calendar digital twin  1006  includes a graph  1036 , the meeting room digital twin  1004  includes a graph  1034 , and the cafeteria digital twin  1008  includes a graph  1038 . The graphs  1032 - 1038  can be the same graphs and/or different graphs and can be the same as, or similar to, the graph  529 . 
     The employee digital twin  1002  can generate an indication of whether a particular occupant is near a particular office via an action responsive to the trigger  1010  triggering when a particular occupant is a particular instance (e.g., 250 meters) from their office. The digital twin  1002  can identify the occupant, the occupant&#39;s office, and the location of the office through analyzing the nodes and/or edge of the graph  1032 . The calendar digital twin  1006  determines, based on calendar data (e.g., calendar data stored in the graph  1036 ), whether it is a work day via the trigger  1014  (e.g., is a day Monday through Friday). Responsive to determining that it is a work day, the calendar digital twin  1006  generates an indication that it is a work day via actions of the calendar digital twin  1006 . 
     The meeting room digital twin  1004  can receive the work day indication from the calendar digital twin  1006  and can receive the occupant near office indication from the employee digital twin  1002 . The rules engine  926  can cause the meeting room digital twin  1004  to take actions to reserve a meeting room via the actions  1024  responsive to the triggers  1010  and  1014  being triggered. The rules engine  926  can cause the cafeteria digital twin  1008  to trigger the ordering of a coffee for the occupant via the action  1030  responsive to the triggers  1010  and  1014  being triggered. 
     Referring now to  FIG.  11   , a process  1100  of an agent executing a trigger rule and an action rule is shown, according to an exemplary embodiment. The process  1100  can be performed by the system  500  and/or components of the system  500 . In some embodiments, the building data platform  100  can perform the process  1100 . Furthermore, the process  1100  can be performed by any computing device described herein. 
     In step  1102 , the building data platform can store an agent  570  in a data structure. The agent  570  can include a trigger rule indicating a condition for executing an action rule and an action rule indicating an action to be performed responsive to the condition being met. In some embodiments, the model  576  includes, or can be replaced with, the trigger rule and the action rule. The trigger rule and the action rule can be logical statements and/or conditions that include parameter values and/or create an output action. The parameter values can, in some embodiments, be identified through a learning process, e.g., as described through  FIGS.  12 - 22   . 
     In step  1104 , the agent  570  can receive information from at least one of a physical device and/or from the graph  529 . The information can be generated by a physical device, e.g., the building subsystems  122 . The building data platform  100  can, in some embodiments, receive the information from the physical device, ingest the information into the graph  529 , and the agent  570  can read the information from the graph  529 . In some embodiments, the agent  570  can check the information of the graph  529  against a trigger rule at a set period. 
     In step  1106 , the agent  570  determines whether the information received in the step  1104  causes the condition to be met. The agent  570  can apply the information to the trigger rule to determine whether the trigger rule is triggered, i.e., the condition of the trigger rule being met. 
     In step  1108 , the agent  570  can perform the action responsive to the condition being met by the information determined in step  1106 . The action may cause a physical device to be operated or information be sent to another agent including another trigger rule and another action rule. In some embodiments, the action can be performed by executing the action rule of the agent  570 . The action rule can perform an action based on one or more parameter value of the action rule. In some embodiments, the action output of the action rule can be sent directly to the physical device, e.g., the building subsystems  122 . In some embodiments, the action output can be stored into the graph  529 . Another operating component of the building data platform  100 , e.g., the command processor  136 , can read the action from the graph  529  can communicate a corresponding command to the building subsystems  122 . 
     In some embodiments, instead of a digital twin triggering its own action, a trigger of the digital twin can trigger an action of another digital twin. For example, a rules engine of the twin manager  108  (e.g., the rules engine  926  described in  FIGS.  9 - 10   ) can link multiple triggers and actions of various digital twins together. For example, the rules engine  926  can store a logical rule with conditional requirements, e.g., triggers being tripped of one or more digital twins, Boolean logic and/or operations (e.g., AND, OR, XOR, NAND, NOT, XNOR, NOR, greater than, less than, equals, etc.), etc. The rule can indicate that when conditions of various triggers of various digital twins are satisfied, one or more actions of various digital twins should be executed. 
     Referring generally to  FIGS.  12 - 23   , systems and methods for using artificial intelligence to determine triggers and actions for an agent is shown. The triggers can trigger autonomously based on received data and cause an action to occur. In some embodiments, multiple digital twins can interact with each other by identifying interrelationships between each other via the graph  529 , e.g., a VAV digital twin could interact with an AHU digital twin responsive to identifying that a VAV represented by the VAV digital twin is related to an AHU represented by the AHU digital twin via the graph  529 . The digital twins can in some embodiments, simulate the impact of triggers and/or actions to validate and learn triggers and/or actions. 
     In some embodiments, the building data platform  100  can perform q-learning (Reinforcement Learning) to train and/or retrain the triggers and/or actions of the agents. In some embodiments, the data used to train and/or retrain the triggers and/or actions can be simulated data determined by another digital twin. 
     One digital twin may have trigger conditions such as, “when the outside temperature is x 0 ,” “when the inside humidity is x %,” “when an AI-driven algorithm&#39;s threshold is reached,” and “when it is a certain day of the week.” In responsive to one or multiple triggers being met, the digital twin can perform actions (e.g., capabilities of a device either inherent and/or digital twin enhanced). The actions can include setting a setpoint to a value x 0 . The actions can be to run a fan for x minutes. The actions can be to start an AI-driven energy saving schedule. The actions can be to change a mode status to an away status. In some embodiments, the building data platform  100  can user other digital twins to simulate a reward for various values of the triggers and/or actions. The reward can be optimized to determine values for the parameters of the triggers and/or actions. 
     In some embodiments, allowing the digital twin to learn and adjust the parameters of the triggers and/or rules allows the digital twin to optimize responses to internal and/or external events in real-time. In some embodiments, the digital twin performs operations with the correlation of contextual relationships to provide spatial intelligence. In some embodiments, the digital twin allows for AI-based self-learning solutions to operate on top of the digital twin. The digital twin can capture comprehensive data that drives rich analytics for security, compliance, etc. In some embodiments, the digital twin can enable and perform simulations. 
     In some embodiments, the building data platform  100  can identify events and/or event patterns if the building data platform  100  identifies a pattern that suggests a trigger and/or action should be updated. For example, if the building data platform  100  identifies a pattern occurring in a building, the building data platform  100  can set triggers and/or actions in digital twins to allow the pattern to occur automatically. For example, if a user closes their blinds at 5:00 P.M. regularly on weekdays, this could indicate that the user desires the blinds to be closed at 5:00 P.M. each day. The building data platform  100  can set a blind control digital twin to trigger a blind closing action at 5:00 P.M. each day. 
     In some embodiments, an agent of a digital twin can predict an inference in the future indicating that some action should be performed in the future. The building data platform  100  can identify that the action should be performed in the future and can set up a flow so that a prediction of one digital twin can be fed into another digital twin that can perform the action. 
     Referring now to  FIG.  12   , a system  1200  of a trigger rule  1202  of a thermostat digital twin where parameters of the trigger rule  1202  are trained is shown, according to an exemplary embodiment. In some embodiments, the system  1200  can implement a model that rewards triggers and/or actions of the thermostat digital twin using a neural network that is trained from data aggregated from a related digital twin of the thermostat digital twin, an air handler unit digital twin. 
     The building data platform  100  can perturb parameters, ε 1  and ε 2  of the trigger rule  1202  of the thermostat digital twin. The trigger rule  1202  may be that if a number of occupants is greater than ε 1  and a zone temperature is less than ε 2 ° C. the rule is triggered and a corresponding action be performed. The corresponding action can be to increase a supply air temperature setpoint of an AHU to 22° C. The perturbation of the parameters can be increasing or decreasing the parameters in set amounts from existing values. The perturbation of the parameters can be selecting a space of values for the parameters and/or randomizing the parameters and/or parameter space. 
     With the perturbed values for ε 1  and ε 2 , the AHU digital twin  1204  can simulate the state of the AHU via the AHU digital twin  1204  for various conditions of occupant number and zone temperature. The result of the various states of the AHU digital twin  1204 . The simulation can be performed by the AI agent  570  via the model  576 . The output of the model  576  can be the simulated states, e.g., timeseries  566 . 
     The building data platform  100  can analyze the states produced by the AHU digital twin  1204  to determine energy and comfort results from the states of the AHU digital twin  1204 . For example, an energy score can be generated for each state. For example, a power consumption level can be determined for each state. Similarly, a comfort violation score can be determined for each state. The comfort violation can indicate whether or not a temperature, humidity, or other condition of a physical space controlled by the AHU would be uncomfortable for a user (e.g., go below or above certain levels). 
     The building data platform  100  can generate accumulated training data. The accumulated training data can include the values of the parameters ε 1  and ε 2 , the state of the AHU digital twin  1204  for each value of the parameters, and the energy score and comfort violation score for each state. In some embodiments, the triggers and/or actions that can be recommended for the thermostat digital twin can be determined by observing the responses of other digital twins on perturbed thresholds of existing triggers and/or actions. 
     The building data platform  100  can generate neural networks  1210  for predicting an energy score based on the parameters ε 1  and ε 2 . Furthermore, the neural networks  1210  can indicate a comfort violation score for the parameters ε 1  and ε 2 . The neural networks  1210  can be trained by the building data platform  100  based on the accumulated training data  1208 . 
     Based on the trained neural network models  1210 , the building data platform  100  can determine optimal values for the parameters ε 1  and ε 2 . The building data platform  100  can search a space of potential values for ε 1  and ε 2  that consider predicted energy scores and/or comfort violation scores predicted by the trained neural network models  1210 . The optimization can be the relation  1400  shown in  FIG.  14   . The optimization  1212  performed by the building data platform  100  can be a method of computing the optimal threshold of a trigger conditions using the neural network models  1210  of rewards (e.g., energy and comfort) and solving constrained optimization model. Similarly, the optimization  1212  performed by the building data platform  100  to determine the optimal threshold of action commands using the neural network models  1210  of rewards and solving constrained optimization. 
     In some embodiments, the optimal values for the parameters found by the building data platform  100  can be presented to a user for review and/or approval via a user interface, e.g., via the user device  176 . In some embodiments, the recommendations produced by the building data platform  100  through the components  1202 - 1212  can be restricted by only looking at state/value changes of digital twins that are nearest neighbors in the graph  529 , e.g., two nodes are directed related by one edge, e.g., a thermostat node for the thermostat digital twin is directed to an AHU node for the AHU digital twin  1204 . In some embodiments, the building data platform  100  can use spatial correlation to assume contextual relationship between assets that can affect each other&#39;s attribute states/values. 
     Referring now to  FIG.  13   , a process  1300  for identifying values for the parameters of the trigger rule  1202  of  FIG.  12    is shown, according to an exemplary embodiment. The process  1300  can be performed by the building data platform  100  and/or any component of the building data platform  100 . The process  1300  can be performed by the system  500  and/or components of the system  500 . Furthermore, the process  1300  can be performed by any computing device described herein. 
     In step  1302 , the building data platform  100  can perturb a thermostat digital twin (e.g., the thermostat digital twin rule  1202 ) with various value for thresholds and/or other parameters, E. The result of the perturbed parameters can result in various states, s. The states can be states predicted by the thermostat digital twin or another digital twin that operates based on the thresholds and/or parameters E, e.g., the AHU digital twin  1204 . The perturbations and simulated states can result in pairs (S, ε). The pairs can be used to determine feedback for energy and/or comfort, e.g., (E, C). 
     In step  1304 , the building data platform  100  can building neural network models, e.g., the neural networks  1210  based on the data determined in step  1302 . The neural networks  1210  can predict energy rewards as a function of the state and the parameters, e.g., E=f(s, ε). Furthermore, the neural networks  1210  can predict comfort rewards as a function of the state and the parameters, e.g., C=f(s, ε). 
     In step  1306 , the building data platform  100  can determine a value for the parameter, ε that minimizes a relation, (α 1 ·E+α 2 ·C). The minimization is shown in relation  1400  of  FIG.  14   . The values of α 1  and α 2  can weigh the various rewards in the relation that is minimized, e.g., the energy reward and/or the comfort reward. In step  1308 , the building data platform  100  can periodically repeat the steps  1302 - 1306 . For example. For example, the building data platform  100  can repeat the steps at a defined time period. In some embodiments, the building data platform  100  can compute rewards for the actions of the thermostat digital twin. If the rewards indicate that the thermostat digital twin need retraining, the building data platform  100  can repeat the steps  1302 - 1308 . 
     Referring now to  FIG.  15   , a system  1500  of components where an action rule  1502  of a thermostat digital twin is shown where parameters of the action rule  1502  are trained, according to an exemplary embodiment. The system  1500  can include similar and/or the same components of  FIG.  14   . The process  1300  of  FIG.  13    can be applied to the action rule  1502  to train the parameters of the action rule  1502 . 
     The thermostat digital twin rule  1502  can be an action rule that if a trigger is met (e.g., the trigger  1402 ), the action rule  1502  executes to command the AHU digital twin  1204 . The trigger rule may be to execute the action rule if an occupant count is greater than ten and a zone temperature is less than twenty degrees Celsius. The action rule  1502  may be to increase an AHU supply air temperature setpoint to a value, e.g., E. The value can, in some embodiments, be 22 degrees Celsius. 
     The building data platform  100  can predict states resulting from perturbed values of E by executing the AHU digital twin  1204  to simulate the states. The building data platform  100  can collect rule feedback  1206  to construct accumulated training data  1208 . Furthermore, the building data platform  100  can train neural network models  1210  based on the accumulated training data  1208  and find optimal values for the parameter E based on the trained neural network models  1210   
     Referring now to  FIG.  16   , a list  1600  and a list  1602  of states of a zone and of an air handler unit that can be used to train the parameters of the trigger rule and the action rule of the thermostat digital twins of  FIGS.  12 - 15    is shown, according to an exemplary embodiment. The list  1600  includes states for a zone. The states can be zone temperature, zone humidity, outdoor air temperature, outdoor air humidity, zone occupancy, etc. These states can be predicted and/or determined based on a digital twin for a space based on perturbed parameter values for a trigger rule, an action rule, weather forecasts, etc. In this regard, the rule feedback  1206 , in some embodiments, can be generated based on the digital twin for the space and used to tune the values of the parameters for the trigger rule  1402  and/or the action rule  1502 . 
     The list  1602  includes states for an AHU. The states can be supply air temperature, supply air flow rate, return air temperature, return air flow rate, outdoor air flow rate, etc. These states can be predicted and/or determined based on a digital twin for an AHU (e.g., the AHU digital twin  1204 ) based on perturbed parameter values for a trigger rule, an action rule, etc. In this regard, the rule feedback  1206  in some embodiments, can be generated based on the digital twin for the AHU and used to tune the values of the parameters for the trigger rule  1402  and/or the action rule  1502 . 
     Referring now to  FIG.  17   , a system  1700  of a trigger rule of a chemical reactor digital twin where parameters of a trigger rule are trained is shown, according to an exemplary embodiment. A reactor feed digital twin which may model the feed of a chemical reactor can include various trigger rules and/or action rules, e.g., the trigger rule  1702 . The trigger rule  1702  can be that if a chemical concentration of a first chemical A is less than ε 1  (e.g., 10 g/l) and a chemical concentration of a second chemical B is less than ε 2  (e.g., 20 g/l) then an action rule is triggered. The action rule may be increase a catalyst C feed amount to 300 g/s. 
     The building data platform  100  can perturb the values for the parameters ε 1  and ε 2  of the reactor feed digital twin trigger rule  1702  (e.g., pseudo-randomly, increasing and/or decreasing in a particular number of predefined increments, etc.). A chemical reactor digital twin  1704  can simulate a state of the chemical reactor for the various perturbed parameters ε 1  and ε 2 . The building data platform  100  can determine a rule feedback  1706  for the state simulate by the chemical reactor digital twin  1704 . The rule feedback  1706  can identify scores for production throughput (P) and chemical property (C). 
     The building data platform  100  can accumulate training data  1708 . The accumulated training data  1708  can include the feedback  1706 , the state simulated by the chemical reactor digital twin  1704 , and/or the parameter values for ε 1  and ε 2 . The building data platform  100  can train neural network models  1710  to predict production throughput and/or chemical property for the various parameter and/or state pairs, e.g., the state resulting from the parameters of the trigger rule  1702 . The building data platform  100  can use the trained neural network models  1710  to identify optimal values for ε 1  and ε 2 . In element  1712 , the building data platform  100  can identify values for ε 1  and ε 2  that minimize the relation  1900  shown in  FIG.  19   . In some embodiment, the optimization can optimize production throughput and/or chemical property. 
     Referring now to  FIG.  18   , a process  1800  for identifying values for the parameters of the trigger rule of  FIG.  17    is shown, according to an exemplary embodiment. The process  1800  can be performed by the building data platform  100  and/or any component of the building data platform  100 . The process  1900  can be performed by the system  500  and/or components of the system  500 . Furthermore, the process  1900  can be performed by any computing device described herein. The steps  1802 - 1808  can be the same as or similar to the steps  1302 - 1308 . However, the steps  1802 - 1808  can be executed for a reactor digital twin and the reward for training the neural networks and be production throughput and chemical property. 
     In step  1802 , the building data platform  100  can perturb a reactor digital twin  1704  with various values of a threshold ε of a trigger rule  1702  with various values which cause the reactor digital twin to determine resulting states for the various values of the threshold, ε. The states and the values for the threshold ε can create state threshold pairs. The pairs can be used to determine feedback, e.g., production throughput and chemical property. 
     In step  1804 , after some accumulation of feedback data, the building data platform  100  can build neural network models  1710  based on the pairs that predict production throughput and chemical property based on the values for the threshold ε. In step  1806 , the building data platform  100  can determine a value for the threshold ε that maximizes a reward and/or minimizes a penalty. The building data platform  100  can minimize the relation  1900  of  FIG.  19   . In step  1808 , the building data platform  100  can periodically retrain the values for the threshold ε for the trigger rule  1702 . 
     Referring now to  FIG.  20   , a system  2000  including an action rule  2002  of a chemical reactor digital twin where parameters of the action rule  2002  are trained is shown, according to an exemplary embodiment. The reactor feed twin rule  2002  can be an action rule to increase a catalyst C feed amount to ε 1  g/s in response to an trigger rule being triggered, e.g., the trigger rule  1702 . The building data platform  100  can perturb the values of the parameter ε 1  and the reactor digital twin  1704  can predict states resulting from the perturbed parameter. The building data platform  100  can determine rule feedback  1706  and generate accumulated training data  1708  based on the rule feedback  1706 . The building data platform  100  can train the neural network models  1710 . Based on the neural network models  1710 , the building data platform  100  can find optimal values for the parameter ε 1 . 
     Referring now to  FIG.  21   , a list  2100  and a list  2102  of states of a feed of a reactor and a reactor that can be included in the trigger rule and the action rule of  FIGS.  12 - 15    are shown, according to an exemplary embodiment. The list  2100  includes states for a feed of a chemical reactor. The states can be reactants feed amount, catalysts feed amount, feed stream temperature, etc. These states can be predicted and/or determined based on a digital twin for a space based on perturbed parameter values for a trigger rule, an action rule, etc. In this regard, the rule feedback  1706  in some embodiments, can be generated based on the digital twin for the space and used to tune the values of the parameters for the trigger rule  1702  and/or the action rule  2002 . 
     The list  2102  includes states for a chemical reactor. The states can be product concentration, cooling coil temperature, product temperature, etc. These states can be predicted and/or determined based on a digital twin for a chemical reactor (e.g., the reactor digital twin  1704 ) based on perturbed parameter values for a trigger rule, an action rule, etc. In this regard, the rule feedback  1706  in some embodiments, can be generated based on the digital twin for the chemical reactor and used to tune the values of the parameters for the trigger rule  1702  and/or the action rule  2002 . 
     Referring now to  FIG.  22   , a system  2200  where triggers and actions that can be constructed and learned for a digital twin is shown, according to an exemplary embodiment. Considering a building where a room in the building has a thermostat, the building data platform  100  can construct triggers and/or actions of an agent of a digital twin or the room. The triggers and/or actions can be determined with an energy reduction reward function  2204  by a learning service  2206 . The energy reduction reward function  2204  can produce triggers and/or actions that have values that minimize energy usage. 
     In some embodiments, the building data platform  100  can search the graph  529  to identify information related to the space, e.g., related pieces of equipment, spaces, people, etc. For example, the building data platform  100  can identify which entities of the graph  529  are related and operate to affect each other. The building data platform  100  can identify which actions each entity can perform and/or what measurements each entity can make, e.g., by identifying related data nodes for each entity. The identified entities, measurements, and/or commands can be combined into the rule  2202  by the building data platform  100 . 
     In some embodiments, the learning service  2206 , which may be a component of the building data platform  100 , can run a learning process with the rule  2202  and/or one or more reward functions (e.g., comfort reward function, carbon footprint reduction reward function, the energy reduction reward function  2204 , etc.). The learning service  2206  can learn the rule  2208  from the rule  2202  and/or the energy reduction reward function  2204 . 
     The learning service  2206  can run an optimization to determine combinations between measurements and actions triggered based on the measurements. The learning service  2206  can determine values for each measurement and/or action. Furthermore, the learning service  2206  can identify the relational operations for causing a trigger, e.g., equals to, greater than, less than, not equal to, etc. Furthermore, the learning service  2206  can identify action operations, e.g., increase by a particular amount, decrease by a particular amount, set an output equal to a value, run a particular algorithm, etc. 
     Referring now to  FIG.  23   , a process  2300  for constructing triggers and actions for a digital twin is shown, according to an exemplary embodiment. In some embodiments, the process  2300  can be performed by the building data platform  100 . In some embodiments, the process  2300  can be performed by the learning service  2206 . 
     In step  2302 , the building data platform  100  can determine actions that a particular entity can take and data that the entity can measure by analyzing a graph  529 . The entity can be a thermostat, an air handler unit, a zone of a building, a person, a VAV unit, and/or any other entity. For example, if the entity is a thermostat the building data platform  100  could identify room temperature measurements for a thermostat and/or a cooling stage command, a heating stage command, a fan command, etc. that the thermostat can perform. Responsive to identifying data that the entity can measure, the building data platform  100  can generate a trigger condition based on the data type, e.g., when the temperature is equal to, less than, greater than, and/or not equal to some parameter value, trigger an action. 
     In step  2304 , the building data platform  100  identifies, based on the graph  529 , entities related to the entity and actions that the entities can take and data that the entities can measure. For example, if the entity is for a thermostat for a zone, the building data platform  100 , could identify a shade control system for controlling a shade of the zone, an air handler unit that serves the zone, a VAV that serves the zone, etc. For example, the building data platform  100  can identify, based on the building graph  529 , that a binds node is associated with a zone node that the thermostat node is related to. The building data platform  100  can identify a list of actions that the entities can perform, e.g., setting blind position from 0% (fully open) to 100% (fully closed). 
     In some  2306 , the building data platform  100  can simulate various combinations of triggers that tare based on the data that the entity and/or entities can measure and actions that are based on the actions that the entity and/or entities can make. The building data platform  100  can simulate various combinations, trigger operations, action operations, and/or parameters. 
     In step  2308 , the building data platform  100  can identify a combination of triggers and actions that maximizes a reward. The building data platform  100  can search the simulated combinations of triggers and/or actions to identify a trigger and/or action that maximizes a reward and/or minimizes a reward. In some embodiments, the building data platform  100  uses a policy gradient and value function instead of brute force to try out combinations of the triggers and/or actions in the steps  2306 - 2308 . 
     In some embodiments, the building data platform  100  can identify the operations for the triggers and/or actions. For example, the operation could be comparing a measurement to a threshold, determining whether a measurement is less than a threshold, determining whether a measurement is greater than the threshold, determining whether the measurement is not equal to the threshold, etc. 
     In step  2310 , the building data platform  100  can generate a digital twin for the entity. The entity can include (or reference) the graph  529  and include an agent that operates the triggers and/or actions. The triggers and/or actions can operate based on the graph  529  and/or based on data received building equipment, e.g., the building subsystems  122 . 
     In step  2312 , the building data platform  100  can run a building system of a building and monitor the behavior of the entity and entities of the building. In some embodiments, the building system can be the building subsystems  122 . In step  2314 , the building data platform  100  can identify relationships between the measurements and actions of the entity and/or the entities based on the monitored behavior. The building data platform  100  can discover existing relationships by identifying how the measurements are currently affecting actions based on the monitored behavior. In step  2316 , the building data platform  100  can optimize the identified relationships between the measurements and the actions by maximizing a reward or minimizing a penalty. 
     Configuration of Exemplary Embodiments 
     The construction and arrangement of the systems and methods as shown in the various exemplary embodiments are illustrative only. Although only a few embodiments have been described in detail in this disclosure, many modifications are possible (e.g., variations in sizes, dimensions, structures, shapes and proportions of the various elements, values of parameters, mounting arrangements, use of materials, colors, orientations, etc.). For example, the position of elements may be reversed or otherwise varied and the nature or number of discrete elements or positions may be altered or varied. Accordingly, all such modifications are intended to be included within the scope of the present disclosure. The order or sequence of any process or method steps may be varied or re-sequenced according to alternative embodiments. Other substitutions, modifications, changes, and omissions may be made in the design, operating conditions and arrangement of the exemplary embodiments without departing from the scope of the present disclosure. 
     The present disclosure contemplates methods, systems and program products on any machine-readable media for accomplishing various operations. The embodiments of the present disclosure may be implemented using existing computer processors, or by a special purpose computer processor for an appropriate system, incorporated for this or another purpose, or by a hardwired 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 that can be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can comprise 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 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 over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a machine, 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 machines to perform a certain function or group of functions. 
     Although the figures show a specific order of method steps, the order of the steps may differ from what is depicted. Also two or more steps may be performed concurrently or with partial concurrence. Such variation will depend on the software and hardware systems chosen and on designer choice. All such variations are within the scope of the disclosure. Likewise, software implementations could be accomplished with standard programming techniques with rule based logic and other logic to accomplish the various connection steps, processing steps, comparison steps and decision steps. 
     In various implementations, the steps and operations described herein may be performed on one processor or in a combination of two or more processors. For example, in some implementations, the various operations could be performed in a central server or set of central servers configured to receive data from one or more devices (e.g., edge computing devices/controllers) and perform the operations. In some implementations, the operations may be performed by one or more local controllers or computing devices (e.g., edge devices), such as controllers dedicated to and/or located within a particular building or portion of a building. In some implementations, the operations may be performed by a combination of one or more central or offsite computing devices/servers and one or more local controllers/computing devices. All such implementations are contemplated within the scope of the present disclosure. Further, unless otherwise indicated, 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.