Patent Publication Number: US-11641388-B1

Title: Remote asset notification

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 16/905,037, filed Jun. 18, 2020, and titled “REMOTE ASSET NOTIFICATION,” which application claims benefit of U.S. Provisional Patent Application No. 63/011,868, filed Apr. 17, 2020, and titled “REMOTE ASSET NOTIFICATION.” U.S. patent application Ser. No. 16/905,037 is also a continuation-in-part of U.S. patent application Ser. No. 16/789,911, filed Feb. 13, 2020, titled, “INDUSTRIAL CONTROLLER SYSTEM AND INTERACTIVE GRAPHICAL USER INTERFACES RELATED THERETO,” which application is a continuation of U.S. patent application Ser. No. 16/557,867, filed Aug. 30, 2019, and titled “INDUSTRIAL CONTROLLER SYSTEM AND INTERACTIVE GRAPHICAL USER INTERFACES RELATED THERETO,” which application claims benefit of U.S. Provisional Patent Application No. 62/823,920, filed Mar. 26, 2019, and titled “INDUSTRIAL CONTROLLER SYSTEM AND INTERACTIVE GRAPHICAL USER INTERFACES RELATED THERETO.” The entire disclosure of each of the above items is hereby made part of this specification as if set forth fully herein and incorporated by reference for all purposes, for all that it contains. 
     Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57 for all purposes and for all that they contain. 
    
    
     TECHNICAL FIELD 
     Embodiments of the present disclosure relate to industrial controller devices, systems, and methods that allow for system automation and data acquisition and processing. Embodiments of the present disclosure further relate to devices, systems, and methods that provide interactive graphical user interfaces for interfacing with and configuring industrial controller devices, sensors, and systems. 
     BACKGROUND 
     The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. 
     Industrial controller systems, such as standard industrial control systems (“ICS”) or programmable automation controllers (“PAC”), may include various types of control equipment used in industrial production, such as supervisory control and data acquisition (“SCADA”) systems, distributed control systems (“DCS”), programmable logic controllers (“PLC”), and industrial safety systems. Such systems may be used in industries including electrical, water and wastewater, oil and gas production and refining, chemical, food, pharmaceuticals, robotics, and the like. Using information collected from various types of sensors to measure process variables, automated and/or operator-driven supervisory commands from the industrial controller system can be transmitted to various devices, e.g., actuator devices such as control valves, hydraulic actuators, magnetic actuators, electrical switches, motors, solenoids, and the like. These actuator devices collect data from sensors and sensor systems, open and close valves and breakers, regulate valves and motors, monitor the industrial process for alarm conditions, and so forth. 
     In general, configuration of industrial controller systems can be time consuming, and unfriendly or impossible for non-technical users. For example, configuration of individual controller devices may require manual interaction with the individual devices, updating firmware (e.g., by inserting memory devices or wired computer interfaces at the individual controller devices) or adjusting settings. Further, in general, gathering data from individual controller devices can be time-consuming and laborious, rendering impossible any real-time or near real-time analyses of such data, including any analyses of data from multiple controller devices. These limitations can make it particularly difficult (or impossible for non-technical users) to deal with situations where a controller device begins to fail, or needs to be updated in view of changes, e.g., to a manufacturing line or process. 
     SUMMARY 
     The systems, methods, and devices described herein each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this disclosure, several non-limiting features will now be described briefly. 
     Prior industrial control systems may include multiple layers of technology, each of which may be a different physical piece of technology. These layers may include device level measurement sensors, telemetry and control devices (e.g., programmable logic controllers (“PLC”) or remote terminal units (“RTU”)), connectivity technology (e.g., gateway devices and systems), “historian” devices (e.g., databases and other data management devices), visibility and management devices (e.g., human machine interface (“HMI”) devices, manufacturing execution systems (“MES”), and/or supervisory control and data acquisition (“SCADA”) systems), and the like. These multiple layers of different technology devices may create significant complexity to implementing, expanding, and updating such prior industrial control systems. 
     Advantageously, various embodiments of the present disclosure may overcome various disadvantages of prior systems and methods. For example, embodiments of the present disclosure may include industrial controller devices (also referred to herein as “controller devices”) that may include built-in wireless and/or wired communications capabilities, data storage and offloading capabilities, rapid configuration capabilities, and/or additional device control capabilities. The controller devices may automatically establish communication with a remote management server. The controller devices may be remotely and centrally monitored and configured via the management server, e.g., via an interactive graphical user interface accessible from a user computing device. The controller devices may include configuration execution capabilities such that they may operate autonomously based on a current configuration. However, the controller devices may further include automatic offloading of received data to a remote database (e.g., via the management server). Such received data may be useable by the management server for providing further analyses, insights, alerts, etc. to users via interactive graphical user interfaces. The controller devices may provide remote access to live operational data via a web-server operating on the controller devices. Human machine interface devices may communicate with the controller devices via wired or wireless, direct or networked communications. The controller devices may provide interactive graphical user interfaces to such human machine interface devices, enabling synchronization of controller device status at multiple human machine interface devices and/or other user devices. Thus, according to various embodiments of the present disclosure, the controller devices and the management server may replace and streamline the multiple layers of technology of prior systems, while also providing added benefits and functionality over prior systems, and maintaining options for interfacing with and working with prior systems (e.g., existing sensors, PLCs, etc.) 
     Advantageously, according to various embodiments, the present disclosure may provide a modern platform that may combine data collection, control, alerts, and analytics in an easy to deploy and easy to use system—from the plant floor to remote sites. Embodiments of the present disclosure may enable management of controller devices from a secure cloud dashboard. Embodiments of the present disclosure may provide controller devices that combine the local control and data collection capabilities of a programmable logic controller (“PLC”) or remote terminal unit (“RTU”), with a 4G LTE cellular gateway into a single device designed to meet the harsh demands of various industrial environments, including water/wastewater, oil and gas, and the like. Embodiments of the present disclosure may enable out-of-the-box visibility of real-time and historical data, and simple alerting without the hassle of additional software or complexity that may be required in prior systems. 
     According to various embodiments, the present disclosure includes one or more controller devices that include various configurable input and output ports (which may be configured based on one or more communications specifications and/or configurations of the controller devices), e.g., for interacting with and communicating with various additional systems and devices, e.g., associated with a manufacturing line or process. Data may be collected or received by the controller devices, and may optionally be processed or analyzed by the controller device, based on a configuration of the controller device, e.g., to generate outputs or controls related to various additional systems and devices, e.g., associated with a manufacturing line or process. The controller device may provide outputs in response to received data and/or analysis of the received data, e.g., to stop or adjust the manufacturing line or process, take actions, cause sending of alerts, etc. The controller device may include on-device memory for storing received data and analyses. The controller device may further include additional aspects, including one or more web-servers, for communicating with other devices/systems. 
     In various embodiments, the controller devices may be configured to automatically connect to a remote management server (e.g., a “cloud”-based management server), and may offload received and analysis data to the remote management server via wired or wireless communications. The controller devices may further communicate with the management server, user computing devices, and/or human machine interface devices, e.g., to provide remote access to the controller device, provide real-time information from the controller device, receive configurations/updates, provide interactive graphical user interfaces, and/or the like. 
     In various embodiments, the management server may aggregate received data and/or analysis data from one or more controller devices, and provide statuses, alerts, analyses, etc., including via interactive graphical user interfaces that may be accessed via user computing devices. The management server may provide interactive graphical user interfaces through which a user may configure one or more controller devices. 
     In various embodiments, Industrial controller devices may be used to monitor status and control operation of one or more assets associated with a process (for example, a manufacturing process). By monitoring status of the one or more assets, industrial controller devices can provide additional insight related to the process. Industrial controller devices may be associated with many assets that may generate and provide may real-time outputs. As the number of industrial controllers devices and assets increase, monitoring assets and their real-time outputs may be cumbersome and time consuming. Therefore, according to various embodiments of the present disclosure, systems and methods facilitate monitoring of many real-time outputs of assets. 
     For example, various embodiments of the present disclosure include a systems and methods of generating and providing remote asset notification via alerts. The systems and methods may allow users to (1) identify and select multiple outputs from the assets, and (2) specify multiple conditions, including multiple thresholds, to be applied to each of the multiple inputs from the assets. Alerts may be generated based at least in part on application of the multiple conditions to each of the multiple outputs from the assets. Additionally, users may be able to specify destinations and information associated with the conditions, group of inputs from the assets, and view previews of the alerts based on real-time inputs received from the assets and the multiple conditions. 
     In various embodiments, human machine interface (“HMI”) devices may communicate with the controller devices, e.g., via accessing web-servers running on the controller devices that provide interactive graphical user interfaces to the human machine interface devices. Users may thereby configure and/or monitor status of the controller devices via the human machine interface devices. Typically, the human machine interface devices may communicate with the controller devices via a local network (e.g., a network local to, or on-site at, a particular organization). 
     In various embodiments, the controller devices may communicate with various additional devices, e.g., various components of a manufacturing line or process, sensors, etc. Such communications may be accomplished via one or more application programming interfaces (“APIs”). 
     Accordingly, in various embodiments, large amounts of data may be automatically and dynamically gathered and analyzed in response to user inputs and configurations, and the analyzed data may be efficiently presented to users. Thus, in some embodiments, the systems, devices, configuration capabilities, graphical user interfaces, and the like described herein are more efficient as compared to previous systems, etc. 
     Further, as described herein, according to various embodiments systems and or devices may be configured and/or designed to generate graphical user interface data useable for rendering the various interactive graphical user interfaces described. The graphical user interface data may be used by various devices, systems, and/or software programs (for example, a browser program), to render the interactive graphical user interfaces. The interactive graphical user interfaces may be displayed on, for example, electronic displays (including, for example, touch-enabled displays). 
     Additionally, it has been noted that design of computer user interfaces “that are useable and easily learned by humans is a non-trivial problem for software developers.” (Dillon, A. (2003) User Interface Design. MacMillan Encyclopedia of Cognitive Science, Vol. 4, London: MacMillan, 453-458.) The present disclosure describes various embodiments of interactive and dynamic graphical user interfaces that are the result of significant development. This non-trivial development has resulted in the graphical user interfaces described herein which may provide significant cognitive and ergonomic efficiencies and advantages over previous systems. The interactive and dynamic graphical user interfaces include improved human-computer interactions that may provide reduced mental workloads, improved decision-making, improved capabilities, reduced work stress, and/or the like, for a user. For example, user interaction with the interactive graphical user interface via the inputs described herein may provide an optimized display of, and interaction with, controller devices, and may enable a user to more quickly and accurately access, navigate, assess, and digest analyses, configurations, received/operational data, and/or the like, than previous systems. 
     Further, the interactive and dynamic graphical user interfaces described herein are enabled by innovations in efficient interactions between the user interfaces and underlying systems and components. For example, disclosed herein are improved methods of receiving user inputs (including methods of interacting with, and selecting, received data), translation and delivery of those inputs to various system components (e.g., controller devices), automatic and dynamic execution of complex processes in response to the input delivery (e.g., execution of configurations on controller devices), automatic interaction among various components and processes of the system, and automatic and dynamic updating of the user interfaces (to, for example, display the information related to controller devices). The interactions and presentation of data via the interactive graphical user interfaces described herein may accordingly provide cognitive and ergonomic efficiencies and advantages over previous systems. 
     Various embodiments of the present disclosure provide improvements to various technologies and technological fields, and practical applications of various technological features and advancements. For example, as described above, existing industrial controller systems are limited in various ways, and various embodiments of the present disclosure provide significant improvements over such technology, and practical applications of such improvements. Additionally, various embodiments of the present disclosure are inextricably tied to, and provide practical applications of, computer technology. In particular, various embodiments rely on detection of user inputs via graphical user interfaces, operation and configuration of controller devices, calculation of updates to displayed electronic data based on user inputs, automatic processing of received data, and presentation of updates to displayed data and analyses via interactive graphical user interfaces. Such features and others are intimately tied to, and enabled by, computer and industrial controller technology, and would not exist except for computer and industrial controller technology. For example, the industrial controller functionality and interactions with displayed data described below in reference to various embodiments cannot reasonably be performed by humans alone, without the computer and imaging technology upon which they are implemented. Further, the implementation of the various embodiments of the present disclosure via computer technology enables many of the advantages described herein, including more efficient interaction with, and presentation and analysis of, various types of electronic data, controller device operation and configuration, and the like. 
     Various embodiments of the present disclosure may include a system for providing remote monitoring of assets. The system may include a computer readable storage medium having program instructions embodied therewith and one or more processors configured to execute the program instructions. The processors can provide secure communications with one or more assets via one or more industrial controller devices. The processor can further receive, via the one or more industrial controller devices, operational data comprising inputs received from the one or more assets. The processor can further generate a graphical user interface including user interface elements. The graphical user interface can be usable for selection of inputs from the one or more assets and specification of conditions to be applied to inputs to cause generation of alerts. The processor can further receive, via the graphical user interface, selection of a first plurality of inputs. The processor can further receive, via the graphical user interface, a first condition comprising a first threshold. The processor can further receive, via the graphical user interface, a second condition comprising a second threshold. The processor can further apply both the first threshold and the second threshold to each of the first plurality of inputs to generate one or more alerts when either or both of the first threshold or the second threshold is satisfied. 
     According to various embodiments, the processors may further, prior to application of both the first threshold and the second threshold to each of the first plurality of inputs, generate one or more alert previews. 
     According to various embodiments, the first condition further includes a first logic and a first display setting. The first display setting may include a first color. The second condition further includes a second logic and a second display setting. The second display setting may include a second color. The first color may be applied to alerts generated when the first threshold is satisfied according to the first logic and the second color may be applied to alerts generated when the second threshold is satisfied according to the second logic. The first condition may further include a first notification setting and the second condition may further include a second notification setting. Each of the first notification setting and the second notification setting may include at least one of: recipient information, notification delivery method, or frequency of notification delivery. 
     According to various embodiments, receiving the selection of the first plurality of inputs may include (1) receiving a keyword or a key characteristic and (2) determining, based on the keyword or key characteristic, a listing of matching inputs and/or a listing of matching assets. The inputs may be groupable to enable selection of multiple inputs via selection of a single group of inputs, and wherein groups inputs are identifiable or searchable using a keyword or a common characteristic. The common characteristic may be an input type such that a group of inputs share the same input type. 
     Various combinations of the above and below recited features, embodiments, and aspects are also disclosed and contemplated by the present disclosure. 
     Additional embodiments of the disclosure are described below in reference to the appended claims, which may serve as an additional summary of the disclosure. 
     In various embodiments, systems and/or computer systems are disclosed that comprise a computer readable storage medium having program instructions embodied therewith, and one or more processors configured to execute the program instructions to cause the one or more processors to perform operations comprising one or more aspects of the above- and/or below-described embodiments (including one or more aspects of the appended claims). 
     In various embodiments, computer-implemented methods are disclosed in which, by one or more processors executing program instructions, one or more aspects of the above- and/or below-described embodiments (including one or more aspects of the appended claims) are implemented and/or performed. 
     In various embodiments, computer program products comprising a computer readable storage medium are disclosed, wherein the computer readable storage medium has program instructions embodied therewith, the program instructions executable by one or more processors to cause the one or more processors to perform operations comprising one or more aspects of the above- and/or below-described embodiments (including one or more aspects of the appended claims). 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The following drawings and the associated descriptions are provided to illustrate embodiments of the present disclosure and do not limit the scope of the claims. Aspects and many of the attendant advantages of this disclosure will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: 
         FIG.  1    illustrates a block diagram of an example operating environment in which one or more aspects of the present disclosure may operate, according to various embodiments of the present disclosure. 
         FIG.  2    illustrates a block diagram including an example implementation of a management device, according to various embodiments of the present disclosure. 
         FIG.  3    illustrates a block diagram of an example controller device, according to various embodiments of the present disclosure. 
         FIG.  4    is a diagram of an example physical implementation of a controller device, according to various embodiments of the present disclosure. 
         FIG.  5    is a flowchart illustrating example methods and functionality, according to various embodiments of the present disclosure. 
         FIGS.  6 A- 6 F  illustrate example interactive graphical user interfaces related to analysis of data from controller devices, according to various embodiments of the present disclosure. 
         FIGS.  7 A- 7 C  illustrate example interactive graphical user interfaces related to controller device configuration, according to various embodiments of the present disclosure. 
         FIGS.  8 A- 8 D  illustrate example interactive graphical user interfaces related to dashboard generation, according to various embodiments of the present disclosure. 
         FIGS.  9 A- 9 C  illustrate example interactive graphical user interfaces related to alert generation, according to various embodiments of the present disclosure. 
         FIGS.  10 A- 10 C  illustrate example interactive graphical user interfaces related to controller device configuration, according to various embodiments of the present disclosure. 
         FIGS.  11 A- 11 B  illustrate example interactive graphical user interfaces related to generating and viewing alerts for remote asset monitoring, according to various embodiments of the present disclosure. 
         FIG.  12    is a flowchart illustrating example method of generating alerts, according to various embodiments of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Although certain preferred embodiments and examples are disclosed below, inventive subject matter extends beyond the specifically disclosed embodiments to other alternative embodiments and/or uses and to modifications and equivalents thereof. Thus, the scope of the claims appended hereto is not limited by any of the particular embodiments described below. For example, in any method or process disclosed herein, the acts or operations of the method or process may be performed in any suitable sequence and are not necessarily limited to any particular disclosed sequence. Various operations may be described as multiple discrete operations in turn, in a manner that may be helpful in understanding certain embodiments; however, the order of description should not be construed to imply that these operations are order dependent. Additionally, the structures, systems, and/or devices described herein may be embodied as integrated components or as separate components. For purposes of comparing various embodiments, certain aspects and advantages of these embodiments are described. Not necessarily all such aspects or advantages are achieved by any particular embodiment. Thus, for example, various embodiments may be carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other aspects or advantages as may also be taught or suggested herein. 
     I. Overview 
     As mentioned above, according to various embodiments, the present disclosure includes one or more controller devices that include various configurable input and output ports (which may be configured based on one or more communications specifications and/or configurations of the controller devices), e.g., for interacting with and communicating with various additional systems and devices, e.g., associated with a manufacturing line or process. Data may be collected or received by the controller devices, and may optionally be processed or analyzed by the controller device, based on a configuration of the controller device, e.g., to generate outputs or controls related to various additional systems and devices, e.g., associated with a manufacturing line or process. The controller device may provide outputs in response to received data and/or analysis of the received data, e.g., to stop or adjust the manufacturing line or process, take actions, cause sending of alerts, etc. The controller device may include on-device memory for storing received data and analyses. The controller device may further include additional aspects, including one or more web-servers, for communicating with other devices/systems. 
     In various embodiments, the controller devices may be configured to automatically connect to a remote management server (e.g., a “cloud”-based management server), and may offload received and analysis data to the remote management server via wired or wireless communications. The controller devices may further communicate with the management server, user computing devices, and/or human machine interface devices, e.g., to provide remote access to the controller device, provide real-time information from the controller device, receive configurations/updates, provide interactive graphical user interfaces, and/or the like. 
     In various embodiments, the management server may aggregate received data and/or analysis data from one or more controller devices, and provide statuses, alerts, analyses, etc., including via interactive graphical user interfaces that may be accessed via user computing devices. The management server may provide interactive graphical user interfaces through which a user may configure one or more controller devices. 
     In various embodiments, Industrial controller devices may be used to monitor status and control operation of one or more assets associated with a process (for example, a manufacturing process). By monitoring status of the one or more assets, industrial controller devices can provide additional insight related to the process. Industrial controller devices may be associated with many assets that may generate and provide may real-time outputs. As the number of industrial controllers devices and assets increase, monitoring assets and their real-time outputs may be cumbersome and time consuming. Therefore, according to various embodiments of the present disclosure, systems and methods facilitate monitoring of many real-time outputs of assets. 
     For example, various embodiments of the present disclosure include a systems and methods of generating and providing remote asset notification via alerts. The systems and methods may allow users to (1) identify and select multiple outputs from the assets, and (2) specify multiple conditions, including multiple thresholds, to be applied to each of the multiple inputs from the assets. Alerts may be generated based at least in part on application of the multiple conditions to each of the multiple outputs from the assets. Additionally, users may be able to specify destinations and information associated with the conditions, group of inputs from the assets, and view previews of the alerts based on real-time inputs received from the assets and the multiple conditions. 
     In various embodiments, human machine interface (“HMI”) devices may communicate with the controller devices, e.g., via accessing web-servers running on the controller devices that provide interactive graphical user interfaces to the human machine interface devices. Users may thereby configure and/or monitor status of the controller devices via the human machine interface devices. Typically, the human machine interface devices may communicate with the controller devices via a local network (e.g., a network local to, or on-site at, a particular organization). 
     In various embodiments, the controller devices may communicate with various additional devices, e.g., various components of a manufacturing line or process, sensors, etc. Such communications may be accomplished via one or more application programming interfaces (“APIs”). 
     Various aspects of the present disclosure may individually and/or collectively provide various technical advantages as described herein, and may overcome various disadvantages of prior art systems and methods. For example, embodiments of the present disclosure may include industrial controller devices (also referred to herein as “controller devices”) that may include built-in wireless and/or wired communications capabilities, data storage and offloading capabilities, rapid configuration capabilities, and/or additional device control capabilities. The controller devices may automatically establish communication with a remote management server. The controller devices may be remotely and centrally monitored and configured via the management server, e.g., via an interactive graphical user interface accessible from a user computing device. The controller devices may include configuration execution capabilities such that they may operate autonomously based on a current configuration. However, the controller devices may further include automatic offloading of received data to a remote database (e.g., via the management server). Such received data may be useable by the management server for providing further analyses, insights, alerts, etc. to users via interactive graphical user interfaces. The controller devices may provide remote access to live operational data via a web-server operating on the controller devices. Human machine interface devices may communicate with the controller devices via wired or wireless, direct or networked communications. The controller devices may provide interactive graphical user interfaces to such human machine interface devices, enabling synchronization of controller device status at multiple human machine interface devices and/or other user devices. Thus, according to various embodiments of the present disclosure, the controller devices and the management server may replace and streamline the multiple layers of technology of prior systems, while also providing added benefits and functionality over prior systems, and maintaining options for interfacing with and working with prior systems (e.g., existing sensors, PLCs, etc.) 
     Advantageously, according to various embodiments, the present disclosure may provide a modern platform that may combine data collection, control, alerts, and analytics in an easy to deploy and easy to use system—from the plant floor to remote sites. Embodiments of the present disclosure may enable management of controller devices from a secure cloud dashboard. Embodiments of the present disclosure may provide controller devices that combine the local control and data collection capabilities of a programmable logic controller (“PLC”) or remote terminal unit (“RTU”), with a 4G LTE cellular gateway into a single device designed to meet the harsh demands of various industrial environments, including water/wastewater, oil and gas, and the like. Embodiments of the present disclosure may enable out-of-the-box visibility of real-time and historical data, and simple alerting without the hassle of additional software or complexity that may be required in prior systems. 
     Embodiments of the disclosure will now be described with reference to the accompanying figures, wherein like numerals refer to like elements throughout. The terminology used in the description presented herein is not intended to be interpreted in any limited or restrictive manner, simply because it is being utilized in conjunction with a detailed description of certain specific embodiments of the disclosure. Furthermore, embodiments of the disclosure may include several novel features, no single one of which is solely responsible for its desirable attributes or which is essential to practicing the embodiments of the disclosure herein described. 
     II. Terms 
     In order to facilitate an understanding of the systems and methods discussed herein, a number of terms are defined below. The terms defined below, as well as other terms used herein, should be construed broadly to include the provided definitions, the ordinary and customary meaning of the terms, and/or any other implied meaning for the respective terms. Thus, the definitions below do not limit the meaning of these terms, but only provide example definitions. 
     User Input (also referred to as “Input”): Any interaction, data, indication, etc., received by a system/device from a user, a representative of a user, an entity associated with a user, and/or any other entity. Inputs may include any interactions that are intended to be received and/or stored by the system/device; to cause the system/device to access and/or store data items; to cause the system to analyze, integrate, and/or otherwise use data items; to cause the system to update to data that is displayed; to cause the system to update a way that data is displayed; and/or the like. Non-limiting examples of user inputs include keyboard inputs, mouse inputs, digital pen inputs, voice inputs, finger touch inputs (e.g., via touch sensitive display), gesture inputs (e.g., hand movements, finger movements, arm movements, movements of any other appendage, and/or body movements), and/or the like. Additionally, user inputs to the system may include inputs via tools and/or other objects manipulated by the user. For example, the user may move an object, such as a tool, stylus, or wand, to provide inputs. Further, user inputs may include motion, position, rotation, angle, alignment, orientation, configuration (e.g., fist, hand flat, one finger extended, etc.), and/or the like. For example, user inputs may comprise a position, orientation, and/or motion of a hand or other appendage, a body, a 3D mouse, and/or the like. 
     Data Store: Any computer readable storage medium and/or device (or collection of data storage mediums and/or devices). Examples of data stores include, but are not limited to, optical disks (e.g., CD-ROM, DVD-ROM, etc.), magnetic disks (e.g., hard disks, floppy disks, etc.), memory circuits (e.g., solid state drives, random-access memory (RAM), etc.), and/or the like. Another example of a data store is a hosted storage environment that includes a collection of physical data storage devices that may be remotely accessible and may be rapidly provisioned as needed (commonly referred to as “cloud” storage). 
     Database: Any data structure (and/or combinations of multiple data structures) for storing and/or organizing data, including, but not limited to, relational databases (e.g., Oracle databases, PostgreSQL databases, etc.), non-relational databases (e.g., NoSQL databases, etc.), in-memory databases, spreadsheets, comma separated values (CSV) files, eXtendible markup language (XML) files, TeXT (TXT) files, flat files, spreadsheet files, and/or any other widely used or proprietary format for data storage. Databases are typically stored in one or more data stores. Accordingly, each database referred to herein (e.g., in the description herein and/or the figures of the present application) is to be understood as being stored in one or more data stores. Additionally, although the present disclosure may show or describe data as being stored in combined or separate databases, in various embodiments such data may be combined and/or separated in any appropriate way into one or more databases, one or more tables of one or more databases, etc. As used herein, a data source may refer to a table in a relational database, for example. 
     III. Example Operating Environment 
       FIG.  1    illustrates a block diagram of an example operating environment  100  in which one or more aspects of the present disclosure may operate, according to various embodiments of the present disclosure. The operating environment  100  may include one or more user devices  120 , a management server  140 , controller device  150 , one or more human machine interface devices  170 , and one or more additional devices  180 . The various devices may communicate with one another via, e.g., a communications network  130  and/or a local communications network  160 , as illustrated. 
     In general, the controller device  150  comprises a housing including processor(s), memory, input/output ports, etc. that may be affixed to, or positioned near, e.g., an industrial process, a manufacturing line, one or more industrial machines, and/or the like. The controller device  150  provides outputs to, receives inputs from, and otherwise communicates with and/or controls, various additional systems and devices, e.g., associated with an industrial process. In general, the controller device  150  functions based on a configuration of the controller device  150 , which may include various communications specifications (e.g., that indicate functionality of the input and output ports), executable program instructions/code, and/or the like. Based on the configuration, the controller device  150  may process or analyze data received via the ports of the controller device  150 , and provide outputs or controls, cause sending of alerts, etc., based on the processing/analyses. Configurations of the controller device  150  may include various analysis algorithms, program instructions, scripts, etc., as described herein. Execution of the configuration may be performed on the controller device  150 , rather than remotely, to enable rapid responses to the results of analyses of inputs to the controller device  150 . 
     Received data and analysis results/data may be stored in a memory of the controller device  150  (e.g., a computer readable storage medium). The received data and analysis results may also be automatically transmitted from the controller device  150 , e.g., to management server  140 . The management server  140  may thereby receive received data and analysis results from multiple controller devices  150 , and may aggregate and perform further analyses on the received data and analysis results from multiple controller devices  150 . 
     The management server  140  may communicate with the controller device(s)  150  to enable remote, rapid configuration of the controller device(s)  150 . Such configuration may be accomplished via interactive graphical user interfaces provided by the management server  140  and accessible by the user device(s)  120 , for example. Via the management server  140 , and/or directly by communication with the controller device(s)  150 , user device(s)  120  may access real-time views of status, analysis, etc. of the controller device(s)  150 . Communications with the controller device(s)  150  may be accomplished via web-servers executing on the controller devices  150  themselves. 
     In some embodiments, the features and services provided by the management server  140  may be implemented as web services consumable via the network  130 . In further embodiments, the management server  140  is provided by one or more virtual machines implemented in a hosted computing environment. The hosted computing environment may include one or more rapidly provisioned and released computing resources, which computing resources may include computing, networking and/or storage devices. 
     In general, the optional human machine interface (“HMI”) device(s)  170  may be any computing device such as a desktop, laptop or tablet computer, personal computer, tablet computer, wearable computer, server, personal digital assistant (PDA), hybrid PDA/mobile phone, mobile phone, smartphone, set top box, voice command device, digital media player, and the like. A human machine interface device  170  may execute an application (e.g., a browser, a stand-alone application, etc.) that allows a user to access interactive user interfaces, view analyses or aggregated data, and/or the like as described herein. The human machine interface device(s)  170  may communicate with the controller device(s)  150 , e.g., via accessing web-servers running on the controller device(s)  150  that provide interactive graphical user interfaces to the human machine interface device(s)  170 . Users may thereby configure and/or monitor status of the controller device(s)  150  via the human machine interface device(s)  170 . Typically, the human machine interface device(s)  170  may communicate with the controller device(s)  150  via a local network (e.g., a network local to, or on-site at, a particular organization). 
     The optional additional device(s)  180  may comprise various components of a manufacturing/industrial line or process, sensors, and/or the like. The controller device(s)  150  may communicate with the additional device(s)  180  to receive information from the additional device(s)  180 , and/or to provide outputs/controls to the additional device(s)  180 . Communications with the additional device(s)  180  may be accomplished via one or more application programming interfaces (“APIs”). Communications with the additional device(s)  180  may also be accomplished via intermediate communications with existing or legacy devices, such as specialized PLCs and/or the like. 
     Various example user devices  120  are shown in  FIG.  1   , including a desktop computer, laptop, and a mobile phone, each provided by way of illustration. In general, the user devices  120  can be any computing device such as a desktop, laptop or tablet computer, personal computer, tablet computer, wearable computer, server, personal digital assistant (PDA), hybrid PDA/mobile phone, mobile phone, smartphone, set top box, voice command device, digital media player, and the like. A user device  120  may execute an application (e.g., a browser, a stand-alone application, etc.) that allows a user to access interactive user interfaces, view analyses or aggregated data, and/or the like as described herein. In various embodiments, users may interact with various components of the example operating environment  100  (e.g., the management server  140 , the controller device(s)  150 , the human machine interface device(s)  170 , etc.) via the user device(s)  120 . Such interactions may typically be accomplished via interactive graphical user interfaces, however alternatively such interactions may be accomplished via command line, and/or other means. 
     The network  130  may include any wired network, wireless network, or combination thereof. For example, the network  130  may be a personal area network, local area network, wide area network, over-the-air broadcast network (e.g., for radio or television), cable network, satellite network, cellular telephone network, or combination thereof. As a further example, the network  130  may be a publicly accessible network of linked networks, possibly operated by various distinct parties, such as the Internet. In some embodiments, the network  130  may be a private or semi-private network, such as a corporate or university intranet. The network  130  may include one or more wireless networks, such as a Global System for Mobile Communications (GSM) network, a Code Division Multiple Access (CDMA) network, a Long Term Evolution (LTE) network, or any other type of wireless network. The network  130  can use protocols and components for communicating via the Internet or any of the other aforementioned types of networks. For example, the protocols used by the network  130  may include Hypertext Transfer Protocol (HTTP), HTTP Secure (HTTPS), Message Queue Telemetry Transport (MQTT), Constrained Application Protocol (CoAP), and the like. Protocols and components for communicating via the Internet or any of the other aforementioned types of communication networks are well known to those skilled in the art and, thus, are not described in more detail herein. 
     The local network  160  may similarly include any wired network, wireless network, or combination thereof. In general, however, the local network  160  illustrated in  FIG.  1    represents a network that may be local to a particular organization, e.g., a private or semi-private network, such as a corporate or university intranet. In some implementations, devices may communicate via the local network  160  without traversing an external network  130  such as the Internet. In some implementations, devices connected via the local network  160  may be walled off from accessing the network  130  (e.g., the Internet), e.g., by a gateway device, unless specifically granted access to the network  130 . Accordingly, e.g., the human machine interface device(s)  170  (and/or user device(s)  120 ) may communicate with the controller device  150  directly (via wired or wireless communications) or via the local network  160 , without traversing the network  130 . Thus, even if the network  130  is down, or is not currently providing connectivity to the management server  140 , the controller device(s)  150  and the human machine interface device(s)  170  (and/or the user device(s)  120 ) may continue to communicate and function via the local network  160  (or via direct communications). 
     For example, the network  160  may be a personal area network, local area network, wide area network, over-the-air broadcast network (e.g., for radio or television), cable network, satellite network, cellular telephone network, or combination thereof. As a further example, the network  160  may be a publicly accessible network of linked networks, possibly operated by various distinct parties, such as the Internet. In some embodiments, the network  160  may be a private or semi-private network, such as a corporate or university intranet. The network  160  may include one or more wireless networks, such as a Global System for Mobile Communications (GSM) network, a Code Division Multiple Access (CDMA) network, a Long Term Evolution (LTE) network, or any other type of wireless network. The network  160  can use protocols and components for communicating via the Internet or any of the other aforementioned types of networks. For example, the protocols used by the network  160  may include Hypertext Transfer Protocol (HTTP), HTTP Secure (HTTPS), Message Queue Telemetry Transport (MQTT), Constrained Application Protocol (CoAP), and the like. Protocols and components for communicating via the Internet or any of the other aforementioned types of communication networks are well known to those skilled in the art and, thus, are not described in more detail herein. 
     In various embodiments, communications among the various components of the example operating environment  100  may be accomplished via any suitable means. For example, the controller device(s)  150  may communicate with one another, the additional device(s)  180 , the human machine interface device(s)  170 , the management server  140 , and/or the user device(s)  120  via any combination of the network  130 , the local network  160 , or any other wired or wireless communications means or method (e.g., Bluetooth, WiFi, infrared, cellular, etc.). 
     Further details and examples regarding the implementations, operation, and functionality, including various interactive graphical user interfaces, of the various components of the example operating environment  100  are described herein in reference to various figures. 
     IV. Example Management Device/Server 
       FIG.  2    illustrates a block diagram including an example implementation of a management device  230 , according to various embodiments of the present disclosure. In the example implementation, management device  230  includes management server  140 , which management server  140  may be a Web or cloud server, or a cluster of servers, running on one or more sets of server hardware. In an embodiment, the management server  140  works for both single and multi-tenant installations, meaning that multiple organizations with different administrators may have, e.g., multiple controller devices, human machine interface devices, and additional devices managed by the same management server. 
     According to various embodiments, management server  140  may be implemented on management device  230  (or multiple devices similar to management device  230 ), which includes server hardware  205 . Server hardware  205  includes one or more communication interfaces  260 , one or more processors  262 , and one or more computer readable storage mediums  210 , each of which may be in communication with one another. The computer readable storage medium  210  includes data processing module  251 , user interface module  252 , network manager module  253 , devices database  254 , configurations database  256 , and organizations database  258 . In various implementations, the various databases of the management device  230  may be combined or separated/partitioned as appropriate to implement the functionality described herein, and to maintain security and separation of data, e.g., for different organizations. In various implementations, the various databases may or may not be stored separately from the management device  230 . 
     In various implementations one or more buses, interconnects, wires/cables, etc. may be used to interconnect the various components of the server hardware  205 . In various implementations one or more interfaces, APIs, communication layers, buses, interconnects, wires/cables, etc. may be used to interconnect the various components of the management device  230 . 
     In operation, the one or more communication interfaces  260 , one or more processors  262 , and one or more computer readable storage mediums  210  communicate with one another to, e.g., execute by the processor(s)  262  computer program instructions (e.g., as provided by the user interface module  252 ); receive, access, and transmit data (e.g., to/from the databases and via the communication interface(s)  260 ); and/or the like. In general, the server hardware  205  enables the functionality of the management server  140  as described herein. Further implementation details are described below. 
     In operation, the communication interface(s)  260  may provide wired and/or wireless communications with other devices and networks, as described herein. In various embodiments, communications among the various components of the example operating environment  100  may be accomplished via any suitable means. For example, the management server  140  and/or management device  230  may communicate with the controller device  150 , the human machine interface device(s)  170 , the additional device(s)  180 , and/or the user device(s)  120  via any combination of the network  130 , the local network  160 , or any other communications means or method (e.g., Bluetooth, WiFi, infrared, cellular, etc.). Accordingly, the communications interface(s)  260  may include one or more of wired and wireless transceivers, such as a Joint Test Action Group (JTAG) transceiver, a Bluetooth or Bluetooth Low Energy (LE) transceiver, an IEEE 802.11 transceiver, an Ethernet transceiver, a USB transceiver, a Thunderbolt transceiver, an infrared transceiver, a wireless cellular telephony transceiver (e.g., 2G, 3G, 4G, 5G), or the like. 
     In operation, data processing module  251  may provide processing and analysis of data (e.g., data received from the various devices, including the controller devices and/or additional devices) as described herein. The data processing/analysis may usefully provide insights and information that may be provided via various interactive graphical user interfaces, as described herein. 
     In operation, the user interface module  252  may provide the various interactive graphical user interface functionality described herein. This may include, for example, generating user interface data useable for rendering the various interactive user interfaces described. The user interface data may be used by various computer systems, devices, and/or software programs (for example, a browser program of a user device  120 ), to render the interactive user interfaces. The interactive user interfaces may be displayed on, for example, electronic displays (including, for example, touch-enabled displays). For example, the user interface module  252  may provide various network accessible interactive graphical user interfaces, e.g., to allow the administrators of the various organizations and devices to create and log into an account associated with an organization to which a set of devices belong (e.g., controller devices and additional devices), and manage, and access data associated with, those devices as described herein. 
     In operation, the network manager module  253  may provide communication with and configuration and management of the various devices associated with each organization. This may include, for example, receiving and managing information related to the various devices (e.g., controller devices, additional devices, and human machine interface devices) at the time of manufacture, associating devices with particular organizations when they are purchased/claimed and implemented by the organizations (e.g., the claiming may be performed at least in part by populating the devices database  254  and the organizations database  258  with appropriate information when the devices are associated with an organization), receiving data from the various devices (e.g., and storing the data in the devices database  254  or other appropriate database), sending data to various devices (e.g., sending and/or syncing configurations stored in the configurations database  256  to/with various devices), and/or the like. 
     In operation, the devices database  254  may store information regarding the controller devices  150 , human machine interface devices  170 , and/or additional devices  180 , and various relationships and associations among these devices. This information may include identifiers associated with these devices, data received from these devices, analysis data from these devices, etc. 
     In operation, the configurations database  256  may store information regarding configurations of the controller devices  150 , human machine interface devices  170 , and additional devices  180 . 
     In operation, the organizations database  258  may store information regarding the organizations to which the controller devices  150 , human machine interface devices  170 , and additional devices  180  belong. 
     In various embodiments, the management server  140 , as implemented by the management device  230 , may include various other modules, components, engines, etc. to provide the functionality as described herein. It will be appreciated that additional components, not shown, may also be part of the management server  140  and/or the management device  230 , and, in certain embodiments, fewer components than that shown in  FIG.  2    may also be used in the management server  140  and/or the management device  230 . For example, the management server  140  may include a security module used to manage cryptographic keys, certificates, and/or other data associated with establishing secure communication with various other devices. For example, the devices database  254  may include an identifier of each device (e.g., a serial number), a secret to be used to establish a secure communication with the devices of the same organization, and/or a mechanism to authenticate the devices&#39; identity (e.g., the public key of a private public key pair, the private key of which was embedded or stored in the device during the manufacturing, etc.). 
     While various embodiments do not implement virtualization, alternative embodiments may use different forms of virtualization—represented by a virtualization layer  220  in the management device  230 . In these embodiments, the management server  140  and the hardware that executes it form a virtual management server, which is a software instance of the modules and/or databases stored on the computer readable storage medium  210 . 
     For example, in an implementation the management device  230  (or one or more aspects of the management device  230 , e.g., the management server  140 ) may comprise, or be implemented in, a “virtual computing environment”. As used herein, the terms “virtual computing environment”, “virtualization”, “virtual machine”, and/or the like should be construed broadly to include, for example, computer readable program instructions executed by one or more processors (e.g., as described below) to implement one or more aspects of the modules and/or functionality described herein. Further, in this implementation, one or more modules/engines/etc. (e.g., user interface module  252 ) and/or databases of the management device  230  may be understood as comprising one or more rules engines of the virtual computing environment that, in response to inputs received by the virtual computing environment, execute rules and/or other program instructions to modify operation of the virtual computing environment. For example, a request received from the user device(s)  120  may be understood as modifying operation of the virtual computing environment to cause modules to gather data, generate or transmit configurations, generate or transmit user interfaces, etc. Such functionality may comprise a modification of the operation of the virtual computing environment in response to inputs and according to various rules. Other functionality implemented by the virtual computing environment (as described throughout this disclosure) may further comprise modifications of the operation of the virtual computing environment, for example, the operation of the virtual computing environment may change depending on the information gathered and/or responses received and analyzed. Initial operation of the virtual computing environment may be understood as an establishment of the virtual computing environment. In some implementations the virtual computing environment may comprise one or more virtual machines, virtualization layers, containers, and/or other types of emulations of computing systems or environments. In some implementations the virtual computing environment may comprise a hosted computing environment that includes a collection of physical computing resources that may be remotely accessible and may be rapidly provisioned as needed (commonly referred to as “cloud” computing environment). 
     Implementing one or more aspects of the management device  230  as a virtual computing environment may advantageously enable executing different aspects or modules of the system on different computing devices or processors, which may increase the scalability of the system. Implementing one or more aspects of the management device  230  as a virtual computing environment may further advantageously enable sandboxing various aspects, data, or modules of the system from one another, which may increase security of the system by preventing, e.g., malicious intrusion into the system from spreading. Implementing one or more aspects of the management device  230  as a virtual computing environment may further advantageously enable parallel execution of various aspects or modules of the system, which may increase the scalability of the system. Implementing one or more aspects of the management device  230  as a virtual computing environment may further advantageously enable rapid provisioning (or de-provisioning) of computing resources to the system, which may increase scalability of the system by, e.g., expanding computing resources available to the system or duplicating operation of the system on multiple computing resources. For example, the system may be used by thousands, hundreds of thousands, or even millions of users simultaneously, and many megabytes, gigabytes, or terabytes (or more) of data may be transferred or processed by the system, and scalability of the system may enable such operation in an efficient and/or uninterrupted manner. 
     V. Example Controller Device 
       FIG.  3    illustrates a block diagram of an example controller device  150 , according to various embodiments of the present disclosure. Controller device  150  may comprise one or more processors  322 , one or more communication interfaces  324 , and one or more computer readable storage mediums  330 , each of which may be in communication with one another. The computer readable storage medium(s)  330  may include received data  332 , configuration data  334 , web server module(s)  336 , and data processing module(s)  338 . The received data  332  and the configuration data  334  may be stored in one or more databases of the controller device  150 . In various implementations one or more buses, interconnects, wires/cables, etc. may be used to interconnect the various components of the controller device  150 , and of the controller device  150  more generally. 
     In operation, the one or more communication interfaces  324 , one or more processors  322 , and one or more computer readable storage mediums  330  communicate with one another to, e.g., execute by the processor(s)  322  computer program instructions (e.g., as provided by the configuration data  334 , the web server module(s)  336 , and/or the data processing module(s)  338 ); receive, access, and transmit data (e.g., to/from the received data  332  and/or configuration data  334 , and via the communication interface(s)  324 ); and/or the like. Further implementation details are described below. 
     In operation, the communication interface(s)  324  may provide wired and/or wireless communications with other devices and networks, as described herein. In various embodiments, communications among the various components of the example operating environment  100  may be accomplished via any suitable means. For example, the controller device(s)  150  may communicate with one another, the additional device(s)  180 , the human machine interface device(s)  170 , the management server  140 , and/or the user device(s)  120  via any combination of the network  130 , the local network  160 , or any other communications means or method (e.g., Bluetooth, WiFi, infrared, cellular, etc.). Accordingly, the communications interface(s)  324  may include one or more of wired and wireless transceivers, such as a Joint Test Action Group (JTAG) transceiver, a Bluetooth or Bluetooth Low Energy (LE) transceiver, an IEEE 802.11 transceiver, an Ethernet transceiver, a USB transceiver, a Thunderbolt transceiver, an infrared transceiver, a wireless cellular telephony transceiver (e.g., 2G, 3G, 4G, 5G), or the like. The communications interface(s)  324  may further include, for example, serial inputs/outputs, digital inputs/output, analog inputs/outputs, and the like. As noted herein, the communications interface(s)  324  may further include one or more application programming interfaces (“APIs”). 
     In operation, the received data  332  includes any operational data, analysis data or results, or data received from the various additional devices  180  by the controller device  150 , e.g., via the various input/output ports of the controller device  150 . Such received data  332  may include data processed by the controller device  150  (e.g., via the data processing module(s)  338 ). 
     In operation, the configuration data  334  includes one or more configurations that configure operation of the controller device  150 , as described herein. For example, such configurations may be received from a user and/or the management device  230  (and/or other devices in communication with the controller device  150 ), and may include various communications specifications (e.g., that indicate functionality of the input and output ports), executable program instructions/code, algorithms or processes for processing the received data, and/or the like. The controller device  150  may store multiple configurations in the configuration data  334 , which may be selectively run or implemented, e.g., via user selection via the management server  140 , the human machine interface device(s)  170 , and/or the user device(s)  120 . 
     In operation, the web server module(s)  336  may include program code executable, e.g., by the processor(s)  322  to provide a web-based access (e.g., interactive graphical user interfaces accessible via web-based communications protocols, rendering of interactive graphical user interfaces written in web-based languages by web-based browsers, etc.) to the controller device  150 , e.g., to configure the controller device  150  and/or access data of the controller device  150 , as further described herein. Such web-based access may be via one or more communications protocols, e.g., TCP/IP, UDP, WebRTC, etc., and may include one or more secure communications/cryptographic protocols, e.g., TLS, SSL, etc., and may further be provided via communications interface(s)  324 . This may include, for example, generating user interface data useable for rendering the various interactive user interfaces described. The user interface data may be used by various computer systems, devices, and/or software programs (for example, a browser program of a user device  120 ), to render the interactive user interfaces. The interactive user interfaces may be displayed on, for example, electronic displays (including, for example, touch-enabled displays). In various implementations one or more of the management server  140 , user device(s)  120 , and human machine interface device(s)  170  may communicate with the controller device  150  via one or more of the web server module(s)  336 . 
     In operation, the data processing module(s)  338  may provide processing and analysis of received data, as described herein. The type of processing and analysis may be provided by the configuration data  334 , and may result in one or more outputs from the controller device  150  that may be provided via the communications interface(s)  324 , as further described herein. In various implementations, the data processing module(s)  338  may be executed by the processor(s)  322 , which processor(s)  322  may include various types of processors including special purposes processors, e.g., Graphics Processing Units (“GPUs”), Application Specific Integrated Circuits (“ASICs”), Field-Programmable Gate Arrays (“FPGAs”), and/or the like. 
     As described herein, received data, analysis results, and/or configuration data may be communicated, e.g., via the communications interface(s)  324 , to other devices, such as the management server  140  and/or user device(s)  120 . For example, the controller device  150  may be configured to reliably and securely offload data and to transmit the data to the management server  140  regardless of whether the connectivity of the controller device  150  (e.g., to the management server  140 ) is intermittent. For example, data may be stored by the controller device  150  until connectivity is available, and may then transmit the data to the management server  140 . 
     In various implementations, as described above, the controller device(s)  150  may communicate with one or more additional devices  180 , which may include, e.g., various components of a manufacturing/industrial line or process, sensors, etc. Communications with additional device(s)  180  may be via direct (e.g., not via a network) wired and/or wireless communications, and/or may be via a network (e.g., a local network) wired and/or wireless communications. Such communications may be accomplished via one or more APIs. Communications with the additional device(s)  180  may also be accomplished via intermediate communications with existing or legacy devices, such as specialized PLCs (e.g., the controller device  150  may include PCL control languages for communicating with PLCs, such as IEC 61131-3), and/or the like. 
     In various implementations, as described above, the controller device(s)  150  may communicate with one or more human machine interface devices  170 . Communications with human machine interface device(s)  170  may be via direct (e.g., not via a network) wired and/or wireless communications, and/or may be via a network (e.g., a local network) wired and/or wireless communications. Via communications with the human machine interface device(s)  170 , users may configure and/or monitor status of the controller device  150 . As described herein, the controller device(s)  150  may advantageously communicate with the human machine interface device(s)  170  via the web server module(s)  336 . 
     In various embodiments, the controller device  150 , may include various other modules, components, engines, etc. to provide the functionality as described herein. It will be appreciated that additional components, not shown, may also be part of the controller device  150 , and, in certain embodiments, fewer components than that shown in  FIG.  3    may also be used in the controller device  150 . 
     In various embodiments, firmware of the controller device  150  may be updated such that the controller device  150  may provide additional functionality. Such firmware updating may be accomplished, e.g., via communications with the management server  140 , thereby enabling updating of multiple controller devices  150  remotely and centrally. Additional functionality may include, for example, additional communications specifications, additional ways of communicating with additional devices  180  (e.g., additional control languages, etc.), additional configurations or options for configurations, and/or the like. 
     VI. Example Human Machine Interface Device 
     Referring again to  FIG.  1   , human machine interface (“HMI”) device(s)  170  may comprise computing devices that provide a means for a user to interact with a device. Human machine interfaces may comprise user interfaces or dashboards that connect a user with a machine, system, or device, commonly used in industrial processes. In various implementations, human machine interface device(s)  170  comprise computer devices with a display and a mechanism for user input (e.g., mouse, keyboard, voice recognition, touch screen, and/or the like). In an implementation, the human machine interface device(s)  170  comprise tablet computing devices. 
     As noted above, the human machine interface device(s)  170  may communicate with the controller device  150  and/or the management server  140  via direct (e.g., not via a network) wired and/or wireless communications, and/or via a network (e.g., a local network) wired and/or wireless communications. In one example, a human machine interface device  170  communicates with a controller device  150  via a local network and a web server module  336  of the controller device  150 . In this example, the human machine interface device  170  is directed to connect with the controller device  150  (e.g., via an IP address and, optionally, a particular port of the controller device  150 , or a unique identifier or name associated with the controller device  150 ) of the controller device  150 , and the web server module  336  of the controller device  150  provides a browser-renderable webpage including an interactive HMI. The interactive HMI may include a current status or configuration of the controller device  150 , options to change configuration of the controller device  150 , and/or the like. 
     Advantageously, according to various embodiments, a user may configure an interactive HMI user interface layout via the management server  140  (and/or the controller device(s)  150  via the management server  140 ), and may then push the interactive HMI user interface layout configuration to controller device(s)  150  (e.g., via the management server  140 ). The controller device(s)  150  may then provide the configured interactive HMI via the web server module(s)  336  as described herein. Advantageously, such functionality may enable remote and centralized configuration of interactive HMIs (and possible duplication of HMIs to multiple controller devices  150 ) without requiring direct programming or interaction with the controller device(s)  150  or human machine interface device(s)  170 . 
     Advantageously, because the HMI is provided by a web server module  336  of the controller device  150 , multiple human machine interface devices  170 , and/or the management server  140  may simultaneously access and/or communicate with the controller device  150  (e.g., via the HMI provided via the web server module(s)  336 , and/or via other communications means), and a current configuration/status of the controller device  150  may be accurately kept synchronized/kept up-to-date from each device. 
     VII. Example Additional Devices 
     Referring again to  FIG.  1   , additional device(s)  180  may include, e.g., various components of a manufacturing/industrial line or process, sensors, and/or the like. For example, additional device(s)  180  may include detector devices that may include a trigger input to the controller device(s)  150 , reject devices to which the controller device(s)  150  may provide an output to reject articles, machinery inputs to which the controller device(s)  150  may provide an output in response to various data analyses (e.g., to speed up or slow down a manufacturing process, to adjust a manufacturing process, to actuate or operate a machine, to execute a process, to activate or deactivate a light or process, to communicate with an automated process or device, to communicate with a software program, etc.), multiple components/devices on a manufacturing line to which the controller device(s)  150  may provide configurations, sensors that may provide controller device(s)  150  with input information that may be used by the controller device(s)  150  and/or provided by the controller device(s)  150  to the management server  140 , and/or the like. Additional non-limiting examples of additional device(s)  180  include:
         Sensors/monitors (e.g., temperature, levels, vibration, power, pressure, etc.)   Facility meters (e.g., water, air, gas, energy, steam, etc.)   Machine/systems I/O (e.g., relays, contacts, valves, flow, etc.)   Legacy equipment (e.g., programmable logic controllers (“PLCs”), controllers, etc.)       

     As described herein, additional device(s)  180  may be communicated with and/or configured via the controller device(s)  150 . Communications with the additional device(s)  180  may also be accomplished via intermediate communications with existing or legacy devices, such as specialized PLCs and/or the like. Alternatively, additional device(s)  180  may be communicated with and/or configured via communication with human machine interface device(s)  170 , management server  140 , and/or user device(s)  120 . Data and information gathered from the additional device(s)  180  may be provided to the management server  140 , e.g., via the controller device(s)  150  and/or directly (e.g., via a network). 
     In various implementations one or more of, or a combination of, the controller device(s)  150 , the management server  140 , and/or the human machine interface device(s)  170  may provide an application programming interface (“API”) by which communications may be accomplished with the additional device(s)  180 . 
     VIII. Example Controller Device Physical Implementation 
       FIG.  4    is a diagram of an example physical implementation of the controller device  150 , according to various embodiments of the present disclosure. As described herein, while the embodiment described in reference to  FIG.  4    shows one example implementation of the controller device  150 , other implementations are contemplated, including implementations that place the various communications interfaces  324  in different locations, or that include more or fewer communications interfaces  324 , etc. In various implementations, the controller device  150  may support scalable expansion input/output (“I/O”) modules for higher density applications. 
       FIG.  4    shows a front perspective view of the controller device  150 . As shown, the controller device  150  may include a housing  402 , which may be made of metal (e.g., aluminum, stainless steel, etc.), plastic (e.g., UV-stabilized polycarbonate, etc.), and/or any other suitable material or combination of materials. The housing  402  may include various ports/connectors (e.g., communications interfaces  324 ), e.g., for interfacing with additional device(s)  180 . For example, the controller device  150  may include an Ethernet port  404 , one or more USB ports  406 , serial I/O ports  408  (e.g., RS232, RS485, and/or the like), digital I/O ports  410  (which may include counters), and analog I/O ports  414 . The controller device  150  may further include power ports  412 . 
     In an implementation, the serial I/O ports  408  are ESD protected, and support RS485 (up to 20 Mbps, 2-wire, half-duplex), RS232 (up to 1 Mbps, 2-wire, full or half-duplex), and various serial protocols (e.g., Modbus slave/master). Various other implementations and specifications of the serial I/O ports  408  are contemplated. 
     In an implementation, the digital I/O ports  410  may include six pins, each being configurable as input or outputs (open-drain), with ESD/EFT/Surge protection. As inputs, the digital I/O ports  410  may provide dry-contact (internally sourced 3.3V @ 1 mA) or wet-contact (0-30V). As outputs, the digital I/O ports  410  may provide sinking MOSFET outputs, rated 30V, 0.5A. In an implementation, the digital I/O ports  410  may include two counter inputs with 0-30V, and up to 10 Hz (dry-contact) or up to 10 kHz (wet-contact). Various other implementations and specifications of the digital I/O ports  410  are contemplated. 
     In an implementation, the analog inputs may include four isolated channels with 0-12 V or 0-24 mA, with a 14-bit ADC resolution, with an accuracy of 0.1% FSR at 25C, with ESD/EFT/Surge protection, and with an input resistance at 24 mA of 300 ohm. In an implementation, the analog outputs may include two isolated channels with 0-12 V or 0-24 mA, with a 16-bit resolution, with an accuracy of +/−0.2% FSR at 25C, with ESD/EFT/Surge protection, with a settling time of 5 μs, and with a load range of 1000 ohm (12V)-600 ohm (20 mA). Various other implementations and specifications of the analog I/O ports  414  are contemplated. 
     In an implementation, the power ports  412  and the controller device  150  may support 10-28 Vdc, and may have a maximum power draw of 10.8 W @ 12V without analog outputs, and 20 W @ 12V with analog inputs. Various other implementations and specifications of the power ports  412  and power characteristics of the controller device  150  are contemplated. In various embodiments, the controller device  150  may include a power supply internal to the housing  402 , or external to the housing  402 , which may provide power to the controller device  150 . 
     In an implementation, the controller device  150  has general dimensions of 180 mm×118 mm×32 mm. In alternative implementations the controller device  150  may have different dimensions. In an implementation, the controller device  150  housing is rated IP67 under IEC standard 60529. In an implementation, the controller device  150  may be certified for hazardous locations Class 1, Division 2, Groups A, B, C, and D (as defined by the National Electric Code (“NEC”) in Articles 500 to 506). In various implementations the controller device  150  may have other ratings, certifications, or classifications. 
     As described herein, advantageously the functionality of the various I/O ports of the controller device  150  may be configured to particular applications, and may be re-configured as needed, via centralized communication with the management server  140 . 
     IX. Further Example Methods and Functionality 
       FIG.  5    is a flowchart illustrating example methods and functionality, according to various embodiments of the present disclosure.  FIG.  5    illustrates example functionality provided by, for example, the management server  140 , the human machine interface device(s)  170 , and the controller device(s)  150 . 
     At block  502 , the management server  140  provides an interactive graphical user interface, which the user may access via user device(s)  120 , for example, and by which the user may provide a configuration. The management server  140  may establish secure communications with the controller device  150  while providing the configuration user interface. In various implementations, ongoing secure communications may or may not be necessary, as portions of the configuration implementation may not require such ongoing communications. 
     At block  504 , via the configuration user interface, the user may specify configuration/functionality of the input/output ports of the controller device  150  (e.g., communications specifications). Such communications specifications may enable the controller device  150  to communicate with various additional devices  180  via, e.g., the various communications interface(s)  324  of the controller device  150 . 
     At block  506 , via the configuration user interface, the user may specify executable program instructions, code, scripts, etc. to be executed by the controller device  150  as part of the configuration. Such program instructions may, for example, provide for analyses of received data/inputs to the controller device  150  (e.g., from additional device  180 ), and generation of outputs in response to those inputs. Such program instructions may further, for example, provide for determination of analysis results based on the received data/inputs. Examples of such inputs/outputs include, for example, trigger and/or sensor inputs, inputs/outputs to cause rejection of articles, outputs to machinery to speed up or slow down a manufacturing process, inputs/outputs to adjust a manufacturing process, inputs/outputs to actuate or operate a machine, inputs/outputs to execute a process, inputs/outputs to activate or deactivate a light or process, inputs/outputs to communicate with an automated process or device, inputs/outputs to communicate with a software program, etc. 
     At block  508 , the management server  140  implements and/or duplicates the configuration to one or more controller device(s)  150 . For example, the management server  140  may write the configuration to one or more controller devices  150  via wireless communication with the controller devices  150 . Advantageously, the management server  140  may enable users to centrally access, copy, duplicate, modify, etc. configurations for multiple controller devices  150 , making updating one or multiple controller devices  150  rapid and efficient. 
     In various embodiments, a configuration can additionally include information useable by the controller device  150  regarding local and remote storage of received data and analysis data, and/or the like. 
     Further description related to providing/implementing configurations, and interactive graphical user interfaces related thereto, are described, e.g., in reference to  FIGS.  7 A- 7 C and  10 A- 10 C . 
     As described herein, configurations may be implemented, and statuses of controller device(s)  150  may be monitored, via human machine interface device(s)  170 . Accordingly, alternatively and/or in addition to blocks  502 ,  504 ,  506 , and  508  described above in reference to functionality of the management server  140 , at blocks  520 ,  522 , and  524  the human machine interface device(s)  170  may provide functionality. 
     At block  520 , the human machine interface device  170  may display an interactive graphical user interface related to monitoring status of the controller device(s)  150  and/or implementing configurations on the controller device(s)  150 . As described herein, the controller device  150  may provide secure remote access, e.g., via a web server executing on the controller device  150  (e.g., by web server module(s)  336 ), to provide interactive HMIs and receive selections of configurations. At block  522 , the human machine interface device  170  receives a user input selecting a configuration, and at block  524  the selection of the configuration is provided to, or received by, the controller device  150 . 
     While blocks  520 ,  522 , and  524  of example process of  FIG.  5    focus on the example of the human machine interface device(s)  170 , in various embodiments configurations may be received by the controller device(s)  150  from, e.g., the management server  140 , human machine interface device(s)  170 , and the user device(s)  120 . In various embodiments, the interactive HMIs may comprise relatively streamlined interactive graphical user interfaces. For example, the interactive HMIs may comprise relatively few large buttons by which a user may select to stop a currently running configuration, may select a different configuration from a list (e.g., of configurations stored on the controller device  150 ), may search for a different configuration, and/or may monitor a current status of inputs/outputs, analyses, and/or the like. Examples of information that may be included in HMIs include real-time current values of machine inputs, e.g., production count, power levels, value, progress bar, status light, on/off light, etc. Examples of additional buttons/functionality that may be included in HMIs include toggling an analog/digital I/O on/off, sending a Modbus signal or analog I/O signal, starting or stopping a production run, etc. 
     Advantageously, via a human machine interface device  170  (and/or the management server  140  and/or user device(s)  120 ), a user may communicate with one or more controller device(s)  150  to, e.g., activate multiple devices (e.g., multiple additional devices  180 ), e.g., as part of a manufacturing process, industrial process or industrial monitoring process, and/or the like. 
     As described above, one or more configurations of the controller device  150  may be stored by the controller device  150  (e.g., in configuration data  334 ), and may further be synchronized with the management server  140  and/or the human machine interface device(s)  170 . In various implementations, communication of configurations may be accomplished without the use of a web server. 
     In various implementations, the controller device  150  may provide, optionally via a web server, secure remote access to the controller device  150  by, e.g., the management server  140 , the user device(s)  120 , and/or the human machine interface device(s)  170 . Via such access a user may, for example, monitor a status of the device, view a live data stream from the device, configure the device, and/or access received data and/or analysis data. 
     As described herein, in various embodiments alerts may be sent to users based on, e.g., data analysis results. The management server  140  may provide such alerts to user device(s)  120 . In some embodiments, the alert and/or notification is automatically transmitted to a device operated by the user and/or organization associated with a corresponding trigger. The alert and/or notification can be transmitted at the time that the alert and/or notification is generated or at some determined time after generation of the alert and/or notification. When received by the device, the alert and/or notification can cause the device to display the alert and/or notification via the activation of an application on the device (e.g., a browser, a mobile application, etc.). For example, receipt of the alert and/or notification may automatically activate an application on the device, such as a messaging application (e.g., SMS or MMS messaging application), a standalone application (e.g., productions line monitoring application), or a browser, for example, and display information included in the alert and/or notification. If the device is offline when the alert and/or notification is transmitted, the application may be automatically activated when the device is online such that the alert and/or notification is displayed. As another example, receipt of the alert and/or notification may cause a browser to open and be redirected to a login page generated by the system so that the user can log in to the system and view the alert and/or notification. Alternatively, the alert and/or notification may include a URL of a webpage (or other online information) associated with the alert and/or notification, such that when the device (e.g., a mobile device) receives the alert, a browser (or other application) is automatically activated and the URL included in the alert and/or notification is accessed via the Internet. 
     Further description related to providing/implementing alerts, and interactive graphical user interfaces related thereto, are described, e.g., in reference to  FIGS.  9 A- 9 C . 
     Referring again to  FIG.  5   , at block  510  the controller device  150  executes the received/selected configuration. Execution of the configuration includes, for example, implementation of the communications specifications and program code/instructions. Thus, at block  512 , the controller device  150  may receive data/inputs from various additional device(s)  180 , and at block  514 , provide outputs/control signals to various additional device(s)  180 . At block  516 , the controller device  150  (e.g., by data processing module(s)  338 ) may process/analyze received data (according to the current configuration), and at block  518  received data, analysis data, and/or configurations may be locally stored and/or transmitted for remote storage. 
     In various embodiments, data analysis and/or decision making performed by controller device  150  (e.g., by the data processing module(s)  338 ) may include execution of deterministic and/or non-deterministic analysis algorithms. In some examples, the controller device  150  may use machine learning and/or artificial intelligence algorithms for detection of patterns in the received data. Accordingly, based on the data processing/analysis, the device may provide outputs, e.g., via communications interface(s)  324 , that may be provided to any external device, e.g., additional device(s)  180 . Examples of such outputs are described herein. Advantageously, providing outputs direct from the controller device  150  may eliminate the need for a separate PLC to, e.g., communicate with other devices/systems. 
     As mentioned above, the received data and analysis data (e.g., any and/or all information associated with the analysis/processing, including, e.g., features detected, decisions made, etc.) may be stored and/or logged by the controller device  150 , e.g., in a memory/computer readable storage medium. In some implementations, the received data and analysis data may be stored indefinitely. In some implementations, the received data and analysis data may be stored for a period of time, e.g., rolling based on an acquisition date/time, and then deleted. In some implementations, the received data and analysis data may be stored or not stored, or stored for a period of time, based on an outcome/decision of the applicable processing/analysis. For example, data associated with positive outcome/events/determinations may be stored for a shorter period of time (or not at all), while data associated with adverse outcome/events/determinations may be stored for a longer period of time. In some implementations, storage of the received data and analysis data may be based on any combination of the above. In general, the analysis, processing, etc. of data may generally and broadly be referred to herein as “evaluation” of data. 
     As also mentioned above, advantageously, the controller device  150  may also offload received data and analysis data to the management server  140  (for storage and further analysis by the management server  140 ) via wired or wireless communications (e.g., via communications interface(s)  324 ). In some implementations, the received data and analysis data may be offloaded prior to deletion of such data on the controller device  150 . In some implementations, the received data and analysis data may be offloaded in real-time or substantially real-time, or as long as communication with the management server  140  is available. In some implementations, the received data and analysis data may be offloaded periodically, in batches, and/or on demand. In some implementations, the received data and analysis data may be offloaded or not offloaded based on an outcome/decision of the applicable processing/analysis. In some implementations, the received data and analysis data may be offloaded based on and age of the received data and analysis data. In some implementations, the received data and analysis data may be offloaded or not offloaded based on network bandwidth availability, time of day (e.g., to preserve bandwidth during business hours), a threshold or cap on network bandwidth usage, and/or the like. In some implementations, offloading of the received data and analysis data may be based on any combination of the above. 
     In an implementation, a livestream of the received and/or analysis data (e.g., live operational data) may be provided to external devices. For example, a livestream may be provided via any suitable communications protocol, and one or more of a web server module  336  or communications interface(s)  324 , to user device(s)  120  (e.g., via any combination of network  130 , local network  160 , or management server  140 ). Accordingly, a user may access the livestream in an interactive graphical user interface provided on a user device  120 . Advantageously, the livestream may be provided via a separate communications path/web server, to avoid the overhead and resulting reduced efficiency that may be incurred if a livestream was obtained further down the processing pipeline. 
     Further description related to the management server  140  receiving and aggregating data, and interactive graphical user interfaces related thereto, are described, e.g., in reference to  FIGS.  6 A- 6 F and  8 A- 8 D . 
     In various implementations, various aspects of the functionality described in reference to  FIG.  5    may be accomplished in substantially real-time, e.g., received data may be processed as it is received. Alternatively, various aspects of the functionality described in reference to  FIG.  5    may be accomplished in batches and/or in parallel. 
     X. Example Graphical User Interfaces 
       FIGS.  6 A- 6 F  illustrate example interactive graphical user interfaces related to analysis of data from controller devices, according to various embodiments of the present disclosure. The interactive graphical user interfaces of  FIGS.  6 A- 6 F  may be provided by the management server  140 , and may be accessible via user device(s)  120 . In general, received data and analysis data are automatically gathered from multiple controller devices  150  by the management server  140  (as described herein), and the received data and analysis data may then be further aggregated and analyzed to provide information and insights as described. Typically, the graphical user interfaces provided by the management server  140  are specific to an organization, and may include information from multiple controller devices  150  associated with the organization. 
       FIG.  6 A  includes selectable options  602  and  604  for accessing various pages, user interfaces, and aspects of the interactive graphical user interfaces provided by management server  140 .  FIG.  6 A  further includes a list  606  of controller devices (e.g., controller device(s)  150  in communication with the management server  140  or known by the management server  140 , and associated with the current user and/or organization of the current user), and a map  608  with plotted points  610  indicating locations associated with each of the controller devices. In an implementation, each of the items of list  606  may indicate a combination of controller devices that, e.g., may be part of a same industrial process, manufacturing line, etc. The list  606  indicates a current status of each of the controller devices (e.g., “good”, “warning”, etc.), and an indication of an amount of time each controller device has been running in its current configuration. Each controller device is indicated by a name associated with the controller devices as stored by the management server  140  and/or the controller device(s)  150 . The user may select points  610  on the map  608 , and/or items from the list  606 , to access further details. In an implementation, the points  610  are colored based on a status of the associated controller device(s)  150 . 
       FIG.  6 B  illustrates that the user may use a filter/search box  611  to filter the controller device(s)  150 .  FIG.  6 C  illustrates the results of the user filtering to controller device(s)  150  tagged “cox”. As shown, a filtered list  620  is now shown, and associated points  622 ,  624 , and  626  are shown in the map (wherein the map has automatically been zoomed based on the filtered controller devices). 
       FIG.  6 D  illustrates an interactive graphical user interface that may be displayed when the user selects to view details related to a specific controller device (or group of controller devices controller device  150  (e.g., via selection of one of the listed items or plotted points of  FIGS.  6 A- 6 C ). The graphical user interface of  FIG.  6 D  includes separate portions associated with each, e.g., additional device  180  providing data to, and/or being controlled by, the selected controller device  150 . Portion  634  shows an additional device  180  labeled MO1, including a chart of data received from the additional device  180 , and various calculated information related thereto. At  630  the user can select a particular date range of interest, and may select how the data associated the additional device(s)  180  should be aggregated (e.g., day, week, month, etc.). At  632  the user may determine whether the displayed data is live data, and may select to view live, constantly updated data being received from the related controller device(s)  150 . 
     In various implementations, additional device(s)  180  and controller device(s)  150  may be partitioned or grouped in different ways, and aggregated data associated with these devices may be displayed and interacted with by a user. The aggregated data may be partitioned or grouped based on identifiers associated with the controller device(s)  150  and additional device(s)  180 , and/or they may be grouped based on configurations, locations, programs, industrial processes, etc. Accordingly, the user may rapidly obtain an overview of the status of many controller device(s)  150  (and associated additional device(s)  180 ) simultaneously. Further aggregated information that may be provided in interactive graphical user interfaces of the management server  140  may include various analytics. 
     Advantageously, the present devices and systems, according to various embodiments, may be used to track and analyze data from various types of industrial processes and calculated various metrics (e.g., track flow, pressure, tank levels, power usage; calculate efficiencies; control oil and gas flows; determine machine heath, downtime, metrics, etc.). 
       FIG.  6 E  illustrates an example interactive graphical user interface that includes aggregated data related to a particular Manufacturing Execution System (“MES”). The information provided via the example graphical user interface of  FIG.  6 A  may be aggregated by the management server  140  from one or more controller device(s)  150 , and may include, for example, a summary chart  640  of items created of various types, information  642  and  644  on line running hours, and information  646  on line utilization. 
       FIG.  6 F  illustrates an example interactive graphical user interface in which the user has drilled down to view specific runs on the MES, and can view information  650  related to the various runs, and an interactive chart  652  and table  654  related to the same. 
       FIGS.  7 A- 7 C  illustrate example interactive graphical user interfaces related to controller device configuration, according to various embodiments of the present disclosure. The interactive graphical user interfaces of  FIG.  7 A- 7 C  may be provided by the management server  140 , and may be accessible via user device(s)  120 . 
     Referring to  FIG.  7 A , as indicated at  702 , the user may access a table of various controller device(s)  150  available to monitor/configure. The table indicates names, IDs, types, currently deployed configurations (“programs”), dates, and durations related to each controller device. Via the graphical user interface, the user may select to access further details related to particular controller devices. 
       FIG.  7 B  illustrates an example interactive graphical user interface showing details related to a particular controller device  150 . The information includes an indication  710  (and details related to, including a current automation script/program  712 ), a currently deployed configuration. The graphical user interface also includes, at  714 , a history of previously deployed configurations, including a time-based chart showing when and for what duration each configuration was deployed. Via button  716  the user may select to edit the particular configuration. 
       FIG.  7 C  illustrates an example interactive graphical user interface for editing a configuration. Editing a configuration may be accomplished, for example, by editing the configuration on the management server  140 , and then subsequently deploying the configuration to the controller device  150 . Alternatively, editing a configuration may be accomplished, for example, by communicating with a web server on the controller device  150  of interest, and accessing user interfaces provided by the controller device  150  to modify a configuration directly on the controller device  150 . 
     List  720  provides information related to various revisions of the present configuration, which revision may easily be accessed, reviewed, and compared in the graphical user interface. Via editor  722  the user may directly edit the program code associated with the configuration (e.g., via inputting/editing a script according to an automation scripting language interpretable by the controller device  150 ). Via button  724 , the user may deploy the configuration to the controller device  150 . 
       FIGS.  8 A- 8 D  illustrate example interactive graphical user interfaces related to dashboard generation, according to various embodiments of the present disclosure. The interactive graphical user interfaces of  FIG.  8 A- 8 D  may be provided by the management server  140 , and may be accessible via user device(s)  120 . 
     Referring to  FIG.  8 A , the user may access and view various “dashboards” via list  802 , which dashboards can include any aggregated data from one or more controller device(s)  150  and/or additional device(s)  180 . An example “Dashboard 4” is shown, which includes a chart  806 . At  808  the user can select a particular date range of interest, and may select how the data associated the controller device(s)  150  and/or additional device(s)  180  should be aggregated (e.g., day, week, month, etc.) for display in the dashboard. At  810  the user may determine whether the displayed data is live data, and may select to view live, constantly updated data being received from the related controller device(s)  150  and/or additional device(s)  180 . 
     Via button  804 , the user may add a new dashboard, which may be freely and interactively customized by the user. Referring to  FIG.  8 B , an interactive user interface  820  is shown by which the user may set up and customize a dashboard. The user may interactively drag and drop the various icons representing various types of widgets (e.g., charts, graphs, indicators, maps, text, etc.) onto the canvas below to add the widgets to the dashboard.  FIG.  8 C  illustrates adding a time-series line graph widget to the dashboard. When added, the user can customize the widget via dialog box  822 , by, e.g., providing a name, and linking the widget to a particular data input. The listed data inputs are determined based on inputs provided from the various controller device(s)  150  registered with the management server  140 . Accordingly, the user may easily develop a dashboard with information obtained directly from various controller device(s)  150 , and thereby additional device(s)  180 . 
       FIG.  8 D  illustrates an example dashboard after the user has added a time-series line graph widget  830 , and an on/off indicator widget  832 , and linked the widgets to particular inputs/outputs/determinations of one or more controller device(s)  150 . The user may then save the dashboard and access it at any time to review live and/or historical aggregated data. 
     According to an embodiment, the management server  140  may include dashboard and/or widget templates associated with particular types of additional device(s)  180  (and/or controller device(s)  150 ). For example, particular types of monitors or sensors (e.g., an energy/power sensor, an asset health monitor, and environmental sensor, etc.) may be preregistered with the management server  140  and associated with particular dashboard templates, such that when a monitor/sensor is in communication with the management server  140  (e.g., via a controller device  150 ), the management server  140  automatically provides a dashboard that is based on the template and populated with data received from the monitor/sensor. 
     According to various embodiments, the dashboards (including dashboard access and creation) described above, may be implemented on the controller device  150  itself, such that interactive graphical user interfaces similar to those described above may be accessible directly via communication with a controller device  150  (e.g., a user device  120  or human machine interface device  170  accessing the controller device  150  via a web server modules  336 ). 
     According to various embodiments, the dashboards can automatically resize and adjust for viewing on various sizes of displays. 
     According to various embodiments, the user my interact with interactive graphical user interfaces similar to those described above to generate HMIs that can be pushed/deployed to human machine interface device(s)  170 . 
       FIGS.  9 A- 9 C  illustrate example interactive graphical user interfaces related to alert generation, according to various embodiments of the present disclosure. The interactive graphical user interfaces of  FIG.  9 A- 9 C  may be provided by the management server  140 , and may be accessible via user device(s)  120 . 
     Referring to  FIG.  9 A , via interactive graphical user interface  902  the user may set up one or more alerts on the management server  140 . The user may initially select a type of alert to set up as shown in graphical user interface  902 . In the graphical user interface  904  of  FIG.  9 B , the user may specify various parameters related to the alert. For example, the user may indicate an input or determined measurement (e.g., as determined by the management server  140  and/or one or more controller device(s)  150 ) upon which to base the alert, and one or more alert recipients or actions to take upon triggering of the alert. In the example of  FIG.  9 B , the alert is based on a “tank level” as received via data from a controller device  150 . 
       FIG.  9 C  illustrates an interactive graphical user interface including a listing of alerts  906  that have been set up, and which the user can select, e.g., to then modify the alerts. 
       FIGS.  10 A- 10 C  illustrate example interactive graphical user interfaces related to controller device configuration, according to various embodiments of the present disclosure. The interactive graphical user interfaces of  FIG.  10 A- 10 C  may be provided by the management server  140 , and may be accessible via user device(s)  120 . 
     Referring to  FIG.  10 A , the user may use the graphical user interface  1002  to setup and/or edit various setting and properties related to a particular controller device  150 . Such settings may include setting a name, selecting a firmware version, and the like. Referring to  FIG.  10 B , the user may configure the various communications interface(s)  324  of the particular controller device  150 , including the various communications specifications of the various ports. Via graphical user interface  1016 , the user may select each individual input and output port, and may set all relevant settings and properties. Referring to  FIG.  10 C , the user may configure the communications specifications related to a particular input. Communications specifications specified by the user via  FIGS.  10 A- 10 C  advantageously enable, according to various embodiments, centralized setting up a configuration, which configuration may then be deployed to one or more controller devices  150  via the management server  140 . According to an embodiment, the user may “mass export” and “mass import” configuration specifications for a device, e.g., that specify the settings for all inputs and outputs at one time. 
     In an embodiment, interactive graphical user interfaces may be provided by the management server  140  for setting up “recipes”, which may include a set of configurations for multiple controller devices  150 . By setting up a recipe, the user may advantageously simultaneously initiate deployment of selected configurations to many different controller devices  150 . Such may be useful, for example, for configuring multiple parts of a production line to begin production of a particular type of widget. 
     XI. Examples of Remote Asset Notification 
       FIGS.  11 A and  11 B  illustrate an example interactive graphical user interfaces  1100  related to remote asset notification, according to various embodiments of the present disclosure. The example interactive graphical user interfaces  1100  of FIGS.  11 A and  11 B may be provided by the management server  140 , and may be accessible via user device(s)  120 . The example interactive graphical user interfaces  1100  may include, for example, an overview section  1110 , a subsystem summary section  1120 , an active alert section  1130 , and an event section  1150 . 
     The overview section  1110  may include one or more industrial systems  1112  (for example, “ABC Well Pad” shown in  FIG.  11 A ) that can include one or more subsystems  1114  (for example, “ABC dehydrator” and “ABC pump jack  1 ” shown in  FIG.  11 A ). The subsystems  1114  may be various components or portions of the industrial systems  1112 . Additionally and/or optionally, the overview section  1110  may include links  1116 A,  1116 B,  1116 C,  1116 D,  1116 E. The link  1116 A may allow users to view and/or access dashboards associated with industrial systems, subsystems, and/or assets. The link  1116 B may allow users view and/or access a list of inputs and outputs associated with one or more assets, subsystems, and/or industrial systems. The link  1116 C may allow users view and/or access one or more controls associated with one or more assets, subsystems, and/or industrial systems. The link  1116 D may direct users to a graphical interface in which users may generate reports associated with operational data associated with one or more assets, subsystems, and/or industrial systems. The link  1116 E may direct users to a graphical interface that may allow users to analyze operational data associated with one or more assets, subsystems, and/or industrial systems. 
     In some embodiments, the industrial systems  1112  and the one or more subsystems  1114  may be represented and displayed within the overview section  1110  that outlines hierarchical relationships between the industrial systems  1112  and the subsystems  1114 . For example, an industrial system  1112  “ABC Well Pad” may include numerous associated subsystems  1114  such as “ABC Hydrator,” “ABC Water Heater,” “ABC pump jack #1,” and “ABC pump jack #2.” Clicking the industrial system  1112  “ABC Well Pad may generate a list of subsystems and/or assets associated with the “ABC Well Pad.” 
     The subsystem summary section  1120  may include a title  1122  and links  1124 A,  1124 B,  1124 C,  1124 D,  1124 E. The title  1122  may be associated with a selected subsystem  1114  (for example, “ABC Pump Jack”). The links  1124 A,  1124 B,  1124 C,  1124 D,  1124 E may provide a user with information associated with a subsystem  1114  (for example, “ABC Pump Jack”). In some embodiments, the link  1124 A may display a dashboard of the “ABC Pump Jack.” The link  1124 B may allow users to view a list of inputs and outputs associated with the “ABC Pump Jack.” The link  1124 C allow users to view details associated with the “ABC Pump Jack.” The link  1124 D may allow user to view activities associated with the “ABC Pump Jack.” The link  114 E may allow users to manually enter data associated with the “ABC Pump Jack.” 
     The active alert section  1130  may display active alerts  1132  associated with one or more of the subsystems  1114 . For example, when “ABC Pump Jack  1 ” is selected, the active alert section  1130  may display a list of active alerts  1132  associated with one or more assets of “ABC Pump Jack  1 ” subsystem  1114 . Alternatively and/or additionally, the active alert section  1130  may display active alerts  1132  may not be associated with “ABC Pump Jack  1 ” subsystem  1114 . This advantageously allows users to simultaneously view and analyze alerts that are associated with more than one subsystems. This can allow users to have better understanding of different subsystems  1114  at the same time and the industrial system  1112  as a whole. In some embodiments, the active alert section  1130  may display active alerts  1132  that may be associated with one or more different industrial systems  1112 . 
     The active alerts  1132  may display information related to the alert, an associated asset, an associated subsystem, and the like. The active alerts  1132  may include a color indicator  1134 , an asset information  1136 , an asset output description  1138 , an asset output  1140 , and duration information  1142 . The color indicator  1134  may show different colors, patterns, or combinations of the both, depending on, for example, different alert levels. For example, the color indicator  1134  may display the color red to represent severe alert level. In another example, the color indicator  1134  may display the color yellow to represent elevated alert level. In another example, the color indicator  1134  may display the color green to represent low alert level. Various suitable colors, patterns, and the like may be used to represent different alert levels. 
     The asset information  1136  may display name of an asset associated with the active alert  1132 . The asset information  1136  may be the same as the title  1122  of the subsystem summary section  1120 . In some embodiments, users may be able to modify a name of an asset and the asset information  1136  may reflect modified name of the asset. 
     The asset output description  1138  may provide a brief description of an asset output associated with an active alert  1132 . The asset output description  1138  may advantageously allow user to easily identify an asset output associated with a given active alert  1132 . 
     The asset output  1140  may display an output associated with the active alert  1132 . For example, an active alert  1132  may be associated with a water pump, and its output may be, for example, a rate of water flow coming out. As described herein, an active alert  1132  may be generated when, for example, the rate of water flow coming out from the water pump satisfies a threshold (or one or more thresholds), and the active alert  1132  may include the rate of water flow coming out from the water pump. This can advantageously allow users to better understand an operation of an asset (for example, water pump). For example, a sudden spike in water flow and a gradual increase of water flow may indicate different root causes. By displaying an asset output associated with the alert  1132  (or an asset output that triggered the alert  1132 ), the user may, for example, be able to distinguish an alert generated by a sudden spike in water flow versus a gradual increase in water flow. Accordingly, the asset output  1140  can allow users to better understand status, situation, operation condition, and the like of an asset, a subsystem, and/or an industrial system as a whole. The asset output  1140  may be determined from, for example, operational data collected by the management server  140  via, for example, the controller devices  150  associated with one or more subsystems  1114 . 
     In some embodiments, the active alerts  1132  may function as a preview of alerts based at least in part on conditions provided. In some embodiments, prior to application of conditions to inputs, for example, a selected listed of inputs  1170 , the management server  140  may, for example, use the color indicator  1134  to generate preview of application of the conditions. As described herein, the color indicator  1134  may change as user provides different threshold logics and values as described herein. 
     The duration information  1142  provides the amount of time a corresponding alert has been active. In some embodiments, the duration information  1142  may be periodically updated. 
     The event section  1150  may display previously active alerts and currently active alerts. The currently active alerts may also be displayed in the active alerts section  1130  as described herein. The alerts may be generated when inputs received from a subsystem  1114  or an asset of a subsystem  1114  satisfies a threshold (or one or more thresholds). As discussed herein, the inputs received may be operational data of assets (or additional devices  180  as described herein). The operational data of the assets may be transmitted to respective industrial controller devices  150  as inputs, and the controller devices  150  may transmit operational data to the management server  140  as inputs for the management server  140 . The alerts of the event section  1150  may be displayed, for example, in a tabulated format as illustrated in  FIG.  11 A . The alerts may include source information  1152 , alert description  1154 , alert start time  1156 , and alert duration  1158 . The source information  1152  may display an input of, for example, a controller device  150  associated with an output of an asset (for example, “ABC Pump Jack  1 ”). 
     The source information  1152  may identify the source of the operational data that satisfied alert conditions. For example, the source information may use input port name, number, or location of, for example, a controller device  150 . In the examples illustrated in  FIG.  11 A , the sources of the two events may be from analog input #2 and analog input #6 of a controller device  150  associated with “ABC Pump Jack  1 .” 
     The alert description  1154  may provide additional description for the operational data that satisfied alert conditions. The alert description  1154  may include an alert level  1160  and an input description  1162 . In some embodiments, the alert level  1160  may be one of the following: low, elevated, high, and severe. Optionally, other suitable alert levels may be used. In some embodiments, the input description  1162  can indicate a type of input of an asset. The alert start time  1156  and the alert duration  1158  can indicate when a given event has started and the duration of the event. 
     User may be able to create alerts by using a create alert button  1164 . By pressing the create alert button  1164 , user may be directed to, for example, an example graphical user interface illustrated in  FIG.  11 B . The example graphical user interface illustrated in  FIG.  11 B  may include one or more user interface elements. The one or more user interface elements may allow users to provide inputs for the management server  140  and for the configurations of alerts. In some embodiments, the one or more user interface elements include an asset selection interface  1172 . In some embodiments, the asset selection interface  1172  may generate a list of assets  1174  as shown in  FIG.  11 B . The list of assets can represent inputs received from the one or more assets via the operational data. In some embodiments, the assets may be associated with an industrial system  1112  (for example, “ABC Well Pad,” as shown in  FIG.  11 A ) or one or more particular controller device  150 . The user may use the asset selection interface  1172  to provide a selection of inputs from the list of one or more assets and their associated inputs. Inputs chosen from the asset selection interface  1172  may be displayed as a list of selected inputs  1170 . The list of selected inputs  1170  may include asset and input description (for example, “ABC well pad—water pump #A: flow rate”, as shown in  FIG.  11 B ) to facilitate identification of the input and the asset selected. 
     In some embodiments, the list of selected inputs  1170  represent inputs received, for example, by the management server  140 , from assets that may be identified in the list of selected inputs  1170 . For example, in the example illustrated in  FIG.  11 B , the list of selected inputs  1170  includes “XYZ well pad—water pump #1: flow rate,” “XYZ well pad—water pump #2: flow rate,” “1234 well pad—water tank #1: water level” “1234 well pad—water tank #A: water level,” and “ABC well pad—water pump #A—flow rate.” Based at least in part on the list of selected inputs  1170 , the management sever  140  may identify and receive inputs associated with “XYZ well pad—water pump #1: flow rate,” “XYZ well pad—water pump #2: flow rate,” “1234 well pad—water tank #1: water level” “1234 well pad—water tank #A: water level,” and “ABC well pad—water pump #A—flow rate.” As described herein, the inputs received from the assets may be outputs from the assets. For example, water pump #1 of XYZ well pad may transmit flow rate to the management server  140 , for example, via the industrial controller devices  150 , as its output. The management server  140  may receive the flow rate from the water pump #1 of XYZ well pad as its input. 
     In some embodiments, assets may be grouped with other assets and/or subsystems. For example, users may group one or more assets and/or subsystems based at least in part on relationships between the assets and subsystems, relationships between assets, relations between subsystems, and the like. In another example, users may group one or more assets and/or subsystems based at least in part on common characteristics between assets and/or subsystems. For example, users may group assets (XYZ well pad—water pump #1, XYZ well pad—water pump #2, and ABC well pad—water pump #A) based on a common characteristic, for example, the same input types (for example, flow rate). In various embodiments, grouping one or more assets (and/or subsystems) may cause the management server  140  to group inputs received from the assets (and/or subsystems) of the group. Accordingly, grouping one or more assets and/or subsystems may facilitate search of specific assets and/or subsystems. By grouping assets that provide the same input type (for example, flow rate), inputs may be easily identifiable or searchable by searching using the same input type (for example, flow rate) as a common characteristic. 
     In some embodiments, users may be able to search for or identify one or more assets and/or subsystems by providing one or more keywords via, for example, the asset selection interface  1172 . An example of a keyword may be a description of an asset. For example, a user may provide a keyword “water pump” in the asset selection interface  1172 . The management server  140 , upon receiving the keyword “water pump,” may generate a list of matching inputs that may be associated with a water pump. Additionally and/or alternatively, the management server  140  may search for and identify assets that include a water pump. 
     In some embodiments, users may be able to search for or identify one or more assets and/or subsystems by providing one or more key characteristics. An example of a key characteristic may be a type of an input from the assets. For example, users may provide “temperature” in the asset selection interface  1172  as a key characteristic. Upon receiving “temperature” via the asset selection interface  1172 , the management server  140  may, in response, identify and display inputs, for example, associated with temperature readings. 
     In some embodiments, users may be able to search for or identify one or more assets and/or subsystems by providing a combination of a keyword (or keywords) and a key characteristic (or key characteristics). For example, a user may provide “water pump” as a keyword and “temperature” as a common characteristic. As such, the management server  140  may identify and display inputs that, for example, are temperatures readings of assets that are (or include) water pumps. In some embodiments, various Boolean language (for example, AND, OR, XOR, and the like) may be used along with keywords and key characteristics. 
     In some embodiments, users may provide, for example, a name of such groups via the asset selection interface  1172 . The management server  140  may identify the name of a group and return, via the asset selection interface  1172 , a list of inputs associated with assets (and/or subsystems) of the group. In some embodiments, groups of inputs may be identifiable or searchable using one or more keywords and one or more common characteristics. Users may, in some cases, provide a group name to generate a list of selected inputs and apply one or more conditions to the group as a whole. This can advantageously allow users to quickly generate one or more conditions for a group of inputs (and thus for a group of assets). 
     In some embodiments, the outputs from the assets (that is, inputs received from the assets by the management server  140 ) may be raw operational data including, but not limited to, voltage, current, resistance, capacitance, digital data, various types of signals, and/or the like. In some embodiments, the outputs from the assets (that is, inputs received from the assets by the management server  140 ) may be processed operational data including, but not limited to, flow rate, temperature, pressure, displacement, weight, volume, and the like. 
     Once assets and/or inputs are chosen from the asset selection interface  1172 , conditions may be provided via the example graphical user interface illustrated in  FIG.  11 B . The user interface can include one or more condition input interfaces (for example,  1176 A,  1176 B,  1176 C, and  1176 D). The condition input interface may include a thresholds tab  1178 , a notifications tab  1179 , description tab  1180 , a color indicator  1184 , and an alert level  1186 . The management server  140  may receive one or more conditions via, for example, the condition input interfaces  1176 A- 1176 D, as illustrated in  FIG.  11 B . 
     The conditions may include one or more thresholds. The thresholds tab  1178  may provide a graphical input interface that may allow users to provide one or more thresholds for generating alerts. Each threshold may include a logic  1181  and a threshold value  1182 . For example, the logic  1181  may be “is above” while the threshold value  1182  is 1175. As such, an alert may be generated if, for example, an output value of an asset is above the threshold value (for example, 1175). In another example, a condition may have two thresholds. The first of the two thresholds may have a first logic  1181  of “is above” and a first threshold value  1182  of 700 while the second of the two thresholds may have a second logic  1181  of “is below” and a second threshold value  1182  of 1175. As such, an alert may be generated if an output value of an asset is either above 700 (thus satisfying the first threshold) or below 1175 (thus satisfying the second threshold). Various other logic may be applied to the thresholds, including, for example, equal to, greater than or equal to, lesser than or equal to, greater than, lesser than, and/or the like. 
     Additionally or optionally, two or more conditions may be provided for the list of selected inputs  1170 . For example, in the example illustrated in  FIG.  11 B , the management server  140  may receive a first condition via the condition input interface  1176 A and a second condition via the condition input interface  1176 B. The first condition (illustrated by the condition input interface  1176 A) may include one threshold (which may include a threshold logic and a threshold value) while the second condition (illustrated by the condition input interface  1176 B) may include two thresholds. Once conditions are provided, the management server  140  may apply the conditions to the inputs received from the list of selected inputs  1170 . In the example illustrated in  FIG.  11 B , the management server  140  may generate alerts for, for example, the list of selected inputs  1170  based at least on a comparison between the inputs received from the list of selected inputs  1170  and the thresholds of the first condition and/or the second condition. For example, when any of the inputs received from the list of selected inputs  1170  satisfy the thresholds of the first condition, or the thresholds of the second condition, the management server  140  may generate one or more alerts. Accordingly, all the respective selected inputs may be evaluated against all of the respective individual conditions for generating alerts. Thus, for example, two selected inputs may both cause generation of individual alerts by satisfying the same condition, and/or two selected inputs may both cause generation of individual alerts by satisfying separate conditions. 
     In some embodiments, all thresholds of a particular condition must be satisfied for the management server  140  to generate an alert for that particular condition. However, in some implementations, not all thresholds of a particular condition need to be satisfied for the management server  140  to generate an alert for that particular condition. In this implementations, the management server  140  may generate an alert when any one of thresholds of a condition is satisfied. For example, an example condition may have (1) a first threshold that may ask whether an input from an asset is below 400 and (2) a second threshold that may ask whether an input from an asset is greater than 800. In such example, the management server  140  may generate an alert either when the input is below 400 or greater than 800. In other implementations, the management server  140  may generate an alert only when both the input is below 400 and greater than 800. 
     The conditions may include one or more notification settings. The notifications tab  1179  may provide a graphical input interface, as illustrated in  FIG.  11 B , for providing one or more notification settings. In some embodiments, the notification settings may include alert delivery rules. Alert delivery rules may include recipient information  1188 , and frequency information  1190 , and alert delivery methods. 
     In some embodiments, alert delivery methods may include a text message  1192 , a telephone call  1194 , or an email message  1196 . Based on an identified delivery method, the management server  140  may request additional information. For example, if email alert delivery is chosen, the management server  140  may request an email of the recipient. In another example, if telephone call or a text message delivery is chosen, the management server  140  may request a telephone number of a recipient. 
     In some embodiments, the recipient information  1188 , for example, “Justin” as shown in  FIG.  11 B , may include information associated with different alert delivery methods. For example, when user enters “Justin” for the recipient information  1188 , the management server  140  may identify one or more contact information associated with “Justin.” In some cases, there may be more than one recipients named “Justin.” In such cases, the management server  140  may request further information to identify the intended recipient and/or request contact information to bypass the step of identifying the intended recipient. 
     The frequency information  1190  may indicate frequency of notification (or alert) delivery. In the example illustrated in  FIG.  11 B , the notification setting displayed in the condition input interface  1176 C indicates that “Justin” is to be notified “Every 1 hr.” As such, “Justin” may receive alerts every hour as long as input received from the assets satisfy at least one of the conditions. 
     In some embodiments, the management server  140  may apply an escalation logic for notifying different users. For example, as shown within condition input interface  1176 C in  FIG.  11 B , one or more recipients may be provided. One of the users, for example, “Justin,” may be notified immediately or every hour. If the issue that caused the alert to be generated is not addressed, the escalation logic may cause the management server  140  to contact the next recipient provided (for example, “Michael”). In some embodiments, the escalation logic may contact the next recipient if a predetermined period of time has elapsed since the alert has been generated and remained active. 
     Users may use the description tab  1180  to provide a message to be sent with an alert. The description tab  1180  may direct users to a text interface  1198  that receive user input. The user input provided via the text interface  1198  may be alpha-numeric. The user input provided via the text interface  1198  may be provided as a message to a recipient (for example, “Justin” as illustrated in  FIG.  11 B ). The text interface  1198  may be provided for each of one or more conditions such that customized messages may be provided to different conditions and/or thresholds. For example, it may be beneficial to provide more urgent message for more serious alerts, while it may be beneficial to provide less urgent message for less urgent alerts. 
     The color indicator  1184  may display a color associated with a condition. The color displayed by the color indicator  1184  may be a display setting for the associated condition. For example, the color indicator  1184  may display the color red and may be associated with a first condition illustrated by the condition input interface  1176 A. As such, when the threshold associated with the first condition is satisfied, the color setting of the color indicator  1184  may be used, for example, for the color display  1134  of an active alert  1132 . 
       FIG.  12    is a flowchart illustrating example method  1200  for generating alerts. Example method of  FIG.  12    illustrate functionalities associated primarily with the management server  140 . 
     At block  1202 , the processor  210  of the management server  140  provides secure communications with one or more assets. In some embodiments, the secure communications can be made via one or more industrial controller devices  150  as described herein. The secure communication can be via the network  130  and/or the local network  160  as described herein. At block  1204 , the processor  210  of the management server  140  receives operational data. As described herein, the operational data can include asset outputs, for example, the additional devices  180 . The asset outputs may be transmitted to an associated controller device  150  (or associated controller devices  150 ) as inputs and the associated controller device  150  (or associated controller devices  150 ) may transmit the asset outputs to the management server  140  as inputs. The asset outputs can include for example, but not limited to, pressure measurements (for example, psi (pounds per square inch), mmhg, atm, etc.), flow measurements (for example, L/min, gal/min, etc.), temperature measurements, vibration (for example, mm/s), and/or various other parameters determined based on any of the measurements discussed herein. In some embodiments, the asset outputs may be raw operational parameters including, but not limited to, voltage, current, resistance, capacitance readings. The management server  140  may process the raw operational data to determine the operational data such as temperature, pressure, flow rate, and the like. 
     At block  1206 , the management server  140  provides one or more graphical user interfaces (for example, interactive graphical user interfaces as described herein in reference to at least  FIGS.  11 A- 11 B ). As described herein, the graphical user interfaces may provide input interfaces or elements that can be used to identify a list of selected inputs for generating alerts, to provide alert thresholds, to provide alert rules, and/or provide alert messages as described herein. For example, the graphical user interfaces may include an asset selection interface  1172  that allows users to select one or more inputs for generating alerts. As described herein, the asset selection interface  1172  may be a drop-down menu that generates and displays a list of inputs and associated assets that users can select from. The list of inputs may be associated with corresponding assets such that selecting an input, for example, “ABC well pad—water pump #A: flow rate,” may cause the management server  140  to identify flow rate input from “ABC well pad—water pump #A.” 
     In some embodiments, users may provide one or more keywords or one or more key characteristics to the asset selection interface  1172 . As described herein, the management server  140  can use the keywords and/or key characteristics to identify and display one or more matching inputs and/or matching assets (and/or subsystems) associated with the keywords and/or key characteristics. Such feature can advantageously facilitate users to search and identify assets and/or subsystems for monitoring without having to memorize details for those assets and/or subsystems. 
     At block  1208 , the processor  210  of the management server  140  receives a selection of a first plurality of inputs. The first plurality of inputs may be the list of selected inputs  1170  as described herein. The list of selected inputs  1170  may represent outputs of the selected assets. Once the management server  140  receives the first plurality of inputs, the management server  140  can associate alert thresholds, alert rules, and/or an alert description/message with the list of selected inputs  1170 . 
     At block  1210 , the processor  210  of the management server  140  receives a first condition. At block  1212 , the processor  210  of the management server  140  may optionally receive a second condition, and/or one or more additional conditions. As described herein, each of the conditions may include one or more thresholds. As described herein, thresholds can include a logic  1181  and a threshold value  1182  that together may identify when an alert may be generated. For purposes of illustration, the operation of the system as applied to two conditions (for example, the first condition and the second condition) is described below, however it is to be understood that more or fewer conditions may be applied to the selected inputs. Further, as described, the selected inputs may comprise one or more selected inputs. 
     Optionally, at block  1214 , the processor  210  of the management server  140  generates one or more alert previews. The previews may be generated in the active alert section  1130 , for example, illustrated in  FIG.  11 A . In some embodiments, the previews may be displayed with the list of selected inputs  1170 . Alert previews may be displayed in different colors. For example, the color red may be used for displaying a critical alert. When operational data satisfies one or more critical alert conditions, a portion of the active alert section  1130  or the list of selected inputs  1170  may displayed in red. In another example, the color yellow may be used for a moderate alert when operational data satisfies one or more moderate alert conditions. Different suitable colors and/or patterns may be used to display different types of alerts. In some embodiments, the alert previews may be generated prior to application of conditions (including their respective threshold logics and threshold values) to, for example, the selected list of inputs  1170 . As such, the management server  140  may provide visual, graphical illustration of application of one or more conditions, which may be helpful in fine-tuning the conditions. 
     At block  1216 , the processor  210  of the management server  140  applies the first condition and the second condition to the first plurality of inputs. As described herein, the conditions may be applied to, for example, the list of selected inputs  1170 . For example, each of the first condition and the second condition may include one or more thresholds that can each include a logic and a threshold value. The logic and the threshold value can together define a requirement for generating an alert. For example, a logic may be “is above” and a threshold value may be 1175. As such, the management server  140  may apply the logic and the threshold value to the inputs received from the assets (for example, the list of selected inputs  1170  as described herein) and generate an alert when any of the received inputs satisfy (that is, is above 1175) both the logic and the threshold value. 
     In various embodiments, the management server  140  may process the inputs received from the assets prior to application of the conditions. For example, the management server  140  may determine a moving average of the inputs received from the assets. As such, the conditions may not be applied to each individual input value received from the assets but instead may be applied to a series of averages of different subsets of the inputs received from the assets. This can advantageously prevent false alerts for, for example, erroneous input values received from the assets. In other embodiments, the management server  140  may use other suitable processing methods to process the inputs received from the assets prior to application of the conditions. 
     In various embodiments, the management server  140  may periodically, intermittently, and/or on-demand, apply the conditions to the list of selected inputs. In some cases, the management server  140  may apply the conditions at the same rate at which it receives the selected inputs from assets (e.g., in a substantially real-time manner). In other cases, the management server  140  may apply the conditions to the inputs at a rate slower than it receives the selected inputs. In some embodiments, the management server  140  automatically applies the conditions or manually applies the conditions upon receipt of user input. In some embodiments, users may provide a frequency at which the applications are applied. 
     At block  1218 , the processor  210  of the management server  140  generates one or more alerts based on application of the conditions to the selected inputs. As described herein, each of the first condition and the second condition may include one or more thresholds. When all (or in an alternative embodiment, at least one) of the thresholds of a given condition (e.g., either the first condition or the second condition) are satisfied, the management server  140  may generate an alert. As described above, the management server  140  may apply the conditions to the selected inputs. In the example illustrated in  FIG.  11 B , the management server  140  may generate alerts for, for example, the list of selected inputs  1170  based at least on a comparison between the inputs received from the list of selected inputs  1170  and the thresholds of the first condition and/or the second condition. For example, when any of the selected inputs satisfy the thresholds of the first condition, or the thresholds of the second condition, the management server  140  may generate one or more alerts. Accordingly, all the respective selected inputs may be evaluated against all of the respective individual conditions for generating alerts. Thus, for example, two selected inputs may both cause generation of individual alerts by satisfying the same condition, and/or two selected inputs may both cause generation of individual alerts by satisfying separate conditions. Further, as described above, in some embodiments, all thresholds of a particular condition must be satisfied for the management server  140  to generate an alert for that particular condition. However, in some implementations, not all thresholds of a particular condition need to be satisfied for the management server  140  to generate an alert for that particular condition. Accordingly, the management server  140  may apply both the first condition (and any associated thresholds) and the second condition (and any associated thresholds) to each of the selected inputs to generate one or more alerts when either or both of the first condition&#39;s threshold(s) or the second condition&#39;s threshold(s) is satisfied. 
     Optionally, at block  1220 , the processor  210  of the management server  140  generates and delivers notification of the generated alerts, based on the conditions and associated notification settings associated with the generated alerts. For example, the management server  140  may determine that a threshold of the first condition was satisfied. The management server  140  may then identify a notification setting associated with the first condition. Based on the notification setting of the first condition (that is, satisfied condition), the management server  140  may generate and delivery one or more alerts to one or more users. 
     In some embodiments, a temporal requirement may be applied prior to generating the alerts. For example, the temporal requirement may include a predetermined length of time. When one of the thresholds is satisfied, the management server  140  may not generate an alert before the predetermined length of time passes from the time at which one of the thresholds was satisfied. 
     XII. Additional Implementation Details and Embodiments 
     Various embodiments of the present disclosure may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or mediums) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure. 
     For example, the functionality described herein may be performed as software instructions are executed by, and/or in response to software instructions being executed by, one or more hardware processors and/or any other suitable computing devices. The software instructions and/or other executable code may be read from a computer readable storage medium (or mediums). 
     The computer readable storage medium can be a tangible device that can retain and store data and/or instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device (including any volatile and/or non-volatile electronic storage devices), a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a solid state drive, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
     Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
     Computer readable program instructions (as also referred to herein as, for example, “code,” “instructions,” “module,” “application,” “software application,” and/or the like) for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. Computer readable program instructions may be callable from other instructions or from itself, and/or may be invoked in response to detected events or interrupts. Computer readable program instructions configured for execution on computing devices may be provided on a computer readable storage medium, and/or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression or decryption prior to execution) that may then be stored on a computer readable storage medium. Such computer readable program instructions may be stored, partially or fully, on a memory device (e.g., a computer readable storage medium) of the executing computing device, for execution by the computing device. The computer readable program instructions may execute entirely on a user&#39;s computer (e.g., the executing computing device), partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure. 
     Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
     These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart(s) and/or block diagram(s) block or blocks. 
     The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer may load the instructions and/or modules into its dynamic memory and send the instructions over a telephone, cable, or optical line using a modem. A modem local to a server computing system may receive the data on the telephone/cable/optical line and use a converter device including the appropriate circuitry to place the data on a bus. The bus may carry the data to a memory, from which a processor may retrieve and execute the instructions. The instructions received by the memory may optionally be stored on a storage device (e.g., a solid state drive) either before or after execution by the computer processor. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. In addition, certain blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate. 
     It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. For example, any of the processes, methods, algorithms, elements, blocks, applications, or other functionality (or portions of functionality) described in the preceding sections may be embodied in, and/or fully or partially automated via, electronic hardware such application-specific processors (e.g., application-specific integrated circuits (ASICs)), programmable processors (e.g., field programmable gate arrays (FPGAs)), application-specific circuitry, and/or the like (any of which may also combine custom hard-wired logic, logic circuits, ASICs, FPGAs, etc. with custom programming/execution of software instructions to accomplish the techniques). 
     Any of the above-mentioned processors, and/or devices incorporating any of the above-mentioned processors, may be referred to herein as, for example, “computers,” “computer devices,” “computing devices,” “hardware computing devices,” “hardware processors,” “processing units,” and/or the like. Computing devices of the above-embodiments may generally (but not necessarily) be controlled and/or coordinated by operating system software, such as Mac OS, iOS, Android, Chrome OS, Windows OS (e.g., Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server, etc.), Windows CE, Unix, Linux, SunOS, Solaris, Blackberry OS, VxWorks, or other suitable operating systems. In other embodiments, the computing devices may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface functionality, such as a graphical user interface (“GUI”), among other things. 
     As described above, in various embodiments certain functionality may be accessible by a user through a web-based viewer (such as a web browser), or other suitable software program. In such implementations, the user interface may be generated by a server computing system and transmitted to a web browser of the user (e.g., running on the user&#39;s computing system). Alternatively, data (e.g., user interface data) necessary for generating the user interface may be provided by the server computing system to the browser, where the user interface may be generated (e.g., the user interface data may be executed by a browser accessing a web service and may be configured to render the user interfaces based on the user interface data). The user may then interact with the user interface through the web-browser. User interfaces of certain implementations may be accessible through one or more dedicated software applications. In certain embodiments, one or more of the computing devices and/or systems of the disclosure may include mobile computing devices, and user interfaces may be accessible through such mobile computing devices (for example, smartphones and/or tablets). 
     Many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure. The foregoing description details certain embodiments. It will be appreciated, however, that no matter how detailed the foregoing appears in text, the systems and methods can be practiced in many ways. As is also stated above, it should be noted that the use of particular terminology when describing certain features or aspects of the systems and methods should not be taken to imply that the terminology is being re-defined herein to be restricted to including any specific characteristics of the features or aspects of the systems and methods with which that terminology is associated. 
     Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements, and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment. 
     The term “substantially” when used in conjunction with the term “real-time” forms a phrase that will be readily understood by a person of ordinary skill in the art. For example, it is readily understood that such language will include speeds in which no or little delay or waiting is discernible, or where such delay is sufficiently short so as not to be disruptive, irritating, or otherwise vexing to a user. 
     Conjunctive language such as the phrase “at least one of X, Y, and Z,” or “at least one of X, Y, or Z,” unless specifically stated otherwise, is to be understood with the context as used in general to convey that an item, term, etc. may be either X, Y, or Z, or a combination thereof. For example, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of X, at least one of Y, and at least one of Z to each be present. 
     The term “a” as used herein should be given an inclusive rather than exclusive interpretation. For example, unless specifically noted, the term “a” should not be understood to mean “exactly one” or “one and only one”; instead, the term “a” means “one or more” or “at least one,” whether used in the claims or elsewhere in the specification and regardless of uses of quantifiers such as “at least one,” “one or more,” or “a plurality” elsewhere in the claims or specification. 
     The term “comprising” as used herein should be given an inclusive rather than exclusive interpretation. For example, a general purpose computer comprising one or more processors should not be interpreted as excluding other computer components, and may possibly include such components as memory, input/output devices, and/or network interfaces, among others. 
     While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it may be understood that various omissions, substitutions, and changes in the form and details of the devices or processes illustrated may be made without departing from the spirit of the disclosure. As may be recognized, certain embodiments of the inventions described herein may be embodied within a form that does not provide all of the features and benefits set forth herein, as some features may be used or practiced separately from others. The scope of certain inventions disclosed herein is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.