Industrial App Store
The Industrial App Store from Intelligent Plant is built on an architecture that enables cloud-based applications and services to interact with on-site Process Data Historians and Alarm & Event Logs. Use the Industrial App Store Connector to introduce plant data to your flows.
This connector is available in the following products and regions:
Service | Class | Regions |
---|---|---|
Logic Apps | Standard | All Logic Apps regions except the following: - Azure Government regions - Azure China regions - US Department of Defense (DoD) |
Power Automate | Premium | All Power Automate regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
Power Apps | Premium | All Power Apps regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
Contact | |
---|---|
Name | Intelligent Plant |
URL | https://appstore.intelligentplant.com |
support@intelligentplant.com |
Connector Metadata | |
---|---|
Publisher | Intelligent Plant |
Website | https://appstore.intelligentplant.com |
Privacy policy | https://appstore.intelligentplant.com/Content/assets/legal/IAS-PrivacyPolicy.html |
Categories | Internet of Things;Business Intelligence |
Industrial App Store Power Automate connector
Intelligent Plant developed the Industrial App Store which enables interaction with all the different historian data through a unified API. At the start of May 2020 Intelligent Plant released an official, Microsoft certified Industrial App Store connector for Power Automate. No more hefty SQL queries or Excel document interrogations with no easy real-time update option or complicated architecture solutions, simply install Industrial App Store connect and out of the box you will be able to connect to Aspentech IP.21, OSIsoft PI, Honeywell Dynamo, OPC DA & HDA, Siemens and many more. This allows our customers to bring data from various sources into Microsoft Automate flows to deliver insights that weren’t possible before. Real-time updates prompt money-saving decisions by engineers that also increase plant safety and efficiency. More information can be found here.
Prerequisites
- Register with the Industrial App store simply by logging in using your Linked In, Google or Microsoft account. Microsoft Entra ID sync is also supported which will enable you to log in using your work credentials.
- Demo data sources are there for you to play around with but if you want to connect to your historian data simply install App Store Connect, connect to your data using one out of the box data source driver and you're ready to go!
How to get credentials
Simply log in using your Linked In, Google or Microsoft account. Microsoft Entra ID sync is also supported which will enable you to log in using your work credentials.
Getting started with your connector
Simply add Industrial App Store as an action in your flow, specify one of the queries, enter parameters e.g. Tagname, start, end times and thats it! An example of data retrieval:
- Start Power Automate
Navigate to Microsoft Power Autoamte. Log in if required. - Create new Flow
Hit :heavy_plus_sign: Create on the left hand side menu and choose an Instant Flow or a Scheduled Flow and confirm your selection.
- Sign in
Sign in using your credentials.
NOTE: you'll only need to do this once per flow. The same connection credentials can be re-used in other flows
- Fill in parameters
Fill in the required parameters with the following values:
Name | Value | Note |
---|---|---|
Data source name | dsn - variable | Use your data source name provided when you created it in App Store Connect. |
Tag to query | tag - variable | Specify your historian tags. |
Start time | 2001-01-01 | The absolute or relative query start time. |
End time | 2001-03-01 | The absolute or relative query end time. |
Data function | AVG | |
Sample interval | 1d |
The historical data returned to Power Automate describes the instrument values using the JSON file format. An example data set is shown below:
{
"Edge Historian (LDT-INTELPLANT)": {
"TIC001-HI": {
"TagName": "TIC001-HI",
"DisplayType": "TrailingEdge",
"Values": [
{
"IsNumeric": true,
"TagName": "TIC001-HI",
"UtcSampleTime": "2020-09-08T04:20:40Z",
"NumericValue": 13.89999,
"TextValue": "13.89999",
"Status": "Good",
"Unit": "degC",
"Notes": null,
"Error": null,
"HasError": false
},
{
"IsNumeric": true,
"TagName": "TIC001-HI",
"UtcSampleTime": "2020-09-09T04:20:40Z",
"NumericValue": 13.89999,
"TextValue": "13.89999",
"Status": "Good",
"Unit": "degC",
"Notes": null,
"Error": null,
"HasError": false
},
// -- remaining values removed for brevity --
]
}
}
}
The data is indexed by data source name (Edge Historian (LDT-INTELPLANT)
) and then tag name (TIC001-HI
). The entry for each tag contains the following fields:
TagName
- the display name of the tag.DisplayType
- provides a hint describing how lines between individual values should be drawn when visualizing the data on a chart.Values
- a list of tag values.
Each entry in the Values
collection describes a single value for the tag at a specific point in time. Although there are several fields defined on each value, the fields that we are most interested in are:
UtcSampleTime
- the UTC timestamp for the sample, specified in ISO 8601 format.NumericValue
- the numerical value recorded by the instrument.Status
- the quality status associated with the value (Good
,Bad
, orUncertain
). The status will generally beGood
unless the physical instrument has been diagnosed with a fault.Unit
- the unit of measure for the value.
And that's it, you have historical data for futher processing. From here you can issue notifications, compile rpeorts, kick off procedures, etc.
Known issues and limitations
We are working on better schema definition so the returned data set is easier to navigate.
Common errors and remedies
Make sure you are authorised to access the data source. Either contact the person who configured your App Store Connect or Intelligent Plant (support@intelligentplant.com).
FAQ
Please refer to this article which dives into more detail of the whole set up. Do not hesitate to contact Intelligent Plant for more information or if you have any questions at info@intelligentplant.com
Throttling Limits
Name | Calls | Renewal Period |
---|---|---|
API calls per connection | 100 | 60 seconds |
Actions
Get Data Sources |
Retrieve list of available data sources. |
Get Tags |
Perform a tag search on a data source. |
Read Aggregated Values |
Request aggregated values for a tag. |
Read Plot Values |
Request a best-fit curve of tag values. |
Read Raw Values |
Request raw values for a tag. |
Read Snapshot Value |
Get the current value of a tag. |
Get Data Sources
Retrieve list of available data sources.
Returns
Name | Path | Type | Description |
---|---|---|---|
|
array of object | ||
Host
|
Host | string |
Data source host |
SupportedFeatures
|
SupportedFeatures | string |
Features supported by data source |
Name
|
Name.Name | string |
Data source component name |
Namespace
|
Name.Namespace | string |
Data source namespace |
QualifiedName
|
Name.QualifiedName | string |
Data source qualified name |
DisplayName
|
Name.DisplayName | string |
Display Name |
Aliases
|
Name.Aliases | array of |
Aliases |
TypeName
|
TypeName | string |
Data source component type name |
Description
|
Description | string |
Data source component description |
RunningStatus
|
Status.RunningStatus | string |
Data source running status |
IsHealthy
|
Status.HealthStatus.IsHealthy | boolean |
IsHealthy |
Properties
|
Status.HealthStatus.Properties | array of |
Properties |
IsInitialised
|
Status.IsInitialised | boolean |
IsInitialised |
IsDisabled
|
Status.IsDisabled | boolean |
Disabled status |
DebugMode
|
Status.DebugMode | boolean |
Debug mode |
UtcStartupTime
|
Status.UtcStartupTime | string |
Startup UTC Time |
UtcLastModified
|
Status.UtcLastModified | string |
Last Modified UTC Date Time |
Uptime
|
Status.Uptime | string |
Data source uptime |
Messages
|
Status.Messages | array of |
Messages |
Settings
|
Settings | array of |
Data source settings |
Keep-Alive Data Queries
|
Properties.Keep-Alive Data Queries | string |
Keep-Alive Data Queries |
Remote Type
|
Properties.Remote Type | string |
Remote Type |
AuthorizationRules
|
AuthorizationRules | array of |
Data source authorization rules |
Get Tags
Perform a tag search on a data source.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
The data source name to use for data query.
|
dsn | True | string |
The data source name. |
Tag name filter to use. Default value is "*".
|
name | True | string |
The tag name filter. |
The page number of the matching results that should be returned.
|
page | True | integer |
The page number of the matching results that should be returned. |
Page size for the results.
|
pageSize | True | integer |
Page size for the results. |
Returns
Name | Path | Type | Description |
---|---|---|---|
|
array of object | ||
Id
|
Id | string |
Unique tag identifier |
Name
|
Name | string |
Tag name |
Description
|
Description | string |
Tag description |
UnitOfMeasure
|
UnitOfMeasure | string |
Tag value unit-of-measurement |
Value
|
Properties.index.Value | integer |
Value |
Name
|
Properties.index.Name | string |
Name |
Category
|
Properties.index.Category | string |
Category |
Description
|
Properties.index.Description | string |
Description |
DisplayIndex
|
Properties.index.DisplayIndex | integer |
DisplayIndex |
IsReadOnly
|
Properties.index.IsReadOnly | boolean |
IsReadOnly |
DigitalStates
|
DigitalStates | array of |
DigitalStates |
IsMetaTag
|
IsMetaTag | boolean |
Flag that specifies if the tag is a meta tag created by a driver. |
Read Aggregated Values
Request aggregated values for a tag.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
The data source name.
|
dsn | True | string |
Data source name to perform data query on. |
The tag to query.
|
tag | True | string |
The tag to query. |
The absolute or relative query start time.
|
start | True | string |
The absolute or relative query start time. |
The absolute or relative query end time.
|
end | True | string |
The absolute or relative query end time. |
Data function/aggregation to use when performing data query.
|
function | True | string |
The data function to use. |
The sample interval for the query.
|
step | True | string |
The sample interval for the query. |
When true, tag value properties will be included in the result.
|
includeProperties | boolean |
When true, tag value properties will be included in the result. |
Returns
Read Plot Values
Request a best-fit curve of tag values.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
The data source name.
|
dsn | True | string |
Data source name to perform data query on. |
The tag to query.
|
tag | True | string |
The tag to query. |
The absolute or relative query start time.
|
start | True | string |
The absolute or relative query start time. |
The absolute or relative query end time.
|
end | True | string |
The absolute or relative query end time. |
Plot interval
|
intervals | True | integer |
The pixel width of the chart that will display the tag values. |
When true, tag value properties will be included in the results.
|
includeProperties | boolean |
When true, tag value properties will be included in the results. |
Returns
Read Raw Values
Request raw values for a tag.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
The data source name.
|
dsn | True | string |
Data source name to perform data query on. |
The tag to query.
|
tag | True | string |
The tag to query. |
The absolute or relative query start time.
|
start | True | string |
The absolute or relative query start time. |
The absolute or relative query end time.
|
end | True | string |
The absolute or relative query end time. |
The maximum number of points to return per tag.
|
points | True | integer |
The maximum number of points to return per tag. |
Returns
Read Snapshot Value
Get the current value of a tag.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
The data source name.
|
dsn | True | string |
Data source name to perform data query on. |
The tag to query.
|
tag | True | string |
The tag to query. |
When true, specifies that cached snapshot values should not be used.
|
nocache | boolean |
When true, specifies that cached snapshot values should not be used (i.e. a snapshot query will always be executed against the data source). |
|
When true, tag value properties will be included in the results.
|
includeProperties | boolean |
When true, tag value properties will be included in the results. |
Returns
Name | Path | Type | Description |
---|---|---|---|
TagName
|
TagName | string |
Tag name |
UtcSampleTime
|
UtcSampleTime | string |
Tag value sample time (UTC) |
NumericValue
|
NumericValue | float |
Tag numeric value |
IsNumeric
|
IsNumeric | boolean |
Does tag have a numeric value? |
TextValue
|
TextValue | string |
Tag text value |
Status
|
Status | string |
Tag value status |
Unit
|
Unit | string |
Tag value unit-of-measurement. |
Notes
|
Notes | string |
Notes |
Error
|
Error | string |
Tag value error details |
HasError
|
HasError | boolean |
Tag value HasError status |
Definitions
HistoricalDataQueryResponsev2
Name | Path | Type | Description |
---|---|---|---|
Values
|
Values | array of object |
Values |
TagName
|
Values.TagName | string |
Tag Name |
UtcSampleTime
|
Values.UtcSampleTime | string |
Tag value sample time (UTC) |
NumericValue
|
Values.NumericValue | float |
Tag numeric value |
IsNumeric
|
Values.IsNumeric | boolean |
Does IsNumeric status |
TextValue
|
Values.TextValue | string |
Tag text value |
Status
|
Values.Status | string |
Tag value status |
Unit
|
Values.Unit | string |
Tag value unit-of-measurement |
Notes
|
Values.Notes | string |
Notes |
Error
|
Values.Error | string |
Tag value error details |
HasError
|
Values.HasError | boolean |
Tag value HasError status |