======= Dashboarding ======= ====When designing a dashboard, there are multiple things to consider:=== * Reporting Method * Are calculations required? * Does data need to be stored? This Implementation Table provides details on a variety of methods that could be used when working towards building dashboards. **For Calculations** A number of key areas should be considered when deciding which calculation method should be selected. ^Method ^Scale Limit ^Responsibility for Scaling ^Possible Complexity ^Ease of Replication ^Experience Required ^IP Protection ^Effort to create single dashboard ^Effort to create many dashboards^ |**Templated Script Tags**|ASC Server|Intelligent Plant|Low (Orchestrated)|Upload Instances (Easy)|Basic Configuration (Select Tags)|Tags can be seen by client admin, new instances can be created by admin|Low|Low (import)| |**Custom Script Tags**|ASC Server & Code Efficiency|Developer|Low (Orchestrated)|Developer Responsible|Basic Code (Scripting)|Code can be seen and copied/modified by admin|Low|High (Up To Developer)| |**Custom Script Tags With DLL**|ASC Server & Code Efficiency|Developer|Low (Orchestrated)|Developer Responsible|Medium Code (Compilation/Linking)|DLL code can be obfuscated but decompilation possible.|Low|High (Up To Developer)| |**Jupyter Hub**|Bandwidth & Capacity Of Server Instance|Developer|Medium (Manually Run)|Developer Responsible|Basic Python|Scripts are stored on intelligent plant server - could be accessed by someone if they broke contract.|Medium|High (Up To Developer)| |**App Implementation (Ext. Host)**|Bandwidth & Server Host & Code Efficiency|Developer|High (Fully Open)|Developer Responsible|Advanced Coding|No one else can possibly see how your app does something, but they could attempt to replicate results through reverse engineering|Depends On App|Depends On App| |**App Implementation (Local Install)**|Server Host & Code Efficiency|Developer|High (Fully Open)|Developer Responsible|Advanced Coding|A local install would mean anyone with access to the client host could decompile or attempt to reuse code.|Depends On App|Depends On App| |**Power Automate**|Bandwidth & Azure Limits On Data, Executions Etc..|Developer|Very Low (Orchestrated, Restricted)|Developer Responsible|Drag And Drop|Depends on sharing level|Low| | ====Script Tags==== Through Intelligent Plant’s application – Facit, it is possible to create and configure script tags that perform calculations with your data. There are two ways of creating these script tags: ===Templated script tags=== Intelligent Plant’s Facit has pre-made script tags available to users. These can perform a variety of calculations already. It is just a matter of configuring the templates with your data. Key features of Templated Script Tags in Facit: * Speed – Templated script tags make it quick and easy for the user to create the script tags that they need. Creating multiple script tags is straightforward, with configuration being the only main time sink in this process. * No coding – Templated script tags have been coded for the user already, thus no coding experience is required. This method allows anyone with knowledge of the calculations to configure the script tags. A clear disadvantage of using templated script tags is that if the calculation you require is not performed by any of the templated script tags available, then an alternative method would need to be used. ===Custom (Ad-hoc) script tags=== If you need or wish to create a custom script tag, this can also be done on Facit. Although the coding experience required to create custom script tags would likely be minimal, the time to make multiple script tags would be considerably longer than with templated script tags. The key features of Custom Script Tags in Facit: * More freedom – Being able to code your own script tags means that you are not restricted to the templated script tags available from Intelligent Plant. You have the ability to code any script tag that you require. * Easy to create – As long as the developer has basic coding experience, then creating custom script tags should be straightforward. The effort required to create many script tags will be significantly higher than by using templated script tags, and the efficiency of the code can significantly impact scaling. ====Jupyter Hub==== Jupyter Hub brings the power of notebooks to groups of users. It gives users access to computational environments and resources without burdening the users with installation and maintenance tasks. Users - including students, researchers, and data scientists - can get their work done in their own workspaces on shared resources which can be managed efficiently by system administrators. Jupyter Hub runs in the Industrial App Store, and makes it possible to serve a pre-configured data science environment to any user in the world. It is customizable and scalable, and is suitable for small and large teams, academic courses, and large-scale infrastructure. Key features of JupyterHub in the Industrial App Store: * Customisable – JupyterHub can be used to serve a variety of environments. It supports dozens of kernels with the Jupyter server, and can be used to serve a variety of user interfaces. Available interfaces include the Jupyter Notebook, JupyterLab, RStudio, Python 3 and dotnet. * Flexible - The Hub authenticates users with the Industrial App Store so that they can access their live data sources immediately. This prevents the need for large data exports and allows models to be created using the most up to date data. Jupyter Hub uses the same data APIs as other App Store applications. This simplifies the process of developing a prototype into a full application. * Scalable - The Intelligent Plant Jupyter Hub is hosted in the cloud which allows it to scale to thousands of users and to be accessed from anywhere. ====App Implementation==== Creating a custom application to perform your calculations would ultimately provide total freedom on the calculations you wish to create. This could be pushed to an external host or kept as a local install, depending on what is preferred. Key features of creating your own application: * Enhanced IP Protection - Nobody could know how your application works, therefore the security of your results may be higher. * Specialisation – Creating your own application means total customisation to suit your needs. It can be coded in your preferred coding language, and familiarisation of the application would not be an issue. Significant resources may be required to produce an in-house application, which may delay completion of the product. ====Power Automate==== Power Automate is an online tool within the Microsoft 365 applications and add-ins, used for the creation of automated workflows between apps and services to synchronise files, get notifications, and collect data. [[https://docs.microsoft.com/en-gb/connectors/industrialappstore/|Intelligent Plant’s Industrial Automator for Power BI]] enables interaction with all the different historian data through a unified API. enables Microsoft’s powerful analytics and visualisations to be applied to real time and historical process data. Thus achieving seamless integration of plant and corporate data that can be shared with any colleague on any device, enabling faster, better, real-time decision making. Key features of Power Automate: * Receive alerts - Power Automate can be set up to automatically send out an alert if a calculated value is outside of a desired range, thus keeping you up to speed on any significant deviations in your plant. * Minimal effort - Power Automate allows rapid creation of workflows that perform the tasks you require. No coding knowledge is needed to use it and there is an abundance of information available on how to use Power Automate. ** For Displays ** ^Method ^Shareable with Users ^Real-time Updates ^Embeddable ^User Configurable^ |**PnID**|Yes|Yes|Yes|Yes| |**Power BI**|Yes|No|No|Yes| |**Trend**|Yes|Yes|Yes|Yes| |**Jupyter Hub**|No, this must be run by the developer, but when it works then it could be used as start of app|No|No(Developer Only)|No| |**New App**|Developer Responsible|Developer Responsible|Developer Responsible|Developer Responsible| ** For Storage ** ^Storage of Data ^Write-ability^ |**Client Historian**|Unlikely| |**IP Hist**|Yes| |**Alarm Analysis**|Yes|